mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2025-12-20 04:40:04 +01:00
build: fix build with address sanitizer
Every program run during the build which loads a NM library must preload libasan.so if the address sanitizer is enabled. Add a macro to set the needed environment variables and use it when performing the shared object link tests.
This commit is contained in:
parent
fb40060ac1
commit
b1bf2671b2
2 changed files with 12 additions and 9 deletions
|
|
@ -1,5 +1,7 @@
|
|||
include $(GLIB_MAKEFILE)
|
||||
|
||||
include $(top_srcdir)/nm.mk
|
||||
|
||||
@GNOME_CODE_COVERAGE_RULES@
|
||||
|
||||
SUBDIRS = . tests
|
||||
|
|
@ -222,10 +224,7 @@ nm-setting-docs-overrides.xml: generate-plugin-docs.pl $(docs_sources)
|
|||
nm-property-docs.xml: generate-setting-docs.py $(docs_sources) | NM-1.0.gir NM-1.0.typelib libnm.la
|
||||
export GI_TYPELIB_PATH=$(abs_builddir)$${GI_TYPELIB_PATH:+:$$GI_TYPELIB_PATH}; \
|
||||
export LD_LIBRARY_PATH=$(abs_builddir)/.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}; \
|
||||
if echo $(CFLAGS) | grep -e -fsanitize=address; then \
|
||||
export LD_PRELOAD="$${LD_PRELOAD} $$(ldd $(abs_builddir)/.libs/libnm.so | grep libasan\.so\.. -o | head -n 1)"; \
|
||||
fi; \
|
||||
[ -n "$(SANITIZER_ENV)" ] && export $(SANITIZER_ENV) ; \
|
||||
$(call set_sanitizer_env,$(abs_builddir)/.libs/libnm.so); \
|
||||
$(srcdir)/generate-setting-docs.py \
|
||||
--gir $(builddir)/NM-1.0.gir \
|
||||
--output $@
|
||||
|
|
@ -233,10 +232,7 @@ nm-property-docs.xml: generate-setting-docs.py $(docs_sources) | NM-1.0.gir NM-1
|
|||
nm-setting-docs.xml: generate-setting-docs.py $(docs_sources) nm-setting-docs-overrides.xml | NM-1.0.gir NM-1.0.typelib libnm.la
|
||||
export GI_TYPELIB_PATH=$(abs_builddir)$${GI_TYPELIB_PATH:+:$$GI_TYPELIB_PATH}; \
|
||||
export LD_LIBRARY_PATH=$(abs_builddir)/.libs$${LD_LIBRARY_PATH:+:$$LD_LIBRARY_PATH}; \
|
||||
if echo $(CFLAGS) | grep -e -fsanitize=address; then \
|
||||
export LD_PRELOAD="$${LD_PRELOAD} $$(ldd $(abs_builddir)/.libs/libnm.so | grep libasan\.so\.. -o | head -n 1)"; \
|
||||
fi; \
|
||||
[ -n "$(SANITIZER_ENV)" ] && export $(SANITIZER_ENV) ; \
|
||||
$(call set_sanitizer_env,$(abs_builddir)/.libs/libnm.so); \
|
||||
$(srcdir)/generate-setting-docs.py \
|
||||
--gir $(builddir)/NM-1.0.gir \
|
||||
--overrides $(builddir)/nm-setting-docs-overrides.xml \
|
||||
|
|
|
|||
9
nm.mk
9
nm.mk
|
|
@ -1,4 +1,11 @@
|
|||
# NetworkManager Makefile helpers
|
||||
|
||||
set_sanitizer_env = \
|
||||
[ -n "$(SANITIZER_ENV)" ] && export $(SANITIZER_ENV) ; \
|
||||
if [ -n "$(1)" ] && echo $(CFLAGS) | grep -e -fsanitize=address ; then \
|
||||
export LD_PRELOAD="$${LD_PRELOAD}:$$(ldd $(1) | grep libasan\.so\.. -o | head -n 1)"; \
|
||||
fi
|
||||
|
||||
check_so_symbols = \
|
||||
LD_BIND_NOW=1 LD_PRELOAD=$(1) $(top_builddir)/src/NetworkManager --version >/dev/null
|
||||
$(call set_sanitizer_env,$(1)); \
|
||||
LD_BIND_NOW=1 LD_PRELOAD=$${LD_PRELOAD}:$(1) $(top_builddir)/src/NetworkManager --version >/dev/null
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue