mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:07:45 +00:00
LibC: Properly implement stack protectors
The shared parts are now firmly compiled into LibC instead of being defined as a static library and then being copied over manually. The non-shared ("local") parts are kept as a static library that is linked into each binary on demand. This finally allows us to support linking with the -fstack-protector flag, which now replaces the `ssp` target being linked into each binary accidentally via CMake.
This commit is contained in:
parent
7834e26ddb
commit
678db534ff
7 changed files with 45 additions and 21 deletions
20
Userland/Libraries/LibC/ssp_nonshared.cpp
Normal file
20
Userland/Libraries/LibC/ssp_nonshared.cpp
Normal file
|
@ -0,0 +1,20 @@
|
|||
/*
|
||||
* Copyright (c) 2021, Brian Gianforcaro <bgianf@serenityos.org>
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*/
|
||||
|
||||
#include <sys/internals.h>
|
||||
|
||||
#if defined __SSP__ || defined __SSP_ALL__
|
||||
# error "file must not be compiled with stack protection enabled on it. Use -fno-stack-protector"
|
||||
#endif
|
||||
|
||||
extern "C" {
|
||||
|
||||
__attribute__((noreturn)) void __stack_chk_fail_local()
|
||||
{
|
||||
__stack_chk_fail();
|
||||
}
|
||||
|
||||
} // extern "C"
|
Loading…
Add table
Add a link
Reference in a new issue