| # Copyright (C) 1998-2001,2004-2008, 2009 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, write to the Free |
| # Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| # 02111-1307 USA. |
| |
| # |
| # Sub-makefile for debug portion of the library. |
| # |
| subdir := debug |
| |
| headers := execinfo.h |
| distribute = sigcontextinfo.h register-dump.h frame.h |
| |
| routines = backtrace backtracesyms backtracesymsfd noophooks \ |
| memcpy_chk memmove_chk mempcpy_chk memset_chk stpcpy_chk \ |
| strcat_chk strcpy_chk strncat_chk strncpy_chk stpncpy_chk \ |
| sprintf_chk vsprintf_chk snprintf_chk vsnprintf_chk \ |
| printf_chk fprintf_chk vprintf_chk vfprintf_chk \ |
| gets_chk chk_fail readonly-area fgets_chk fgets_u_chk \ |
| read_chk pread_chk pread64_chk recv_chk recvfrom_chk \ |
| readlink_chk readlinkat_chk getwd_chk getcwd_chk \ |
| realpath_chk ptsname_r_chk fread_chk fread_u_chk \ |
| wctomb_chk wcscpy_chk wmemcpy_chk wmemmove_chk wmempcpy_chk \ |
| wcpcpy_chk wcsncpy_chk wcscat_chk wcsncat_chk wmemset_chk \ |
| wcpncpy_chk \ |
| swprintf_chk vswprintf_chk wprintf_chk fwprintf_chk \ |
| vwprintf_chk vfwprintf_chk fgetws_chk fgetws_u_chk \ |
| confstr_chk getgroups_chk ttyname_r_chk getlogin_r_chk \ |
| gethostname_chk getdomainname_chk wcrtomb_chk mbsnrtowcs_chk \ |
| wcsnrtombs_chk mbsrtowcs_chk wcsrtombs_chk mbstowcs_chk \ |
| wcstombs_chk asprintf_chk vasprintf_chk dprintf_chk \ |
| vdprintf_chk obprintf_chk \ |
| longjmp_chk ____longjmp_chk \ |
| stack_chk_fail fortify_fail \ |
| $(static-only-routines) |
| static-only-routines := warning-nop stack_chk_fail_local |
| |
| CFLAGS-backtrace.c = -fno-omit-frame-pointer |
| CFLAGS-sprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-snprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-vsprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-vsnprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-asprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-vasprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-obprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-dprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-vdprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-printf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-vprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-vfprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-gets_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fgets_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fgets_u_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fread_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fread_u_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-swprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-vswprintf_chk.c = -D_IO_MTSAFE_IO |
| CFLAGS-wprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fwprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-vwprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-vfwprintf_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fgetws_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-fgetws_u_chk.c = -D_IO_MTSAFE_IO $(exceptions) |
| CFLAGS-read_chk.c = -fexceptions -fasynchronous-unwind-tables |
| CFLAGS-pread_chk.c = -fexceptions -fasynchronous-unwind-tables |
| CFLAGS-pread64_chk.c = -fexceptions -fasynchronous-unwind-tables |
| CFLAGS-recv_chk.c = -fexceptions -fasynchronous-unwind-tables |
| CFLAGS-recvfrom_chk.c = -fexceptions -fasynchronous-unwind-tables |
| CFLAGS-tst-longjmp_chk.c = -fexceptions -fasynchronous-unwind-tables \ |
| -D_FORTIFY_SOURCE=1 |
| CFLAGS-tst-longjmp_chk2.c = -fexceptions -fasynchronous-unwind-tables \ |
| -D_FORTIFY_SOURCE=1 |
| |
| # We know these tests have problems with format strings, this is what |
| # we are testing. Disable that warning. |
| CFLAGS-tst-chk1.c = -Wno-format |
| CFLAGS-tst-chk2.c = -Wno-format |
| CFLAGS-tst-chk3.c = -Wno-format |
| CFLAGS-tst-chk4.cc = -Wno-format |
| CFLAGS-tst-chk5.cc = -Wno-format |
| CFLAGS-tst-chk6.cc = -Wno-format |
| CFLAGS-tst-lfschk1.c = -Wno-format |
| CFLAGS-tst-lfschk2.c = -Wno-format |
| CFLAGS-tst-lfschk3.c = -Wno-format |
| CFLAGS-tst-lfschk4.cc = -Wno-format |
| CFLAGS-tst-lfschk5.cc = -Wno-format |
| CFLAGS-tst-lfschk6.cc = -Wno-format |
| tst-chk1-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-chk2-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-chk3-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-chk4-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-chk5-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-chk6-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk1-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk2-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk3-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk4-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk5-ENV = LOCPATH=$(common-objpfx)localedata |
| tst-lfschk6-ENV = LOCPATH=$(common-objpfx)localedata |
| LDFLAGS-tst-chk4 = -lstdc++ |
| LDFLAGS-tst-chk5 = -lstdc++ |
| LDFLAGS-tst-chk6 = -lstdc++ |
| LDFLAGS-tst-lfschk4 = -lstdc++ |
| LDFLAGS-tst-lfschk5 = -lstdc++ |
| LDFLAGS-tst-lfschk6 = -lstdc++ |
| |
| 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-lfschk4 tst-lfschk5 tst-lfschk6 \ |
| tst-longjmp_chk2 |
| |
| extra-libs = libSegFault libpcprofile |
| extra-libs-others = $(extra-libs) |
| |
| libSegFault-routines = segfault |
| libSegFault-inhibit-o = $(filter-out .os,$(object-suffixes)) |
| |
| libpcprofile-routines = pcprofile |
| libpcprofile-inhibit-o = $(filter-out .os,$(object-suffixes)) |
| |
| others = pcprofiledump |
| install-bin = pcprofiledump |
| install-bin-script = xtrace |
| |
| include ../Makeconfig |
| |
| distribute += catchsegv.sh xtrace.sh |
| ifeq ($(elf),yes) |
| ifeq ($(build-shared),yes) |
| install-bin-script += catchsegv |
| endif |
| endif |
| generated = catchsegv xtrace |
| |
| include ../Rules |
| |
| sLIBdir := $(shell echo $(slibdir) | sed 's,lib\(\|64\)$$,\\\\$$LIB,') |
| |
| $(objpfx)catchsegv: catchsegv.sh $(common-objpfx)soversions.mk \ |
| $(common-objpfx)config.make |
| slibpfx=`echo $(slibdir)|sed 's/lib\(64\|\)$$/\\\\\\\\$$LIB/'`; \ |
| sed -e 's|@VERSION@|$(version)|' -e "s|@SLIB@|$$slibpfx|" $< > $@.new |
| chmod 555 $@.new |
| mv -f $@.new $@ |
| |
| $(objpfx)pcprofiledump: $(objpfx)pcprofiledump.o |
| |
| $(objpfx)xtrace: xtrace.sh |
| rm -f $@.new |
| sed -e 's|@BASH@|$(BASH)|' -e 's|@VERSION@|$(version)|' \ |
| -e 's|@SLIBDIR@|$(sLIBdir)|' -e 's|@BINDIR@|$(bindir)|' $^ > $@.new \ |
| && rm -f $@ && mv $@.new $@ && chmod +x $@ |
| |
| # Depend on libc.so so a DT_NEEDED is generated in the shared objects. |
| # This ensures they will load libc.so for needed symbols if loaded by |
| # a statically-linked program that hasn't already loaded it. |
| $(objpfx)libSegFault.so: $(common-objpfx)libc.so \ |
| $(common-objpfx)libc_nonshared.a \ |
| $(elf-objpfx)$(rtld-installed-name) |
| $(objpfx)libpcprofile.so: $(common-objpfx)libc.so \ |
| $(common-objpfx)libc_nonshared.a \ |
| $(elf-objpfx)$(rtld-installed-name) |