using bfd, help please I am confused

Ian Lance Taylor ian@airs.com
Fri Jun 20 18:07:00 GMT 2003


Robert Schweikert <Robert.Schweikert@abaqus.com> writes:

> My assumption is that I can somehow figure out the address of the
> function I am in, from here I'd like to figure out the function name.
> The approach is to use the 
> 
> void * __builtin_return_address (unsigned int level)
> 
> kernel function to get the return address of the stack from there I
> should be able to figure out the function/method name/symbol.

That's a gcc builtin function, not a kernel function.

If you pass the address you get to addr2line, you should find the
function name, etc.  Here's the documentation for addr2line:
    http://sources.redhat.com/binutils/docs-2.12/binutils.info/addr2line.html#addr2line

If you want to get that information from within the program, without
using an external program, then you are going to have to link your
program against libbfd and call bfd_find_nearest_line().  Look at the
sources to addr2line for some hints.

Ian



More information about the Binutils mailing list