This is the mail archive of the 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]

[RFA] MIPS_TEXT symbols should be associated to .text section?


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  <>

        * 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?


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]