summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Schneider <asn@samba.org>2022-02-14 07:59:52 +0100
committerJule Anger <janger@samba.org>2022-03-29 16:07:13 +0000
commitac73a58d75183cd479326ca4b1a1e58cca3e0466 (patch)
treea522ca04a81030fcbd7ff2368cc0c32a0a4b8a8e
parent15035d82a58821d1f54291a111e8a43a9ad3b82e (diff)
downloadsamba-ac73a58d75183cd479326ca4b1a1e58cca3e0466.tar.gz
builtools: Make abi_gen.sh less prone to errors
The mold linker has more hidden symbols and we would need to filter them out with nm, where objdump tells us which symbols are actually hidden. So we just need to filter out whatever is hidden. The use of awk makes it also easier to get what we want. Signed-off-by: Andreas Schneider <asn@samba.org> Reviewed-by: Alexander Bokovoy <ab@samba.org> (cherry picked from commit 2b9917d7a3cb88cf48517e4a93a94fa3ca6ff3d9) Autobuild-User(v4-16-test): Jule Anger <janger@samba.org> Autobuild-Date(v4-16-test): Tue Mar 29 16:07:13 UTC 2022 on sn-devel-184
-rwxr-xr-xbuildtools/scripts/abi_gen.sh9
1 files changed, 7 insertions, 2 deletions
diff --git a/buildtools/scripts/abi_gen.sh b/buildtools/scripts/abi_gen.sh
index 6dd6d321f77..ddb0a7cc36f 100755
--- a/buildtools/scripts/abi_gen.sh
+++ b/buildtools/scripts/abi_gen.sh
@@ -10,9 +10,14 @@ cat <<EOF
set height 0
set width 0
EOF
-nm "$SHAREDLIB" | cut -d' ' -f2- | egrep '^[BDGTRVWS]' | grep -v @ | egrep -v ' (__bss_start|_edata|_init|_fini|_end)' | cut -c3- | sort | while read s; do
+
+# On older linker versions _init|_fini symbols are not hidden.
+objdump --dynamic-syms "${SHAREDLIB}" | \
+ awk '$0 !~ /.hidden/ {if ($2 == "g" && $3 ~ /D(F|O)/ && $4 ~ /(.bss|.rodata|.text)/) print $NF}' | \
+ sort | \
+ while read -r s; do
echo "echo $s: "
- echo p $s
+ echo p "${s}"
done
) > $GDBSCRIPT