mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-24 12:25:35 +08:00
464d189b96
mbstows is defined if dst is NULL and is defined to special cased if dst is NULL so the fortify objsize check if incorrect in that case. Tested on x86-64 linux. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
468 lines
9.8 KiB
Makefile
468 lines
9.8 KiB
Makefile
# Copyright (C) 1991-2022 Free Software Foundation, Inc.
|
|
# This file is part of the GNU C Library.
|
|
|
|
# The GNU C Library is free software; you can redistribute it and/or
|
|
# modify it under the terms of the GNU Lesser General Public
|
|
# License as published by the Free Software Foundation; either
|
|
# version 2.1 of the License, or (at your option) any later version.
|
|
|
|
# The GNU C Library is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# Lesser General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU Lesser General Public
|
|
# License along with the GNU C Library; if not, see
|
|
# <https://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
# Makefile for stdlib routines
|
|
#
|
|
subdir := stdlib
|
|
|
|
include ../Makeconfig
|
|
|
|
headers := \
|
|
alloca.h \
|
|
bits/errno.h \
|
|
bits/indirect-return.h \
|
|
bits/monetary-ldbl.h \
|
|
bits/stdint-intn.h \
|
|
bits/stdint-uintn.h \
|
|
bits/stdlib-bsearch.h \
|
|
bits/stdlib-float.h \
|
|
bits/stdlib.h \
|
|
bits/stdlib-ldbl.h \
|
|
bits/time64.h \
|
|
bits/timesize.h \
|
|
bits/types/error_t.h \
|
|
bits/wordsize.h \
|
|
errno.h \
|
|
fmtmsg.h \
|
|
inttypes.h \
|
|
monetary.h \
|
|
stdint.h \
|
|
stdlib.h \
|
|
sys/errno.h \
|
|
sys/random.h \
|
|
sys/ucontext.h \
|
|
ucontext.h \
|
|
# headers
|
|
|
|
routines := \
|
|
a64l \
|
|
abort \
|
|
abs \
|
|
at_quick_exit \
|
|
atof \
|
|
atoi \
|
|
atol\
|
|
atoll \
|
|
bsearch \
|
|
canonicalize \
|
|
cxa_at_quick_exit \
|
|
cxa_atexit \
|
|
cxa_finalize \
|
|
cxa_thread_atexit_impl \
|
|
div \
|
|
drand48 \
|
|
drand48-iter \
|
|
drand48_r \
|
|
erand48 \
|
|
erand48_r \
|
|
exit \
|
|
fmtmsg \
|
|
getcontext \
|
|
getentropy \
|
|
getenv \
|
|
getrandom \
|
|
getsubopt \
|
|
jrand48 \
|
|
jrand48_r \
|
|
l64a \
|
|
labs \
|
|
lcong48 \
|
|
lcong48_r \
|
|
ldiv \
|
|
llabs \
|
|
lldiv \
|
|
lrand48 \
|
|
lrand48_r \
|
|
makecontext \
|
|
mblen \
|
|
mbstowcs \
|
|
mbtowc \
|
|
mrand48 \
|
|
mrand48_r \
|
|
msort \
|
|
nrand48 \
|
|
nrand48_r \
|
|
old_atexit \
|
|
on_exit atexit \
|
|
putenv \
|
|
qsort \
|
|
quick_exit \
|
|
rand \
|
|
rand_r \
|
|
random \
|
|
random_r \
|
|
rpmatch \
|
|
secure-getenv \
|
|
seed48 \
|
|
seed48_r \
|
|
setcontext \
|
|
setenv \
|
|
srand48 \
|
|
srand48_r \
|
|
strfmon \
|
|
strfmon_l \
|
|
strfromd \
|
|
strfromf \
|
|
strfroml \
|
|
strtod \
|
|
strtod_l \
|
|
strtod_nan \
|
|
strtof \
|
|
strtof_l \
|
|
strtof_nan \
|
|
strtol \
|
|
strtol_l \
|
|
strtold \
|
|
strtold_l \
|
|
strtold_nan \
|
|
strtoll \
|
|
strtoll_l \
|
|
strtoul \
|
|
strtoul_l \
|
|
strtoull \
|
|
strtoull_l \
|
|
swapcontext \
|
|
system \
|
|
wcstombs \
|
|
wctomb \
|
|
xpg_basename \
|
|
# routines
|
|
|
|
aux = \
|
|
grouping \
|
|
groupingwc \
|
|
tens_in_limb \
|
|
# aux
|
|
|
|
# These routines will be omitted from the libc shared object.
|
|
# Instead the static object files will be included in a special archive
|
|
# linked against when the shared library will be used.
|
|
static-only-routines = \
|
|
atexit \
|
|
at_quick_exit \
|
|
# static-only-routines
|
|
|
|
test-srcs := \
|
|
tst-fmtmsg \
|
|
#test-srcs
|
|
|
|
tests := \
|
|
bug-fmtmsg1 \
|
|
bug-getcontext \
|
|
bug-strtod \
|
|
bug-strtod2 \
|
|
test-a64l \
|
|
test-at_quick_exit-race \
|
|
test-atexit-race \
|
|
test-bz22786 \
|
|
test-canon \
|
|
test-canon2 \
|
|
test-cxa_atexit-race \
|
|
test-cxa_atexit-race2 \
|
|
test-dlclose-exit-race \
|
|
test-on_exit-race \
|
|
testdiv \
|
|
testmb \
|
|
testmb2 \
|
|
testrand \
|
|
testsort \
|
|
tst-at_quick_exit \
|
|
tst-atexit \
|
|
tst-atof1 \
|
|
tst-atof2 \
|
|
tst-bsearch \
|
|
tst-bz20544 \
|
|
tst-canon-bz26341 \
|
|
tst-cxa_atexit \
|
|
tst-environ \
|
|
tst-getrandom \
|
|
tst-limits \
|
|
tst-makecontext \
|
|
tst-makecontext-align \
|
|
tst-makecontext2 \
|
|
tst-makecontext3 \
|
|
tst-on_exit \
|
|
tst-qsort \
|
|
tst-qsort2 \
|
|
tst-quick_exit \
|
|
tst-rand48 \
|
|
tst-rand48-2 \
|
|
tst-random \
|
|
tst-random2 \
|
|
tst-realpath \
|
|
tst-realpath-toolong \
|
|
tst-secure-getenv \
|
|
tst-setcontext \
|
|
tst-setcontext2 \
|
|
tst-setcontext3 \
|
|
tst-setcontext4 \
|
|
tst-setcontext5 \
|
|
tst-setcontext6 \
|
|
tst-setcontext7 \
|
|
tst-setcontext8 \
|
|
tst-setcontext9 \
|
|
tst-strfmon_l \
|
|
tst-strfrom \
|
|
tst-strfrom-locale \
|
|
tst-strtod \
|
|
tst-strtod-nan-locale \
|
|
tst-strtod-nan-sign \
|
|
tst-strtod-overflow \
|
|
tst-strtod-round \
|
|
tst-strtod-underflow \
|
|
tst-strtod2 \
|
|
tst-strtod5 \
|
|
tst-strtod6 \
|
|
tst-strtol \
|
|
tst-strtol-locale \
|
|
tst-strtoll \
|
|
tst-swapcontext1 \
|
|
tst-thread-quick_exit \
|
|
tst-tininess \
|
|
tst-unsetenv1 \
|
|
tst-width \
|
|
tst-width-stdint \
|
|
tst-xpg-basename \
|
|
# tests
|
|
|
|
tests-internal := \
|
|
tst-strtod1i \
|
|
tst-strtod3 \
|
|
tst-strtod4 \
|
|
tst-strtod5i \
|
|
tst-tls-atexit \
|
|
tst-tls-atexit-nodelete \
|
|
# tests-internal
|
|
|
|
tests-static := \
|
|
tst-secure-getenv \
|
|
# tests-static
|
|
|
|
tests-container := \
|
|
tst-system \
|
|
#tests-container
|
|
|
|
ifeq ($(build-hardcoded-path-in-tests),yes)
|
|
tests += \
|
|
tst-empty-env \
|
|
# tests
|
|
endif
|
|
|
|
LDLIBS-test-atexit-race = $(shared-thread-library)
|
|
LDLIBS-test-at_quick_exit-race = $(shared-thread-library)
|
|
LDLIBS-test-cxa_atexit-race = $(shared-thread-library)
|
|
LDLIBS-test-cxa_atexit-race2 = $(shared-thread-library)
|
|
LDLIBS-test-on_exit-race = $(shared-thread-library)
|
|
LDLIBS-tst-canon-bz26341 = $(shared-thread-library)
|
|
|
|
LDLIBS-test-dlclose-exit-race = $(shared-thread-library)
|
|
LDFLAGS-test-dlclose-exit-race = $(LDFLAGS-rdynamic)
|
|
LDLIBS-test-dlclose-exit-race-helper.so = $(libsupport) $(shared-thread-library)
|
|
|
|
ifeq ($(have-cxx-thread_local),yes)
|
|
CFLAGS-tst-quick_exit.o = -std=c++11
|
|
LDLIBS-tst-quick_exit = -lstdc++
|
|
CFLAGS-tst-thread-quick_exit.o = -std=c++11
|
|
LDLIBS-tst-thread-quick_exit = -lstdc++
|
|
$(objpfx)tst-thread-quick_exit: $(shared-thread-library)
|
|
else
|
|
tests-unsupported += \
|
|
tst-quick_exit \
|
|
tst-thread-quick_exit \
|
|
# tests-unsupported
|
|
endif
|
|
|
|
modules-names = \
|
|
test-dlclose-exit-race-helper \
|
|
tst-tls-atexit-lib \
|
|
# modules-names
|
|
extra-test-objs += $(addsuffix .os, $(modules-names))
|
|
|
|
ifeq ($(build-shared),yes)
|
|
tests += \
|
|
tst-putenv \
|
|
# tests
|
|
endif
|
|
|
|
# Several mpn functions from GNU MP are used by the strtod function.
|
|
mpn-routines := \
|
|
add_n \
|
|
addmul_1 \
|
|
cmp \
|
|
divmod_1 \
|
|
divrem \
|
|
inlines \
|
|
lshift \
|
|
mod_1 \
|
|
mul \
|
|
mul_1 \
|
|
mul_n \
|
|
rshift \
|
|
sub_n \
|
|
submul_1 \
|
|
udiv_qrnnd \
|
|
# mpn-routines
|
|
mpn-headers = \
|
|
asm-syntax.h \
|
|
gmp-impl.h \
|
|
gmp-mparam.h \
|
|
gmp.h \
|
|
longlong.h \
|
|
# mpn-headers
|
|
|
|
routines := \
|
|
$(strip $(routines) $(mpn-routines)) \
|
|
dbl2mpn \
|
|
ldbl2mpn \
|
|
mpn2dbl \
|
|
mpn2flt \
|
|
mpn2ldbl \
|
|
# routines
|
|
aux += \
|
|
fpioconst \
|
|
mp_clz_tab \
|
|
# aux
|
|
|
|
tests-extras += \
|
|
tst-putenvmod \
|
|
# tests-extras
|
|
|
|
extra-test-objs += \
|
|
tst-putenvmod.os \
|
|
# extra-test-objs
|
|
|
|
generated += \
|
|
isomac \
|
|
isomac.out \
|
|
tst-putenvmod.so \
|
|
# generated
|
|
|
|
CFLAGS-bsearch.c += $(uses-callbacks)
|
|
CFLAGS-msort.c += $(uses-callbacks)
|
|
CFLAGS-qsort.c += $(uses-callbacks)
|
|
CFLAGS-system.c += -fexceptions
|
|
CFLAGS-system.os = -fomit-frame-pointer
|
|
CFLAGS-fmtmsg.c += -fexceptions
|
|
|
|
CFLAGS-strfmon.c += $(libio-mtsafe)
|
|
CFLAGS-strfmon_l.c += $(libio-mtsafe)
|
|
|
|
# The strfrom class of functions call __printf_fp in order to convert the
|
|
# floating-point value to characters. This requires the value of IO_MTSAFE_IO.
|
|
CFLAGS-strfromd.c += $(libio-mtsafe)
|
|
CFLAGS-strfromf.c += $(libio-mtsafe)
|
|
CFLAGS-strfroml.c += $(libio-mtsafe)
|
|
|
|
CFLAGS-tst-bsearch.c += $(stack-align-test-flags)
|
|
CFLAGS-tst-qsort.c += $(stack-align-test-flags)
|
|
CFLAGS-tst-makecontext.c += -funwind-tables
|
|
CFLAGS-tst-makecontext2.c += $(stack-align-test-flags)
|
|
|
|
CFLAGS-testmb.c += -D_FORTIFY_SOURCE=2 -Wall -Werror
|
|
|
|
|
|
# Run a test on the header files we use.
|
|
tests-special += $(objpfx)isomac.out
|
|
|
|
ifeq ($(run-built-tests),yes)
|
|
tests-special += $(objpfx)tst-fmtmsg.out
|
|
endif
|
|
|
|
include ../Rules
|
|
|
|
ifeq ($(run-built-tests),yes)
|
|
LOCALES := \
|
|
cs_CZ.UTF-8 \
|
|
de_DE.UTF-8 \
|
|
el_GR.UTF-8 \
|
|
en_US.ISO-8859-1 \
|
|
hi_IN.UTF-8 \
|
|
hr_HR.UTF-8 \
|
|
tg_TJ.UTF-8 \
|
|
tr_TR.ISO-8859-9 \
|
|
tr_TR.UTF-8 \
|
|
# LOCALES
|
|
include ../gen-locales.mk
|
|
|
|
$(objpfx)bug-strtod2.out: $(gen-locales)
|
|
$(objpfx)testmb2.out: $(gen-locales)
|
|
$(objpfx)tst-strtod.out: $(gen-locales)
|
|
$(objpfx)tst-strtod1i.out: $(gen-locales)
|
|
$(objpfx)tst-strtod3.out: $(gen-locales)
|
|
$(objpfx)tst-strtod4.out: $(gen-locales)
|
|
$(objpfx)tst-strtod5.out: $(gen-locales)
|
|
$(objpfx)tst-strtod5i.out: $(gen-locales)
|
|
$(objpfx)tst-strtol-locale.out: $(gen-locales)
|
|
$(objpfx)tst-strtod-nan-locale.out: $(gen-locales)
|
|
$(objpfx)tst-strfmon_l.out: $(gen-locales)
|
|
$(objpfx)tst-strfrom.out: $(gen-locales)
|
|
$(objpfx)tst-strfrom-locale.out: $(gen-locales)
|
|
$(objpfx)test-dlclose-exit-race.out: $(objpfx)test-dlclose-exit-race-helper.so
|
|
endif
|
|
|
|
# Testdir has to be named stdlib and needs to be writable
|
|
test-canon-ARGS = --test-dir=${common-objpfx}stdlib
|
|
|
|
bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev
|
|
|
|
$(objpfx)isomac.out: $(objpfx)isomac
|
|
$(dir $<)$(notdir $<) '$(CC)' \
|
|
'-I../include $(+sysdep-includes) $(sysincludes) -I..' > $@; \
|
|
$(evaluate-test)
|
|
|
|
isomac-CFLAGS = -O
|
|
$(objpfx)isomac: isomac.c
|
|
$(native-compile)
|
|
|
|
$(objpfx)tst-fmtmsg.out: tst-fmtmsg.sh $(objpfx)tst-fmtmsg
|
|
$(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
|
|
'$(run-program-env)' '$(test-program-prefix-after-env)' \
|
|
$(common-objpfx)stdlib/; \
|
|
$(evaluate-test)
|
|
|
|
$(objpfx)tst-putenv: $(objpfx)tst-putenvmod.so
|
|
LDFLAGS-tst-putenv = -Wl,--no-as-needed
|
|
|
|
$(objpfx)tst-putenvmod.so: $(objpfx)tst-putenvmod.os $(link-libc-deps)
|
|
$(build-module)
|
|
libof-tst-putenvmod = extramodules
|
|
|
|
$(objpfx)bug-getcontext: $(libm)
|
|
$(objpfx)bug-strtod2: $(libm)
|
|
$(objpfx)tst-strtod-round: $(libm)
|
|
$(objpfx)tst-tininess: $(libm)
|
|
$(objpfx)tst-strtod-underflow: $(libm)
|
|
$(objpfx)tst-strtod6: $(libm)
|
|
$(objpfx)tst-strtod-nan-locale: $(libm)
|
|
$(objpfx)tst-strtod-nan-sign: $(libm)
|
|
|
|
tst-tls-atexit-lib.so-no-z-defs = yes
|
|
test-dlclose-exit-race-helper.so-no-z-defs = yes
|
|
|
|
$(objpfx)tst-tls-atexit: $(shared-thread-library)
|
|
$(objpfx)tst-tls-atexit.out: $(objpfx)tst-tls-atexit-lib.so
|
|
|
|
$(objpfx)tst-tls-atexit-nodelete: $(shared-thread-library)
|
|
$(objpfx)tst-tls-atexit-nodelete.out: $(objpfx)tst-tls-atexit-lib.so
|
|
|
|
$(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3
|
|
$(SHELL) $< $(common-objpfx) '$(test-program-prefix-before-env)' \
|
|
'$(run-program-env)' '$(test-program-prefix-after-env)' \
|
|
$(common-objpfx)stdlib/; \
|
|
$(evaluate-test)
|