This is the mail archive of the elfutils-devel@sourceware.org mailing list for the elfutils 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]

Re: Dwarf_FDE (libdw)


[Resending cause it seems it didn't go]

So how do you get the augmentation data out of a Dwarf_Frame? Or how do you "simulate" the two next functions as libdwarf do?

dwarf_get_cie_augmentation_data
dwarf_get_fde_augmentation_data




From: Mark Wielaard <mark@klomp.org>
Sent: Saturday, July 15, 2017 4:30 PM
To: Sasha Da Rocha Pinheiro
Cc: elfutils-devel@sourceware.org
Subject: Re: Dwarf_FDE (libdw)
    
On Sat, Jul 15, 2017 at 01:00:04AM +0000, Sasha Da Rocha Pinheiro wrote:
> I did not understand how to get the augmentation_data of a FDE.
> Could anyone explain me?

Dwarf_FDE is really low level. It might be easier to use a Dwarf_CFI to
get a Dwarf_Frame to extract the information.

You get a Dwarf_CFI_Entry from dwarf_next_cfi. This is a union.
Use dwarf_cfi_cie_p (entry) to see if it is an CIE, if so you can access
the augmentation data from the Dwarf_CIE cie. If not it is an FDE and you
can only access to Dwarf_FDE fde values. The Dwarf_Off CIE_pointer can
be used with dwarf_next_cfi () as offset to find the corresponding

> Also, is the start and end of Dwarf_FDE to be used as
> [initial_location, initial_location+address_range)??

No, it is the FDE instructions (encoded). How they are encoded is given
by the CIE augmentation data, so you would have to decode that first.

That is why you really should use Dwarf_CFI and Dwarf_Frame functions.
Those use this low level data structures to decode all the information.

Cheers,

Mark
    

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]