From 82a79e7d1843f9d90075a0bf2f04557040829bb0 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 30 Apr 2012 15:00:14 -0700 Subject: Do check-textrel test using readelf rather than a build-time C program. --- scripts/check-textrel.awk | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 scripts/check-textrel.awk (limited to 'scripts/check-textrel.awk') diff --git a/scripts/check-textrel.awk b/scripts/check-textrel.awk new file mode 100644 index 0000000000..e7f2d70084 --- /dev/null +++ b/scripts/check-textrel.awk @@ -0,0 +1,41 @@ +# This awk script expects to get command-line files that are each +# the output of 'readelf -d' on a single shared object. +# It exits successfully (0) if none contained any TEXTREL markers. +# It fails (1) if any did contain a TEXTREL marker. +# It fails (2) if the input did not take the expected form. + +BEGIN { result = textrel = sanity = 0 } + +function check_one(name) { + if (!sanity) { + print name ": *** input did not look like readelf -d output"; + result = 2; + } else if (textrel) { + print name ": *** text relocations used"; + result = result ? result : 1; + } else { + print name ": OK"; + } + + textrel = sanity = 0; +} + +FILENAME != lastfile { + if (lastfile) + check_one(lastfile); + lastfile = FILENAME; +} + +$1 == "Tag" && $2 == "Type" { sanity = 1 } +$2 == "(TEXTREL)" { textrel = 1 } +$2 == "(FLAGS)" { + for (i = 3; i <= NF; ++i) { + if ($i == "TEXTREL") + textrel = 1; + } +} + +END { + check_one(lastfile); + exit(result); +} -- cgit 1.4.1