diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2011-01-13 16:21:55 -0500 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-01-13 16:21:55 -0500 |
commit | 68dc949774cb651d53541df4abdc60327f7e096b (patch) | |
tree | a1385c2904cb736cca63ce8de24bdaf345b4a0bc | |
parent | 8cf8ce1702c354a8266e3cfa6ab54c2467d1873f (diff) | |
download | glibc-68dc949774cb651d53541df4abdc60327f7e096b.tar.gz glibc-68dc949774cb651d53541df4abdc60327f7e096b.tar.xz glibc-68dc949774cb651d53541df4abdc60327f7e096b.zip |
Fix check-execstack test
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | elf/Makefile | 18 | ||||
-rw-r--r-- | elf/check-execstack.c | 20 |
3 files changed, 31 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog index 0c22abd775..9ca8b79b79 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-12-28 Andreas Schwab <schwab@linux-m68k.org> + + * elf/Makefile (check-execstack): Revert last change. Depend on + check-execstack.h. + (check-execstack.h): New target. + (generated): Add check-execstack.h. + * elf/check-execstack.c: Include "check-execstack.h". + (main): Revert last change. + (handle_file): Return zero if GNU_STACK is absent and + DEFAULT_STACK_PERMS doesn't include PF_X. + 2011-01-13 Ulrich Drepper <drepper@gmail.com> * sysdeps/posix/spawni.c (__spawni): Don't fail if close file action diff --git a/elf/Makefile b/elf/Makefile index bba6493084..da9af8be44 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -898,15 +898,17 @@ check-textrel-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE $(objpfx)check-textrel: check-textrel.c $(native-compile) -check-execstack-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -std=gnu99 -# Perform the same operation as $(native-compile) but add the sysdeps -# directories as header search locations. -$(objpfx)check-execstack: check-execstack.c +check-execstack-CFLAGS = -O -Wall -D_XOPEN_SOURCE=600 -D_BSD_SOURCE -std=gnu99 \ + $(objpfx:%/=-I%) +$(objpfx)check-execstack: check-execstack.c $(objpfx)check-execstack.h + $(native-compile) +$(objpfx)check-execstack.h: $(first-word $(wildcard $(sysdirs:%=%/stackinfo.h))) $(make-target-directory) - $(patsubst %/,cd % &&,$(objpfx)) \ - $(BUILD_CC) $($(basename $(<F))-CFLAGS) $(ALL_BUILD_CFLAGS) \ - $(addprefix -I$(shell pwd)/,$(sysdirs)) -I$(shell pwd) \ - $(firstword $(filter /%,$< $(shell pwd)/$<)) -o $(@F) + { echo '#include <stackinfo.h>'; echo '@@@DEFAULT_STACK_PERMS@@@'; } | \ + $(CC) $(CFLAGS) $(CPPFLAGS) -E -x c-header - | \ + sed -n -e 's/^@@@\(.*\)@@@/#define DEFAULT_STACK_PERMS \1/p' > $@T + mv -f $@T $@ +generated += check-execstack.h check-localplt-CFLAGS = -O -Wall -D_GNU_SOURCE -std=gnu99 $(objpfx)check-localplt: check-localplt.c diff --git a/elf/check-execstack.c b/elf/check-execstack.c index 64353751e9..96e481208d 100644 --- a/elf/check-execstack.c +++ b/elf/check-execstack.c @@ -26,7 +26,7 @@ #include <stdlib.h> #include <string.h> #include <unistd.h> -#include <stackinfo.h> +#include "check-execstack.h" #ifdef BITS @@ -92,8 +92,13 @@ AB(handle_file) (const char *fname, int fd) return 0; } - printf ("%s: no PT_GNU_STACK entry\n", fname); - return 1; + if (DEFAULT_STACK_PERMS & PF_X) + { + printf ("%s: no PT_GNU_STACK entry\n", fname); + return 1; + } + + return 0; } # undef BITS @@ -151,13 +156,8 @@ main (int argc, char *argv[]) int cnt; int result = 0; - /* We can return successfully, i.e., not fail, if PF_X isn't present. If it - * is present then check for the GNU_STACK header. */ - if (DEFAULT_STACK_PERMS & PF_X) - { - for (cnt = 1; cnt < argc; ++cnt) - result |= handle_file (argv[cnt]); - } + for (cnt = 1; cnt < argc; ++cnt) + result |= handle_file (argv[cnt]); return result; } #endif |