From be3394241522787d3fe07bc0d4c8310f146885a2 Mon Sep 17 00:00:00 2001 From: Martijn Dekker Date: Tue, 2 Feb 2021 21:03:01 +0000 Subject: [PATCH] Some more build fixes from OpenSUSE These update some outdated library path searches as well as a couple of gcc-specific improvements. Original patch: https://build.opensuse.org/package/view_file/shells/ksh/ksh93-compat.dif --- src/lib/libast/astsa/ast.h | 6 ++++++ src/lib/libast/features/libpath.sh | 2 +- src/lib/libast/features/map.c | 4 ++++ src/lib/libast/features/sys | 2 +- src/lib/libdll/features/dll | 6 +++--- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/lib/libast/astsa/ast.h b/src/lib/libast/astsa/ast.h index f25f6a50cfe6..814b2f6b65c6 100644 --- a/src/lib/libast/astsa/ast.h +++ b/src/lib/libast/astsa/ast.h @@ -93,6 +93,12 @@ typedef struct #define pointerof(x) ((void*)((char*)0+(x))) #define roundof(x,y) (((x)+(y)-1)&~((y)-1)) +#ifdef __GNUC__ +#if (__GNUC__ >= 4) && !defined(offsetof) +#define offsetof(type,member) __builtin_offsetof(type,member) +#endif +#endif + #ifndef offsetof #define offsetof(type,member) ((unsigned long)&(((type*)0)->member)) #endif diff --git a/src/lib/libast/features/libpath.sh b/src/lib/libast/features/libpath.sh index 40c6aed7cf5c..2e0acb21b6c8 100644 --- a/src/lib/libast/features/libpath.sh +++ b/src/lib/libast/features/libpath.sh @@ -27,7 +27,7 @@ esac ok=0 for i in \ - -x /lib/ld.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ + -x /lib64/ld.so /lib/ld.so /lib64/ld-*.so /lib/ld-*.so /usr/lib/ld.so /lib/rld \ -f /usr/shlib/libc.so /shlib/libc.so /usr/lib/libc.so \ -r /usr/shlib/libc.so /shlib/libc.so do case $i in diff --git a/src/lib/libast/features/map.c b/src/lib/libast/features/map.c index 52c35aa7069f..3d9e74c63f29 100644 --- a/src/lib/libast/features/map.c +++ b/src/lib/libast/features/map.c @@ -67,10 +67,14 @@ main() #define _map_malloc 1 printf("\n"); printf("#define _map_libc 1\n"); +#endif +#if _map_libc || defined(__linux__) printf("#undef basename\n"); printf("#define basename _ast_basename\n"); printf("#undef dirname\n"); printf("#define dirname _ast_dirname\n"); +#endif +#if _map_libc #if !_lib_eaccess printf("#undef eaccess\n"); printf("#define eaccess _ast_eaccess\n"); diff --git a/src/lib/libast/features/sys b/src/lib/libast/features/sys index 3aa103e5e46b..6d105d32f67e 100644 --- a/src/lib/libast/features/sys +++ b/src/lib/libast/features/sys @@ -134,7 +134,7 @@ tst typ_signed_size_t output{ } }end -define offsetof (type,member) ((size_t)&(((type*)0)->member)) +define offsetof (type,member) __builtin_offsetof(type,member) define EXIT_FAILURE 1 define EXIT_SUCCESS 0 define MB_CUR_MAX 1 diff --git a/src/lib/libdll/features/dll b/src/lib/libdll/features/dll index 0b81b924573f..e5d5790f2bd4 100644 --- a/src/lib/libdll/features/dll +++ b/src/lib/libdll/features/dll @@ -15,7 +15,7 @@ tst dll_DYNAMIC link{ }end tst run{ lib= - for d in /shlib /usr/shlib /lib /usr/lib + for d in /lib64 /usr/lib64 /lib /usr/lib do if test -d $d then for s in "*.*" "*[!a]*" do for b in libc @@ -52,7 +52,7 @@ tst run{ "") lib=/lib/libc.so.1 ;; esac case $lib in - /usr/lib/*) + /usr/lib64/*|/usr/lib/*) case `package` in sgi.mips3) abi=/lib32 @@ -65,7 +65,7 @@ tst run{ esac case $abi in ?*) if test -d $abi - then lib=`echo $lib | sed 's,/usr/lib/,,'` + then lib=`echo $lib | sed 's,/usr/lib\(64\)\?/,,'` lib=$abi/$lib fi ;;