@ -1,4 +1,5 @@
# Copyright (C) 1998-2022 Free Software Foundation, Inc.
# Copyright The GNU Toolchain Authors.
# This file is part of the GNU C Library.
# The GNU C Library is free software; you can redistribute it and/or
@ -110,32 +111,60 @@ CFLAGS-tst-longjmp_chk3.c += -fexceptions -fasynchronous-unwind-tables
CPPFLAGS-tst-longjmp_chk3.c += -D_FORTIFY_SOURCE= 1
CPPFLAGS-tst-realpath-chk.c += -D_FORTIFY_SOURCE= 2
# _FORTIFY_SOURCE tests.
# Auto-generate tests for _FORTIFY_SOURCE for different levels, compilers and
# preprocessor conditions based on tst-fortify.c.
#
# To add a new test condition, define a cflags-$(cond) make variable to set
# CFLAGS for the file.
tests-all-chk = tst-fortify
tests-c-chk =
tests-cc-chk =
CFLAGS-tst-fortify.c += -Wno-format -Wno-deprecated-declarations -Wno-error
# No additional flags for the default tests.
d e f i n e c f l a g s - d e f a u l t
e n d e f
d e f i n e c f l a g s - l f s
CFLAGS-tst-fortify-$(1)-lfs-$(2).$(1) += -D_FILE_OFFSET_BITS= 64
e n d e f
# We know these tests have problems with format strings, this is what
# we are testing. Disable that warning. They are also testing
# deprecated functions (notably gets) so disable that warning as well.
# And they also generate warnings from warning attributes, which
# cannot be disabled via pragmas, so require -Wno-error to be used.
CFLAGS-tst-chk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk7.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-chk8.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk1.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk2.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk3.c += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk4.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk5.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
CFLAGS-tst-lfschk6.cc += -Wno-format -Wno-deprecated-declarations -Wno-error
LDLIBS-tst-chk4 = -lstdc++
LDLIBS-tst-chk5 = -lstdc++
LDLIBS-tst-chk6 = -lstdc++
LDLIBS-tst-chk8 = -lstdc++
LDLIBS-tst-lfschk4 = -lstdc++
LDLIBS-tst-lfschk5 = -lstdc++
LDLIBS-tst-lfschk6 = -lstdc++
d e f i n e g e n - c h k - t e s t
tests-$(1)-chk += tst-fortify-$( 1) -$( 2) -$( 3)
CFLAGS-tst-fortify-$(1)-$(2)-$(3).$(1) += -D_FORTIFY_SOURCE= $( 3) -Wno-format \
-Wno-deprecated-declarations \
-Wno-error
$( eval $ ( call cflags -$ ( 2) ,$ ( 1) ,$ ( 3) ) )
$(objpfx)tst-fortify-$(1)-$(2)-$(3).$(1) : tst -fortify .c Makefile
( echo "/* Autogenerated from Makefile. */" ; \
echo "" ; \
echo "#include \"tst-fortify.c\"" ) > $$ @.tmp
mv $$ @.tmp $$ @
e n d e f
chk-extensions = c cc
chk-types = default lfs
chk-levels = 1 2 3
$( foreach e ,$ ( chk -extensions ) , \
$( foreach t,$( chk-types) , \
$( foreach l,$( chk-levels) , \
$( eval $( call gen-chk-test,$( e) ,$( t) ,$( l) ) ) ) ) )
tests-all-chk += $( tests-c-chk) $( tests-cc-chk)
d e f i n e l i n k - c c
LDLIBS-$(1) = -lstdc++
e n d e f
$( foreach t ,$ ( tests -cc -chk ) , $ ( eval $ ( call link -cc ,$ ( t ) ) ) )
# backtrace_symbols only works if we link with -rdynamic. backtrace
# requires unwind tables on most architectures.
@ -152,19 +181,25 @@ LDFLAGS-tst-backtrace6 = -rdynamic
CFLAGS-tst-ssp-1.c += -fstack-protector-all
tests = backtrace-tst tst-longjmp_chk tst-chk1 tst-chk2 tst-chk3 \
tst-lfschk1 tst-lfschk2 tst-lfschk3 test-strcpy_chk test-stpcpy_chk \
tst-chk4 tst-chk5 tst-chk6 tst-chk7 tst-chk8 tst-lfschk4 tst-lfschk5 \
tst-lfschk6 tst-longjmp_chk2 tst-backtrace2 tst-backtrace3 \
tst-backtrace4 tst-backtrace5 tst-backtrace6 tst-realpath-chk
tests = backtrace-tst \
tst-longjmp_chk \
test-strcpy_chk \
test-stpcpy_chk \
tst-longjmp_chk2 \
tst-backtrace2 \
tst-backtrace3 \
tst-backtrace4 \
tst-backtrace5 \
tst-backtrace6 \
tst-realpath-chk \
$( tests-all-chk)
i f e q ( $( have -ssp ) , y e s )
tests += tst-ssp-1
e n d i f
i f e q ( , $( CXX ) )
tests-unsupported = tst-chk4 tst-chk5 tst-chk6 tst-chk8 \
tst-lfschk4 tst-lfschk5 tst-lfschk6
tests-unsupported = $( tests-cc-chk)
e n d i f
extra-libs = libpcprofile
@ -185,20 +220,10 @@ ifeq ($(run-built-tests),yes)
LOCALES := de_DE.UTF-8
i n c l u d e . . / g e n - l o c a l e s . m k
$(objpfx)tst-chk1.out : $( gen -locales )
$(objpfx)tst-chk2.out : $( gen -locales )
$(objpfx)tst-chk3.out : $( gen -locales )
$(objpfx)tst-chk4.out : $( gen -locales )
$(objpfx)tst-chk5.out : $( gen -locales )
$(objpfx)tst-chk6.out : $( gen -locales )
$(objpfx)tst-chk7.out : $( gen -locales )
$(objpfx)tst-chk8.out : $( gen -locales )
$(objpfx)tst-lfschk1.out : $( gen -locales )
$(objpfx)tst-lfschk2.out : $( gen -locales )
$(objpfx)tst-lfschk3.out : $( gen -locales )
$(objpfx)tst-lfschk4.out : $( gen -locales )
$(objpfx)tst-lfschk5.out : $( gen -locales )
$(objpfx)tst-lfschk6.out : $( gen -locales )
d e f i n e c h k - g e n - l o c a l e s
$(objpfx)$(1).out : $( gen -locales )
e n d e f
$( foreach t , $ ( tests -all -chk ) , $ ( eval $ ( call chk -gen -locales ,$ ( t ) ) ) )
e n d i f
sLIBdir := $( shell echo $( slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,' )