On Friday 31 Jan 2020 at 13:15:08 (+0000), 'Matthias Maennich' via kernel-team wrote: > On Wed, Jan 29, 2020 at 06:15:41PM +0000, Quentin Perret wrote: > > diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh > > index a904bf1f5e67..8e1b7f70e800 100755 > > --- a/scripts/adjust_autoksyms.sh > > +++ b/scripts/adjust_autoksyms.sh > > @@ -48,6 +48,7 @@ cat > "$new_ksyms_file" << EOT > > EOT > > sed 's/ko$/mod/' modules.order | > > xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- | > > +cat - "${CONFIG_UNUSED_KSYMS_WHITELIST:-/dev/null}" | > > This handles absolute paths very well. I wonder whether we can make this > more useful for folks that want to maintain such a whitelist in their > copy of the tree. Lets say, I have in my sources > arch/x86/configs/x86_64_symbol_whitelist and in my config I have > CONFIG_UNUSED_KSYMS_WHITELIST="arch/x86/configs/x86_64_symbol_whitelist". > > If I see it correctly, UNUSED_KSYMS_WHITELIST is currently either an > absolute path or a relative path to the current build directory. I would > prefer if relative paths would be relative to the source directory to > support the above use case. (Note, that scenario above works if I build > directly in the sources, but fails if I build O=/somewhere/else.) Right, that is an interesting use case. I suppose something like the below should work (with appropriate documentation of the config option). ---8<--- diff --git a/scripts/adjust_autoksyms.sh b/scripts/adjust_autoksyms.sh index 8e1b7f70e800..d37803fd75ce 100755 --- a/scripts/adjust_autoksyms.sh +++ b/scripts/adjust_autoksyms.sh @@ -38,6 +38,12 @@ esac # We need access to CONFIG_ symbols . include/config/auto.conf +ksym_wl="${CONFIG_UNUSED_KSYMS_WHITELIST:-/dev/null}" +# If the path is relative, it must be relative to the source tree +if [ "$ksym_wl" == "${ksym_wl#/}" ]; then + ksym_wl="$abs_srctree/$ksym_wl" +fi + # Generate a new ksym list file with symbols needed by the current # set of modules. cat > "$new_ksyms_file" << EOT @@ -48,7 +54,7 @@ cat > "$new_ksyms_file" << EOT EOT sed 's/ko$/mod/' modules.order | xargs -n1 sed -n -e '2{s/ /\n/g;/^$/!p;}' -- | -cat - "${CONFIG_UNUSED_KSYMS_WHITELIST:-/dev/null}" | +cat - "$ksym_wl" | sort -u | sed -e 's/\(.*\)/#define __KSYM_\1 1/' >> "$new_ksyms_file" --->8--- Thoughts ? Thanks, Quentin