summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArsen Arsenović <arsen@aarsen.me>2022-06-24 16:03:46 +0200
committerSam James <sam@gentoo.org>2022-07-12 07:33:20 +0100
commit7b95b1831d71396150c5cb10d4edf899e135d068 (patch)
treebe82740a6de850a430a2dbeca25aa21d6494787e
parentConvert build system to meson (diff)
downloadpax-utils-7b95b1831d71396150c5cb10d4edf899e135d068.tar.gz
pax-utils-7b95b1831d71396150c5cb10d4edf899e135d068.tar.bz2
pax-utils-7b95b1831d71396150c5cb10d4edf899e135d068.zip
Probe the target system for needed headers
This prevents new or unconventional systems requiring upstream changes, though, this is not perfect, as it doesn't address some of the other defines related to OSes the preprocessor does (namely, wrt the ldso cache handling). I didn't touch these yet as I took a more conservative approach of (probably) not changing what happens at runtime. Signed-off-by: Arsen Arsenović <arsen@aarsen.me> Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--porting.h25
-rwxr-xr-xtests/source/dotest2
2 files changed, 12 insertions, 15 deletions
diff --git a/porting.h b/porting.h
index 8e5542d..0d43a92 100644
--- a/porting.h
+++ b/porting.h
@@ -11,9 +11,7 @@
#ifndef _PORTING_H
#define _PORTING_H
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
+#include "probes.h"
#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof(*arr))
@@ -41,36 +39,36 @@
#include <sys/stat.h>
#include <sys/types.h>
#include "elf.h"
-#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__)
+#if HAS_ALLOCA_H
# include <alloca.h>
#endif
-#if defined(__linux__)
+#if HAS_SYS_PRCTL_H
# include <sys/prctl.h>
-# if !defined(HAVE_CONFIG_H) || defined(HAVE_LINUX_SECCOMP_H)
+# if HAS_LINUX_SECCOMP_H
# include <linux/seccomp.h>
# endif
-# if !defined(HAVE_CONFIG_H) || defined(HAVE_LINUX_SECUREBITS_H)
+# if HAS_LINUX_SECUREBITS_H
# include <linux/securebits.h>
# endif
#endif
-#if defined(__GLIBC__) || defined(__UCLIBC__) || defined(__ANDROID__)
+#if HAS_ENDIAN_H && HAS_BYTESWAP_H
# include <byteswap.h>
# include <endian.h>
-#elif defined(__FreeBSD__)
+#elif HAS_SYS_ENDIAN_H
# include <sys/endian.h>
-#elif defined(__sun__)
+#elif HAS_ISA_DEFS_H
# include <sys/isa_defs.h>
-#elif defined(__MACH__)
+#elif HAS_MACHINE_ENDIAN_H
# include <machine/endian.h>
#endif
-#if defined(__GLIBC__) || defined(__UCLIBC__) || defined(__NetBSD__)
+#ifdef HAS_GLOB_H
# include <glob.h>
#endif
#if defined(__GLIBC__) || defined(__UCLIBC__) || defined(__NetBSD__)
# define __PAX_UTILS_DEFAULT_LD_CACHE_CONFIG "/etc/ld.so.conf"
-#elif defined(__FreeBSD__) || defined(__DragonFly__)
+#elif HAS_ELF_HINTS_H
# include <elf-hints.h>
# define __PAX_UTILS_DEFAULT_LD_CACHE_CONFIG _PATH_ELF_HINTS
#else
@@ -168,7 +166,6 @@
# define __PAX_UTILS_PATH_MAX PATH_MAX
#endif
-/* fall back case for non-Linux hosts ... so lame */
#if !defined(ELF_DATA)
# if defined(BYTE_ORDER)
# if BYTE_ORDER == LITTLE_ENDIAN
diff --git a/tests/source/dotest b/tests/source/dotest
index c97e8cb..cc278a5 100755
--- a/tests/source/dotest
+++ b/tests/source/dotest
@@ -5,7 +5,7 @@
findfiles() {
find "${top_srcdir}" \
'(' -type d -a '(' -name .git -o -name autotools ')' -prune ')' \
- -o '(' '(' -name '*.[ch]' -a ! -name 'config.h' ')' -print0 ')'
+ -o '(' '(' -name '*.[ch]' -a ! -name 'probes.h' ')' -print0 ')'
}
#