diff options
author | Alan Modra <amodra@gmail.com> | 2020-02-27 14:23:34 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-02-28 08:19:42 +1030 |
commit | 49d9fd42acefc1c0ee282b5808874a1074bf1ecd (patch) | |
tree | 3c8bd0797cc2ab936cc18e7165c19b5247b1643c /bfd/syms.c | |
parent | 3104d9ee223133b9f5be4ec96b3f986e4fbc893e (diff) | |
download | gdb-49d9fd42acefc1c0ee282b5808874a1074bf1ecd.zip gdb-49d9fd42acefc1c0ee282b5808874a1074bf1ecd.tar.gz gdb-49d9fd42acefc1c0ee282b5808874a1074bf1ecd.tar.bz2 |
.idata symbols should be reported with i or I flag by nm
PR 24511
* syms.c (stt): Trim off all but 'e', 'i' and 'p' entries.
(coff_section_type): Adjust comment.
(decode_section_type): Likewise. Call coff_section_type before
decode_section_type.
(bfd_decode_symclass): Use 'c' for common sections other than
the standard one.
Diffstat (limited to 'bfd/syms.c')
-rw-r--r-- | bfd/syms.c | 33 |
1 files changed, 11 insertions, 22 deletions
@@ -565,30 +565,15 @@ struct section_to_type char type; }; -/* Map section names to POSIX/BSD single-character symbol types. +/* Map special section names to POSIX/BSD single-character symbol types. This table is probably incomplete. It is sorted for convenience of adding entries. Since it is so short, a linear search is used. */ static const struct section_to_type stt[] = { - {".bss", 'b'}, - {"code", 't'}, /* MRI .text */ - {".data", 'd'}, - {"*DEBUG*", 'N'}, - {".debug", 'N'}, /* MSVC's .debug (non-standard debug syms) */ {".drectve", 'i'}, /* MSVC's .drective section */ {".edata", 'e'}, /* MSVC's .edata (export) section */ - {".fini", 't'}, /* ELF fini section */ {".idata", 'i'}, /* MSVC's .idata (import) section */ - {".init", 't'}, /* ELF init section */ {".pdata", 'p'}, /* MSVC's .pdata (stack unwind) section */ - {".rdata", 'r'}, /* Read only data. */ - {".rodata", 'r'}, /* Read only data. */ - {".sbss", 's'}, /* Small BSS (uninitialized data). */ - {".scommon", 'c'}, /* Small common. */ - {".sdata", 'g'}, /* Small initialized data. */ - {".text", 't'}, - {"vars", 'd'}, /* MRI .data */ - {"zerovars", 'b'}, /* MRI .bss */ {0, 0} }; @@ -596,8 +581,7 @@ static const struct section_to_type stt[] = section S, or '?' for an unknown COFF section. Check for leading strings which match, followed by a number, '.', - or '$' so .text5 matches the .text entry, but .init_array doesn't - match the .init entry. */ + or '$' so .idata5 matches the .idata entry. */ static char coff_section_type (const char *s) @@ -619,7 +603,7 @@ coff_section_type (const char *s) SECTION, or '?' for an unknown section. This uses section flags to identify sections. - FIXME These types are unhandled: c, i, e, p. If we handled these also, + FIXME These types are unhandled: e, i, p. If we handled these also, we could perhaps obsolete coff_section_type. */ static char @@ -668,7 +652,12 @@ bfd_decode_symclass (asymbol *symbol) char c; if (symbol->section && bfd_is_com_section (symbol->section)) - return 'C'; + { + if (symbol->section == bfd_com_section_ptr) + return 'C'; + else + return 'c'; + } if (bfd_is_und_section (symbol->section)) { if (symbol->flags & BSF_WEAK) @@ -705,9 +694,9 @@ bfd_decode_symclass (asymbol *symbol) c = 'a'; else if (symbol->section) { - c = decode_section_type (symbol->section); + c = coff_section_type (symbol->section->name); if (c == '?') - c = coff_section_type (symbol->section->name); + c = decode_section_type (symbol->section); } else return '?'; |