From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp.polymtl.ca (smtp.polymtl.ca [132.207.4.11]) by sourceware.org (Postfix) with ESMTPS id 027F538582B1 for ; Wed, 28 Sep 2022 19:01:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 027F538582B1 Received: from simark.ca (simark.ca [158.69.221.121]) (authenticated bits=0) by smtp.polymtl.ca (8.14.7/8.14.7) with ESMTP id 28SJ0Ddr012323 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 28 Sep 2022 15:00:18 -0400 DKIM-Filter: OpenDKIM Filter v2.11.0 smtp.polymtl.ca 28SJ0Ddr012323 Received: from [172.16.0.64] (192-222-180-24.qc.cable.ebox.net [192.222.180.24]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPSA id 6CCA91E0D3; Wed, 28 Sep 2022 15:00:13 -0400 (EDT) Message-ID: Date: Wed, 28 Sep 2022 15:00:12 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.0 Subject: Re: [PATCH] Fix GDB build: ELF support check & -lzstd (was: Re: [PATCH v3] binutils, gdb: support zstd compressed debug sections) Content-Language: fr To: Pedro Alves , Fangrui Song , Tom Tromey Cc: Fangrui Song via Gdb-patches References: <20220923040837.550160-1-maskray@google.com> <87o7v0zo4b.fsf@tromey.com> From: Simon Marchi In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Poly-FromMTA: (simark.ca [158.69.221.121]) at Wed, 28 Sep 2022 19:00:13 +0000 X-Spam-Status: No, score=-3039.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, NICE_REPLY_A, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 28 Sep 2022 19:01:27 -0000 On 9/28/22 07:52, Pedro Alves wrote: > [-binutils] > > On 2022-09-27 7:53 p.m., Fangrui Song via Binutils wrote: >> On Tue, Sep 27, 2022 at 11:08 AM Tom Tromey wrote: >>> >>>>>>>> Fangrui Song via Gdb-patches writes: >>> >>>> PR29397 PR29563: The new configure option --with-zstd defaults to auto. >>>> If pkgconfig/libzstd.pc is found, define HAVE_ZSTD and support zstd >>>> compressed debug sections for most tools. >>> >>>> * bfd: for addr2line, objdump --dwarf, gdb, etc >>>> * gas: support --compress-debug-sections=zstd >>>> * ld: support ELFCOMPRESS_ZSTD input and --compress-debug-sections=zstd >>>> * objcopy: support ELFCOMPRESS_ZSTD input for >>>> --decompress-debug-sections and --compress-debug-sections=zstd >>>> * gdb: support ELFCOMPRESS_ZSTD input. The bfd change references zstd >>>> symbols, so gdb has to link against -lzstd in this patch. >>> >>> This also needs some change to the sims. >>> I see failures like this with git master: >>> >>> make[4]: Entering directory '/home/tromey/gdb/build/sim/bpf' >>> CCLD run >>> ../../bfd/libbfd.a(compress.o):compress.c:function decompress_contents: error: undefined reference to 'ZSTD_decompress' >>> ../../bfd/libbfd.a(compress.o):compress.c:function decompress_contents: error: undefined reference to 'ZSTD_isError' >>> (unknown):176: error: undefined reference to 'ZSTD_compress' >>> (unknown):179: error: undefined reference to 'ZSTD_isError' >>> collect2: error: ld returned 1 exit status >>> >>> You'll see them all if you do a build with all sims enabled. >>> >>> thanks, >>> Tom >> >> Thanks for the report and Tom's IRC chat with me about the >> `../../configure --enable-targets --enable-sim; make all-gdb` build. >> Tom confirmed that the latest commit `sim: Link ZSTD_LIBS` has fixed >> the problem. >> > > Hi! > > I'm running into a similar gdb build/link failure with current master. > > See patch below. > > -- >8 -- > From a461b259690b62906978450533688b71ec939310 Mon Sep 17 00:00:00 2001 > From: Pedro Alves > Date: Wed, 28 Sep 2022 11:33:30 +0100 > Subject: [PATCH] Fix GDB build: ELF support check & -lzstd > > GDB fails to build for me, on Ubuntu 20.04. I get: > > ... > CXXLD gdb > /usr/bin/ld: linux-tdep.o: in function `linux_corefile_thread(thread_info*, linux_corefile_thread_data*)': > /home/pedro/gdb/binutils-gdb/src/gdb/linux-tdep.c:1831: undefined reference to `gcore_elf_build_thread_register_notes(gdbarch*, thread_info*, gdb_signal, bfd*, std::unique_ptr >*, int*)' > /usr/bin/ld: linux-tdep.o: in function `linux_make_corefile_notes(gdbarch*, bfd*, int*)': > /home/pedro/gdb/binutils-gdb/src/gdb/linux-tdep.c:2117: undefined reference to `gcore_elf_make_tdesc_note(bfd*, std::unique_ptr >*, int*)' > collect2: error: ld returned 1 exit status > make[2]: *** [Makefile:2149: gdb] Error 1 > make[2]: Leaving directory '/home/pedro/gdb/binutils-gdb/build/gdb' > make[1]: *** [Makefile:11847: all-gdb] Error 2 > make[1]: Leaving directory '/home/pedro/gdb/binutils-gdb/build' > make: *** [Makefile:1004: all] Error 2 > > Those undefined functions exist in gdb/gcore-elf.c, which is only > included in the build if GDB's configure thinks that the target you're > configuring for is an ELF target. GDB's configure thinks my system > isn't ELF, which is incorrect. > > For the ELF support check, gdb/config.log shows: > > configure:17387: checking for ELF support in BFD > configure:17407: gcc -o conftest -I/home/pedro/gdb/binutils-gdb/src/gdb/../include -I../bfd -I/home/pedro/gdb/binutils-gdb/src/gdb/../bfd -g3 -O0 -L../bfd -L../libiberty -lzstd conftest.c -lbfd -liberty -lz -lncursesw -lm -ldl >&5 > /usr/bin/ld: ../bfd/libbfd.a(compress.o): in function `decompress_contents': > /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:42: undefined reference to `ZSTD_decompress' > /usr/bin/ld: /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:44: undefined reference to `ZSTD_isError' > /usr/bin/ld: ../bfd/libbfd.a(compress.o): in function `bfd_compress_section_contents': > /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:195: undefined reference to `ZSTD_compress' > /usr/bin/ld: /home/pedro/gdb/binutils-gdb/src/bfd/compress.c:198: undefined reference to `ZSTD_isError' > collect2: error: ld returned 1 exit status > configure:17407: $? = 1 > ... > configure:17417: result: no > > Note how above, in the gcc command line, "-lzstd" appears before > "-lbfd". That explain the link failure. It should appear after, like > -lz does. > > This commit fixes it, by moving ZSTD_LIBS from LDFLAGS to LIBS, next > to -lz, in GDB_AC_CHECK_BFD, and regenerating gdb/configure. > > Change-Id: I1f4128dde634e8ea04c9002904f1005a8b3a6863 > --- > gdb/acinclude.m4 | 4 ++-- > gdb/configure | 8 ++++---- > 2 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/gdb/acinclude.m4 b/gdb/acinclude.m4 > index 28846119dcb..62fa66c7af3 100644 > --- a/gdb/acinclude.m4 > +++ b/gdb/acinclude.m4 > @@ -234,9 +234,9 @@ AC_DEFUN([GDB_AC_CHECK_BFD], [ > # always want our bfd. > CFLAGS="-I${srcdir}/../include -I../bfd -I${srcdir}/../bfd $CFLAGS" > ZLIBDIR=`echo $zlibdir | sed 's,\$(top_builddir)/,,g'` > - LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $ZSTD_LIBS $LDFLAGS" > + LDFLAGS="-L../bfd -L../libiberty $ZLIBDIR $LDFLAGS" > intl=`echo $LIBINTL | sed 's,${top_builddir}/,,g'` > - LIBS="-lbfd -liberty -lz $intl $LIBS" > + LIBS="-lbfd -liberty -lz $ZSTD_LIBS $intl $LIBS" > AC_CACHE_CHECK( > [$1], > [$2], LGTM. Someone opened a bug about this: https://sourceware.org/bugzilla/show_bug.cgi?id=29630 Simon