diff options
author | Nick Alcock <nick.alcock@oracle.com> | 2016-12-26 10:08:45 +0100 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2016-12-26 10:08:45 +0100 |
commit | 10c85e76c09716e744b4a41006718400b1eb2e84 (patch) | |
tree | db306524b5147cd0ec6a67dd95aeb079d99112cc /misc | |
parent | de6591238b478bc86b8cf5af01a484114e399213 (diff) | |
download | glibc-10c85e76c09716e744b4a41006718400b1eb2e84.zip glibc-10c85e76c09716e744b4a41006718400b1eb2e84.tar.gz glibc-10c85e76c09716e744b4a41006718400b1eb2e84.tar.bz2 |
Disable stack protector in early static initialization [BZ #7065]
The startup code in csu/, and the brk and sbrk functions are
needed very early in initialization of a statically-linked program,
before the stack guard is initialized; TLS initialization also uses
memcpy, which cannot overrun its own stack. Mark all of these as
-fno-stack-protector.
We also finally introduce @libc_cv_ssp@ and @no_stack_protector@, both
substituted by the configury changes made earlier, to detect the case
when -fno-stack-protector is supported by the compiler, and
unconditionally pass it in when this is the case, whether or not
--enable-stack-protector is passed to configure. (This means that
it'll even work when the compiler's been hacked to pass
-fstack-protector by default, unless the hackage is so broken that
it does so in a way that is impossible to override.)
Diffstat (limited to 'misc')
-rw-r--r-- | misc/Makefile | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/misc/Makefile b/misc/Makefile index d241dae..35dba34 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -108,6 +108,13 @@ CFLAGS-getusershell.c = -fexceptions CFLAGS-err.c = -fexceptions CFLAGS-tst-tsearch.c = $(stack-align-test-flags) +# Called during static library initialization, so turn stack-protection +# off for non-shared builds. +CFLAGS-sbrk.o = $(no-stack-protector) +CFLAGS-sbrk.op = $(no-stack-protector) +CFLAGS-brk.o = $(no-stack-protector) +CFLAGS-brk.op = $(no-stack-protector) + include ../Rules $(objpfx)libg.a: $(dep-dummy-lib); $(make-dummy-lib) |