gas: Emit name, comp_dir and producer strings in .debug_str.
authorMark Wielaard <mark@klomp.org>
Sun, 5 Mar 2017 22:37:54 +0000 (23:37 +0100)
committerMark Wielaard <mark@klomp.org>
Sun, 5 Mar 2017 22:37:54 +0000 (23:37 +0100)
commit49fced1206db40c71208c201165d65f92c69cebe
treeb388bf22929fdbaa08d6c099112691d25d20632b
parent2e0ce1c84d328bde4dca24b7cfc8b9c033ed271c
gas: Emit name, comp_dir and producer strings in .debug_str.

Putting the name, comp_dir and producer strings in the .debug_str section
makes it possible to share them across CUs. This saves a small amount of
space (about ~20K on a glibc libc.so.6 build with debuginfo). And makes
it easier for tools like rpm debugedit to adjust the source paths when
generating separate debuginfo files.

gas/
       * dwarf2dbg.c (out_debug_abbrev): Use DW_FORM_strp instead of
       DW_FORM_string for DW_AT_name, DW_AT_comp_dir and DW_AT_producer.
       (out_debug_info): Accept symbols to name, comp_dir and producer
       in the .debug_str section and emit those offsets not full strings.
       (out_debug_str): New function that outputs the strings for name,
       comp_dir and producer in .debug_str and generates symbols to
       those strings.
       (out_debug_line): Create a .debug_str section if necessary and
       call out_debug_str before calling out_debug_info.
       * testsuite/gas/aarch64/dwarf.d: Add extra section symbol to
       expected output.
gas/ChangeLog
gas/dwarf2dbg.c
gas/testsuite/gas/aarch64/dwarf.d