GCC records full compiler command lines in DWARF producer strings by\ndefault. 
With CONFIG_KSTACK_ERASE, the stackleak plugin is currently\npassed using an 
absolute -fplugin path, which can leak host-specific\nbuild paths into debug 
artifacts.\n\nResolve the stackleak plugin directory relative to the current 
build\ndirectory and use that in the -fplugin option, falling back to 
the\nexisting absolute objtree path when needed.\n\nThis keeps plugin loading 
behavior unchanged while avoiding absolute\nworkspace paths in recorded 
compiler flags.

Signed-off-by: Jaihind Yadav <[email protected]>
---
 scripts/Makefile.kstack_erase | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/scripts/Makefile.kstack_erase b/scripts/Makefile.kstack_erase
index ee7e4ef7b8926..006d10f3b77a0 100644
--- a/scripts/Makefile.kstack_erase
+++ b/scripts/Makefile.kstack_erase
@@ -1,7 +1,10 @@
 # SPDX-License-Identifier: GPL-2.0
 
 ifdef CONFIG_GCC_PLUGIN_STACKLEAK
-kstack-erase-cflags-y += 
-fplugin=$(objtree)/scripts/gcc-plugins/stackleak_plugin.so
+stackleak-plugin-dir := $(or \
+       $(shell realpath -m --relative-to=$(CURDIR) 
$(objtree)/scripts/gcc-plugins 2>/dev/null), \
+       $(objtree)/scripts/gcc-plugins)
+kstack-erase-cflags-y += -fplugin=$(stackleak-plugin-dir)/stackleak_plugin.so
 kstack-erase-cflags-y += 
-fplugin-arg-stackleak_plugin-track-min-size=$(CONFIG_KSTACK_ERASE_TRACK_MIN_SIZE)
 kstack-erase-cflags-y += -fplugin-arg-stackleak_plugin-arch=$(SRCARCH)
 kstack-erase-cflags-$(CONFIG_GCC_PLUGIN_STACKLEAK_VERBOSE) += 
-fplugin-arg-stackleak_plugin-verbose
-- 
2.43.0


Reply via email to