1# Copyright (C) 1991-2022 Free Software Foundation, Inc. 2# This file is part of the GNU C Library. 3 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. 8 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. 13 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/>. 17 18# 19# Sub-makefile for misc portion of the library. 20# 21 22subdir := misc 23 24include ../Makeconfig 25 26headers := sys/uio.h bits/uio-ext.h bits/uio_lim.h \ 27 sys/ioctl.h bits/ioctls.h bits/ioctl-types.h \ 28 sys/ptrace.h sys/file.h sys/dir.h sys/cdefs.h \ 29 ar.h a.out.h libgen.h stab.h bits/stab.def sgtty.h \ 30 ttyent.h paths.h sys/reboot.h \ 31 sys/mman.h sys/param.h bits/param.h \ 32 fstab.h mntent.h search.h err.h error.h \ 33 sys/queue.h sysexits.h syscall.h sys/syscall.h sys/swap.h \ 34 sys/select.h sys/sysinfo.h \ 35 regexp.h bits/select.h bits/mman.h sys/xattr.h \ 36 syslog.h sys/syslog.h \ 37 bits/syslog.h bits/syslog-ldbl.h bits/syslog-path.h bits/error.h \ 38 bits/select2.h bits/hwcap.h sys/auxv.h \ 39 sys/sysmacros.h bits/sysmacros.h bits/types/struct_iovec.h \ 40 bits/err-ldbl.h bits/error-ldbl.h \ 41 sys/single_threaded.h 42 43routines := brk sbrk sstk ioctl \ 44 readv writev preadv preadv64 pwritev pwritev64 \ 45 preadv2 preadv64v2 pwritev2 pwritev64v2 \ 46 setreuid setregid \ 47 seteuid setegid \ 48 getpagesize \ 49 getdtsz \ 50 gethostname sethostname getdomain setdomain \ 51 select pselect \ 52 acct chroot fsync sync fdatasync syncfs reboot \ 53 gethostid sethostid \ 54 revoke vhangup \ 55 swapon swapoff mktemp mkstemp mkstemp64 mkdtemp \ 56 mkostemp mkostemp64 mkstemps mkstemps64 mkostemps mkostemps64 \ 57 ualarm usleep \ 58 gtty stty \ 59 ptrace \ 60 fstab mntent mntent_r \ 61 utimes lutimes futimes futimesat \ 62 truncate ftruncate truncate64 ftruncate64 \ 63 chflags fchflags \ 64 insremque getttyent getusershell getpass ttyslot \ 65 syslog syscall daemon \ 66 mmap mmap64 munmap mprotect msync madvise mincore remap_file_pages\ 67 mlock munlock mlockall munlockall \ 68 efgcvt efgcvt_r qefgcvt qefgcvt_r \ 69 hsearch hsearch_r tsearch lsearch \ 70 err error ustat \ 71 getsysstats dirname regexp \ 72 getloadavg getclktck \ 73 fgetxattr flistxattr fremovexattr fsetxattr getxattr \ 74 listxattr lgetxattr llistxattr lremovexattr lsetxattr \ 75 removexattr setxattr getauxval ifunc-impl-list makedev \ 76 allocate_once fd_to_filename single_threaded unwind-link \ 77 atomic_wide_counter 78 79generated += tst-error1.mtrace tst-error1-mem.out \ 80 tst-allocate_once.mtrace tst-allocate_once-mem.out 81 82aux := init-misc 83install-lib := libg.a 84gpl2lgpl := error.c error.h 85 86tests := tst-dirname tst-tsearch tst-fdset tst-mntent tst-hsearch \ 87 tst-error1 tst-pselect tst-insremque tst-mntent2 bug-hsearch1 \ 88 tst-mntent-blank-corrupt tst-mntent-blank-passno bug18240 \ 89 tst-preadvwritev tst-preadvwritev64 tst-makedev tst-empty \ 90 tst-preadvwritev2 tst-preadvwritev64v2 tst-warn-wide \ 91 tst-ldbl-warn tst-ldbl-error tst-dbl-efgcvt tst-ldbl-efgcvt \ 92 tst-mntent-autofs tst-syscalls tst-mntent-escape tst-select \ 93 tst-ioctl 94 95tests-time64 := \ 96 tst-select-time64 \ 97 tst-pselect-time64 \ 98 tst-ioctl-time64 \ 99 # tests-time64 100 101# Tests which need libdl. 102ifeq (yes,$(build-shared)) 103tests += tst-gethostid 104endif 105 106tests-internal := tst-atomic tst-atomic-long tst-allocate_once 107tests-static := tst-empty 108 109# Test for the internal, non-exported __fd_to_filename function. 110tests-internal += tst-fd_to_filename 111tests-static += tst-fd_to_filename 112 113ifeq ($(run-built-tests),yes) 114tests-special += $(objpfx)tst-error1-mem.out \ 115 $(objpfx)tst-allocate_once-mem.out 116endif 117 118tests-container := tst-syslog 119 120CFLAGS-select.c += -fexceptions -fasynchronous-unwind-tables 121CFLAGS-tsearch.c += $(uses-callbacks) 122CFLAGS-lsearch.c += $(uses-callbacks) 123CFLAGS-pselect.c += -fexceptions 124CFLAGS-readv.c += -fexceptions -fasynchronous-unwind-tables 125CFLAGS-writev.c += -fexceptions -fasynchronous-unwind-tables 126CFLAGS-preadv.c += -fexceptions -fasynchronous-unwind-tables 127CFLAGS-preadv64.c += -fexceptions -fasynchronous-unwind-tables 128CFLAGS-pwritev.c += -fexceptions -fasynchronous-unwind-tables 129CFLAGS-pwritev64.c += -fexceptions -fasynchronous-unwind-tables 130CFLAGS-preadv2.c += -fexceptions -fasynchronous-unwind-tables 131CFLAGS-preadv64v2.c += -fexceptions -fasynchronous-unwind-tables 132CFLAGS-pwritev2.c += -fexceptions -fasynchronous-unwind-tables 133CFLAGS-pwritev64v2.c += -fexceptions -fasynchronous-unwind-tables 134CFLAGS-usleep.c += -fexceptions 135CFLAGS-syslog.c += -fexceptions 136CFLAGS-error.c += -fexceptions 137CFLAGS-getpass.c += -fexceptions 138CFLAGS-mkstemp.c += -fexceptions 139CFLAGS-mkstemp64.c += -fexceptions 140CFLAGS-getsysstats.c += -fexceptions 141CFLAGS-getusershell.c += -fexceptions 142CFLAGS-err.c += -fexceptions 143CFLAGS-tst-tsearch.c += $(stack-align-test-flags) 144CFLAGS-msync.c += -fexceptions -fasynchronous-unwind-tables 145CFLAGS-fdatasync.c += -fexceptions -fasynchronous-unwind-tables 146CFLAGS-fsync.c += -fexceptions -fasynchronous-unwind-tables 147 148# Called during static library initialization, so turn stack-protection 149# off for non-shared builds. 150CFLAGS-sbrk.o = $(no-stack-protector) 151CFLAGS-sbrk.op = $(no-stack-protector) 152CFLAGS-brk.o = $(no-stack-protector) 153CFLAGS-brk.op = $(no-stack-protector) 154CFLAGS-mmap.o = $(no-stack-protector) 155CFLAGS-mmap.op = $(no-stack-protector) 156CFLAGS-mmap64.o = $(no-stack-protector) 157CFLAGS-mmap64.op = $(no-stack-protector) 158 159include ../Rules 160 161$(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib) 162 163$(objpfx)tst-tsearch: $(libm) 164 165tst-error1-ENV = MALLOC_TRACE=$(objpfx)tst-error1.mtrace \ 166 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so 167tst-error1-ARGS = $(objpfx)tst-error1.out 168$(objpfx)tst-error1-mem.out: $(objpfx)tst-error1.out 169 $(common-objpfx)malloc/mtrace $(objpfx)tst-error1.mtrace > $@; \ 170 $(evaluate-test) 171 172tst-allocate_once-ENV = MALLOC_TRACE=$(objpfx)tst-allocate_once.mtrace \ 173 LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so 174$(objpfx)tst-allocate_once-mem.out: $(objpfx)tst-allocate_once.out 175 $(common-objpfx)malloc/mtrace $(objpfx)tst-allocate_once.mtrace > $@; \ 176 $(evaluate-test) 177 178$(objpfx)tst-select: $(librt) 179$(objpfx)tst-select-time64: $(librt) 180$(objpfx)tst-pselect: $(librt) 181$(objpfx)tst-pselect-time64: $(librt) 182