From 27612c29661b7055af2fd24ed7aec0be740bcd52 Mon Sep 17 00:00:00 2001 From: Per Bothner Date: Fri, 22 Nov 1991 05:22:06 +0000 Subject: [PATCH] stab.def: Remove the GNU extended type codes (e.g. N_SETT). aoutx.h: Put back the N_HEADER_IN_TEXT(x) that John removed, but use his heuristic as its default definition. bfd.H; Re-generated. --- include/ChangeLog | 10 ++++++++++ include/aout64.h | 33 ++++++++++++++++++++++++--------- include/bfd.h | 8 -------- include/stab.def | 40 ---------------------------------------- 4 files changed, 34 insertions(+), 57 deletions(-) diff --git a/include/ChangeLog b/include/ChangeLog index 9df89e66e3..97ee40335e 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,13 @@ +Thu Nov 21 21:01:05 1991 Per Bothner (bothner at cygnus.com) + + * stab.def: Remove the GNU extended type codes (e.g. N_SETT). + * aout64.h: The heuristic for distinguishing between + sunos-style and bsd-style ZMAGIC files (wrt. where the + text segment starts) is moved into (the default definition of) + the macro N_HEADER_IN_TEXT. This definition is only used + if no other definition is used - e.g. bfd/newsos3.c defines + N_HEADER_IN_TEXT(x) to be always 0 (as before). + Thu Nov 21 11:53:03 1991 John Gilmore (gnu at cygnus.com) * aout64.h (N_TXTADDR, N_TXTOFF, N_TXTSIZE): New definitions diff --git a/include/aout64.h b/include/aout64.h index f4eac3c393..3a915a2a89 100755 --- a/include/aout64.h +++ b/include/aout64.h @@ -53,15 +53,30 @@ struct external_exec * entry point below TEXT_START_ADDR: (hack for SunOS shared libraries) start at 0, offset is 0, size as stated. - * entry point is EXEC_BYTES_SIZE or further into a page: - (no padding is needed; text can start after exec header. Sun + * If N_HEADER_IN_TEXT(x) is true (which defaults to being the + case when the entry point is EXEC_BYTES_SIZE or further into a page): + no padding is needed; text can start after exec header. Sun considers the text segment of such files to include the exec header; - for BFD's purposes, we don't, which makes more work for us.) + for BFD's purposes, we don't, which makes more work for us. start at TEXT_START_ADDR + EXEC_BYTES_SIZE, offset is EXEC_BYTES_SIZE, size as stated minus EXEC_BYTES_SIZE. - * entry point is less than EXEC_BYTES_SIZE into a page (e.g. page aligned): - (padding is needed so that text can start at a page boundary) - start at TEXT_START_ADDR, offset PAGE_SIZE, size as stated. */ + * If N_HEADER_IN_TEXT(x) is false (which defaults to being the case when + the entry point is less than EXEC_BYTES_SIZE into a page (e.g. page + aligned)): (padding is needed so that text can start at a page boundary) + start at TEXT_START_ADDR, offset PAGE_SIZE, size as stated. + + Specific configurations may want to hardwire N_HEADER_IN_TEXT, + for efficiency or to allow people to play games with the entry point. + In that case, you would #define N_HEADER_IN_TEXT(x) as 1 for sunos, + and as 0 for most other hosts (Sony News, Vax Ultrix, etc). + (Do this in the appropriate bfd target file.) + (The default is a heuristic that will break if people try changing + the entry point, perhaps with the ld -e flag.) + */ + +#ifndef N_HEADER_IN_TEXT +#define N_HEADER_IN_TEXT(x) (((x).a_entry & (PAGE_SIZE-1)) >= EXEC_BYTES_SIZE) +#endif #ifndef N_TXTADDR #define N_TXTADDR(x) \ @@ -69,7 +84,7 @@ struct external_exec 0: /* object file or NMAGIC */\ ((x).a_entry < TEXT_START_ADDR)? \ 0: /* shared lib */\ - ( (((x).a_entry & (PAGE_SIZE-1)) >= EXEC_BYTES_SIZE) ? \ + (N_HEADER_IN_TEXT(x) ? \ TEXT_START_ADDR + EXEC_BYTES_SIZE: /* no padding */\ TEXT_START_ADDR /* a page of padding */\ ) \ @@ -83,7 +98,7 @@ struct external_exec EXEC_BYTES_SIZE: /* object file or NMAGIC */\ ((x).a_entry < TEXT_START_ADDR)? \ 0: /* shared lib */\ - ( (((x).a_entry & (PAGE_SIZE-1)) >= EXEC_BYTES_SIZE) ? \ + (N_HEADER_IN_TEXT(x) ? \ EXEC_BYTES_SIZE: /* no padding */\ PAGE_SIZE /* a page of padding */\ ) \ @@ -100,7 +115,7 @@ struct external_exec (x).a_text: /* object file or NMAGIC */\ ((x).a_entry < TEXT_START_ADDR)? \ (x).a_text: /* shared lib */\ - ( (((x).a_entry & (PAGE_SIZE-1)) >= EXEC_BYTES_SIZE) ? \ + (N_HEADER_IN_TEXT(x) ? \ (x).a_text - EXEC_BYTES_SIZE: /* no padding */\ (x).a_text /* a page of padding */\ ) \ diff --git a/include/bfd.h b/include/bfd.h index d85694afeb..d07ca94ca6 100644 --- a/include/bfd.h +++ b/include/bfd.h @@ -1647,14 +1647,6 @@ Return a lower-case character corresponding to the symbol class of symbol. PROTO(int, bfd_decode_symclass, (asymbol *symbol)); -/* - - bfd_stab_name -Returns a string for the stab with the given code, or NULL if not found. -*/ - - PROTO(char *, bfd_stab_name, (int code)); - /* */ diff --git a/include/stab.def b/include/stab.def index c9d434c15b..db40079aa3 100755 --- a/include/stab.def +++ b/include/stab.def @@ -166,46 +166,6 @@ __define_stab (N_NBLCS, 0xF8, "NBLCS") The value is the length. */ __define_stab (N_LENG, 0xfe, "LENG") -#ifdef GNU_EXTRA_STABS -/* These are defined in a.out.gnu.h, so they are usually left out here. */ - -/* The following symbols refer to set elements. - All the N_SET[ATDB] symbols with the same name form one set. - Space is allocated for the set in the text section, and each set - element's value is stored into one word of the space. - The first word of the space is the length of the set (number of elements). - - The address of the set is made into an N_SETV symbol - whose name is the same as the name of the set. - This symbol acts like a N_DATA global symbol - in that it can satisfy undefined external references. */ - -/* These appear as input to LD, in a .o file. */ -__define_stab (N_SETA, 0x14, "SETA") /* Absolute set element symbol */ -__define_stab (N_SETT, 0x16, "SETT") /* Text set element symbol */ -__define_stab (N_SETD, 0x18, "SETD") /* Data set element symbol */ -__define_stab (N_SETB, 0x1A, "SETB") /* Bss set element symbol */ - -/* This is output from LD. */ -__define_stab (N_SETV, 0x1C, "SETV") /* Pointer to set vector in data area. */ - -/* The following type indicates the definition of a symbol as being - an indirect reference to another symbol. The other symbol - appears as an undefined reference, immediately following this symbol. - - Indirection is asymmetrical. The other symbol's value will be used - to satisfy requests for the indirect symbol, but not vice versa. - If the other symbol does not have a definition, libraries will - be searched to find a definition. */ - -__define_stab (N_INDR, 0xa, "INDR") - -/* Warning symbol. The text gives a warning message, the next symbol - in the table will be undefined. When the symbol is referenced, the - message is printed. */ - -__define_stab (N_WARNING, 0x1e, "WARNING") -#endif /* The above information, in matrix format.