summaryrefslogtreecommitdiffstats
path: root/gnu/usr.bin/ld/ld.h
diff options
context:
space:
mode:
authorjkh <jkh@FreeBSD.org>1994-02-13 20:43:13 +0000
committerjkh <jkh@FreeBSD.org>1994-02-13 20:43:13 +0000
commit477937c24f744be139c6f05fca05ef839596d8d0 (patch)
tree6947a3f67de9a2d5a7e3753ee49932ec50fa8e59 /gnu/usr.bin/ld/ld.h
parent872e15cb55f29ca2d280bb299f35887b21506b1a (diff)
downloadFreeBSD-src-477937c24f744be139c6f05fca05ef839596d8d0.zip
FreeBSD-src-477937c24f744be139c6f05fca05ef839596d8d0.tar.gz
This is Paul K's latest set of ld changes. A commit was necessary at this
late stage due to the fact that link.h was copyright Sun Microsystems. This version of ld sync's us up with NetBSD's ld and supports compatablily with NetBSD's -[zZ] flags (which we had reversed). Compiling with this new ld will give you RRS warnings for libraries which do not contain .type infomation - these wsarnings are harmless and will go away as soon as you recompile your libraries (cd /usr/src; make libraries).
Diffstat (limited to 'gnu/usr.bin/ld/ld.h')
-rw-r--r--gnu/usr.bin/ld/ld.h637
1 files changed, 199 insertions, 438 deletions
diff --git a/gnu/usr.bin/ld/ld.h b/gnu/usr.bin/ld/ld.h
index 1cee37a..a43eac8 100644
--- a/gnu/usr.bin/ld/ld.h
+++ b/gnu/usr.bin/ld/ld.h
@@ -1,4 +1,6 @@
-/* $Id: ld.h,v 1.8 1993/12/11 11:58:26 jkh Exp $ */
+/*
+ * $Id: ld.h,v 1.8 1994/01/28 20:56:24 pk Exp $
+ */
/*-
* This code is derived from software copyrighted by the Free Software
* Foundation.
@@ -29,6 +31,10 @@
#define alloca __builtin_alloca
#endif
+#ifdef __FreeBSD__
+#define FreeBSD
+#endif
+
#include "md.h"
#include "link.h"
@@ -41,23 +47,21 @@
/* Align to machine dependent boundary */
#define MALIGN(x) PALIGN(x,MAX_ALIGNMENT)
-/* Size of a page; obtained from the operating system. */
-
-int page_size;
-
/* Name this program was invoked by. */
+char *progname;
-char *progname;
-
/* System dependencies */
/* Define this to specify the default executable format. */
#ifndef DEFAULT_MAGIC
+#ifdef FreeBSD
#define DEFAULT_MAGIC QMAGIC
+extern int netzmagic;
+#else
+#define DEFAULT_MAGIC ZMAGIC
+#endif
#endif
-
-extern netzmagic;
/*
@@ -181,7 +185,7 @@ extern netzmagic;
#ifndef DATA_START
#define DATA_START(x) N_DATADDR(x)
#endif
-
+
/* If a this type of symbol is encountered, its name is a warning
message to print each time the symbol referenced by the next symbol
table entry is referenced.
@@ -330,6 +334,22 @@ extern netzmagic;
#endif /* not __GNU_STAB__ */
+
+typedef struct localsymbol {
+ struct nzlist nzlist; /* n[z]list from file */
+ struct glosym *symbol; /* Corresponding global symbol,
+ if any */
+ struct localsymbol *next; /* List of definitions */
+ struct file_entry *entry; /* Backpointer to file */
+ long gotslot_offset; /* Position in GOT, if any */
+ int symbolnum; /* Position in output nlist */
+ int flags;
+#define LS_L_SYMBOL 1 /* Local symbol starts with an `L' */
+#define LS_WRITE 2 /* Symbol goes in output symtable */
+#define LS_RENAME 4 /* xlat name to `<file>.<name>' */
+#define LS_GOTSLOTCLAIMED 8 /* This symbol has a GOT entry */
+} localsymbol_t;
+
/* Symbol table */
/*
@@ -340,225 +360,102 @@ extern netzmagic;
*/
typedef struct glosym {
- /* Pointer to next symbol in this symbol's hash bucket. */
- struct glosym *link;
- /* Name of this symbol. */
- char *name;
- /* Value of this symbol as a global symbol. */
- long value;
- /*
- * Chain of external 'nlist's in files for this symbol, both defs and
- * refs.
- */
- struct localsymbol *refs;
- /*
- * Any warning message that might be associated with this symbol from
- * an N_WARNING symbol encountered.
- */
- char *warning;
- /*
- * Nonzero means definitions of this symbol as common have been seen,
- * and the value here is the largest size specified by any of them.
- */
- int max_common_size;
- /*
- * For relocatable_output, records the index of this global sym in
- * the symbol table to be written, with the first global sym given
- * index 0.
- */
- int symbolnum;
- /*
- * For dynamically linked output, records the index in the RRS
- * symbol table.
- */
- int rrs_symbolnum;
- /*
- * Nonzero means a definition of this global symbol is known to
- * exist. Library members should not be loaded on its account.
- */
- char defined;
- /*
- * Nonzero means a reference to this global symbol has been seen in a
- * file that is surely being loaded. A value higher than 1 is the
- * n_type code for the symbol's definition.
- */
- char referenced;
- /*
- * A count of the number of undefined references printed for a
- * specific symbol. If a symbol is unresolved at the end of
- * digest_symbols (and the loading run is supposed to produce
- * relocatable output) do_file_warnings keeps track of how many
- * unresolved reference error messages have been printed for each
- * symbol here. When the number hits MAX_UREFS_PRINTED, messages
- * stop.
- */
- unsigned char undef_refs;
- /*
- * 1 means that this symbol has multiple definitions. 2 means that
- * it has multiple definitions, and some of them are set elements,
- * one of which has been printed out already.
- */
- unsigned char multiply_defined;
- /* Nonzero means print a message at all refs or defs of this symbol */
- char trace;
-
- /*
- * For symbols of type N_INDR, this points at the real symbol.
- */
- struct glosym *alias;
-
- /*
- * Count number of elements in set vector if symbol is of type N_SETV
- */
- int setv_count;
-
- /* Dynamic lib support */
-
- /*
- * Nonzero means a definition of this global symbol has been found
- * in a shared object. These symbols do not go into the symbol
- * section of the resulting a.out file. They *do* go into the
- * dynamic link information segment.
- */
- char so_defined;
-
- /* Size of symbol as determined by N_SIZE symbols in object files */
- int size;
-
- /* Auxialiary info to put in the `nz_other' field of the
- * RRS symbol table. Used by the run-time linker to resolve
- * references to function addresses from within shared objects.
- */
- int aux;
-#define RRS_FUNC 2
-
- /*
- * Chain of external 'nlist's in shared objects for this symbol, both
- * defs and refs.
- */
- struct localsymbol *sorefs;
+ struct glosym *link; /* Next symbol hash bucket. */
+ char *name; /* Name of this symbol. */
+ long value; /* Value of this symbol */
+ localsymbol_t *refs; /* Chain of local symbols from object
+ files pertaining to this global
+ symbol */
+ localsymbol_t *sorefs;/* Same for local symbols from shared
+ object files. */
+
+ char *warning; /* message, from N_WARNING nlists */
+ int common_size; /* Common size */
+ int symbolnum; /* Symbol index in output symbol table */
+ int rrs_symbolnum; /* Symbol index in RRS symbol table */
+
+ struct nlist *def_nlist; /* The local symbol that gave this
+ global symbol its definition */
+
+ char defined; /* Definition of this symbol */
+ char so_defined; /* Definition of this symbol in a shared
+ object. These go into the RRS symbol table */
+ u_char undef_refs; /* Count of number of "undefined"
+ messages printed for this symbol */
+ u_char mult_defs; /* Same for "multiply defined" symbols */
+ struct glosym *alias; /* For symbols of type N_INDR, this
+ points at the real symbol. */
+ int setv_count; /* Number of elements in N_SETV symbols */
+ int size; /* Size of this symbol (either from N_SIZE
+ symbols or a from shared object's RRS */
+ int aux; /* Auxiliary type information conveyed in
+ the `n_other' field of nlists */
/* The offset into one of the RRS tables, -1 if not used */
- long jmpslot_offset;
- char jmpslot_claimed;
+ long jmpslot_offset;
+ long gotslot_offset;
- long gotslot_offset;
- char gotslot_claimed;
+ long flags;
- char cpyreloc_reserved;
- char cpyreloc_claimed;
+#define GS_DEFINED 1 /* Symbol has definition (notyetused)*/
+#define GS_REFERENCED 2 /* Symbol is referred to by something
+ interesting */
+#define GS_TRACE 4 /* Symbol will be traced */
+#define GS_JMPSLOTCLAIMED 8 /* */
+#define GS_GOTSLOTCLAIMED 0x10 /* Some state bits concerning */
+#define GS_CPYRELOCRESERVED 0x20 /* entries in GOT and PLT tables */
+#define GS_CPYRELOCCLAIMED 0x40 /* */
- /* The local symbol that gave this global symbol its definition */
- struct nlist *def_nlist;
} symbol;
/* Number of buckets in symbol hash table */
-#define TABSIZE 1009
+#define SYMTABSIZE 1009
-/* The symbol hash table: a vector of TABSIZE pointers to struct glosym. */
-symbol *symtab[TABSIZE];
+/* The symbol hash table: a vector of SYMTABSIZE pointers to struct glosym. */
+extern symbol *symtab[];
#define FOR_EACH_SYMBOL(i,sp) { \
int i; \
- for (i = 0; i < TABSIZE; i++) { \
+ for (i = 0; i < SYMTABSIZE; i++) { \
register symbol *sp; \
for (sp = symtab[i]; sp; sp = sp->link)
#define END_EACH_SYMBOL }}
-/* Number of symbols in symbol hash table. */
-int num_hash_tab_syms;
-
-/* Count number of nlist entries for global symbols */
-int global_sym_count;
-
-/* Count number of N_SIZE nlist entries for output (relocatable_output only) */
-int size_sym_count;
-
-/* Count the number of nlist entries that are for local symbols.
- This count and the three following counts
- are incremented as as symbols are entered in the symbol table. */
-int local_sym_count;
-
-/* Count number of nlist entries that are for local symbols
- whose names don't start with L. */
-int non_L_local_sym_count;
-
-/* Count the number of nlist entries for debugger info. */
-int debugger_sym_count;
-
-/* Count the number of global symbols referenced and not defined. */
-int undefined_global_sym_count;
-
-/* Count the number of symbols referenced from shared objects and not defined */
-int undefined_shobj_sym_count;
-
-/* Count the number of global symbols multiply defined. */
-int multiple_def_count;
-
-/* Count the number of defined global symbols.
- Each symbol is counted only once
- regardless of how many different nlist entries refer to it,
- since the output file will need only one nlist entry for it.
- This count is computed by `digest_symbols';
- it is undefined while symbols are being loaded. */
-int defined_global_sym_count;
-
-/* Count the number of symbols defined through common declarations.
- This count is kept in symdef_library, linear_library, and
- enter_global_ref. It is incremented when the defined flag is set
- in a symbol because of a common definition, and decremented when
- the symbol is defined "for real" (ie. by something besides a common
- definition). */
-int common_defined_global_count;
-
-/* Count the number of linker defined symbols.
- XXX - Currently, only __DYNAMIC and _G_O_T_ go here if required,
- perhaps _etext, _edata and _end should go here too */
-int special_sym_count;
-
-/* Count number of aliased symbols */
-int global_alias_count;
-
-/* Count number of set element type symbols and the number of separate
- vectors which these symbols will fit into */
-int set_symbol_count;
-int set_vector_count;
-
-/* Define a linked list of strings which define symbols which should
- be treated as set elements even though they aren't. Any symbol
- with a prefix matching one of these should be treated as a set
- element.
-
- This is to make up for deficiencies in many assemblers which aren't
- willing to pass any stabs through to the loader which they don't
- understand. */
-struct string_list_element {
- char *str;
- struct string_list_element *next;
-};
+/* # of global symbols referenced and not defined. */
+extern int undefined_global_sym_count;
-struct string_list_element *set_element_prefixes;
+/* # of undefined symbols referenced by shared objects */
+extern int undefined_shobj_sym_count;
-/* Count the number of warning symbols encountered. */
-int warning_count;
+/* # of multiply defined symbols. */
+extern int multiple_def_count;
-/* 1 => write load map. */
-int write_map;
+/* # of common symbols. */
+extern int common_defined_global_count;
-/* 1 => write relocation into output file so can re-input it later. */
-int relocatable_output;
+/* # of warning symbols encountered. */
+extern int warning_count;
-/* Nonzero means ptr to symbol entry for symbol to use as start addr.
- -e sets this. */
-symbol *entry_symbol;
+/*
+ * Define a linked list of strings which define symbols which should be
+ * treated as set elements even though they aren't. Any symbol with a prefix
+ * matching one of these should be treated as a set element.
+ *
+ * This is to make up for deficiencies in many assemblers which aren't willing
+ * to pass any stabs through to the loader which they don't understand.
+ */
+struct string_list_element {
+ char *str;
+ struct string_list_element *next;
+};
-symbol *edata_symbol; /* the symbol _edata */
-symbol *etext_symbol; /* the symbol _etext */
-symbol *end_symbol; /* the symbol _end */
-symbol *got_symbol; /* the symbol __GLOBAL_OFFSET_TABLE_ */
-symbol *dynamic_symbol; /* the symbol __DYNAMIC */
+extern symbol *entry_symbol; /* the entry symbol, if any */
+extern symbol *edata_symbol; /* the symbol _edata */
+extern symbol *etext_symbol; /* the symbol _etext */
+extern symbol *end_symbol; /* the symbol _end */
+extern symbol *got_symbol; /* the symbol __GLOBAL_OFFSET_TABLE_ */
+extern symbol *dynamic_symbol; /* the symbol __DYNAMIC */
-
/*
* Each input file, and each library member ("subfile") being loaded, has a
* `file_entry' structure for it.
@@ -573,160 +470,82 @@ symbol *dynamic_symbol; /* the symbol __DYNAMIC */
*/
struct file_entry {
- /* Name of this file. */
- char *filename;
-
+ char *filename; /* Name of this file. */
/*
* Name to use for the symbol giving address of text start Usually
* the same as filename, but for a file spec'd with -l this is the -l
* switch itself rather than the filename.
*/
- char *local_sym_name;
-
- /* Describe the layout of the contents of the file */
-
- /* The file's a.out header. */
- struct exec header;
-#if 0
- /* Offset in file of GDB symbol segment, or 0 if there is none. */
- int symseg_offset;
-#endif
-
- /* Describe data from the file loaded into core */
-
+ char *local_sym_name;
+ struct exec header; /* The file's a.out header. */
+ localsymbol_t *symbols; /* Symbol table of the file. */
+ int nsymbols; /* Number of symbols in above array. */
+ int string_size; /* Size in bytes of string table. */
+ char *strings; /* Pointer to the string table when
+ in core, NULL otherwise */
+ int strings_offset; /* Offset of string table,
+ (normally N_STROFF() + 4) */
/*
- * Symbol table of the file.
- * We need access to the global symbol early, ie. before
- * symbols are asssigned there final values. gotslot_offset is
- * here because GOT entries may be generated for local symbols.
+ * Next two used only if `relocatable_output' or if needed for
+ * output of undefined reference line numbers.
*/
- struct localsymbol {
- struct nzlist nzlist;
- struct glosym *symbol;
- struct localsymbol *next;
- long gotslot_offset;
- char gotslot_claimed;
- char write;
- char is_L_symbol;
- char rename;
- int symbolnum;
- } *symbols;
-
- /* Number of symbols in above array. */
- int nsymbols;
-
- /* Size in bytes of string table. */
- int string_size;
+ struct relocation_info *textrel; /* Text relocations */
+ int ntextrel; /* # of text relocations */
+ struct relocation_info *datarel; /* Data relocations */
+ int ndatarel; /* # of data relocations */
/*
- * Pointer to the string table. The string table is not kept in core
- * all the time, but when it is in core, its address is here.
+ * Relation of this file's segments to the output file.
*/
- char *strings;
-
- /* Offset of string table (normally N_STROFF() + 4) */
- int strings_offset;
-
- /* Next two used only if `relocatable_output' or if needed for */
- /* output of undefined reference line numbers. */
-
- /* Text reloc info saved by `write_text' for `coptxtrel'. */
- struct relocation_info *textrel;
- int ntextrel;
-
- /* Data reloc info saved by `write_data' for `copdatrel'. */
- struct relocation_info *datarel;
- int ndatarel;
-
- /* Relation of this file's segments to the output file */
-
- /* Start of this file's text seg in the output file core image. */
- int text_start_address;
-
- /* Start of this file's data seg in the output file core image. */
- int data_start_address;
-
- /* Start of this file's bss seg in the output file core image. */
- int bss_start_address;
-#if 0
- /*
- * Offset in bytes in the output file symbol table of the first local
- * symbol for this file. Set by `write_file_symbols'.
- */
- int local_syms_offset;
-#endif
-
- /* For library members only */
-
- /* For a library, points to chain of entries for the library members. */
- struct file_entry *subfiles;
-
- /*
- * For a library member, offset of the member within the archive.
- * Zero for files that are not library members.
- */
- int starting_offset;
-
- /* Size of contents of this file, if library member. */
- int total_size;
-
- /* For library member, points to the library's own entry. */
- struct file_entry *superfile;
-
- /* For library member, points to next entry for next member. */
- struct file_entry *chain;
-
+ int text_start_address; /* Start of this file's text segment
+ in the output file core image. */
+ int data_start_address; /* Start of this file's data segment
+ in the output file core image. */
+ int bss_start_address; /* Start of this file's bss segment
+ in the output file core image. */
+ struct file_entry *subfiles; /* For a library, points to chain of
+ entries for the library members. */
+ struct file_entry *superfile; /* For library member, points to the
+ library's own entry. */
+ struct file_entry *chain; /* For library member, points to next
+ entry for next member. */
+ int starting_offset; /* For a library member, offset of the
+ member within the archive. Zero for
+ files that are not library members.*/
+ int total_size; /* Size of contents of this file,
+ if library member. */
#ifdef SUN_COMPAT
- /* For shared libraries which have a .sa companion */
- struct file_entry *silly_archive;
+ struct file_entry *silly_archive;/* For shared libraries which have
+ a .sa companion */
#endif
-
- /* 1 if file is a library. */
- char library_flag;
-
- /* 1 if file's header has been read into this structure. */
- char header_read_flag;
-
- /* 1 means search a set of directories for this file. */
- char search_dirs_flag;
-
- /*
- * 1 means this is base file of incremental load. Do not load this
- * file's text or data. Also default text_start to after this file's
- * bss.
- */
- char just_syms_flag;
-
- /* 1 means search for dynamic libraries (dependent on -B switch) */
- char search_dynamic_flag;
-
- /* version numbers of selected shared library */
- int lib_major, lib_minor;
-
- /* This entry is a shared object */
- char is_dynamic;
-
- /* 1 if this entry is not a major player anymore */
- char scrapped;
+ int lib_major, lib_minor; /* Version numbers of a shared object */
+
+ int flags;
+#define E_IS_LIBRARY 1 /* File is a an archive */
+#define E_HEADER_VALID 2 /* File's header has been read */
+#define E_SEARCH_DIRS 4 /* Search directories for file */
+#define E_SEARCH_DYNAMIC 8 /* Search for shared libs allowed */
+#define E_JUST_SYMS 0x10 /* File is used for incremental load */
+#define E_DYNAMIC 0x20 /* File is a shared object */
+#define E_SCRAPPED 0x40 /* Ignore this file */
+#define E_SYMBOLS_USED 0x80 /* Symbols from this entry were used */
};
-typedef struct localsymbol localsymbol_t;
+/*
+ * Section start addresses.
+ */
+extern int text_size; /* total size of text. */
+extern int text_start; /* start of text */
+extern int text_pad; /* clear space between text and data */
+extern int data_size; /* total size of data. */
+extern int data_start; /* start of data */
+extern int data_pad; /* part of bss segment within data */
-/* Vector of entries for input files specified by arguments.
- These are all the input files except for members of specified libraries. */
-struct file_entry *file_table;
+extern int bss_size; /* total size of bss. */
+extern int bss_start; /* start of bss */
-/* Length of that vector. */
-int number_of_files;
-
-/* Current link mode */
-#define DYNAMIC 1 /* Consider shared libraries */
-#define SYMBOLIC 2 /* Force symbolic resolution */
-#define FORCEARCHIVE 4 /* Force inclusion of all members
- of archives */
-#define SHAREABLE 8 /* Build a shared object */
-#define SILLYARCHIVE 16 /* Process .sa companions, if any */
-int link_mode;
+extern int text_reloc_size; /* total size of text relocation. */
+extern int data_reloc_size; /* total size of data relocation. */
/*
* Runtime Relocation Section (RRS).
@@ -735,115 +554,57 @@ int link_mode;
* static linking), or can just exist of GOT and PLT entries (in case of
* statically linked PIC code).
*/
-
-int rrs_section_type;
+extern int rrs_section_type; /* What's in the RRS section */
#define RRS_NONE 0
#define RRS_PARTIAL 1
#define RRS_FULL 2
-
-int rrs_text_size;
-int rrs_data_size;
-int rrs_text_start;
-int rrs_data_start;
+extern int rrs_text_size; /* Size of RRS text additions */
+extern int rrs_text_start; /* Location of above */
+extern int rrs_data_size; /* Size of RRS data additions */
+extern int rrs_data_start; /* Location of above */
/* Version number to put in __DYNAMIC (set by -V) */
-int soversion;
-
-/* When loading the text and data, we can avoid doing a close
- and another open between members of the same library.
-
- These two variables remember the file that is currently open.
- Both are zero if no file is open.
-
- See `each_file' and `file_close'. */
-
-struct file_entry *input_file;
-int input_desc;
-
-/* The name of the file to write; "a.out" by default. */
-
-char *output_filename;
-
-/* Descriptor for writing that file with `mywrite'. */
-
-int outdesc;
-
-/* Header for that file (filled in by `write_header'). */
-
-struct exec outheader;
-
-/* The following are computed by `digest_symbols'. */
-
-int text_size; /* total size of text of all input files. */
-int data_size; /* total size of data of all input files. */
-int bss_size; /* total size of bss of all input files. */
-int text_reloc_size; /* total size of text relocation of all input files. */
-int data_reloc_size; /* total size of data relocation of all input files. */
-
-/* Relocation offsets set by perform_relocation(). Defined globaly here
- because some of the RRS routines need access to them */
-int text_relocation;
-int data_relocation;
-int bss_relocation;
-int pc_relocation;
-
-/* Specifications of start and length of the area reserved at the end
- of the data segment for the set vectors. Computed in 'digest_symbols' */
-int set_sect_start;
-int set_sect_size;
-
-/* Amount of cleared space to leave between the text and data segments. */
-int text_pad;
-
-/* Amount of bss segment to include as part of the data segment. */
-int data_pad;
+extern int soversion;
+#ifndef DEFAULT_SOVERSION
+#define DEFAULT_SOVERSION LD_VERSION_BSD
+#endif
+extern int pc_relocation; /* Current PC reloc value */
-/* Record most of the command options. */
+extern int number_of_shobjs; /* # of shared objects linked in */
-/* Address we assume the text section will be loaded at.
- We relocate symbols and text and data for this, but we do not
- write any padding in the output file for it. */
-int text_start;
+/* Current link mode */
+extern int link_mode;
+#define DYNAMIC 1 /* Consider shared libraries */
+#define SYMBOLIC 2 /* Force symbolic resolution */
+#define FORCEARCHIVE 4 /* Force inclusion of all members
+ of archives */
+#define SHAREABLE 8 /* Build a shared object */
+#define SILLYARCHIVE 16 /* Process .sa companions, if any */
-/* Offset of default entry-pc within the text section. */
-int entry_offset;
+extern int outdesc; /* Output file descriptor. */
+extern struct exec outheader; /* Output file header. */
+extern int magic; /* Output file magic. */
+extern int oldmagic;
+extern int relocatable_output;
-/* Address we decide the data section will be loaded at. */
-int data_start;
-int bss_start;
+/* Size of a page. */
+extern int page_size;
-/* Keep a list of any symbols referenced from the command line (so
- that error messages for these guys can be generated). This list is
- zero terminated. */
-struct glosym **cmdline_references;
-int cl_refs_allocated;
+extern char **search_dirs; /* Directories to search for libraries. */
+extern int n_search_dirs; /* Length of above. */
-/*
- * Actual vector of directories to search; this contains those specified with
- * -L plus the standard ones.
- */
-char **search_dirs;
+extern int write_map; /* write a load map (`-M') */
-/* Length of the vector `search_dirs'. */
-int n_search_dirs;
+extern void (*fatal_cleanup_hook)__P((void));
-void load_symbols __P((void));
void read_header __P((int, struct file_entry *));
void read_entry_symbols __P((int, struct file_entry *));
void read_entry_strings __P((int, struct file_entry *));
void read_entry_relocation __P((int, struct file_entry *));
void enter_file_symbols __P((struct file_entry *));
void read_file_symbols __P((struct file_entry *));
-
-void write_output __P((void));
-void write_header __P((void));
-void write_text __P((void));
-void write_data __P((void));
-void write_rel __P((void));
-void write_syms __P((void));
-void write_symsegs __P((void));
-void mywrite ();
+void mywrite __P((void *, int, int, int));
/* In warnings.c: */
void perror_name __P((char *));
@@ -917,10 +678,10 @@ void swap_longs __P((long *, int));
void swap_symbols __P((struct nlist *, int));
void swap_zsymbols __P((struct nzlist *, int));
void swap_ranlib_hdr __P((struct ranlib *, int));
-void swap_link_dynamic __P((struct link_dynamic *));
-void swap_link_dynamic_2 __P((struct link_dynamic_2 *));
-void swap_ld_debug __P((struct ld_debug *));
-void swapin_link_object __P((struct link_object *, int));
-void swapout_link_object __P((struct link_object *, int));
+void swap__dynamic __P((struct link_dynamic *));
+void swap_section_dispatch_table __P((struct section_dispatch_table *));
+void swap_so_debug __P((struct so_debug *));
+void swapin_sod __P((struct sod *, int));
+void swapout_sod __P((struct sod *, int));
void swapout_fshash __P((struct fshash *, int));
#endif
OpenPOWER on IntegriCloud