On Mon, May 03, 2021 at 12:01:42PM +0200, Tim Wiederhake wrote:
When enabling sanitizers, clang adds some function symbols when
instrumenting the code. The exact names of those functions are an
implementation detail and should therefore not be added to any
syms file. This patch prevents build failures due to those symbols
not present in the syms file when building with sanitizers enabled.
Signed-off-by: Tim Wiederhake <twiederh(a)redhat.com>
---
meson.build | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/meson.build b/meson.build
index bbdbe4afd8..56c1294e7f 100644
--- a/meson.build
+++ b/meson.build
@@ -497,6 +497,11 @@ libvirt_no_indirect = cc.get_supported_link_arguments([
'-Wl,--no-copy-dt-needed-entries',
])
+if get_option('b_sanitize') not in [ '', 'none' ]
+ # sanitizers may add additional symbols
+ libvirt_no_undefined = []
+endif
Same as in the previous patch no need to check for empty string.
Overwriting libvirt_no_undefined = [] at a different place then it is
defined looks wrong to me. How about this:
libvirt_no_undefined = []
if get_option('b_sanitize') == 'none':
libvirt_no_undefined = cc.get_supported_link_arguments([
'-Wl,-z,defs',
])
endif
This makes it cleaner IMHO as the complete logic is at a single place
and also we will save one check for supported link arguments if we now
that we don't want to use it.
Pavel
if host_machine.system() == 'windows'
version_script_flags = '-Wl,'
else
--
2.26.3