* Broken GAS DWARF tests @ 2020-07-30 9:45 Nick Clifton 2020-07-30 11:13 ` H.J. Lu 2020-07-30 14:02 ` Nick Clifton 0 siblings, 2 replies; 12+ messages in thread From: Nick Clifton @ 2020-07-30 9:45 UTC (permalink / raw) To: binutils Hi Guys, Earlier today I checked in a small patch to fix a problem with the assembler. If no -g option is provided on the command line it would default to generating DWARF level 0 line tables. Which is invalid of course since there is no DWARF level 0. So I applied a small patch to change the default to 4. And then I forgot the cardinal rule and did not test the patch before checking it in. *sigh* Of course it broke a couple of the assembler tests. So now I am actually testing a local fix before checking that in. My apologese for any inconvenience this oversight has caused. Cheers Nick ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 9:45 Broken GAS DWARF tests Nick Clifton @ 2020-07-30 11:13 ` H.J. Lu 2020-07-30 11:53 ` H.J. Lu 2020-07-30 14:02 ` Nick Clifton 1 sibling, 1 reply; 12+ messages in thread From: H.J. Lu @ 2020-07-30 11:13 UTC (permalink / raw) To: Nick Clifton; +Cc: binutils [-- Attachment #1: Type: text/plain, Size: 770 bytes --] On Thu, Jul 30, 2020 at 2:46 AM Nick Clifton via Binutils <binutils@sourceware.org> wrote: > > Hi Guys, > > Earlier today I checked in a small patch to fix a problem with the assembler. > If no -g option is provided on the command line it would default to generating > DWARF level 0 line tables. Which is invalid of course since there is no DWARF > level 0. So I applied a small patch to change the default to 4. And then I > forgot the cardinal rule and did not test the patch before checking it in. > *sigh* > > Of course it broke a couple of the assembler tests. So now I am actually testing > a local fix before checking that in. My apologese for any inconvenience this > oversight has caused. > Here is the one I am using for x86. -- H.J. [-- Attachment #2: g.patch --] [-- Type: text/x-patch, Size: 5613 bytes --] diff --git a/binutils/testsuite/binutils-all/i386/compressed-1a.d b/binutils/testsuite/binutils-all/i386/compressed-1a.d index 70b13cee5d..bf04974a89 100644 --- a/binutils/testsuite/binutils-all/i386/compressed-1a.d +++ b/binutils/testsuite/binutils-all/i386/compressed-1a.d @@ -1,6 +1,6 @@ #PROG: objcopy #source: compressed-1.s -#as: --32 --compress-debug-sections +#as: --32 --compress-debug-sections --gdwarf-3 #objcopy: #readelf: -w #name: objcopy on compressed debug sections diff --git a/binutils/testsuite/binutils-all/i386/compressed-1b.d b/binutils/testsuite/binutils-all/i386/compressed-1b.d index 9ed82caf60..6e45e552fc 100644 --- a/binutils/testsuite/binutils-all/i386/compressed-1b.d +++ b/binutils/testsuite/binutils-all/i386/compressed-1b.d @@ -1,6 +1,6 @@ #PROG: strip #source: compressed-1.s -#as: --32 -mx86-used-note=no +#as: --32 -mx86-used-note=no --gdwarf-3 #strip: #readelf: -S --wide #name: strip on uncompressed debug sections diff --git a/binutils/testsuite/binutils-all/i386/compressed-1c.d b/binutils/testsuite/binutils-all/i386/compressed-1c.d index dc96dd7dcf..1e1a18e778 100644 --- a/binutils/testsuite/binutils-all/i386/compressed-1c.d +++ b/binutils/testsuite/binutils-all/i386/compressed-1c.d @@ -1,6 +1,6 @@ #PROG: strip #source: compressed-1.s -#as: --32 --compress-debug-sections -mx86-used-note=no +#as: --32 --compress-debug-sections -mx86-used-note=no --gdwarf-3 #strip: #readelf: -S --wide #name: strip on compressed debug sections diff --git a/binutils/testsuite/binutils-all/x86-64/compressed-1a.d b/binutils/testsuite/binutils-all/x86-64/compressed-1a.d index 3c8eb54502..c4898d7748 100644 --- a/binutils/testsuite/binutils-all/x86-64/compressed-1a.d +++ b/binutils/testsuite/binutils-all/x86-64/compressed-1a.d @@ -1,6 +1,6 @@ #PROG: objcopy #source: compressed-1.s -#as: --64 --compress-debug-sections +#as: --64 --compress-debug-sections --gdwarf-3 #objcopy: #readelf: -w #name: objcopy on compressed debug sections diff --git a/binutils/testsuite/binutils-all/x86-64/compressed-1b.d b/binutils/testsuite/binutils-all/x86-64/compressed-1b.d index c041a53260..517c814539 100644 --- a/binutils/testsuite/binutils-all/x86-64/compressed-1b.d +++ b/binutils/testsuite/binutils-all/x86-64/compressed-1b.d @@ -1,6 +1,6 @@ #PROG: strip #source: compressed-1.s -#as: --64 -mx86-used-note=no +#as: --64 -mx86-used-note=no --gdwarf-3 #strip: #readelf: -S --wide #name: strip on uncompressed debug sections diff --git a/binutils/testsuite/binutils-all/x86-64/compressed-1c.d b/binutils/testsuite/binutils-all/x86-64/compressed-1c.d index 2039cd676e..ba692bdb85 100644 --- a/binutils/testsuite/binutils-all/x86-64/compressed-1c.d +++ b/binutils/testsuite/binutils-all/x86-64/compressed-1c.d @@ -1,6 +1,6 @@ #PROG: strip #source: compressed-1.s -#as: --64 --compress-debug-sections -mx86-used-note=no +#as: --64 --compress-debug-sections -mx86-used-note=no --gdwarf-3 #strip: #readelf: -S --wide #name: strip on compressed debug sections diff --git a/gas/testsuite/gas/elf/dwarf2-3.d b/gas/testsuite/gas/elf/dwarf2-3.d index 594c9a6d97..62dbe54ce0 100644 --- a/gas/testsuite/gas/elf/dwarf2-3.d +++ b/gas/testsuite/gas/elf/dwarf2-3.d @@ -1,3 +1,4 @@ +#as: --gdwarf-3 #readelf: -wl #name: DWARF2 3 #xfail: ft32*-* h8300-*-* diff --git a/gas/testsuite/gas/elf/dwarf2-5.d b/gas/testsuite/gas/elf/dwarf2-5.d index 4e22e79c64..257bb55a01 100644 --- a/gas/testsuite/gas/elf/dwarf2-5.d +++ b/gas/testsuite/gas/elf/dwarf2-5.d @@ -1,4 +1,4 @@ -#as: +#as: --gdwarf-3 #readelf: -x.rodata -wlL #name: DWARF2 5 # The am33 cr16 crx ft32 mn10 msp430 nds32 rl78 and rx targets do not evaluate the subtraction of symbols at assembly time. diff --git a/gas/testsuite/gas/i386/dw2-compress-3a.d b/gas/testsuite/gas/i386/dw2-compress-3a.d index c6de0d6f57..50a1e28fa8 100644 --- a/gas/testsuite/gas/i386/dw2-compress-3a.d +++ b/gas/testsuite/gas/i386/dw2-compress-3a.d @@ -1,5 +1,5 @@ #source: dw2-compress-3.s -#as: --compress-debug-sections --elf-stt-common=no +#as: --compress-debug-sections --elf-stt-common=no --gdwarf-3 #readelf: -w #name: DWARF2 debugging information 3 w/o STT_COMMON diff --git a/gas/testsuite/gas/i386/dw2-compress-3b.d b/gas/testsuite/gas/i386/dw2-compress-3b.d index a78e1e25e9..798d5532c3 100644 --- a/gas/testsuite/gas/i386/dw2-compress-3b.d +++ b/gas/testsuite/gas/i386/dw2-compress-3b.d @@ -1,5 +1,5 @@ #source: dw2-compress-3.s -#as: --compress-debug-sections --elf-stt-common=yes +#as: --compress-debug-sections --elf-stt-common=yes --gdwarf-3 #readelf: -w #name: DWARF2 debugging information 3 with STT_COMMON diff --git a/gas/testsuite/gas/i386/dw2-compressed-3a.d b/gas/testsuite/gas/i386/dw2-compressed-3a.d index b8b4434a51..e4fcf535b6 100644 --- a/gas/testsuite/gas/i386/dw2-compressed-3a.d +++ b/gas/testsuite/gas/i386/dw2-compressed-3a.d @@ -1,5 +1,5 @@ #source: dw2-compress-3.s -#as: --compress-debug-sections=zlib-gabi --elf-stt-common=no +#as: --compress-debug-sections=zlib-gabi --elf-stt-common=no --gdwarf-3 #readelf: -w #name: DWARF2 debugging information 3 with SHF_COMPRESSED w/o STT_COMMON diff --git a/gas/testsuite/gas/i386/dw2-compressed-3b.d b/gas/testsuite/gas/i386/dw2-compressed-3b.d index ac51238a96..37f6b7effb 100644 --- a/gas/testsuite/gas/i386/dw2-compressed-3b.d +++ b/gas/testsuite/gas/i386/dw2-compressed-3b.d @@ -1,5 +1,5 @@ #source: dw2-compress-3.s -#as: --compress-debug-sections=zlib-gabi --elf-stt-common=yes +#as: --compress-debug-sections=zlib-gabi --elf-stt-common=yes --gdwarf-3 #readelf: -w #name: DWARF2 debugging information 3 with SHF_COMPRESSED with STT_COMMON ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 11:13 ` H.J. Lu @ 2020-07-30 11:53 ` H.J. Lu 0 siblings, 0 replies; 12+ messages in thread From: H.J. Lu @ 2020-07-30 11:53 UTC (permalink / raw) To: Nick Clifton; +Cc: binutils On Thu, Jul 30, 2020 at 4:13 AM H.J. Lu <hjl.tools@gmail.com> wrote: > > On Thu, Jul 30, 2020 at 2:46 AM Nick Clifton via Binutils > <binutils@sourceware.org> wrote: > > > > Hi Guys, > > > > Earlier today I checked in a small patch to fix a problem with the assembler. > > If no -g option is provided on the command line it would default to generating > > DWARF level 0 line tables. Which is invalid of course since there is no DWARF > > level 0. So I applied a small patch to change the default to 4. And then I > > forgot the cardinal rule and did not test the patch before checking it in. > > *sigh* > > > > Of course it broke a couple of the assembler tests. So now I am actually testing > > a local fix before checking that in. My apologese for any inconvenience this > > oversight has caused. > > > > Here is the one I am using for x86. > I am checking in x86 changes. -- H.J. ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 9:45 Broken GAS DWARF tests Nick Clifton 2020-07-30 11:13 ` H.J. Lu @ 2020-07-30 14:02 ` Nick Clifton 2020-07-30 14:12 ` Andreas Schwab 2020-07-30 14:44 ` Tom Tromey 1 sibling, 2 replies; 12+ messages in thread From: Nick Clifton @ 2020-07-30 14:02 UTC (permalink / raw) To: binutils Hi Guys. > Of course it broke a couple of the assembler tests. So now I am actually testing > a local fix before checking that in. My apologese for any inconvenience this > oversight has caused. Ok, I have checked in the patch below to fix my snafu. Cheers Nick gas/ChangeLog 2020-07-30 Nick Clifton <nickc@redhat.com> * as.c (dwatf_level): Default to level 3 in case version is not set on the command line. diff --git a/gas/as.c b/gas/as.c index c2da78870e..e4cf1364cb 100644 --- a/gas/as.c +++ b/gas/as.c @@ -102,8 +102,9 @@ int verbose = 0; MD_AFTER_PARSE_ARGS. */ int flag_dwarf_cie_version = -1; -/* The maximum level of DWARF DEBUG information we should manufacture. */ -unsigned int dwarf_level = 4; +/* The maximum level of DWARF DEBUG information we should manufacture. + The default is 3 unless changes by a command line option. */ +unsigned int dwarf_level = 3; #if defined OBJ_ELF || defined OBJ_MAYBE_ELF int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON; ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 14:02 ` Nick Clifton @ 2020-07-30 14:12 ` Andreas Schwab 2020-07-30 14:44 ` Tom Tromey 1 sibling, 0 replies; 12+ messages in thread From: Andreas Schwab @ 2020-07-30 14:12 UTC (permalink / raw) To: Nick Clifton via Binutils On Jul 30 2020, Nick Clifton via Binutils wrote: > diff --git a/gas/as.c b/gas/as.c > index c2da78870e..e4cf1364cb 100644 > --- a/gas/as.c > +++ b/gas/as.c > @@ -102,8 +102,9 @@ int verbose = 0; > MD_AFTER_PARSE_ARGS. */ > int flag_dwarf_cie_version = -1; > > -/* The maximum level of DWARF DEBUG information we should manufacture. */ > -unsigned int dwarf_level = 4; > +/* The maximum level of DWARF DEBUG information we should manufacture. > + The default is 3 unless changes by a command line option. */ s/changes/changed/ Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 14:02 ` Nick Clifton 2020-07-30 14:12 ` Andreas Schwab @ 2020-07-30 14:44 ` Tom Tromey 2020-07-30 15:21 ` Nick Clifton 1 sibling, 1 reply; 12+ messages in thread From: Tom Tromey @ 2020-07-30 14:44 UTC (permalink / raw) To: Nick Clifton via Binutils >>>>> "Nick" == Nick Clifton via Binutils <binutils@sourceware.org> writes: Nick> gas/ChangeLog Nick> 2020-07-30 Nick Clifton <nickc@redhat.com> Nick> * as.c (dwatf_level): Default to level 3 in case version is not Nick> set on the command line. I understand not wanting to pick DWARF 5 as a default, since it still isn't fully supported in gdb; but why not DWARF 4 as the default? Tom ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 14:44 ` Tom Tromey @ 2020-07-30 15:21 ` Nick Clifton 2020-08-03 13:11 ` Mark Wielaard 0 siblings, 1 reply; 12+ messages in thread From: Nick Clifton @ 2020-07-30 15:21 UTC (permalink / raw) To: Tom Tromey, Nick Clifton via Binutils Hi Tom, > Nick> * as.c (dwatf_level): Default to level 3 in case version is not > Nick> set on the command line. > > I understand not wanting to pick DWARF 5 as a default, since it still > isn't fully supported in gdb; but why not DWARF 4 as the default? Simplicity. Setting the default to 4 broke lots of tests (in the assembler and binutils directories). Setting the default to 3 does not break the tests. Plus, and this is very minor, version 4 DWARF line number tables are actually bigger than version 3 tables, because of the addition of the Maximum Ops Per Instruction field in the table header. But if there is a consensus that version 4 is the way to go, then I can change the default and update the tests. Cheers Nick ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Broken GAS DWARF tests 2020-07-30 15:21 ` Nick Clifton @ 2020-08-03 13:11 ` Mark Wielaard 2020-08-03 20:11 ` gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) Mark Wielaard 0 siblings, 1 reply; 12+ messages in thread From: Mark Wielaard @ 2020-08-03 13:11 UTC (permalink / raw) To: Nick Clifton; +Cc: Tom Tromey, Nick Clifton via Binutils On Thu, Jul 30, 2020 at 04:21:17PM +0100, Nick Clifton via Binutils wrote: > Hi Tom, > > > Nick> * as.c (dwatf_level): Default to level 3 in case version is not > > Nick> set on the command line. > > > > I understand not wanting to pick DWARF 5 as a default, since it still > > isn't fully supported in gdb; but why not DWARF 4 as the default? > > Simplicity. Setting the default to 4 broke lots of tests (in the assembler > and binutils directories). Setting the default to 3 does not break the tests. > > Plus, and this is very minor, version 4 DWARF line number tables are > actually bigger than version 3 tables, because of the addition of the > Maximum Ops Per Instruction field in the table header. This is most likely compensated by the fact that for DWARF4 we loose a relocation in the CU DIE header for DW_AT_high_pc. We could save a few bytes if we would be able to express the difference between low_pc and high_pc as uleb128 (maybe we can simply use emit_leb128_expr?). > But if there is a consensus that version 4 is the way to go, then I can > change the default and update the tests. It might be a good idea to upgrade to version 4 for the next binutils release. DWARF4 was officially published 10 years ago (and DWARF5 3 years ago). Cheers, Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) 2020-08-03 13:11 ` Mark Wielaard @ 2020-08-03 20:11 ` Mark Wielaard 2020-08-04 3:53 ` Alan Modra 0 siblings, 1 reply; 12+ messages in thread From: Mark Wielaard @ 2020-08-03 20:11 UTC (permalink / raw) To: Nick Clifton; +Cc: Tom Tromey, Nick Clifton via Binutils [-- Attachment #1: Type: text/plain, Size: 784 bytes --] On Mon, Aug 03, 2020 at 03:11:09PM +0200, Mark Wielaard wrote: > On Thu, Jul 30, 2020 at 04:21:17PM +0100, Nick Clifton via Binutils wrote: > > Plus, and this is very minor, version 4 DWARF line number tables are > > actually bigger than version 3 tables, because of the addition of the > > Maximum Ops Per Instruction field in the table header. > > This is most likely compensated by the fact that for DWARF4 we loose a > relocation in the CU DIE header for DW_AT_high_pc. We could save a few > bytes if we would be able to express the difference between low_pc and > high_pc as uleb128 (maybe we can simply use emit_leb128_expr?). This seems to work as intended and is indeed a lot shorter (before this patch we always used either data4 (32bits) or data8 (64bits). Cheers, Mark [-- Attachment #2: 0001-gas-Use-udata-for-DW_AT_high_pc-when-emitting-DWARF4.patch --] [-- Type: text/x-diff, Size: 3145 bytes --] From 0b202965ae7aa2ed2ce3d3db29d806ce0f1da0d4 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <mark@klomp.org> Date: Mon, 3 Aug 2020 22:02:24 +0200 Subject: [PATCH] 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. --- gas/ChangeLog | 9 +++++++++ gas/dwarf2dbg.c | 8 +++++--- gas/read.c | 2 +- gas/read.h | 1 + 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 8dee8190b0..ff2f762ed7 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,12 @@ +2020-08-04 Mark Wielaard <mark@klomp.org> + + * 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. + 2020-07-30 H.J. Lu <hongjiu.lu@intel.com> PR gas/26305 diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 69955fea5b..64333aa1a5 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -2427,8 +2427,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 { @@ -2497,7 +2496,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 { diff --git a/gas/read.c b/gas/read.c index 8f93c2ba2b..f192cc16d5 100644 --- a/gas/read.c +++ b/gas/read.c @@ -5138,7 +5138,7 @@ output_big_leb128 (char *p, LITTLENUM_TYPE *bignum, unsigned int size, int sign) /* Generate the appropriate fragments for a given expression to emit a leb128 value. SIGN is 1 for sleb, 0 for uleb. */ -static void +void emit_leb128_expr (expressionS *exp, int sign) { operatorT op = exp->X_op; diff --git a/gas/read.h b/gas/read.h index 502f3b6f2d..ffcdbb69a7 100644 --- a/gas/read.h +++ b/gas/read.h @@ -132,6 +132,7 @@ extern void emit_expr_with_reloc (expressionS *exp, unsigned int nbytes, TC_PARSE_CONS_RETURN_TYPE); extern void emit_expr_fix (expressionS *, unsigned int, fragS *, char *, TC_PARSE_CONS_RETURN_TYPE); +extern void emit_leb128_expr (expressionS *, int); extern void equals (char *, int); extern void float_cons (int); extern void ignore_rest_of_line (void); -- 2.20.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) 2020-08-03 20:11 ` gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) Mark Wielaard @ 2020-08-04 3:53 ` Alan Modra 2020-08-06 6:09 ` Fangrui Song 0 siblings, 1 reply; 12+ messages in thread From: Alan Modra @ 2020-08-04 3:53 UTC (permalink / raw) To: Mark Wielaard; +Cc: Nick Clifton, Tom Tromey, Nick Clifton via Binutils On Mon, Aug 03, 2020 at 10:11:27PM +0200, Mark Wielaard wrote: > * 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. OK, looks good. Note that there have been problems in the past resolving leb128 expressions (eg. see 38cf168be581), so please keep an eye out for regressions. -- Alan Modra Australia Development Lab, IBM ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) 2020-08-04 3:53 ` Alan Modra @ 2020-08-06 6:09 ` Fangrui Song 2020-08-06 11:49 ` Mark Wielaard 0 siblings, 1 reply; 12+ messages in thread From: Fangrui Song @ 2020-08-06 6:09 UTC (permalink / raw) To: Nelson Chu Cc: Mark Wielaard, Tom Tromey, Alan Modra, Nick Clifton via Binutils On 2020-08-04, Alan Modra via Binutils wrote: >On Mon, Aug 03, 2020 at 10:11:27PM +0200, Mark Wielaard wrote: >> * 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. > >OK, looks good. Note that there have been problems in the past >resolving leb128 expressions (eg. see 38cf168be581), so please keep an >eye out for regressions. > >-- >Alan Modra >Australia Development Lab, IBM Using DWARF v3 attribute class 'address' for DW_AT_high_pc can save a relocation on RISC-V in -mrelax mode ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) 2020-08-06 6:09 ` Fangrui Song @ 2020-08-06 11:49 ` Mark Wielaard 0 siblings, 0 replies; 12+ messages in thread From: Mark Wielaard @ 2020-08-06 11:49 UTC (permalink / raw) To: Fangrui Song Cc: Nelson Chu, Tom Tromey, Alan Modra, Nick Clifton via Binutils Hi, On Wed, Aug 05, 2020 at 11:09:12PM -0700, Fangrui Song wrote: > On 2020-08-04, Alan Modra via Binutils wrote: > > On Mon, Aug 03, 2020 at 10:11:27PM +0200, Mark Wielaard wrote: > > > * 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. > > > > OK, looks good. Note that there have been problems in the past > > resolving leb128 expressions (eg. see 38cf168be581), so please keep an > > eye out for regressions. > > Using DWARF v3 attribute class 'address' for DW_AT_high_pc can save a > relocation on RISC-V in -mrelax mode DW_FORM_addr is the default for DWARF2_VERSION < 4 (for both DW_AT_low_pc and DW_AT_high_pc). Before this patch it was DW_FORM_data4 (or DW_FORM_data8) for DW_AT_high_pc. Using data instead of addr already did prevent a relocation (the data is an offset from the low_pc address). Using DW_FORM_udata instead means the data representation usually smaller (especially for 64bit arches). How does -mrelax mode work to prevent having to generate a relocation even when generating an address against a different section? Thanks, Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2020-08-06 11:50 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-07-30 9:45 Broken GAS DWARF tests Nick Clifton 2020-07-30 11:13 ` H.J. Lu 2020-07-30 11:53 ` H.J. Lu 2020-07-30 14:02 ` Nick Clifton 2020-07-30 14:12 ` Andreas Schwab 2020-07-30 14:44 ` Tom Tromey 2020-07-30 15:21 ` Nick Clifton 2020-08-03 13:11 ` Mark Wielaard 2020-08-03 20:11 ` gas: Use udata for DW_AT_high_pc when emitting DWARF4 (Was: Broken GAS DWARF tests) Mark Wielaard 2020-08-04 3:53 ` Alan Modra 2020-08-06 6:09 ` Fangrui Song 2020-08-06 11:49 ` Mark Wielaard
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).