[Dwarf-Discuss] arm literal pool

David Anderson davea42@earthlink.net
Tue Sep 15 17:24:50 GMT 2009


I did not feel like responding to gcc or gdb lists, so this
reply is just in the dwarf-discuss list.

ranjith kumar wrote:
> Hi,
>
> 1)   Given an ARM executable, how to know weather a given address
> contains  an 'arm instruction' or 'literal pool' ??
>   
If the DWARF information is appropriately complete and
correct, then the answer is yes.
> 2) What happens when we strip that binary?  Can we still determine
> whether given address contains  an 'arm instruction' or 'literal
> pool'?
>   
Now the answer depends on whether the remaining information in the binary
is 'complete enough'.     For example .debug_frame  or
   .eh_frame (.eh_frame is not actually DWARF but is similar)
will likely be enough to answer the question. If it is sufficiently 
complete and
correct.
> 3)Can    libelf/libdwarf libraries  determine  whether given address
> contains  an 'arm instruction' or 'literal pool'  even after that
> library has been stripped? Where can I find sample programs which uses
> libelf/libdwarf libraries and will tell  whether given address
> contains  an 'arm instruction' or 'literal pool' ?
>   
If stripped, the answer is, as I say above, 'maybe'.
The source to gdb is such a 'sample program' one could look at,
though it does not use libdwarf.
> 4) How debuggers build control flow graph from an executable, when
> 'literal pool' appears in between 'instructions'?
Actually a control flow graph is never necessary for a debugger.
Other tools may want to build such (such as performance-measuring tools)
but  debuggers don't need that.  Debuggers do need to be able, given
an address, to know what function contains that address (if any function 
does).
Well, and other things.    But a complete application-wide call
graph is not needed.

Hope this makes sense.
David Anderson




More information about the Dwarf-discuss mailing list