Charles
45487891f1
Also remove static library when cleaning
2025-09-25 15:24:40 -04:00
Charles
51e8ffe080
Add an option to build a static library
2025-09-25 15:12:11 -04:00
Daniel Micay
3c274731ba
Revert "use safe_flag for -fstack-clash-protection"
...
This reverts commit 4171bd164e
.
2023-11-14 16:19:33 -05:00
Daniel Micay
4171bd164e
use safe_flag for -fstack-clash-protection
2023-11-08 14:21:04 -05:00
Daniel Micay
2d302f7d85
enable -Wundef
2023-06-10 14:58:33 -04:00
Daniel Micay
8f3281ed6a
enable strict prototypes warning
2023-06-10 14:18:27 -04:00
Christian Göttsche
af866a7faa
support versioned Clang
...
make CC=clang-14
clang-14 -std=c17 -O3 -flto -fPIC -fvisibility=hidden -fno-plt -fstack-clash-protection -fstack-protector-strong -pipe -Wall -Wcast-qual -Wextra -Wfloat-equal -Wformat=2 -Winit-self -Wmissing-format-attribute -Wmissing-noreturn -Wmissing-prototypes -Wnull-dereference -Wpointer-arith -Wshadow -Wstrict-prototypes -Wundef -Wunused -Wwrite-strings -Wcast-align=strict -Wcast-qual -Wwrite-strings -Werror -march=native -Wmissing-prototypes -D_GNU_SOURCE -I include -DCONFIG_SEAL_METADATA=false -DZERO_ON_FREE=true -DWRITE_AFTER_FREE_CHECK=true -DSLOT_RANDOMIZE=true -DSLAB_CANARY=true -DSLAB_QUARANTINE_RANDOM_LENGTH=1 -DSLAB_QUARANTINE_QUEUE_LENGTH=1 -DCONFIG_EXTENDED_SIZE_CLASSES=true -DCONFIG_LARGE_SIZE_CLASSES=true -DGUARD_SLABS_INTERVAL=1 -DGUARD_SIZE_DIVISOR=2 -DREGION_QUARANTINE_RANDOM_LENGTH=256 -DREGION_QUARANTINE_QUEUE_LENGTH=1024 -DREGION_QUARANTINE_SKIP_THRESHOLD=33554432 -DFREE_SLABS_QUARANTINE_RANDOM_LENGTH=32 -DCONFIG_CLASS_REGION_SIZE=34359738368 -DN_ARENA=4 -DCONFIG_STATS=false -c -o out/chacha.o chacha.c
error: unknown warning option '-Wcast-align=strict'; did you mean '-Wcast-align'? [-Werror,-Wunknown-warning-option]
make: *** [Makefile:114: out/chacha.o] Error 1
2023-06-10 14:18:27 -04:00
Daniel Micay
6038030d0b
no need to check for -fstack-clash-protection
...
This is supported by the compiler versions listed as minimum
requirements in the README.
2023-02-17 13:07:26 -05:00
Daniel Micay
4d23fa37ad
enable Intel CET support
2023-02-17 13:07:26 -05:00
Daniel Micay
cd9b875297
reorganize compiler switches
2023-02-17 13:07:24 -05:00
Daniel Micay
8f38bbdee6
add configuration for self-init
...
This needs to be disabled for compatibility with the exploit protection
compatibility mode on GrapheneOS. hardened_malloc shouldn't be trying to
initialize itself when exploit protection compatibility mode is enabled.
This has to be handled in our Bionic integration instead.
2022-09-14 03:41:31 -04:00
jvoisin
04a86566c3
Don't depend on gcc_s
2022-01-28 14:59:58 -05:00
jvoisin
3fa30842ed
Use $(MAKE) instead of make in Makefiles
...
This will pass the correct flags to the make
invocations.
2022-01-17 16:21:00 -05:00
Daniel Micay
e814cf4f5c
enable linking optimization for GNU linker
2022-01-16 12:18:00 -05:00
Daniel Micay
705211ef49
define UBSan flags for SHARED_FLAGS to reuse it
2022-01-16 11:50:55 -05:00
Daniel Micay
189d3362d5
enable sized deallocation ABI for consistency
2022-01-16 11:49:51 -05:00
Daniel Micay
17891d743e
switch from c11 to c17 standard
2022-01-12 10:20:47 -05:00
Daniel Micay
b3372e1576
add configuration template system
2022-01-10 04:47:01 -05:00
Daniel Micay
3696f071a4
use SLAB_CANARY for conditional checks
2022-01-03 02:17:04 -05:00
jvoisin
3878f4a5f4
Don't ignore the return value of the testsuite
2022-01-02 00:55:21 -05:00
Daniel Micay
75e26afdb6
remove legacy safe_flag check for -fno-plt
...
This is supported by the minimum versions of the dependencies.
2021-12-30 19:17:33 -05:00
jvoisin
06192ae499
make clean
is now thorough
2021-12-26 16:28:03 -05:00
Daniel Micay
4ccd6f16df
always enable C++17
...
The safe_flag check doesn't work properly for C++ flags with Clang so
this wasn't getting enabled despite the conditional compilation being
removed from the code, leading to breaking Clang builds.
2021-12-26 16:26:38 -05:00
Daniel Micay
3b72a4f810
set C / C++ standard parameter for clang-tidy
2021-09-30 11:05:47 -04:00
Daniel Micay
db21ecd529
use longer default region quarantine random array
2021-03-18 06:27:46 -04:00
Daniel Micay
b9ebf47c7c
explicitly use python3 to run tests
2020-09-19 09:40:56 -04:00
Daniel Micay
1cba254452
move external API to include directory
2020-09-14 05:52:53 -04:00
Daniel Micay
cf55ac0f6d
disable annoying Clang warning from avoiding ifdef
2020-04-30 18:14:40 -04:00
rwarr627
ec6854c71b
added test rule
2020-04-11 15:08:30 -04:00
Daniel Micay
74eb614f16
inherit base CXXFLAGS from the environment too
2019-09-26 14:50:58 -04:00
Daniel Micay
5b3d59ec7d
Makefile: split long line for SHARED_FLAGS
2019-08-18 08:41:12 -04:00
Daniel Micay
58b56f10ea
avoid -shared-libgcc due to old Clang versions
2019-08-18 04:53:51 -04:00
Daniel Micay
abece7656b
add enabled-by-default option to use -Werror
2019-08-18 02:28:23 -04:00
Daniel Micay
c70745ab15
Makefile: add check target depending on tidy
2019-08-18 02:20:06 -04:00
Daniel Micay
8133444f43
move clang-tidy configuration to .clang-tidy
2019-08-18 02:12:18 -04:00
Daniel Micay
8f9f2521a0
disable sanitizer recovery in UBSan debug builds
...
This makes it harder to miss that an error occurred and avoids spamming
output. There should never be a single error, so it doesn't make sense
to gather as many errors as possible when a single error is already a
serious issue that would need to be fixed.
2019-08-18 02:00:13 -04:00
Daniel Micay
d8ebdea05f
handle CONFIG_SEAL_METADATA option like the others
2019-08-18 01:56:20 -04:00
Daniel Micay
8d2df1deb8
use CC as CXX to make sure LTO is compatible
2019-08-18 01:28:59 -04:00
Daniel Micay
1bc201c4c1
use -Wcast-align if -Wcast-align=strict is missing
2019-08-18 01:15:54 -04:00
Daniel Micay
cc8c4459e1
make safe_flag treat unknown warnings as missing
2019-08-18 01:15:54 -04:00
Patrick Schleizer
75e86914aa
respect existing CFLAGS, CPPFLAGS and LDFLAGS
2019-07-29 13:52:55 -04:00
Daniel Micay
90d12fb340
override local default to -fstack-protector-strong
...
This is a no-op on a toolchain compiled with the basic mitigations
enabled by default, so this is generally a no-op anywhere this project
is likely to be deployed. SSP has a very low performance cost so there's
little reason to avoid it, even though it also has zero value for this
code in practice. It would be great if one of the more modern approaches
was widely adopted, but unfortunately SSP is as good as it gets for
portable options. It doesn't provide any protection against external
writes to the stack data which is all that's really needed here.
ShadowCallStack is a great option for arm64, but it's substantially more
difficult to protect return addresses well on x86_64 due to the design of
the ISA and ABI.
2019-07-19 11:53:55 -04:00
Daniel Micay
77743e5a36
use -fstack-clash-protection for completeness
...
This is a no-op for the current code and will likely remain that way so
there's no benefit but also no performance cost.
2019-07-19 11:18:49 -04:00
Daniel Micay
bb65d088dc
drop default class region size to 32GiB
2019-06-19 01:00:22 -04:00
Daniel Micay
5449f4a94e
use safe_flag for -fno-plt
...
This isn't supported by the ancient Clang release in Debian Stable.
2019-06-06 07:33:39 -04:00
Daniel Micay
6c31f6710a
support extended range of small size classes
2019-04-10 08:31:51 -04:00
Daniel Micay
1b34fd4a69
enable 4 arenas by default
2019-04-10 08:12:59 -04:00
Daniel Micay
cef7368b3c
disable unusable readability-magic-numbers lint
...
This wouldn't be worth using even if it had a whole bunch of heuristics
like ignoring expressions in static_assert, ignoring repeated patterns
like assigning different things to sequential array indexes, etc.
2019-04-09 00:58:06 -04:00
Daniel Micay
295bfbde94
disable bugprone-too-small-loop-variable lint
...
This has too many false positives since it doesn't permit comparisons
against constants where the compiler can verify it doesn't overflow.
2019-04-09 00:55:16 -04:00
Daniel Micay
ef90f404a6
add sanity check for stats option
2019-04-07 09:06:03 -04:00