aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-22 20:47:10 -0400
committerFeoramund <161657516+Feoramund@users.noreply.github.com>2025-05-22 21:39:35 -0400
commit6c5b96948e827a0b22435c1bb367414c8a187666 (patch)
tree9fed9910602913dede14be482a9c340fd9fe2b4e /src/llvm_backend.cpp
parent82c9681e2805e58309a057c00d176a34ae74721e (diff)
Enable all sanitizers on FreeBSD
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index f0bbe5473..90e7b2793 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -3425,36 +3425,48 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
if (build_context.sanitizer_flags & SanitizerFlag_Address) {
- if (build_context.metrics.os == TargetOs_windows) {
+ switch (build_context.metrics.os) {
+ case TargetOs_windows: {
auto paths = array_make<String>(heap_allocator(), 0, 1);
String path = concatenate_strings(permanent_allocator(), build_context.ODIN_ROOT, str_lit("\\bin\\llvm\\windows\\clang_rt.asan-x86_64.lib"));
array_add(&paths, path);
Entity *lib = alloc_entity_library_name(nullptr, make_token_ident("asan_lib"), nullptr, slice_from_array(paths), str_lit("asan_lib"));
array_add(&gen->foreign_libraries, lib);
- } else if (build_context.metrics.os == TargetOs_darwin || build_context.metrics.os == TargetOs_linux) {
+ } break;
+ case TargetOs_darwin:
+ case TargetOs_linux:
+ case TargetOs_freebsd:
if (!build_context.extra_linker_flags.text) {
build_context.extra_linker_flags = str_lit("-fsanitize=address");
} else {
build_context.extra_linker_flags = concatenate_strings(permanent_allocator(), build_context.extra_linker_flags, str_lit(" -fsanitize=address"));
}
+ break;
}
}
if (build_context.sanitizer_flags & SanitizerFlag_Memory) {
- if (build_context.metrics.os == TargetOs_darwin || build_context.metrics.os == TargetOs_linux) {
+ switch (build_context.metrics.os) {
+ case TargetOs_linux:
+ case TargetOs_freebsd:
if (!build_context.extra_linker_flags.text) {
build_context.extra_linker_flags = str_lit("-fsanitize=memory");
} else {
build_context.extra_linker_flags = concatenate_strings(permanent_allocator(), build_context.extra_linker_flags, str_lit(" -fsanitize=memory"));
}
+ break;
}
}
if (build_context.sanitizer_flags & SanitizerFlag_Thread) {
- if (build_context.metrics.os == TargetOs_darwin || build_context.metrics.os == TargetOs_linux) {
+ switch (build_context.metrics.os) {
+ case TargetOs_darwin:
+ case TargetOs_linux:
+ case TargetOs_freebsd:
if (!build_context.extra_linker_flags.text) {
build_context.extra_linker_flags = str_lit("-fsanitize=thread");
} else {
build_context.extra_linker_flags = concatenate_strings(permanent_allocator(), build_context.extra_linker_flags, str_lit(" -fsanitize=thread"));
}
+ break;
}
}