Merge branch 'roland/debug_types'
authorRoland McGrath <roland@redhat.com>
Mon, 21 Jun 2010 00:14:29 +0000 (17:14 -0700)
committerRoland McGrath <roland@redhat.com>
Mon, 21 Jun 2010 00:15:02 +0000 (17:15 -0700)
Conflicts:
libdw/ChangeLog
libdw/libdw.map

1  2 
libdw/ChangeLog
libdw/Makefile.am
libdw/libdw.h
libdw/libdw.map
libdw/libdwP.h

diff --cc libdw/ChangeLog
+ 2010-06-16  Roland McGrath  <roland@redhat.com>
+       * dwarf_formref_die.c: Use dwarf_offdie only for DW_FORM_ref_addr, so
+       we don't repeat a CU lookup we've already done.  Handle
+       DW_FORM_ref_sig8 using sig8_hash table and __libdw_intern_next_unit.
+       * libdw_findcu.c (__libdw_intern_next_unit): New function,
+       broken out of ...
+       (__libdw_findcu): ... here.  Call it.
+       * libdwP.h: Declare it.
+       (struct Dwarf): New member next_tu_offset.
+       * dwarf_sig8_hash.c: New file.
+       * dwarf_sig8_hash.h: New file.
+       * Makefile.am (libdw_a_SOURCES, noinst_HEADERS): Add them.
+       * dwarf_abbrev_hash.c: Include dwarf_sig8_hash.h before
+       defining NO_UNDEF.
+       * libdwP.h (struct Dwarf): New member sig8_hash.
+       * dwarf_begin_elf.c: Call Dwarf_Sig8_Hash_init on it.
+       * dwarf_end.c: Call Dwarf_Sig8_Hash_free on it.
+       * dwarf_nextcu.c (dwarf_next_unit): New function, broken out of ...
+       (dwarf_nextcu): ... here.  Call it.
+       * libdw.h: Declare it.
+       * libdwP.h: Add INTDECL.
+       * libdw_findcu.c (__libdw_findcu): Use it instead of dwarf_nextcu.
+       * libdw.map (ELFUTILS_0.148): New set, add dwarf_next_unit.
+       * libdwP.h (cu_sec_idx, cu_data): New functions.
+       Use .debug_types when CU is a TU.
+       * dwarf_cuoffset.c: Use that instead of assuming IDX_debug_info.
+       * dwarf_siblingof.c: Likewise.
+       * dwarf_formstring.c: Likewise.
+       * dwarf_formudata.c (__libdw_formptr, dwarf_formudata): Likewise.
+       * dwarf_getlocation.c (dwarf_getlocation): Likewise.
+       (dwarf_getlocation_addr): Likewise.
+       * libdwP.h (struct Dwarf_CU): Add new members type_offset, type_sig8.
+       (DIE_OFFSET_FROM_CU_OFFSET): Take flag argument; if true, compute
+       .debug_types header size instead of .debug_info header size.
+       (CUDIE): Use it.
+       * dwarf_diecu.c: Update caller.
+       * dwarf_getaranges.c: Likewise.
+       * dwarf_nextcu.c: Likewise.
+       * libdw_findcu.c (__libdw_findcu): Initialize new members.
+       * fde.c (fde_by_offset): Renamed to ...
+       (__libdw_fde_by_offset): ... this, made global and internal_function.
+       Don't take ADDRESS argument.
+       (__libdw_find_fde): Update caller.  Do address sanity check here.
+       * cfi.h: Declare __libdw_fde_by_offset.
+       * cfi.c (dwarf_cfi_validate_fde): New function.
+       * libdw.h: Declare it.
+       * libdw.map (ELFUTILS_0.148): Add it.
+       * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
+       either DW_EH_PE_udata8 or DW_EH_PE_udata4.
+       * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
+       Don't assume DW_EH_PE_aligned refers to native address size.
+       * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
+       address.
 +2010-06-17  Roland McGrath  <roland@redhat.com>
 +
 +      * libdwP.h (struct Dwarf_Line_s): Add members isa, discriminator, and
 +      op_index.
 +      * dwarf_getsrclines.c (dwarf_getsrclines): Move NEW_FILE macro guts
 +      into an inner inline function.  Set new fields.  Check all fields for
 +      overflow when setting.
 +      * dwarf_lineisa.c: New file.
 +      * dwarf_linediscriminator.c: New file.
 +      * dwarf_lineop_index.c: New file.
 +      * Makefile.am (libdw_a_SOURCES): Add them.
 +      * libdw.map (ELFUTILS_0.148): Add them.
 +      * libdw.h: Declare them.
 +
 +2010-06-16  Roland McGrath  <roland@redhat.com>
 +
 +      * dwarf_next_cfi.c: Fix version 4 return_address_register decoding.
 +
 +      * fde.c (fde_by_offset): Renamed to ...
 +      (__libdw_fde_by_offset): ... this, made global and internal_function.
 +      Don't take ADDRESS argument.
 +      (__libdw_find_fde): Update caller.  Do address sanity check here.
 +      * cfi.h: Declare __libdw_fde_by_offset.
 +      * cfi.c (dwarf_cfi_validate_fde): New function.
 +      * libdw.h: Declare it.
 +      * libdw.map (ELFUTILS_0.148): Add it.
 +
 +      * cie.c (intern_new_cie): Canonicalize DW_EH_PE_absptr FDE encoding to
 +      either DW_EH_PE_udata8 or DW_EH_PE_udata4.
 +
 +      * encoded-value.h (read_encoded_value): Handle DW_EH_PE_indirect.
 +      Don't assume DW_EH_PE_aligned refers to native address size.
 +
 +      * cfi.c (execute_cfi): Barf on CIE initial instructions changing the
 +      address.
 +
  2010-06-15  Roland McGrath  <roland@redhat.com>
  
        * dwarf_formref.c (__libdw_formref): Diagnose DW_FORM_ref_sig8 like
Simple merge
diff --cc libdw/libdw.h
Simple merge
diff --cc libdw/libdw.map
@@@ -241,8 -241,5 +241,10 @@@ ELFUTILS_0.146 
  ELFUTILS_0.148 {
    global:
      dwarf_cfi_validate_fde;
 +
 +    dwarf_lineisa;
 +    dwarf_linediscriminator;
 +    dwarf_lineop_index;
++
+     dwarf_next_unit;
  } ELFUTILS_0.146;
diff --cc libdw/libdwP.h
Simple merge