Re: [RFA] dwarf2cfi.c fix for shlibs

Elena Zannoni
2002-05-21T02:05:48Z

Michal Ludvig writes:
> Hi all,
> this patch fixed mapping of FDE entries from shared libraries.
> OK to commit to mainline and branch?
>
> 2002-05-15 Michal Ludvig <mludvig@suse.cz>
>
> * dwarf2cfi.c (dwarf2_build_frame_info): Add objfile->section_offset
> to fde->initial_location so that frames of shared libraries are mapped
> correctly.
>
> Michal Ludvig
> --
> * SuSE CR, s.r.o * mludvig@suse.cz
> * +420 2 9654 5373 * http://www.suse.cz
> Index: dwarf2cfi.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/dwarf2cfi.c,v
> retrieving revision 1.1.2.2
> diff -c -3 -p -r1.1.2.2 dwarf2cfi.c
> *** dwarf2cfi.c 14 May 2002 09:50:39 -0000 1.1.2.2
> --- dwarf2cfi.c 15 May 2002 15:03:06 -0000
> *************** dwarf2_build_frame_info (struct objfile
> *** 1476,1482 ****
> fde = fde_unit_alloc ();
>
> fde_chunks.array[fde_chunks.elems++] = fde;
> ! fde->initial_location = read_pointer (abfd, &start);
> fde->address_range = read_pointer (abfd, &start);
>
> for (cie = cie_chunks;
> --- 1476,1483 ----
> fde = fde_unit_alloc ();
>
> fde_chunks.array[fde_chunks.elems++] = fde;
> ! fde->initial_location = read_pointer (abfd, &start)
> ! + objfile->section_offsets[objfile->sect_index_text].offsets[0];
> fde->address_range = read_pointer (abfd, &start);
>
> for (cie = cie_chunks;

You should use

fde->initial_location = read_pointer (abfd, &start)
+ ANOFFSET (objfile->section_offsets, SECT_OFF_TEXT (objfile));

instead.

Otherwise it's ok.

Elena

BTW: I get 2 warnings compiling dwarf2cfi.c on i386.
/home/ezannoni/sources/src/gdb/dwarf2cfi.c: In function `execute_stack_op':
/home/ezannoni/sources/src/gdb/dwarf2cfi.c:1079: warning: cast to pointer from integer of different size
/home/ezannoni/sources/src/gdb/dwarf2cfi.c:1086: warning: cast to pointer from integer of different size