From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x102c.google.com (mail-pj1-x102c.google.com [IPv6:2607:f8b0:4864:20::102c]) by sourceware.org (Postfix) with ESMTPS id 961963858418 for ; Wed, 28 Sep 2022 19:30:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 961963858418 Received: by mail-pj1-x102c.google.com with SMTP id r8-20020a17090a560800b00205eaaba073so2536706pjf.1 for ; Wed, 28 Sep 2022 12:30:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date; bh=ybjbsw65N77jQpVU497AzemGU1NVylYKKcdUJQWznok=; b=e5hB52rzAdt+a+LJQrN+5pyThgEBgDMYwkmyqICEfQMJ81FzxNqw6g03g0O3RdgKG7 oKv3Klqpe+zwUDwOmXTH9bVSmv9ou5wieGPYjPbpZsQzysQcOanPnKwGAS++QSOvRPQK 5RYkfdwRa14+a/olsmyH7UfCA0pYcw1Hic9JYCGtZF51B+uTXT3of768iHsVETcdGvuo 7rRaIeHUQL4ooVHDCk3gr+g3R5x1rezSBLnq9zXwBp6TaxizMJ15MKZUG7b7I00dCE7U 5bqHaTQgwHxGEv1LXyWR9JXYiEBQt7G0DUAzQ4BNPgc01QN45wgPvK25N1KT5UFoMrlk k9SQ== X-Gm-Message-State: ACrzQf0YR7bVukH50+/TznUNleeo6xYi/sM6EGVsOsnYddMw/E1ckPSO /4HJh4UL2O6iQKIBJxB/k4VfNw== X-Google-Smtp-Source: AMsMyM5fz6VVhtrjaHozBStY4L1YgUSFJ2s6UFBTP1mFwv9sGOd+iTYzgxp7WpCHcbYzZ9jJjp7Scg== X-Received: by 2002:a17:902:b70a:b0:178:9491:3ab4 with SMTP id d10-20020a170902b70a00b0017894913ab4mr1290765pls.55.1664393425492; Wed, 28 Sep 2022 12:30:25 -0700 (PDT) Received: from google.com ([2620:15c:2ce:200:54a7:1277:5bda:3cc6]) by smtp.gmail.com with ESMTPSA id o3-20020a170902d4c300b00174ea015ee2sm4223267plg.38.2022.09.28.12.30.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 28 Sep 2022 12:30:24 -0700 (PDT) Date: Wed, 28 Sep 2022 12:30:19 -0700 From: Fangrui Song To: Pedro Alves Cc: Simon Marchi , Tom Tromey , Fangrui Song via Gdb-patches Subject: Re: [PATCH] Fix GDB build: ELF support check & -lzstd (was: Re: [PATCH v3] binutils, gdb: support zstd compressed debug sections) Message-ID: <20220928193019.kwzmnaugpuoayaaw@google.com> References: <20220923040837.550160-1-maskray@google.com> <87o7v0zo4b.fsf@tromey.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-27.4 required=5.0 tests=BAYES_00, DKIMWL_WL_MED, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, USER_IN_DEF_DKIM_WL, USER_IN_DEF_SPF_WL 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:30:29 -0000 On 2022-09-28, Simon Marchi wrote: >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 Thanks for the fix! I probably missed this because I use lld as the system linker and its archive semantic is more tolerant without --warn-backrefs...