Skip to content

Commit a73ca29

Browse files
authored
[compiler-rt] Add weak defs for .*contiguous_container.* functions (llvm#120376)
Fix llvm#120278
1 parent ebb5f1a commit a73ca29

File tree

3 files changed

+61
-7
lines changed

3 files changed

+61
-7
lines changed

compiler-rt/lib/sanitizer_common/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
set(SANITIZER_SOURCES_NOTERMINATION
55
sanitizer_allocator.cpp
66
sanitizer_common.cpp
7+
sanitizer_contiguous_container.cpp
78
sanitizer_deadlock_detector1.cpp
89
sanitizer_deadlock_detector2.cpp
910
sanitizer_errno.cpp

compiler-rt/lib/sanitizer_common/sanitizer_common_interface.inc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@
88
// Sanitizer Common interface list.
99
//===----------------------------------------------------------------------===//
1010
INTERFACE_FUNCTION(__sanitizer_acquire_crash_state)
11-
INTERFACE_FUNCTION(__sanitizer_annotate_contiguous_container)
12-
INTERFACE_FUNCTION(__sanitizer_annotate_double_ended_contiguous_container)
13-
INTERFACE_FUNCTION(__sanitizer_copy_contiguous_container_annotations)
14-
INTERFACE_FUNCTION(__sanitizer_contiguous_container_find_bad_address)
15-
INTERFACE_FUNCTION(
11+
INTERFACE_WEAK_FUNCTION(__sanitizer_annotate_contiguous_container)
12+
INTERFACE_WEAK_FUNCTION(__sanitizer_annotate_double_ended_contiguous_container)
13+
INTERFACE_WEAK_FUNCTION(__sanitizer_copy_contiguous_container_annotations)
14+
INTERFACE_WEAK_FUNCTION(__sanitizer_contiguous_container_find_bad_address)
15+
INTERFACE_WEAK_FUNCTION(
1616
__sanitizer_double_ended_contiguous_container_find_bad_address)
1717
INTERFACE_FUNCTION(__sanitizer_set_death_callback)
1818
INTERFACE_FUNCTION(__sanitizer_set_report_path)
1919
INTERFACE_FUNCTION(__sanitizer_set_report_fd)
2020
INTERFACE_FUNCTION(__sanitizer_get_report_path)
21-
INTERFACE_FUNCTION(__sanitizer_verify_contiguous_container)
22-
INTERFACE_FUNCTION(__sanitizer_verify_double_ended_contiguous_container)
21+
INTERFACE_WEAK_FUNCTION(__sanitizer_verify_contiguous_container)
22+
INTERFACE_WEAK_FUNCTION(__sanitizer_verify_double_ended_contiguous_container)
2323
INTERFACE_WEAK_FUNCTION(__sanitizer_on_print)
2424
INTERFACE_WEAK_FUNCTION(__sanitizer_report_error_summary)
2525
INTERFACE_WEAK_FUNCTION(__sanitizer_sandbox_on_notify)
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
//===-- sanitizer_contiguous_container.cpp
2+
//-----------------------------------------------===//
3+
//
4+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5+
// See https://llvm.org/LICENSE.txt for license information.
6+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7+
//
8+
//===---------------------------------------------------------------------===//
9+
//
10+
// This file provides weak defs of __sanitizer*contiguous_container* functions
11+
// whose strong implementations can be defined in particular runtime libs
12+
// of sanitizers
13+
//
14+
//===---------------------------------------------------------------------===//
15+
16+
#include "sanitizer_internal_defs.h"
17+
18+
SANITIZER_INTERFACE_WEAK_DEF(void, __sanitizer_annotate_contiguous_container,
19+
const void *, const void *, const void *,
20+
const void *) {}
21+
22+
SANITIZER_INTERFACE_WEAK_DEF(
23+
void, __sanitizer_annotate_double_ended_contiguous_container, const void *,
24+
const void *, const void *, const void *, const void *, const void *) {}
25+
26+
SANITIZER_INTERFACE_WEAK_DEF(void,
27+
__sanitizer_copy_contiguous_container_annotations,
28+
const void *, const void *, const void *,
29+
const void *) {}
30+
31+
SANITIZER_INTERFACE_WEAK_DEF(int, __sanitizer_verify_contiguous_container,
32+
const void *, const void *, const void *) {
33+
return 0;
34+
}
35+
36+
SANITIZER_INTERFACE_WEAK_DEF(
37+
int, __sanitizer_verify_double_ended_contiguous_container, const void *,
38+
const void *, const void *, const void *) {
39+
return 0;
40+
}
41+
42+
SANITIZER_INTERFACE_WEAK_DEF(const void *,
43+
__sanitizer_contiguous_container_find_bad_address,
44+
const void *, const void *, const void *) {
45+
return nullptr;
46+
}
47+
48+
SANITIZER_INTERFACE_WEAK_DEF(
49+
const void *,
50+
__sanitizer_double_ended_contiguous_container_find_bad_address,
51+
const void *, const void *, const void *, const void *) {
52+
return nullptr;
53+
}

0 commit comments

Comments
 (0)