[PATCH v2 1/2] Disable SFrame support by default
Indu Bhagat
indu.bhagat@oracle.com
Tue Jul 22 04:45:15 GMT 2025
On 7/21/25 4:41 PM, Adhemerval Zanella wrote:
> And add extra checks to enable for binutils 2.45 and if the archicture
> explicitly enables it. When SFrame is disabled, all the related code
> is also not enabled for backtrace() and _dl_find_object(), so SFrame
> backtracking is not used even if the binary has the SFrame segment.
>
> This patch also adds some other related fixes:
>
> * Fixed an issue with AC_CHECK_PROG_VER, where the READELF_SFRAME
> usage prevented specifying a different readelf through READELF
> environment variable at configure time.
>
> * Add an extra arch-specific internal definition,
> libc_cv_support_sframe, to disable --enable-sframe on architectures
> that have binutils but not glibc support (s390x).
>
> * Renamed the tests without the .sframe segment and move the
> tst-backtrace1 from pthread to debug.
>
> * Use the built compiler strip to remove the .sframe segment,
> instead of the system one (which might not support SFrame).
>
Thanks for taking care of this.
> Checked on x86_64-linux-gnu and aarch64-linux-gnu.
> ---
> INSTALL | 9 +--
> aclocal.m4 | 4 ++
> config.h.in | 3 +
> config.make.in | 2 +-
> configure | 62 ++++++++++++---------
> configure.ac | 26 +++++----
> debug/Makefile | 16 ++++--
> debug/backtrace.c | 8 +++
> {sysdeps/pthread => debug}/tst-backtrace1.c | 0
> elf/dl-find_object.h | 10 ++++
> manual/install.texi | 11 ++--
> sysdeps/aarch64/configure | 2 +
> sysdeps/aarch64/configure.ac | 2 +
> sysdeps/generic/Makefile | 2 +
> sysdeps/pthread/Makefile | 1 -
> sysdeps/x86_64/configure | 2 +
> sysdeps/x86_64/configure.ac | 2 +
> 17 files changed, 108 insertions(+), 54 deletions(-)
> rename {sysdeps/pthread => debug}/tst-backtrace1.c (100%)
>
> diff --git a/INSTALL b/INSTALL
> index cf60e1a380..85382a8139 100644
> --- a/INSTALL
> +++ b/INSTALL
> @@ -291,10 +291,11 @@ passed to 'configure'. For example:
>
> Default is to disable fortification.
>
> -'--disable-sframe'
> - By default, the GNU C Library is built with '-Wa,--gsframe' if the
> - current GNU 'binutils' supports it. You may want to use this
> - option if you don't plan to use SFrame stack tracer.
> +'--enable-sframe'
> + Experimental option supported by some architectures, where
> + the GNU C Library is built with '-Wa,--gsframe' if the binutils
> + supports it. You may want to use this option if you plan to use
> + SFrame stack tracer.
>
> To build the library and related programs, type 'make'. This will
> produce a lot of output, some of which may look like errors from 'make'
> diff --git a/aclocal.m4 b/aclocal.m4
> index e06366cdb2..450646b0e4 100644
> --- a/aclocal.m4
> +++ b/aclocal.m4
> @@ -145,6 +145,10 @@ if test -z "$NM"; then
> NM=`$CC -print-prog-name=nm`
> fi
> AC_SUBST(NM)
> +if test -z "$STRIP"; then
> + STRIP=`$CC -print-prog-name=nm`
-print-prog-name=strip
> +fi
> +AC_SUBST(STRIP)
> ])
>
> dnl Run a static link test with -nostdlib -nostartfiles.
> diff --git a/config.h.in b/config.h.in
> index 29126ea933..8b4077f578 100644
> --- a/config.h.in
> +++ b/config.h.in
> @@ -287,6 +287,9 @@
> /* Define if static PIE is enabled. */
> #define ENABLE_STATIC_PIE 0
>
> +/* Define if SFrame v2 is enabled. */
> +#define ENABLE_SFRAME 0
> +
> /* The default value of x86 CET control. */
> #define DEFAULT_DL_X86_CET_CONTROL cet_elf_property
>
> diff --git a/config.make.in b/config.make.in
> index 382e003d87..fca75ab5d3 100644
> --- a/config.make.in
> +++ b/config.make.in
> @@ -51,7 +51,6 @@ c++-cstdlib-header = @CXX_CSTDLIB_HEADER@
> c++-cmath-header = @CXX_CMATH_HEADER@
> c++-bits-std_abs-h = @CXX_BITS_STD_ABS_H@
> enable-werror = @enable_werror@
> -enable-gsframe = @enable_gsframe@
>
> have-z-execstack = @libc_cv_z_execstack@
> have-no-error-execstack = @libc_cv_no_error_execstack@
> @@ -114,6 +113,7 @@ OBJDUMP = @OBJDUMP@
> OBJCOPY = @OBJCOPY@
> GPROF = @GPROF@
> READELF = @READELF@
> +STRIP = @STRIP@
>
> # Installation tools.
> INSTALL = @INSTALL@
> diff --git a/configure b/configure
> index 6595d6be54..2efa7e1bde 100755
> --- a/configure
> +++ b/configure
> @@ -620,8 +620,6 @@ DEFINES
> static_nss
> profile
> libc_cv_multidir
> -enable_gsframe
> -READELF_SFRAME
> libc_cv_test_x86_have_amx_tile
> test_enable_cet
> libc_cv_test_cc_mprefer_vector_width
> @@ -694,6 +692,7 @@ MAKEINFO
> MSGFMT
> MAKE
> LD
> +STRIP
> NM
> OBJDUMP
> READELF
> @@ -1510,8 +1509,8 @@ Optional Features:
> Use -D_FORTIFY_SOURCE=[1|2|3] to control code
> hardening, defaults to highest possible value
> supported by the build compiler.
> - --disable-sframe Disable building with SFrame stack trace information
> - [default=yes if GNU as is 2.41 or older]
> + --enable-sframe Enable building with SFrame stack trace information
> + [default=no]
>
> Optional Packages:
> --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
> @@ -4895,7 +4894,7 @@ if test ${enable_sframe+y}
> then :
> enableval=$enable_sframe; use_sframe=$enableval
> else case e in #(
> - e) use_sframe=notset ;;
> + e) use_sframe=no ;;
> esac
> fi
>
> @@ -5142,6 +5141,10 @@ if test -z "$NM"; then
> NM=`$CC -print-prog-name=nm`
> fi
>
> +if test -z "$STRIP"; then
> + STRIP=`$CC -print-prog-name=nm`
> +fi
> +
>
>
> # Accept binutils 2.39 or newer.
> @@ -9357,7 +9360,7 @@ have-libgcc_s = $libc_cv_have_libgcc_s"
>
>
> # Glibc stacktracer supports SFrame v2 or newer
> -libc_cv_readelf_version_ok=yes
> +libc_cv_sframe_readelf_version=yes
> # SFrame is supported from 2.41 or higher
> for ac_prog in $READELF
> do
> @@ -9365,12 +9368,12 @@ do
> set dummy $ac_prog; ac_word=$2
> { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
> printf %s "checking for $ac_word... " >&6; }
> -if test ${ac_cv_prog_READELF_SFRAME+y}
> +if test ${ac_cv_prog_READELF+y}
> then :
> printf %s "(cached) " >&6
> else case e in #(
> - e) if test -n "$READELF_SFRAME"; then
> - ac_cv_prog_READELF_SFRAME="$READELF_SFRAME" # Let the user override the test.
> + e) if test -n "$READELF"; then
> + ac_cv_prog_READELF="$READELF" # Let the user override the test.
> else
> as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
> for as_dir in $PATH
> @@ -9383,7 +9386,7 @@ do
> esac
> for ac_exec_ext in '' $ac_executable_extensions; do
> if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then
> - ac_cv_prog_READELF_SFRAME="$ac_prog"
> + ac_cv_prog_READELF="$ac_prog"
> printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5
> break 2
> fi
> @@ -9394,29 +9397,29 @@ IFS=$as_save_IFS
> fi ;;
> esac
> fi
> -READELF_SFRAME=$ac_cv_prog_READELF_SFRAME
> -if test -n "$READELF_SFRAME"; then
> - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READELF_SFRAME" >&5
> -printf "%s\n" "$READELF_SFRAME" >&6; }
> +READELF=$ac_cv_prog_READELF
> +if test -n "$READELF"; then
> + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $READELF" >&5
> +printf "%s\n" "$READELF" >&6; }
> else
> { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5
> printf "%s\n" "no" >&6; }
> fi
>
>
> - test -n "$READELF_SFRAME" && break
> + test -n "$READELF" && break
> done
>
> -if test -z "$READELF_SFRAME"; then
> +if test -z "$READELF"; then
> ac_verc_fail=yes
> else
> # Found it, now check the version.
> - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of $READELF_SFRAME" >&5
> -printf %s "checking version of $READELF_SFRAME... " >&6; }
> - ac_prog_version=`$READELF_SFRAME --version 2>&1 | sed -n 's/^.*GNU readelf.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
> + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking version of $READELF" >&5
> +printf %s "checking version of $READELF... " >&6; }
> + ac_prog_version=`$READELF --version 2>&1 | sed -n 's/^.*GNU readelf.* \([0-9][0-9]*\.[0-9.]*\).*$/\1/p'`
> case $ac_prog_version in
> '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
> - 2.4[1-9]*|2.[5-9][0-9]*|[3-9].*|[1-9][0-9][0-9]*)
> + 2.4[5-9]*|2.[5-9][0-9]*|[3-9].*|[1-9][0-9][0-9]*)
> ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
> *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
>
> @@ -9425,12 +9428,12 @@ printf %s "checking version of $READELF_SFRAME... " >&6; }
> printf "%s\n" "$ac_prog_version" >&6; }
> fi
> if test $ac_verc_fail = yes; then
> - libc_cv_readelf_version_ok=no
> + libc_cv_sframe_readelf_version=no
> fi
>
>
> # Check the current toolchain for SFrame support
> -if test $libc_cv_readelf_version_ok = yes; then
> +if test $libc_cv_sframe_readelf_version = yes; then
> { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for SFrame support" >&5
> printf %s "checking for SFrame support... " >&6; }
> if test ${libc_cv_default_sframe+y}
> @@ -9459,16 +9462,23 @@ fi
>
> # Prevent enabling sframe on non-supporting toolchains
> enable_gsframe=no
> -if test $use_sframe$libc_cv_default_sframe = yesyes || \
> - test $use_sframe$libc_cv_default_sframe = notsetyes; then
> - enable_gsframe=yes
> +if test $use_sframe$libc_cv_default_sframe$libc_cv_support_sframe = yesyesyes; then
> + enable_gsframe=yes
> + printf "%s\n" "#define ENABLE_SFRAME 1" >>confdefs.h
> +
> +elif test -z $libc_cv_support_sframe; then
> + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
> +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
> +as_fn_error $? "the architecture doesn't support SFrame
> +See 'config.log' for more details" "$LINENO" 5; }
> elif test $use_sframe = yes; then
> { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5
> printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;}
> as_fn_error $? "toolchain doesn't support SFrame v2 or higher
> See 'config.log' for more details" "$LINENO" 5; }
> fi
> -
> +config_vars="$config_vars
> +enable-gsframe = $enable_gsframe"
>
> # Set the `multidir' variable by grabbing the variable from the compiler.
> # We do it once and save the result in a generated makefile.
> diff --git a/configure.ac b/configure.ac
> index 25b80e34e4..13fc4624ce 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -441,10 +441,10 @@ case "$enable_fortify_source" in
> esac
>
> AC_ARG_ENABLE([sframe],
> - [AS_HELP_STRING([--disable-sframe],
> - [Disable building with SFrame stack trace information @<:@default=yes if GNU as is 2.41 or older@:>@])],
> + [AS_HELP_STRING([--enable-sframe],
> + [Enable building with SFrame stack trace information @<:@default=no@:>@])],
> [use_sframe=$enableval],
> - [use_sframe=notset])
> + [use_sframe=no])
>
> # We keep the original values in `$config_*' and never modify them, so we
> # can write them unchanged into config.make. Everything else uses
> @@ -2122,15 +2122,15 @@ AC_SUBST(test_enable_cet)
> AC_SUBST(libc_cv_test_x86_have_amx_tile)
>
> # Glibc stacktracer supports SFrame v2 or newer
> -libc_cv_readelf_version_ok=yes
> +libc_cv_sframe_readelf_version=yes
> # SFrame is supported from 2.41 or higher
> -AC_CHECK_PROG_VER(READELF_SFRAME, $READELF, --version,
> +AC_CHECK_PROG_VER(READELF, $READELF, --version,
> [GNU readelf.* \([0-9][0-9]*\.[0-9.]*\)],
> - [2.4[1-9]*|2.[5-9][0-9]*|[3-9].*|[1-9][0-9][0-9]*],
> - libc_cv_readelf_version_ok=no)
> + [2.4[5-9]*|2.[5-9][0-9]*|[3-9].*|[1-9][0-9][0-9]*],
> + libc_cv_sframe_readelf_version=no)
>
> # Check the current toolchain for SFrame support
> -if test $libc_cv_readelf_version_ok = yes; then
> +if test $libc_cv_sframe_readelf_version = yes; then
> AC_CACHE_CHECK([for SFrame support], libc_cv_default_sframe,
> [dnl
> cat > conftest.c <<EOF
> @@ -2151,13 +2151,15 @@ fi
>
> # Prevent enabling sframe on non-supporting toolchains
> enable_gsframe=no
> -if test $use_sframe$libc_cv_default_sframe = yesyes || \
> - test $use_sframe$libc_cv_default_sframe = notsetyes; then
> - enable_gsframe=yes
> +if test $use_sframe$libc_cv_default_sframe$libc_cv_support_sframe = yesyesyes; then
> + enable_gsframe=yes
> + AC_DEFINE(ENABLE_SFRAME)
> +elif test -z $libc_cv_support_sframe; then
> + AC_MSG_FAILURE([the architecture doesn't support SFrame])
> elif test $use_sframe = yes; then
> AC_MSG_FAILURE([toolchain doesn't support SFrame v2 or higher])
> fi
> -AC_SUBST(enable_gsframe)
> +LIBC_CONFIG_VAR([enable-gsframe], [$enable_gsframe])
>
> # Set the `multidir' variable by grabbing the variable from the compiler.
> # We do it once and save the result in a generated makefile.
> diff --git a/debug/Makefile b/debug/Makefile
> index 919bf91c42..6fcb30429e 100644
> --- a/debug/Makefile
> +++ b/debug/Makefile
> @@ -285,14 +285,17 @@ LDFLAGS-tst-backtrace4 = -rdynamic
> LDFLAGS-tst-backtrace5 = -rdynamic
> LDFLAGS-tst-backtrace6 = -rdynamic
>
> +$(objpfx)tst-backtrace1: $(shared-thread-library)
> +
> # When SFrame is enabled, make sure the dwarf unwinder is also exercised.
> ifeq ($(enable-gsframe),yes)
> dw_unwind_pair := \
> - tst-backtrace7:tst-backtrace2 \
> - tst-backtrace8:tst-backtrace3 \
> - tst-backtrace9:tst-backtrace4 \
> - tst-backtrace10:tst-backtrace5 \
> - tst-backtrace11:tst-backtrace6
> + tst-backtrace1-nosframe:tst-backtrace1 \
> + tst-backtrace2-nosframe:tst-backtrace2 \
> + tst-backtrace3-nosframe:tst-backtrace3 \
> + tst-backtrace4-nosframe:tst-backtrace4 \
> + tst-backtrace5-nosframe:tst-backtrace5 \
> + tst-backtrace6-nosframe:tst-backtrace6
>
> first_column = $(foreach pair,$(dw_unwind_pair),$(word 1,$(subst :, ,$(pair))))
> tests-dw-unwind = $(patsubst %,$(objpfx)%.out,$(first_column))
> @@ -301,7 +304,7 @@ endif
>
> define make-strip-rule
> $(objpfx)$(word 1,$(subst :, ,$(1))): $(objpfx)$(word 2,$(subst :, ,$(1)))
> - strip --remove-section=.sframe $$< -o $$@
> + $(STRIP) --remove-section=.sframe $$< -o $$@
> endef
>
> $(foreach pair,$(dw_unwind_pair),$(eval $(call make-strip-rule,$(pair))))
> @@ -324,6 +327,7 @@ tests = \
> backtrace-tst \
> test-stpcpy_chk \
> test-strcpy_chk \
> + tst-backtrace1 \
> tst-backtrace2 \
> tst-backtrace3 \
> tst-backtrace4 \
> diff --git a/debug/backtrace.c b/debug/backtrace.c
> index 161999c17e..ea7ac4ddf0 100644
> --- a/debug/backtrace.c
> +++ b/debug/backtrace.c
> @@ -20,7 +20,9 @@
> #include <stdlib.h>
> #include <unwind.h>
> #include <unwind-link.h>
> +#if ENABLE_SFRAME
> #include <sframe.h>
> +#endif
>
> struct trace_arg
> {
> @@ -31,6 +33,7 @@ struct trace_arg
> int size;
> };
>
> +#if ENABLE_SFRAME
> /* Initialize the SFrame backtrace routine and attempt to backtrace
> the current stack using SFrame information. For the SFrame
> backtrace to be considered valid, the tracer must return more than
> @@ -64,6 +67,7 @@ do_sframe_backtrace (void **array, int size)
> frame.fp = (_Unwind_Ptr) __builtin_frame_address (0);
> return __stacktrace_sframe (array, size, &frame);
> }
> +#endif
>
> static _Unwind_Reason_Code
> backtrace_helper (struct _Unwind_Context *ctx, void *a)
> @@ -110,6 +114,7 @@ __backtrace (void **array, int size)
> if (size <= 0)
> return 0;
>
> +#if ENABLE_SFRAME
> /* Try first the SFrame backtracer. */
> int cnt = do_sframe_backtrace (array, size);
> if (cnt > 1)
> @@ -117,6 +122,9 @@ __backtrace (void **array, int size)
>
> /* Try the dwarf unwinder. */
> if (arg.unwind_link == NULL)
> +#else
> + if (arg.unwind_link == NULL)
> +#endif
> return 0;
>
> UNWIND_LINK_PTR (arg.unwind_link, _Unwind_Backtrace)
> diff --git a/sysdeps/pthread/tst-backtrace1.c b/debug/tst-backtrace1.c
> similarity index 100%
> rename from sysdeps/pthread/tst-backtrace1.c
> rename to debug/tst-backtrace1.c
> diff --git a/elf/dl-find_object.h b/elf/dl-find_object.h
> index 9aa2439eaa..6a50b4becf 100644
> --- a/elf/dl-find_object.h
> +++ b/elf/dl-find_object.h
> @@ -43,7 +43,9 @@ struct dl_find_object_internal
> #if DLFO_STRUCT_HAS_EH_COUNT
> int eh_count;
> #endif
> +#if ENABLE_SFRAME
> void *sframe;
> +#endif
> };
>
> /* Create a copy of *SOURCE in *COPY using relaxed MO loads and
> @@ -68,8 +70,10 @@ _dl_find_object_internal_copy (const struct dl_find_object_internal *source,
> atomic_store_relaxed (©->eh_count,
> atomic_load_relaxed (&source->eh_count));
> #endif
> +#if ENABLE_SFRAME
> atomic_store_relaxed (©->sframe,
> atomic_load_relaxed (&source->sframe));
> +#endif
> }
>
> static inline void
> @@ -86,10 +90,12 @@ _dl_find_object_to_external (struct dl_find_object_internal *internal,
> # if DLFO_STRUCT_HAS_EH_COUNT
> external->dlfo_eh_count = internal->eh_count;
> # endif
> +# if ENABLE_SFRAME
> external->dlfo_sframe = internal->sframe;
> if (internal->sframe != NULL)
> external->dlfo_flags = DLFO_FLAG_SFRAME;
> else
> +# endif
> external->dlfo_flags = 0;
> }
>
> @@ -112,7 +118,9 @@ _dl_find_object_from_map (struct link_map *l,
>
> /* Initialize object's exception handling segment and SFrame segment
> data. */
> +#if ENABLE_SFRAME
> atomic_store_relaxed (&result->sframe, NULL);
> +#endif
> atomic_store_relaxed (&result->eh_frame, NULL);
> #if DLFO_STRUCT_HAS_EH_COUNT
> atomic_store_relaxed (&result->eh_count, 0);
> @@ -132,11 +140,13 @@ _dl_find_object_from_map (struct link_map *l,
> read_seg |= 1;
> break;
>
> +#if ENABLE_SFRAME
> case PT_GNU_SFRAME:
> atomic_store_relaxed (&result->sframe,
> (void *) (ph->p_vaddr + l->l_addr));
> read_seg |= 2;
> /* Fall through. */
> +#endif
> default:
> break;
> }
> diff --git a/manual/install.texi b/manual/install.texi
> index 0c8d448362..e360aa7589 100644
> --- a/manual/install.texi
> +++ b/manual/install.texi
> @@ -321,10 +321,13 @@ the build compiler.
>
> Default is to disable fortification.
>
> -@item --disable-sframe
> -By default, the GNU C Library is built with @option{-Wa,--gsframe} if
> -the current GNU @code{binutils} supports it. You may want to use this
> -option if you don't plan to use SFrame stack tracer.
> +@item --enable-sframe
> +Experimental option supported by some architectures, where @theglibc{}i
> +is built with @option{-Wa,--gsframe} if the @code{binutils} supports it.
> +Currently it is only support on x86_64 and aarch64 it is required te
> +enable SFrame support on @code{backtrace} and @code{_dl_find_object}.
> +
> +Default is to disable SFrame support.
> @end table
>
> To build the library and related programs, type @code{make}. This will
> diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure
> index 26a0989a33..f364e65fe7 100755
> --- a/sysdeps/aarch64/configure
> +++ b/sysdeps/aarch64/configure
> @@ -194,3 +194,5 @@ if test $build_mathvec = no; then
> printf "%s\n" "$as_me: WARNING: mathvec is disabled, this results in incomplete ABI." >&2;}
> fi
>
> +libc_cv_support_sframe=yes
> +
> diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac
> index 22fca8b565..a9a1b747f1 100644
> --- a/sysdeps/aarch64/configure.ac
> +++ b/sysdeps/aarch64/configure.ac
> @@ -31,3 +31,5 @@ fi
> if test $build_mathvec = no; then
> AC_MSG_WARN([mathvec is disabled, this results in incomplete ABI.])
> fi
> +
> +libc_cv_support_sframe=yes
> diff --git a/sysdeps/generic/Makefile b/sysdeps/generic/Makefile
> index c48e713eb3..1be63b74ce 100644
> --- a/sysdeps/generic/Makefile
> +++ b/sysdeps/generic/Makefile
> @@ -21,7 +21,9 @@ CFLAGS-wordcopy.c += -Wno-uninitialized
> endif
>
> ifeq ($(subdir),elf)
> +ifeq ($(enable-gsframe),yes)
> sysdep_routines += sframe-read sframe
> +endif
> ifeq (yes:yes,$(build-shared):$(unwind-find-fde))
> # This is needed to support g++ v2 and v3.
> sysdep_routines += framestate unwind-pe
> diff --git a/sysdeps/pthread/Makefile b/sysdeps/pthread/Makefile
> index de146dddeb..7572f62cc0 100644
> --- a/sysdeps/pthread/Makefile
> +++ b/sysdeps/pthread/Makefile
> @@ -62,7 +62,6 @@ tests += \
> tst-abstime \
> tst-atfork1 \
> tst-attr1 \
> - tst-backtrace1 \
> tst-bad-schedattr \
> tst-barrier1 \
> tst-barrier2 \
> diff --git a/sysdeps/x86_64/configure b/sysdeps/x86_64/configure
> index bbf520bfc9..32324f62da 100644
> --- a/sysdeps/x86_64/configure
> +++ b/sysdeps/x86_64/configure
> @@ -289,6 +289,8 @@ fi
> config_vars="$config_vars
> have-x86-apx = $libc_cv_x86_have_apx"
>
> +libc_cv_support_sframe=yes
> +
> test -n "$critic_missing" && as_fn_error $? "
> *** $critic_missing" "$LINENO" 5
>
> diff --git a/sysdeps/x86_64/configure.ac b/sysdeps/x86_64/configure.ac
> index 4a3f7f4541..a00958e219 100644
> --- a/sysdeps/x86_64/configure.ac
> +++ b/sysdeps/x86_64/configure.ac
> @@ -104,5 +104,7 @@ if test $libc_cv_x86_have_apx = yes; then
> fi
> LIBC_CONFIG_VAR([have-x86-apx], [$libc_cv_x86_have_apx])
>
> +libc_cv_support_sframe=yes
> +
> test -n "$critic_missing" && AC_MSG_ERROR([
> *** $critic_missing])
More information about the Libc-alpha
mailing list