arm-elf-gcc Debug info

Doug Evans dje@transmeta.com
Wed Jul 16 17:02:00 GMT 2003


Yadid Ayzenberg writes:
 > Hi guys,
 > I'm trying to gain a better understanding of the debug information
 > mechanisms.
 > I use an arm-elf-gcc compiler, and use an AXD debugger to load the images
 > (sometimes AXD does not understand the debug info). my question is where in
 > the image is the debug information kept, and in what format (dwarf? ).
 > If I build relocatable rwpi code, how will the debugger find the debugging
 > info? is this even possible?

Here's one way to tell which debug format is used.
What's the output of arm-elf-objdump -h foo.elf?

If you see a section called .stab then the format is stabs.
If you see a section called .debug then the format is dwarf1.
If you see a section called .debug_line then the format is dwarf2.

Each of these has other sections containing debug info,
the above is just an algorithm to decide what format is used.

I don't know what rwpi is, but if your debugger can read elf files,
then it needs to understand the various sections containing the debug info.

You can see what sections are used by studying the standard elf linker
script in ld/scripttempl/elf.sc in the gnu binutils sources.
Here's an excerpt.

  /* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }

  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */

  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }

  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }

  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }

  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }

  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com



More information about the crossgcc mailing list