RFA: Skip ARM ELF Mapping symbols when showing disassembly

Nick Clifton nickc@redhat.com
Tue Nov 25 12:25:00 GMT 2003


Hi Andrew,

> Hmm, what information do those mapping symbols provide?  Dig dig (from
> tc-arm.c) ...
[snip]
> So GDB and objdump both need this information?

Well yes and no...

> How does objdump handle all this?

Apart from a hack to objdump to skip the mapping symbols when
displaying disassembly it does not use them.

Objdump (and gdb) both have perfectly adequate mechanisms for
distinguishing between code and data and between ARM and THUMB
instructions, so they do not need the mapping symbols.

The code to support mapping symbols in GAS was developed by ARM and I
accepted it because these symbols are required by the ARM ELF
specification.  [I believe that where possible, binutils should
attempt to follow all appropriate standards and specifications].  Note
- the patch is not a complete implementation of the specification
since the linker ought to generate these mapping symbols for its
arm<->thumb calling stubs.  Currently this has not been implemented.

So basically the mapping symbols are a distraction which gdb ought to
be able to ignore.  (Or use if it feels so minded, although as I say,
they are not fully implemented yet).


> - should there be a BFD method that lets GDB better identify a user
> visible [minimal] symbol (gdb's elf reader currently contains what
> can only be described as heuristics).

Yes - this would be a much cleaner way of handling this situation, and
presumably similar situations for other architectures which have
system type symbols which users are not supposed to see.


> - should there be a BFD method that, given an address and symbol
> table, indicates the relevant ISA/ABI?

Not sure.  Having such a method would be a good idea, but I am not
sure if it belongs in BFD or in OPCODES.  (Since opcodes already has
other disassembler related stuff).


> - or even just have BFD export name->addr and addr->name methods?

It already exports the bfd_asymbol_value() macro which can do
name->addr translation and the _bfd_find_nearest_line() function which
can do addr->name translation.  (Although it does not return a symbol
pointer).  Were you thinking of these or something else ?


Cheers
        Nick



More information about the Binutils mailing list