[PATCH] configure: Add workaround for buggy binutils 2.35 [PR98811]

Richard Biener rguenther@suse.de
Mon Jan 25 13:16:36 GMT 2021


On Mon, 25 Jan 2021, Jakub Jelinek wrote:

> Hi!
> 
> binutils since https://sourceware.org/bugzilla/show_bug.cgi?id=25612
> changes from March last year until the
> https://sourceware.org/pipermail/binutils/2020-August/112684.html
> fix in early August emits incorrect .debug_info when assembling files
> with --gdwarf-5.  Instead of emitting proper DWARF 5 .debug_info header,
> it emits DWARF 4 .debug_info header with 5 as the dwarf version instead of
> 4.  This results e.g. in libgcc.a (morestack.o) having garbage in its
> .debug_info sections and e.g. libbacktrace during pretty much all libgo
> tests fails miserably.
> 
> The following patch adds a workaround for that, don't set
> HAVE_AS_GDWARF_5_DEBUG_FLAG if readelf can't read the .debug_info back.
> 
> Built tested on x86_64-linux against both binutils 2.35 (buggy ones) and
> latest binutils trunk, the former with the patch now has DWARF 3
> .debug_line and DWARF 2 .debug_info in morestack.o, while the latter
> as before correct DWARF 5 .debug_line and .debug_info.
> 
> Ok for trunk?

OK.

Richard.

> 2021-01-25  Jakub Jelinek  <jakub@redhat.com>
> 
> 	PR debug/98811
> 	* configure.ac (HAVE_AS_GDWARF_5_DEBUG_FLAG): Only define if
> 	readelf -wi is able to read the emitted .debug_info back.
> 	* configure: Regenerated.
> 
> --- gcc/configure.ac.jj	2021-01-25 12:35:11.034835330 +0100
> +++ gcc/configure.ac	2021-01-25 13:04:10.002980861 +0100
> @@ -5416,8 +5416,12 @@ if test x"$insn" != x; then
>  
>   gcc_GAS_CHECK_FEATURE([--gdwarf-5 option],
>    gcc_cv_as_gdwarf_5_flag,
> -  [elf,2,36,0], [--gdwarf-5], [$insn],,
> -  [AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
> +  [elf,2,36,0], [--gdwarf-5], [$insn],
> +  [if test x$gcc_cv_readelf != x \
> +      && $gcc_cv_readelf -wi conftest.o 2>&1 \
> +	 | grep DW_TAG_compile_unit > /dev/null 2>&1; then
> +     gcc_cv_as_gdwarf_5_flag=yes;
> +   fi],[AC_DEFINE(HAVE_AS_GDWARF_5_DEBUG_FLAG, 1,
>  [Define if your assembler supports the --gdwarf-5 option.])])
>  
>   dwarf4_debug_info_size=0x46
> --- gcc/configure.jj	2021-01-25 12:35:11.012835581 +0100
> +++ gcc/configure	2021-01-25 13:04:14.982924030 +0100
> @@ -29075,7 +29075,11 @@ fi
>    $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
>    test $ac_status = 0; }; }
>      then
> -	gcc_cv_as_gdwarf_5_flag=yes
> +	if test x$gcc_cv_readelf != x \
> +      && $gcc_cv_readelf -wi conftest.o 2>&1 \
> +	 | grep DW_TAG_compile_unit > /dev/null 2>&1; then
> +     gcc_cv_as_gdwarf_5_flag=yes;
> +   fi
>      else
>        echo "configure: failed program was" >&5
>        cat conftest.s >&5
> 
> 	Jakub
> 
> 

-- 
Richard Biener <rguenther@suse.de>
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)


More information about the Gcc-patches mailing list