Remove --with-default-link configure option

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 <carlos@redhat.com>
This commit is contained in:
Adhemerval Zanella Netto 2022-12-27 18:11:44 -03:00 committed by Adhemerval Zanella
parent 3020f72618
commit 91fc5b9990
8 changed files with 7 additions and 51 deletions

View File

@ -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 library will still be usable, but functionality may be lost--for
example, you can't build a shared libc with old binutils. 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' '--with-nonshared-cflags=CFLAGS'
Use additional compiler flags CFLAGS to build the parts of the Use additional compiler flags CFLAGS to build the parts of the
library which are always statically linked into applications and library which are always statically linked into applications and

View File

@ -544,13 +544,8 @@ $(LINK.o) -shared -static-libgcc -Wl,-O1 $(sysdep-LDFLAGS) \
-L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link) -L$(subst :, -L,$(rpath-link)) -Wl,-rpath-link=$(rpath-link)
endef 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 define build-shlib
$(build-shlib-helper) -o $@ $(shlib-lds-flags) \ $(build-shlib-helper) -o $@ \
$(csu-objpfx)abi-note.o $(build-shlib-objlist) $(csu-objpfx)abi-note.o $(build-shlib-objlist)
endef endef
@ -569,12 +564,12 @@ endef
# binutils only position loadable notes into the first page for binaries, # binutils only position loadable notes into the first page for binaries,
# not for shared objects # not for shared objects
define build-module 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) $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args)
$(call after-link,$@) $(call after-link,$@)
endef endef
define build-module-asneeded define build-module-asneeded
$(build-module-helper) -o $@ $(shlib-lds-flags) \ $(build-module-helper) -o $@ \
$(csu-objpfx)abi-note.o \ $(csu-objpfx)abi-note.o \
-Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \
$(link-libc-args) $(link-libc-args)
@ -606,7 +601,6 @@ $(common-objpfx)libc_pic.os: $(common-objpfx)libc_pic.a
$(LINK.o) -nostdlib -nostartfiles -r -o $@ \ $(LINK.o) -nostdlib -nostartfiles -r -o $@ \
$(LDFLAGS-c_pic.os) $(whole-archive) $^ -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. # Generate a list of -R options to excise .gnu.glibc-stub.* sections.
$(common-objpfx)libc_pic.opts: $(common-objpfx)libc_pic.os $(common-objpfx)libc_pic.opts: $(common-objpfx)libc_pic.os
$(OBJDUMP) -h $< | \ $(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 generated += libc_pic.opts libc_pic.os.clean
libc_pic_clean := .clean libc_pic_clean := .clean
endif
# Build a possibly-modified version of libc_pic.a for use in building # Build a possibly-modified version of libc_pic.a for use in building
# linkobj/libc.so. # 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) \ $(common-objpfx)libc.so: $(common-objpfx)libc_pic.os$(libc_pic_clean) \
$(elf-objpfx)sofini.os \ $(elf-objpfx)sofini.os \
$(elf-objpfx)interp.os \ $(elf-objpfx)interp.os \
$(elf-objpfx)ld.so \ $(elf-objpfx)ld.so
$(shlib-lds)
$(build-shlib) $(build-shlib)
$(call after-link,$@) $(call after-link,$@)
$(common-objpfx)linkobj/libc.so: $(common-objpfx)linkobj/libc_pic.a \ $(common-objpfx)linkobj/libc.so: $(common-objpfx)linkobj/libc_pic.a \
$(elf-objpfx)sofini.os \ $(elf-objpfx)sofini.os \
$(elf-objpfx)interp.os \ $(elf-objpfx)interp.os \
$(elf-objpfx)ld.so \ $(elf-objpfx)ld.so
$(shlib-lds)
$(build-shlib) $(build-shlib)
$(call after-link,$@) $(call after-link,$@)
@ -720,7 +711,7 @@ endif
extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names)) extra-modules-build := $(filter-out $(modules-names-nobuild),$(modules-names))
$(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \ $(extra-modules-build:%=$(objpfx)%.so): $(objpfx)%.so: \
$(objpfx)%.os $(shlib-lds) $(link-libs-deps) $(objpfx)%.os $(link-libs-deps)
$(build-module) $(build-module)
endif endif

View File

@ -69,7 +69,6 @@ have-libaudit = @have_libaudit@
have-libcap = @have_libcap@ have-libcap = @have_libcap@
have-cc-with-libunwind = @libc_cv_cc_with_libunwind@ have-cc-with-libunwind = @libc_cv_cc_with_libunwind@
bind-now = @bindnow@ bind-now = @bindnow@
use-default-link = @use_default_link@
have-cxx-thread_local = @libc_cv_cxx_thread_local@ have-cxx-thread_local = @libc_cv_cxx_thread_local@
have-loop-to-function = @libc_cv_cc_loop_to_function@ have-loop-to-function = @libc_cv_cc_loop_to_function@
have-textrel_ifunc = @libc_cv_textrel_ifunc@ have-textrel_ifunc = @libc_cv_textrel_ifunc@

13
configure vendored
View File

@ -680,7 +680,6 @@ hardcoded_path_in_tests
enable_timezone_tools enable_timezone_tools
rtld_early_cflags rtld_early_cflags
extra_nonshared_cflags extra_nonshared_cflags
use_default_link
sysheaders sysheaders
ac_ct_CXX ac_ct_CXX
CXXFLAGS CXXFLAGS
@ -756,7 +755,6 @@ with_gd_lib
with_binutils with_binutils
with_selinux with_selinux
with_headers with_headers
with_default_link
with_nonshared_cflags with_nonshared_cflags
with_rtld_early_cflags with_rtld_early_cflags
with_timeoutfactor with_timeoutfactor
@ -1475,7 +1473,6 @@ Optional Packages:
--with-selinux if building with SELinux support --with-selinux if building with SELinux support
--with-headers=PATH location of system headers to use (for example --with-headers=PATH location of system headers to use (for example
/usr/src/linux/include) [default=compiler default] /usr/src/linux/include) [default=compiler default]
--with-default-link do not use explicit linker scripts
--with-nonshared-cflags=CFLAGS --with-nonshared-cflags=CFLAGS
build nonshared libraries with additional CFLAGS build nonshared libraries with additional CFLAGS
--with-rtld-early-cflags=CFLAGS --with-rtld-early-cflags=CFLAGS
@ -3275,16 +3272,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. # Check whether --with-nonshared-cflags was given.
if test "${with_nonshared_cflags+set}" = set; then : if test "${with_nonshared_cflags+set}" = set; then :
withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval withval=$with_nonshared_cflags; extra_nonshared_cflags=$withval

View File

@ -147,13 +147,6 @@ AC_ARG_WITH([headers],
[sysheaders='']) [sysheaders=''])
AC_SUBST(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. dnl Additional build flags injection.
AC_ARG_WITH([nonshared-cflags], AC_ARG_WITH([nonshared-cflags],
AS_HELP_STRING([--with-nonshared-cflags=CFLAGS], AS_HELP_STRING([--with-nonshared-cflags=CFLAGS],

View File

@ -1242,8 +1242,6 @@ endif
# Command to link into a larger single relocatable object. # Command to link into a larger single relocatable object.
reloc-link = $(LINK.o) -nostdlib -nostartfiles -r reloc-link = $(LINK.o) -nostdlib -nostartfiles -r
$(objpfx)sotruss-lib.so: $(shlib-lds)
$(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os) $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os)
$(reloc-link) -o $@ $^ $(reloc-link) -o $@ $^

View File

@ -4,7 +4,7 @@ extra-modules-left := $(strip $(filter-out $(mod),$(extra-modules-left)))
extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines)) extra-objs := $(extra-objs) $(patsubst %,%.os,$($(mod)-routines))
$(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\ $(objpfx)$(mod).so: $(addprefix $(objpfx),$(addsuffix .os,$($(mod)-routines)))\
$(shlib-lds) $(link-libc-deps) $(link-libc-deps)
$(build-module-asneeded) $(build-module-asneeded)
ifneq (,$(extra-modules-left)) ifneq (,$(extra-modules-left))

View File

@ -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 usable, but functionality may be lost---for example, you can't build a
shared libc with old binutils. 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} @item --with-nonshared-cflags=@var{cflags}
Use additional compiler flags @var{cflags} to build the parts of the Use additional compiler flags @var{cflags} to build the parts of the
library which are always statically linked into applications and library which are always statically linked into applications and