|
|
|
@ -69,37 +69,47 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ |
|
|
|
#define SEEK_SET 0 |
|
|
|
#define SEEK_CUR 1 |
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
/* Each partial symbol table entry contains a pointer to private data for the
|
|
|
|
read_symtab() function to use when expanding a partial symbol table entry |
|
|
|
to a full symbol table entry. |
|
|
|
sym_read function to use when expanding a partial symbol table entry |
|
|
|
to a full symbol table entry. */ |
|
|
|
|
|
|
|
For dbxread this structure contains the offset within the file symbol table |
|
|
|
of first local symbol for this file, and length (in bytes) of the section |
|
|
|
of the symbol table devoted to this file's symbols (actually, the section |
|
|
|
bracketed may contain more than just this file's symbols). It also contains |
|
|
|
further information needed to locate the symbols if they are in an ELF file. |
|
|
|
|
|
|
|
If ldsymlen is 0, the only reason for this thing's existence is the |
|
|
|
dependency list. Nothing else will happen when it is read in. */ |
|
|
|
struct symloc { |
|
|
|
|
|
|
|
#define LDSYMOFF(p) (((struct symloc *)((p)->read_symtab_private))->ldsymoff) |
|
|
|
#define LDSYMLEN(p) (((struct symloc *)((p)->read_symtab_private))->ldsymlen) |
|
|
|
#define SYMLOC(p) ((struct symloc *)((p)->read_symtab_private)) |
|
|
|
#define SYMBOL_SIZE(p) (SYMLOC(p)->symbol_size) |
|
|
|
#define SYMBOL_OFFSET(p) (SYMLOC(p)->symbol_offset) |
|
|
|
#define STRING_OFFSET(p) (SYMLOC(p)->string_offset) |
|
|
|
#define FILE_STRING_OFFSET(p) (SYMLOC(p)->file_string_offset) |
|
|
|
/* Offset within the file symbol table of first local symbol for this
|
|
|
|
file. */ |
|
|
|
|
|
|
|
struct symloc { |
|
|
|
int ldsymoff; |
|
|
|
|
|
|
|
/* Length (in bytes) of the section of the symbol table devoted to
|
|
|
|
this file's symbols (actually, the section bracketed may contain |
|
|
|
more than just this file's symbols). If ldsymlen is 0, the only |
|
|
|
reason for this thing's existence is the dependency list. Nothing |
|
|
|
else will happen when it is read in. */ |
|
|
|
|
|
|
|
int ldsymlen; |
|
|
|
|
|
|
|
/* The size of each symbol in the symbol file (in external form). */ |
|
|
|
|
|
|
|
int symbol_size; |
|
|
|
|
|
|
|
/* Further information needed to locate the symbols if they are in
|
|
|
|
an ELF file. */ |
|
|
|
|
|
|
|
int symbol_offset; |
|
|
|
int string_offset; |
|
|
|
int file_string_offset; |
|
|
|
}; |
|
|
|
|
|
|
|
#define LDSYMOFF(p) (((struct symloc *)((p)->read_symtab_private))->ldsymoff) |
|
|
|
#define LDSYMLEN(p) (((struct symloc *)((p)->read_symtab_private))->ldsymlen) |
|
|
|
#define SYMLOC(p) ((struct symloc *)((p)->read_symtab_private)) |
|
|
|
#define SYMBOL_SIZE(p) (SYMLOC(p)->symbol_size) |
|
|
|
#define SYMBOL_OFFSET(p) (SYMLOC(p)->symbol_offset) |
|
|
|
#define STRING_OFFSET(p) (SYMLOC(p)->string_offset) |
|
|
|
#define FILE_STRING_OFFSET(p) (SYMLOC(p)->file_string_offset) |
|
|
|
|
|
|
|
|
|
|
|
/* Macro to determine which symbols to ignore when reading the first symbol
|
|
|
|
of a file. Some machines override this definition. */ |
|
|
|
#ifndef IGNORE_SYMBOL |
|
|
|
@ -2050,7 +2060,8 @@ process_one_symbol (type, desc, valu, name, section_offsets, objfile) |
|
|
|
#ifdef SOFUN_ADDRESS_MAYBE_MISSING |
|
|
|
/* Deal with the SunPRO 3.0 compiler which omits the address
|
|
|
|
from N_FUN symbols. */ |
|
|
|
if (type == N_FUN && valu == 0) |
|
|
|
if (type == N_FUN |
|
|
|
&& valu == ANOFFSET (section_offsets, SECT_OFF_TEXT)) |
|
|
|
{ |
|
|
|
struct minimal_symbol *msym; |
|
|
|
char *p; |
|
|
|
|