From patchwork Tue Dec 27 21:11:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adhemerval Zanella Netto X-Patchwork-Id: 62448 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 234173858413 for ; Tue, 27 Dec 2022 21:12:21 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 234173858413 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1672175541; bh=/7jLXSRIjfyfGjrBkY5sgazQRSu/RSKOA5RPVjcq4FM=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=C8YmP3Rjbo81XsctR1Y8l/lW1+qpAKLEoSZSVm24Cogub1rywfW14EZR2kyOnNK20 F8g4zIHpXyLIxVzBC0Q3AJTJTOgFA2pJGckUEFaQGCGrkiHllaSXUVkhnrlLHhVS8V 6kxUFJ6urX7dwnUo/+y+yttjURwHSI06h1RMLF5I= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-oo1-xc2e.google.com (mail-oo1-xc2e.google.com [IPv6:2607:f8b0:4864:20::c2e]) by sourceware.org (Postfix) with ESMTPS id 970FC3858C52 for ; Tue, 27 Dec 2022 21:11:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 970FC3858C52 Received: by mail-oo1-xc2e.google.com with SMTP id 189-20020a4a18c6000000b004d25d8c5af9so1129793ooo.13 for ; Tue, 27 Dec 2022 13:11:57 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/7jLXSRIjfyfGjrBkY5sgazQRSu/RSKOA5RPVjcq4FM=; b=nNLjCYGpujCjlIx0/ppypcjh8bpJKB1cukfFbMHhzHWyCAqmT6g/HC2xc1iemIWgSx wuscgiNaXkPNBSlntLEkNhEvFPjgmI4sd83MwBnjXGU4PXDSDmaZ79QtkS4G/EbmMzrW hUg+uh4tpubJHO1TI4TOGEaX8D5xwIGP0Qdhi09QfK3RudcW6uIbKdIwLSfWyxH0oaRt FFJ23eZs7emEe1nN3c+8gZiKVsAbEmOtPIr5wmoG+bZ+M//TiVTLZPgNsAk9zGFNfUZ4 VLUZGLTsvON2ErOp5BA4dbYM7wff5EtxaKckyfOozTiuPcl3a7LGIaNzCuUKp3GJtI5J fZxA== X-Gm-Message-State: AFqh2kpfzTDPSVbKkthJwZ4v4xFEKdaLoCSSiEgd9MaHZsAA5703dJ1/ MReRbHcIUg1bnt2SxcV4rG13g5mPFLI+JrrIjD0= X-Google-Smtp-Source: AMrXdXuZIQTTqADtmjuMevGWPcFhx8cvMLduEjxgON7ZNaZJlz3i2cIpqW4YnDNf15GYFCt82NnA7Q== X-Received: by 2002:a05:6820:1806:b0:4aa:ad7a:cae with SMTP id bn6-20020a056820180600b004aaad7a0caemr15538016oob.1.1672175516185; Tue, 27 Dec 2022 13:11:56 -0800 (PST) Received: from mandiga.. ([2804:1b3:a7c3:dd36:5c8b:974f:479c:a0d4]) by smtp.gmail.com with ESMTPSA id n7-20020a4aa7c7000000b004db65419011sm850955oom.34.2022.12.27.13.11.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Dec 2022 13:11:55 -0800 (PST) To: libc-alpha@sourceware.org, Florian Weimer Subject: [PATCH v3 3/4] Remove --with-default-link configure option Date: Tue, 27 Dec 2022 18:11:44 -0300 Message-Id: <20221227211145.3765256-4-adhemerval.zanella@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20221227211145.3765256-1-adhemerval.zanella@linaro.org> References: <20221227211145.3765256-1-adhemerval.zanella@linaro.org> MIME-Version: 1.0 X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, URIBL_BLACK 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: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Adhemerval Zanella via Libc-alpha From: Adhemerval Zanella Netto Reply-To: Adhemerval Zanella Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Now that there is no need to use a special linker script to hardening internal data structures, remove the --with-default-link configure option and associated definitions. Reviewed-by: Carlos O'Donell --- INSTALL | 6 ------ Makerules | 21 ++++++--------------- config.make.in | 1 - configure | 13 ------------- configure.ac | 7 ------- elf/Makefile | 2 -- iconvdata/extra-module.mk | 2 +- manual/install.texi | 6 ------ 8 files changed, 7 insertions(+), 51 deletions(-) diff --git a/INSTALL b/INSTALL index 659f75a97f..f57c743d77 100644 --- a/INSTALL +++ b/INSTALL @@ -90,12 +90,6 @@ if 'CFLAGS' is specified it must enable optimization. For example: library will still be usable, but functionality may be lost--for example, you can't build a shared libc with old binutils. -'--with-default-link' - With '--with-default-link', the build system does not use a custom - linker script for linking shared objects. The default is - '--without-default-link', because the custom linker script is - needed for full RELRO protection. - '--with-nonshared-cflags=CFLAGS' Use additional compiler flags CFLAGS to build the parts of the library which are always statically linked into applications and diff --git a/Makerules b/Makerules index 41fc8db4ba..97864402fb 100644 --- a/Makerules +++ b/Makerules @@ -544,13 +544,8 @@ $(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \ -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) endef -# If the linker is good enough, we can let it use its default linker script. -# In the long term the custom linker script will be removed. -shlib-lds = -shlib-lds-flags = - define build-shlib -$(build-shlib-helper) -o $@ $(shlib-lds-flags) \ +$(build-shlib-helper) -o $@ \ $(csu-objpfx)abi-note.o $(build-shlib-objlist) endef @@ -569,12 +564,12 @@ endef # binutils only position loadable notes into the first page for binaries, # not for shared objects define build-module -$(build-module-helper) -o $@ $(shlib-lds-flags) \ +$(build-module-helper) -o $@ \ $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args) $(call after-link,$@) endef define build-module-asneeded -$(build-module-helper) -o $@ $(shlib-lds-flags) \ +$(build-module-helper) -o $@ \ $(csu-objpfx)abi-note.o \ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \ $(link-libc-args) @@ -606,7 +601,6 @@ $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a $(LINK.o) -nostdlib -nostartfiles -r -o $@ \ $(LDFLAGS-c_pic.os) $(whole-archive) $^ -o $@ -ifeq (,$(strip $(shlib-lds-flags))) # Generate a list of -R options to excise .gnu.glibc-stub.* sections. $(common-objpfx)libc_pic.opts: $(common-objpfx)libc_pic.os $(OBJDUMP) -h $< | \ @@ -620,7 +614,6 @@ $(common-objpfx)libc_pic.os.clean: $(common-objpfx)libc_pic.opts \ generated += libc_pic.opts libc_pic.os.clean libc_pic_clean := .clean -endif # Build a possibly-modified version of libc_pic.a for use in building # linkobj/libc.so. @@ -650,16 +643,14 @@ $(common-objpfx)linkobj/libc.so: link-libc-deps = # empty $(common-objpfx)libc.so: $(common-objpfx)libc_pic.os$(libc_pic_clean) \ $(elf-objpfx)sofini.os \ $(elf-objpfx)interp.os \ - $(elf-objpfx)ld.so \ - $(shlib-lds) + $(elf-objpfx)ld.so $(build-shlib) $(call after-link,$@) $(common-objpfx)linkobj/libc.so: $(common-objpfx)linkobj/libc_pic.a \ $(elf-objpfx)sofini.os \ $(elf-objpfx)interp.os \ - $(elf-objpfx)ld.so \ - $(shlib-lds) + $(elf-objpfx)ld.so $(build-shlib) $(call after-link,$@) @@ -720,7 +711,7 @@ endif extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names)) $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \ - $(objpfx)%.os $(shlib-lds) $(link-libs-deps) + $(objpfx)%.os $(link-libs-deps) $(build-module) endif diff --git a/config.make.in b/config.make.in index d7c416cbea..befcc22625 100644 --- a/config.make.in +++ b/config.make.in @@ -69,7 +69,6 @@ have-libaudit = @have_libaudit@ have-libcap = @have_libcap@ have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ bind-now = @bindnow@ -use-default-link = @use_default_link@ have-cxx-thread_local = @libc_cv_cxx_thread_local@ have-loop-to-function = @libc_cv_cc_loop_to_function@ have-textrel_ifunc = @libc_cv_textrel_ifunc@ diff --git a/configure b/configure index 62c2581cb0..df2e126e6f 100755 --- a/configure +++ b/configure @@ -678,7 +678,6 @@ hardcoded_path_in_tests enable_timezone_tools rtld_early_cflags extra_nonshared_cflags -use_default_link sysheaders ac_ct_CXX CXXFLAGS @@ -756,7 +755,6 @@ with_gd_lib with_binutils with_selinux with_headers -with_default_link with_nonshared_cflags with_rtld_early_cflags with_timeoutfactor @@ -1475,7 +1473,6 @@ Optional Packages: --with-selinux if building with SELinux support --with-headers=PATH location of system headers to use (for example /usr/src/linux/include) [default=compiler default] - --with-default-link do not use explicit linker scripts --with-nonshared-cflags=CFLAGS build nonshared libraries with additional CFLAGS --with-rtld-early-cflags=CFLAGS @@ -3459,16 +3456,6 @@ fi - -# Check whether --with-default-link was given. -if test "${with_default_link+set}" = set; then : - withval=$with_default_link; use_default_link=$withval -else - use_default_link=no -fi - - - # Check whether --with-nonshared-cflags was given. if test "${with_nonshared_cflags+set}" = set; then : withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval diff --git a/configure.ac b/configure.ac index 022b8f68bc..a57303938e 100644 --- a/configure.ac +++ b/configure.ac @@ -149,13 +149,6 @@ AC_ARG_WITH([headers], [sysheaders='']) AC_SUBST(sysheaders) -AC_SUBST(use_default_link) -AC_ARG_WITH([default-link], - AS_HELP_STRING([--with-default-link], - [do not use explicit linker scripts]), - [use_default_link=$withval], - [use_default_link=no]) - dnl Additional build flags injection. AC_ARG_WITH([nonshared-cflags], AS_HELP_STRING([--with-nonshared-cflags=CFLAGS], diff --git a/elf/Makefile b/elf/Makefile index f5157030c4..05f9b6dd54 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -1233,8 +1233,6 @@ endif # Command to link into a larger single relocatable object. reloc-link = $(LINK.o) -nostdlib -nostartfiles -r -$(objpfx)sotruss-lib.so: $(shlib-lds) - $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os) $(reloc-link) -o $@ $^ diff --git a/iconvdata/extra-module.mk b/iconvdata/extra-module.mk index ecaf507624..a816659763 100644 --- a/iconvdata/extra-module.mk +++ b/iconvdata/extra-module.mk @@ -4,7 +4,7 @@ extra-modules-left := $(strip $(filter-out $(mod),$(extra-modules-left))) extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines)) $(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\ - $(shlib-lds) $(link-libc-deps) + $(link-libc-deps) $(build-module-asneeded) ifneq (,$(extra-modules-left)) diff --git a/manual/install.texi b/manual/install.texi index c775005581..ba2231024b 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -117,12 +117,6 @@ problem and suppress these constructs, so that the library will still be usable, but functionality may be lost---for example, you can't build a shared libc with old binutils. -@item --with-default-link -With @code{--with-default-link}, the build system does not use a custom -linker script for linking shared objects. The default is -@code{--without-default-link}, because the custom linker script is -needed for full RELRO protection. - @item --with-nonshared-cflags=@var{cflags} Use additional compiler flags @var{cflags} to build the parts of the library which are always statically linked into applications and