Add --with-rtld-early-cflags configure option

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
Florian Weimer 2022-01-14 20:16:05 +01:00
parent b693d75f0c
commit 9ba202c78f
7 changed files with 49 additions and 0 deletions

View File

@ -106,6 +106,14 @@ if 'CFLAGS' is specified it must enable optimization. For example:
particular case and potentially change debugging information and
metadata only).
'--with-rtld-early-cflags=CFLAGS'
Use additional compiler flags CFLAGS to build the early startup
code of the dynamic linker. These flags can be used to enable
early dynamic linker diagnostics to run on CPUs which are not
compatible with the rest of the GNU C Library, for example, due to
compiler flags which target a later instruction set architecture
(ISA).
'--with-timeoutfactor=NUM'
Specify an integer NUM to scale the timeout of test programs. This
factor can be changed at run time using 'TIMEOUTFACTOR' environment

6
NEWS
View File

@ -120,6 +120,12 @@ Major new features:
The OpenRISC ABI is 32-bit big-endian and uses 64-bit time (y2038 safe) and
64-bit file offsets (LFS default).
* A new configure option, --with-rtld-early-cflags, can be used to
specify additional compiler flags for building the early startup code
of the dynamic linker. On targets which have CPU compatibility
checks, this can help to ensure that proper diagnostics are printed if
the dynamic loader runs on an incompatible CPU.
Deprecated and removed features, and other changes affecting compatibility:
* On x86-64, the LD_PREFER_MAP_32BIT_EXEC environment variable support

View File

@ -110,6 +110,7 @@ CFLAGS = @CFLAGS@
CPPFLAGS-config = @CPPFLAGS@
CPPUNDEFS = @CPPUNDEFS@
extra-nonshared-cflags = @extra_nonshared_cflags@
rtld-early-cflags = @rtld_early_cflags@
ASFLAGS-config = @ASFLAGS_config@
AR = @AR@
NM = @NM@

13
configure vendored
View File

@ -681,6 +681,7 @@ force_install
bindnow
hardcoded_path_in_tests
enable_timezone_tools
rtld_early_cflags
extra_nonshared_cflags
use_default_link
sysheaders
@ -761,6 +762,7 @@ with_selinux
with_headers
with_default_link
with_nonshared_cflags
with_rtld_early_cflags
with_timeoutfactor
enable_sanity_checks
enable_shared
@ -1480,6 +1482,8 @@ Optional Packages:
--with-default-link do not use explicit linker scripts
--with-nonshared-cflags=CFLAGS
build nonshared libraries with additional CFLAGS
--with-rtld-early-cflags=CFLAGS
build early initialization with additional CFLAGS
--with-timeoutfactor=NUM
specify an integer to scale the timeout
--with-cpu=CPU select code for CPU variant
@ -3386,6 +3390,15 @@ fi
# Check whether --with-rtld-early-cflags was given.
if test "${with_rtld_early_cflags+set}" = set; then :
withval=$with_rtld_early_cflags; rtld_early_cflags=$withval
else
rtld_early_cflags=
fi
# Check whether --with-timeoutfactor was given.
if test "${with_timeoutfactor+set}" = set; then :

View File

@ -162,6 +162,12 @@ AC_ARG_WITH([nonshared-cflags],
[extra_nonshared_cflags=$withval],
[extra_nonshared_cflags=])
AC_SUBST(extra_nonshared_cflags)
AC_ARG_WITH([rtld-early-cflags],
AS_HELP_STRING([--with-rtld-early-cflags=CFLAGS],
[build early initialization with additional CFLAGS]),
[rtld_early_cflags=$withval],
[rtld_early_cflags=])
AC_SUBST(rtld_early_cflags)
AC_ARG_WITH([timeoutfactor],
AS_HELP_STRING([--with-timeoutfactor=NUM],

View File

@ -167,6 +167,14 @@ CFLAGS-.o += $(call elide-stack-protector,.o,$(elide-routines.os))
CFLAGS-.op += $(call elide-stack-protector,.op,$(elide-routines.os))
CFLAGS-.os += $(call elide-stack-protector,.os,$(all-rtld-routines))
# Add the requested compiler flags to the early startup code.
CFLAGS-dl-printf.os += $(rtld-early-cflags)
CFLAGS-dl-sysdep.os += $(rtld-early-cflags)
CFLAGS-dl-tunables.os += $(rtld-early-cflags)
CFLAGS-dl-write.os += $(rtld-early-cflags)
CFLAGS-dl-writev.os += $(rtld-early-cflags)
CFLAGS-rtld.os += $(rtld-early-cflags)
ifeq ($(unwind-find-fde),yes)
routines += unwind-dw2-fde-glibc
shared-only-routines += unwind-dw2-fde-glibc

View File

@ -131,6 +131,13 @@ that the objects in @file{libc_nonshared.a} are compiled with this flag
(although this will not affect the generated code in this particular
case and potentially change debugging information and metadata only).
@item --with-rtld-early-cflags=@var{cflags}
Use additional compiler flags @var{cflags} to build the early startup
code of the dynamic linker. These flags can be used to enable early
dynamic linker diagnostics to run on CPUs which are not compatible with
the rest of @theglibc{}, for example, due to compiler flags which target
a later instruction set architecture (ISA).
@item --with-timeoutfactor=@var{NUM}
Specify an integer @var{NUM} to scale the timeout of test programs.
This factor can be changed at run time using @env{TIMEOUTFACTOR}