| From a261f6dff3c1653c19c065c3b3650c625447b8a7 Mon Sep 17 00:00:00 2001 |
| From: Arnd Bergmann <arnd@arndb.de> |
| Date: Fri, 6 Mar 2026 17:33:07 +0100 |
| Subject: check-uapi: link into shared objects |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Arnd Bergmann <arnd@arndb.de> |
| |
| commit a261f6dff3c1653c19c065c3b3650c625447b8a7 upstream. |
| |
| While testing ABI changes across all architectures, I found that abidiff |
| sometimes produces nonsensical output. Further debugging identified |
| missing or broken libelf support for architecture specific relocations |
| in ET_REL binaries as the source of the problem[1]. |
| |
| Change the script to no longer produce a relocatable object file but |
| instead create a shared library for each header. This makes abidiff |
| work for all of the architectures in upstream linux kernels. |
| |
| Link: https://sourceware.org/bugzilla/show_bug.cgi?id=33869 |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Arnd Bergmann <arnd@arndb.de> |
| Reviewed-by: Thomas Weißschuh <linux@weissschuh.net> |
| Acked-by: Nathan Chancellor <nathan@kernel.org> |
| Link: https://patch.msgid.link/20260306163309.2015837-2-arnd@kernel.org |
| Signed-off-by: Nicolas Schier <nsc@kernel.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| scripts/check-uapi.sh | 7 +++++-- |
| 1 file changed, 5 insertions(+), 2 deletions(-) |
| |
| --- a/scripts/check-uapi.sh |
| +++ b/scripts/check-uapi.sh |
| @@ -178,8 +178,11 @@ do_compile() { |
| local -r inc_dir="$1" |
| local -r header="$2" |
| local -r out="$3" |
| - printf "int main(void) { return 0; }\n" | \ |
| - "$CC" -c \ |
| + printf "int f(void) { return 0; }\n" | \ |
| + "$CC" \ |
| + -shared \ |
| + -nostdlib \ |
| + -fPIC \ |
| -o "$out" \ |
| -x c \ |
| -O0 \ |