2011/2/17 Jakub Jelinek : > On Thu, Feb 17, 2011 at 08:06:53PM +0100, Kai Tietz wrote: >> > I'd prefer if we could move those binutils specific internal implementation >> > details out of the dwarf2.h header, keep it really just for the stuff >> > defined in the standard, and add a new binutils specific header somewhere >> > else which would contain binutils specific details. >> >> Well, so we make dwarf2.h in include just host-specific and isn't able >> to cover things for foreign target, like 32-bit host can't use this >> header for 64-bit dwarf2 information. I am fine by this, but >> nevertheless is then the use of 'unsigned long' type within this >> header still an issue. Here should be used instead then 'intptr_t'. As >> on LLP64 unsigned long isn't wide-enough. > > I mean that none of the DWARF2_Internal types should be in the > include/dwarf2.h headers (that's implementation specific stuff), > and the DWARF2_External types are questionable too, to me they look > very much like implementation detail too.  E.g. DWARF2_External_LineInfo > type is dubious, because it might somehow describe version 2 or 3 > .debug_line header, but version 4 looks differently, etc. > So IMHO the DWARF2_External stuff should be moved too. > And the guard should be probably renamed from _ELF_DWARF2_H to _DWARF2_H, > I don't see anything ELF specific in the header. > >        Jakub > So I reworked my patch as Jakub suggested and retested it for x86_64-w64-mingw32, i686-w64-mingw32, and x86_64-pc-linux-gnu for gcc, binutils, and gdb. Ok for apply? binutils, gdb, gcc ChangeLog include/ 2011-02-18 Kai Tietz * dwarf2.h (_ELF_DWARF2_H): Renamed to _DWARF2_H. (DWARF2_External_LineInfo, DWARF2_Internal_LineInfo, DWARF2_External_PubNames, DWARF2_Internal_PubNames, DWARF2_External_CompUnit, DWARF2_Internal_CompUnit, DWARF2_External_ARange, DWARF2_Internal_ARange): Removed. ChangeLog binutils/ 2011-02-18 Kai Tietz * dwarf.c (read_leb128): Use dw2_vma_t instead of long type. (process_extended_line_op): Use for adr bfd_vma type and print those typed values via BFD_VMA_FMT. (fetch_indirect_string): Adjust offset's type. (decode_location_expression): Adjust argument types and uvalue type. (read_and_display_attr_value): Likewise. (read_and_display_attr): Likewise. (decode_location_expression): Adjust printf format. (process_debug_info): Likewise. (display_debug_lines_raw): Likewise. (display_debug_lines_decoded): Likewise. (display_debug_pubnames): Likewise. (display_debug_loc): Likewise. (display_debug_aranges): Likewise. * dwarf.h (DWARF2_External_LineInfo, DWARF2_Internal_LineInfo, DWARF2_External_PubNames, DWARF2_Internal_PubNames, DWARF2_External_CompUnit, DWARF2_Internal_CompUnit, DWARF2_External_ARange, DWARF2_Internal_ARange): Added.. (read_leb128): Adjust return type. Regards, Kai PS: A lot of those moved structures aren't used at all in binutils dwarf.c (which is the only consumer of some of those structures as a grep over binutils/gdb/gcc had shown). So maybe the unused could be removed in a second patch completely.