diff options
author | Mark Wielaard <mark@klomp.org> | 2020-08-03 22:02:24 +0200 |
---|---|---|
committer | Mark Wielaard <mark@klomp.org> | 2020-08-04 11:42:53 +0200 |
commit | 6b9a135d72c3826b9b5e2a5d35acfb777ec18dcd (patch) | |
tree | 8d49ce5f3a515c53d657750160adda825017a990 /gas/dwarf2dbg.c | |
parent | f63d03dde00449e71e32fea3496edc69d2e7d386 (diff) | |
download | gdb-6b9a135d72c3826b9b5e2a5d35acfb777ec18dcd.zip gdb-6b9a135d72c3826b9b5e2a5d35acfb777ec18dcd.tar.gz gdb-6b9a135d72c3826b9b5e2a5d35acfb777ec18dcd.tar.bz2 |
gas: Use udata for DW_AT_high_pc when emitting DWARF4
For DWARF4 DW_AT_high_pc can be expressed as constant offset from
DW_AT_low_pc which saves a relocation. Use DW_FORM_udate (uleb128)
to keep the constant value as small as possible.
gas/ChangeLog:
* dwarf2dbg.c (out_debug_abbrev): When DWARF2_VERSION >= 4, use
DW_FORM_udata for DW_AT_high_pc.
(out_debug_info): Use emit_leb128_expr for DW_AT_high_pc, when
DWARF2_VERSION >= 4.
* read.c (emit_leb128_exp): No longer static.
* read.h (emit_leb128_exp): Define.
Diffstat (limited to 'gas/dwarf2dbg.c')
-rw-r--r-- | gas/dwarf2dbg.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 7877c56..a95c297 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -2444,8 +2444,7 @@ out_debug_abbrev (segT abbrev_seg, if (DWARF2_VERSION < 4) out_abbrev (DW_AT_high_pc, DW_FORM_addr); else - out_abbrev (DW_AT_high_pc, (sizeof_address == 4 - ? DW_FORM_data4 : DW_FORM_data8)); + out_abbrev (DW_AT_high_pc, DW_FORM_udata); } else { @@ -2528,7 +2527,10 @@ out_debug_info (segT info_seg, segT abbrev_seg, segT line_seg, segT ranges_seg, } exp.X_add_symbol = all_segs->text_end; exp.X_add_number = 0; - emit_expr (&exp, sizeof_address); + if (DWARF2_VERSION < 4) + emit_expr (&exp, sizeof_address); + else + emit_leb128_expr (&exp, 0); } else { |