home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / binutils-2.7-src.tgz / tar.out / fsf / binutils / ld / ld.h < prev    next >
C/C++ Source or Header  |  1996-09-28  |  4KB  |  155 lines

  1. /* ld.h -
  2.  
  3.    Copyright (C) 1991, 1993, 1994, 1995 Free Software Foundation, Inc.
  4.  
  5.    This file is part of GLD, the Gnu Linker.
  6.  
  7.    GLD is free software; you can redistribute it and/or modify
  8.    it under the terms of the GNU General Public License as published by
  9.    the Free Software Foundation; either version 2, or (at your option)
  10.    any later version.
  11.  
  12.    GLD is distributed in the hope that it will be useful,
  13.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.    GNU General Public License for more details.
  16.  
  17.    You should have received a copy of the GNU General Public License
  18.    along with GLD; see the file COPYING.  If not, write to
  19.    the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
  20.  
  21. #ifndef LD_H
  22. #define LD_H
  23.  
  24. /* Look in this environment name for the linker to pretend to be */
  25. #define EMULATION_ENVIRON "LDEMULATION"
  26. /* If in there look for the strings: */
  27.  
  28. /* Look in this variable for a target format */
  29. #define TARGET_ENVIRON "GNUTARGET"
  30.  
  31. /* Input sections which are put in a section of this name are actually
  32.    discarded.  */
  33. #define DISCARD_SECTION_NAME "/DISCARD/"
  34.  
  35. /* Extra information we hold on sections */
  36. typedef struct  user_section_struct
  37. {
  38.   /* Pointer to the section where this data will go */
  39.   struct lang_input_statement_struct *file;
  40. } section_userdata_type;
  41.  
  42.  
  43. #define get_userdata(x) ((x)->userdata)
  44.  
  45. #define BYTE_SIZE    (1)
  46. #define SHORT_SIZE    (2)
  47. #define LONG_SIZE    (4)
  48. #define QUAD_SIZE    (8)
  49.  
  50. /* ALIGN macro changed to ALIGN_N to avoid    */
  51. /* conflict in /usr/include/machine/machparam.h */
  52. /* WARNING: If THIS is a 64 bit address and BOUNDARY is a 32 bit int,
  53.    you must coerce boundary to the same type as THIS.
  54.    ??? Is there a portable way to avoid this.  */
  55. #define ALIGN_N(this, boundary) \
  56.   ((( (this) + ((boundary) -1)) & (~((boundary)-1))))
  57.  
  58. typedef struct
  59. {
  60.   /* 1 => assign space to common symbols even if `relocatable_output'.  */
  61.   boolean force_common_definition;
  62.   boolean relax;
  63.  
  64.   /* Name of runtime interpreter to invoke.  */
  65.   char *interpreter;
  66.  
  67.   /* Name to give runtime libary from the -soname argument.  */
  68.   char *soname;
  69.  
  70.   /* Runtime library search path from the -rpath argument.  */
  71.   char *rpath;
  72.  
  73.   /* Link time runtime library search path from the -rpath-link
  74.      argument.  */
  75.   char *rpath_link;
  76.  
  77.   /* Big or little endian as set on command line.  */
  78.   enum { ENDIAN_UNSET = 0, ENDIAN_BIG, ENDIAN_LITTLE } endian;
  79.  
  80.   /* If true, export all symbols in the dynamic symbol table of an ELF
  81.      executable.  */
  82.   boolean export_dynamic;
  83.  
  84.   /* If true, build MIPS embedded PIC relocation tables in the output
  85.      file.  */
  86.   boolean embedded_relocs;
  87.  
  88.   /* If true, force generation of a file with a .exe file. */
  89.   boolean force_exe_suffix;
  90. } args_type;
  91.  
  92. extern args_type command_line;
  93.  
  94. typedef int token_code_type;
  95.  
  96. typedef struct 
  97. {
  98.   bfd_size_type specified_data_size;
  99.   boolean magic_demand_paged;
  100.   boolean make_executable;
  101.  
  102.   /* If true, doing a dynamic link.  */
  103.   boolean dynamic_link;
  104.  
  105.   /* If true, build constructors.  */
  106.   boolean build_constructors;
  107.  
  108.   /* If true, warn about any constructors.  */
  109.   boolean warn_constructors;
  110.  
  111.   /* If true, warn about merging common symbols with others.  */
  112.   boolean warn_common;
  113.  
  114.   /* If true, only warn once about a particular undefined symbol.  */
  115.   boolean warn_once;
  116.  
  117.   /* If true, warn if multiple global-pointers are needed (Alpha
  118.      only).  */
  119.   boolean warn_multiple_gp;
  120.  
  121.   boolean sort_common;
  122.  
  123.   boolean text_read_only;
  124.  
  125.   char *map_filename;
  126.   FILE *map_file;
  127.  
  128.   boolean stats;
  129.  
  130.   int split_by_reloc;
  131.   boolean split_by_file;
  132. } ld_config_type;
  133.  
  134. extern ld_config_type config;
  135.  
  136. typedef enum
  137. {
  138.   lang_first_phase_enum,
  139.   lang_allocating_phase_enum,
  140.   lang_final_phase_enum
  141. } lang_phase_type;
  142.  
  143. extern boolean had_script;
  144. extern boolean force_make_executable;
  145.  
  146. /* Non-zero if we are processing a --defsym from the command line.  */
  147. extern int parsing_defsym;
  148.  
  149. extern int yyparse PARAMS ((void));
  150.  
  151. extern void add_cref PARAMS ((const char *, bfd *, asection *, bfd_vma));
  152. extern void output_cref PARAMS ((FILE *));
  153.  
  154. #endif
  155.