This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello, I was looking at a fairly high number of regressions in the GDB testsuite on mips-irix, and one of them was caused by the fact that we searched a symbol by its address and that we match the possible candidates against the expected section. For instance, consider the following symbol "main" from my executable. nm on this symbol says: [76] | 268441176| 252|FUNC |GLOB |DEFAULT |MIPS_TEXT|main GDB is searching the symbol table for a symbol stored at 0x10001658 (268441176 = 0x10001658). The first thing it does is going through all the sections of the executable, and determine that there is only one section that contains this address: .text. So it figures that if a symbol matches this address, it will belong to that section. After that, it scans all symbols by address, and only find one symbol, the symbol above. But unfortunately, because the st_shndx is a bit special (SHN_MIPS_TEXT = 0xff01), it doesn't point to the .text section directly. So when bfd was used to read the symbol table, it defaulted the section of this symbol to an imaginary *ABS* section. And because of that, GDB discards my symbol because the section does not match. Objdump shows the same behavior: % objdump -T annota1 | grep main 10001658 g DF *ABS* 000000fc main Not knowing IRIX enough, I am not 110% sure that symbol main is indeed in section .text, but it seems pretty obvious: the address range of the section matches, .text is the only text section, the MIPS_TEXT shndx name... I read various man pages, but couldn't find anything that explicitly says MIPS_TEXT = .text section. So I made the following change, which allows us to recognize MIPS_TEXT. This fixes the symbol section to be .text, and as a consequence fixes the problem I've seen in GDB. Another evidence of the change is in the new output from the same objdump command: % objdump -T annota1 | grep main 10001658 g DF .text 000000fc main 2004-07-20 Joel Brobecker <brobecker@gnat.com> * elfxx-mips.c (_bfd_mips_elf_symbol_processing): Add handling for SHN_MIPS_TEXT symbols. Tested on mips-irix with no regressoin, by running the following testsuites: . binutils . libiberty . gas . ld . gdb OK to apply this patch? Thanks, -- Joel
Attachment:
elfxx-mips.c.diff
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |