1 # Copyright (C) 1991-2023 Free Software Foundation, Inc.
2 # This file is part of the GNU C Library.
4 # The GNU C Library is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU Lesser General Public
6 # License as published by the Free Software Foundation; either
7 # version 2.1 of the License, or (at your option) any later version.
9 # The GNU C Library is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 # Lesser General Public License for more details.
14 # You should have received a copy of the GNU Lesser General Public
15 # License along with the GNU C Library; if not, see
16 # <https://www.gnu.org/licenses/>.
19 # Makefile for stdlib routines
28 bits
/indirect-return.h \
29 bits
/monetary-ldbl.h \
32 bits
/stdlib-bsearch.h \
38 bits
/types
/error_t.h \
68 cxa_thread_atexit_impl \
147 # Exclude fortified routines from being built with _FORTIFY_SOURCE
148 routines_no_fortify
+= \
152 # routines_no_fortify
160 # These routines will be omitted from the libc shared object.
161 # Instead the static object files will be included in a special archive
162 # linked against when the shared library will be used.
163 static-only-routines
= \
166 # static-only-routines
178 test-at_quick_exit-race \
180 test-atexit-recursive \
184 test-cxa_atexit-race \
185 test-cxa_atexit-race2 \
186 test-dlclose-exit-race \
194 tst-arc4random-fork \
195 tst-arc4random-stats \
196 tst-arc4random-thread \
211 tst-makecontext-align \
223 tst-realpath-toolong \
238 tst-strtod-nan-locale \
239 tst-strtod-nan-sign \
240 tst-strtod-overflow \
242 tst-strtod-underflow \
247 tst-strtol-binary-c11 \
248 tst-strtol-binary-c2x \
249 tst-strtol-binary-gnu11 \
250 tst-strtol-binary-gnu2x \
254 tst-thread-quick_exit \
268 tst-tls-atexit-nodelete \
279 ifeq ($(build-hardcoded-path-in-tests
),yes
)
285 LDLIBS-test-atexit-race
= $(shared-thread-library
)
286 LDLIBS-test-at_quick_exit-race
= $(shared-thread-library
)
287 LDLIBS-test-cxa_atexit-race
= $(shared-thread-library
)
288 LDLIBS-test-cxa_atexit-race2
= $(shared-thread-library
)
289 LDLIBS-test-on_exit-race
= $(shared-thread-library
)
290 LDLIBS-tst-canon-bz26341
= $(shared-thread-library
)
291 LDLIBS-tst-arc4random-fork
= $(shared-thread-library
)
292 LDLIBS-tst-arc4random-thread
= $(shared-thread-library
)
293 LDLIBS-tst-system
= $(shared-thread-library
)
295 LDLIBS-test-dlclose-exit-race
= $(shared-thread-library
)
296 LDFLAGS-test-dlclose-exit-race
= $(LDFLAGS-rdynamic
)
297 LDLIBS-test-dlclose-exit-race-helper.so
= $(libsupport
) $(shared-thread-library
)
299 CFLAGS-tst-abs.c
+= -fno-builtin
300 CFLAGS-tst-labs.c
+= -fno-builtin
301 CFLAGS-tst-llabs.c
+= -fno-builtin
303 ifeq ($(have-cxx-thread_local
),yes
)
304 CFLAGS-tst-quick_exit.o
= -std
=c
++11
305 LDLIBS-tst-quick_exit
= -lstdc
++
306 CFLAGS-tst-thread-quick_exit.o
= -std
=c
++11
307 LDLIBS-tst-thread-quick_exit
= -lstdc
++
308 $(objpfx
)tst-thread-quick_exit
: $(shared-thread-library
)
310 tests-unsupported
+= \
312 tst-thread-quick_exit \
317 test-dlclose-exit-race-helper \
320 extra-test-objs
+= $(addsuffix .os
, $(modules-names
))
322 ifeq ($(build-shared
),yes
)
328 # Several mpn functions from GNU MP are used by the strtod function.
355 $(strip $(routines
) $(mpn-routines
)) \
381 CFLAGS-bsearch.c
+= $(uses-callbacks
)
382 CFLAGS-qsort.c
+= $(uses-callbacks
)
383 CFLAGS-system.c
+= -fexceptions
384 CFLAGS-system.os
= -fomit-frame-pointer
385 CFLAGS-fmtmsg.c
+= -fexceptions
387 CFLAGS-strfmon.c
+= $(libio-mtsafe
)
388 CFLAGS-strfmon_l.c
+= $(libio-mtsafe
)
390 # The strfrom class of functions call __printf_fp in order to convert the
391 # floating-point value to characters. This requires the value of IO_MTSAFE_IO.
392 CFLAGS-strfromd.c
+= $(libio-mtsafe
)
393 CFLAGS-strfromf.c
+= $(libio-mtsafe
)
394 CFLAGS-strfroml.c
+= $(libio-mtsafe
)
396 CFLAGS-strtol.c
+= $(config-cflags-wno-ignored-attributes
)
397 CFLAGS-strtoul.c
+= $(config-cflags-wno-ignored-attributes
)
398 CFLAGS-strtoll.c
+= $(config-cflags-wno-ignored-attributes
)
399 CFLAGS-strtoull.c
+= $(config-cflags-wno-ignored-attributes
)
400 CFLAGS-strtof.c
+= $(config-cflags-wno-ignored-attributes
)
401 CFLAGS-strtof_l.c
+= $(config-cflags-wno-ignored-attributes
)
402 CFLAGS-strtod.c
+= $(config-cflags-wno-ignored-attributes
)
403 CFLAGS-strtod_l.c
+= $(config-cflags-wno-ignored-attributes
)
404 CFLAGS-strtold.c
+= $(config-cflags-wno-ignored-attributes
)
405 CFLAGS-strtold_l.c
+= $(config-cflags-wno-ignored-attributes
)
406 CFLAGS-secure-getenv.c
+= $(config-cflags-wno-ignored-attributes
)
408 CFLAGS-tst-bsearch.c
+= $(stack-align-test-flags
)
409 CFLAGS-tst-qsort.c
+= $(stack-align-test-flags
)
410 CFLAGS-tst-makecontext.c
+= -funwind-tables
411 CFLAGS-tst-makecontext2.c
+= $(stack-align-test-flags
)
413 CFLAGS-testmb.c
+= -U_FORTIFY_SOURCE
-D_FORTIFY_SOURCE
=2 -Wall
-Werror
415 # Some versions of GCC supported for building glibc do not support -std=c2x
416 # or -std=gnu2x, so the tests for those versions use -std=c11 and -std=gnu11
417 # and then _ISOC2X_SOURCE is defined in the test as needed.
418 CFLAGS-tst-strtol-binary-c11.c
+= -std
=c11
419 CFLAGS-tst-strtol-binary-c2x.c
+= -std
=c11
420 CFLAGS-tst-strtol-binary-gnu11.c
+= -std
=gnu11
421 CFLAGS-tst-strtol-binary-gnu2x.c
+= -std
=gnu11
424 # Run a test on the header files we use.
425 tests-special
+= $(objpfx
)isomac.out
427 ifeq ($(run-built-tests
),yes
)
428 tests-special
+= $(objpfx
)tst-fmtmsg.out
433 ifeq ($(run-built-tests
),yes
)
445 include ..
/gen-locales.mk
447 $(objpfx
)bug-strtod2.out
: $(gen-locales
)
448 $(objpfx
)testmb2.out
: $(gen-locales
)
449 $(objpfx
)tst-strtod.out
: $(gen-locales
)
450 $(objpfx
)tst-strtod1i.out
: $(gen-locales
)
451 $(objpfx
)tst-strtod3.out
: $(gen-locales
)
452 $(objpfx
)tst-strtod4.out
: $(gen-locales
)
453 $(objpfx
)tst-strtod5.out
: $(gen-locales
)
454 $(objpfx
)tst-strtod5i.out
: $(gen-locales
)
455 $(objpfx
)tst-strtol-locale.out
: $(gen-locales
)
456 $(objpfx
)tst-strtod-nan-locale.out
: $(gen-locales
)
457 $(objpfx
)tst-strfmon_l.out
: $(gen-locales
)
458 $(objpfx
)tst-strfrom.out
: $(gen-locales
)
459 $(objpfx
)tst-strfrom-locale.out
: $(gen-locales
)
460 $(objpfx
)test-dlclose-exit-race.out
: $(objpfx
)test-dlclose-exit-race-helper.so
463 # Testdir has to be named stdlib and needs to be writable
464 test-canon-ARGS
= --test-dir
=${common-objpfx
}stdlib
466 bug-fmtmsg1-ENV
= SEV_LEVEL
=foo
,11,newsev
468 $(objpfx
)isomac.out
: $(objpfx
)isomac
469 $(dir $<)$(notdir $<) '$(CC)' \
470 '-I../include $(+sysdep-includes) $(sysincludes) -I..' > $@
; \
474 $(objpfx
)isomac
: isomac.c
477 $(objpfx
)tst-fmtmsg.out
: tst-fmtmsg.sh
$(objpfx
)tst-fmtmsg
478 $(SHELL
) $< $(common-objpfx
) '$(test-program-prefix-before-env)' \
479 '$(run-program-env)' '$(test-program-prefix-after-env)' \
480 $(common-objpfx
)stdlib
/; \
483 $(objpfx
)tst-putenv
: $(objpfx
)tst-putenvmod.so
484 LDFLAGS-tst-putenv
= -Wl
,--no-as-needed
486 $(objpfx
)tst-putenvmod.so
: $(objpfx
)tst-putenvmod.os
$(link-libc-deps
)
488 libof-tst-putenvmod
= extramodules
490 $(objpfx
)bug-getcontext
: $(libm
)
491 $(objpfx
)bug-strtod2
: $(libm
)
492 $(objpfx
)tst-strtod-round
: $(libm
)
493 $(objpfx
)tst-tininess
: $(libm
)
494 $(objpfx
)tst-strtod-underflow
: $(libm
)
495 $(objpfx
)tst-strtod6
: $(libm
)
496 $(objpfx
)tst-strtod-nan-locale
: $(libm
)
497 $(objpfx
)tst-strtod-nan-sign
: $(libm
)
499 tst-tls-atexit-lib.so-no-z-defs
= yes
500 test-dlclose-exit-race-helper.so-no-z-defs
= yes
502 $(objpfx
)tst-tls-atexit
: $(shared-thread-library
)
503 $(objpfx
)tst-tls-atexit.out
: $(objpfx
)tst-tls-atexit-lib.so
505 $(objpfx
)tst-tls-atexit-nodelete
: $(shared-thread-library
)
506 $(objpfx
)tst-tls-atexit-nodelete.out
: $(objpfx
)tst-tls-atexit-lib.so
508 $(objpfx
)tst-setcontext3.out
: tst-setcontext3.sh
$(objpfx
)tst-setcontext3
509 $(SHELL
) $< $(common-objpfx
) '$(test-program-prefix-before-env)' \
510 '$(run-program-env)' '$(test-program-prefix-after-env)' \
511 $(common-objpfx
)stdlib
/; \