diff options
author | andrew <andrew@FreeBSD.org> | 2015-03-18 13:59:04 +0000 |
---|---|---|
committer | andrew <andrew@FreeBSD.org> | 2015-03-18 13:59:04 +0000 |
commit | 508f9c2bba8d64e3509d7f1fadc19446097a0037 (patch) | |
tree | b63c643d2df004ed435455cd08499d94c3dcfa71 | |
parent | f7004ad00de67c362bd7153bb29ea4fcdd55ef4d (diff) | |
download | FreeBSD-src-508f9c2bba8d64e3509d7f1fadc19446097a0037.zip FreeBSD-src-508f9c2bba8d64e3509d7f1fadc19446097a0037.tar.gz |
Allowus to exclude a.out support from ldd and use it with arm64 as it won't
support the a.out format.
Reviewed by: emaste
Sponsored by: The FreeBSD Foundation
-rw-r--r-- | usr.bin/ldd/ldd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/usr.bin/ldd/ldd.c b/usr.bin/ldd/ldd.c index bc4dbb6..2f48e04 100644 --- a/usr.bin/ldd/ldd.c +++ b/usr.bin/ldd/ldd.c @@ -37,7 +37,6 @@ __FBSDID("$FreeBSD$"); #include <arpa/inet.h> -#include <a.out.h> #include <dlfcn.h> #include <err.h> #include <errno.h> @@ -49,6 +48,12 @@ __FBSDID("$FreeBSD$"); #include "extern.h" +/* We don't support a.out executables on arm64 */ +#ifndef __aarch64__ +#include <a.out.h> +#define AOUT_SUPPORTED +#endif + /* * 32-bit ELF data structures can only be used if the system header[s] declare * them. There is no official macro for determining whether they are declared, @@ -274,7 +279,9 @@ static int is_executable(const char *fname, int fd, int *is_shlib, int *type) { union { +#ifdef AOUT_SUPPORTED struct exec aout; +#endif #if __ELF_WORD_SIZE > 32 && defined(ELF32_SUPPORTED) Elf32_Ehdr elf32; #endif @@ -290,6 +297,7 @@ is_executable(const char *fname, int fd, int *is_shlib, int *type) return (0); } +#ifdef AOUT_SUPPORTED if ((size_t)n >= sizeof(hdr.aout) && !N_BADMAG(hdr.aout)) { /* a.out file */ if ((N_GETFLAG(hdr.aout) & EX_DPMASK) != EX_DYNAMIC @@ -303,6 +311,7 @@ is_executable(const char *fname, int fd, int *is_shlib, int *type) *type = TYPE_AOUT; return (1); } +#endif #if __ELF_WORD_SIZE > 32 && defined(ELF32_SUPPORTED) if ((size_t)n >= sizeof(hdr.elf32) && IS_ELF(hdr.elf32) && |