Stack protector broken in gcc41?
Hasso Tepper
hasso at estpak.ee
Tue Apr 15 00:02:40 PDT 2008
Matthew Dillon wrote:
> :Even hello world fails to link:
> :
> :~$ gcc -fstack-protector-all -o hello-world hello-world.c
> :/tmp//cckehwVf.o: In function `main':
> :hello-world.c:(.text+0x12): undefined reference to `__stack_chk_guard'
> :hello-world.c:(.text+0x35): undefined reference to `__stack_chk_guard'
> :hello-world.c:(.text+0x3c): undefined reference to `__stack_chk_fail'
> :~$
> :
> :--
> :Hasso Tepper
>
> They must have changed the symbols. libc only has the
> __stack_smash_handler symbol (which is what the original stack
> protector code needed).
>
> It sounds like the new symbols and supporting code will have to be
> added to libc.
>
> FreeBSD seems to have an implementation, though they are using a
> sysctl to get the random seed. A little surgery to replace
> that with our /dev/urandom code and we'd be golden:
>
> leaf:/archive/FreeBSD-current/src/lib/libc/sys/stack_protector.c
Yeah, but should we take care of preserving symbols for old stuff as well?
We would break binaries compiled with gcc34 otherwise?
--
Hasso Tepper
More information about the Users
mailing list