Move the __stack_chk_fail_local@FBSD_1.0 compat symbol definition into
the separate .o for libc_pic.a. This prevents rtld from making the symbol global. Putting the stack_protector_compat.c into the public domain acknowledged by kan. Reviewed by: kan MFC after: 2 weeks
This commit is contained in:
parent
f5a5c5653a
commit
da2a0df59c
@ -18,7 +18,7 @@
|
||||
.endif
|
||||
|
||||
# Sources common to both syscall interfaces:
|
||||
SRCS+= stack_protector.c __error.c
|
||||
SRCS+= stack_protector.c stack_protector_compat.c __error.c
|
||||
.if !defined(WITHOUT_SYSCALL_COMPAT)
|
||||
SRCS+= fcntl.c ftruncate.c lseek.c mmap.c pread.c pwrite.c truncate.c
|
||||
PSEUDO+= _fcntl.o
|
||||
|
@ -116,8 +116,6 @@ __chk_fail(void)
|
||||
__fail("buffer overflow detected; terminated");
|
||||
}
|
||||
|
||||
#ifdef PIC
|
||||
__sym_compat(__stack_chk_fail_local, __stack_chk_fail, FBSD_1.0);
|
||||
#else
|
||||
#ifndef PIC
|
||||
__weak_reference(__stack_chk_fail, __stack_chk_fail_local);
|
||||
#endif
|
||||
|
20
lib/libc/sys/stack_protector_compat.c
Normal file
20
lib/libc/sys/stack_protector_compat.c
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Written by Alexander Kabaev <kan@FreeBSD.org>
|
||||
* The file is in public domain.
|
||||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
void __stack_chk_fail(void);
|
||||
|
||||
#ifdef PIC
|
||||
void
|
||||
__stack_chk_fail_local_hidden(void)
|
||||
{
|
||||
|
||||
__stack_chk_fail();
|
||||
}
|
||||
|
||||
__sym_compat(__stack_chk_fail_local, __stack_chk_fail_local_hidden, FBSD_1.0);
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user