Allow bootstrapping elftoolchain on MacOS and Linux

This is required in order to build on non-FreeBSD systems without setting
all the XAR/XSTRINGS/etc. variables

Reviewed By:	emaste
Differential Revision: https://reviews.freebsd.org/D16771
This commit is contained in:
Alex Richardson 2019-07-01 11:52:54 +00:00
parent 92aea66e57
commit b46517aa7b
3 changed files with 16 additions and 4 deletions

View File

@ -374,11 +374,14 @@ extern const char *__progname;
#include <libkern/OSByteOrder.h>
#define htobe32(x) OSSwapHostToBigInt32(x)
#define htole32(x) OSSwapHostToLittleInt32(x)
#ifndef roundup2
#define roundup2 roundup
#endif
#define ELFTC_BYTE_ORDER _BYTE_ORDER
#define ELFTC_BYTE_ORDER_LITTLE_ENDIAN _LITTLE_ENDIAN
#define ELFTC_BYTE_ORDER_BIG_ENDIAN _BIG_ENDIAN
#define ELFTC_BYTE_ORDER __DARWIN_BYTE_ORDER
#define ELFTC_BYTE_ORDER_LITTLE_ENDIAN __DARWIN_LITTLE_ENDIAN
#define ELFTC_BYTE_ORDER_BIG_ENDIAN __DARWIN_BIG_ENDIAN
#define ELFTC_HAVE_MMAP 1
#define ELFTC_HAVE_STRMODE 1
@ -418,7 +421,9 @@ extern const char *__progname;
/* Whether we need to supply {be,le}32dec. */
#define ELFTC_NEED_BYTEORDER_EXTENSIONS 1
#ifndef roundup2
#define roundup2 roundup
#endif
#endif /* __GLIBC__ || __linux__ */

View File

@ -37,7 +37,7 @@ ELFTC_VCSID("$Id$");
* stat'.
*/
#if defined(__FreeBSD__) || defined(__NetBSD__)
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
#define ATIME st_atimespec
#define MTIME st_mtimespec
#define LIBELFTC_HAVE_UTIMES 1

View File

@ -79,6 +79,13 @@ INCS= libelf.h gelf.h
#
SRCS+= sys/elf32.h sys/elf64.h sys/elf_common.h
# Allow bootstrapping elftoolchain on Linux:
.if defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Linux"
native-elf-format.h:
${ELFTCDIR}/common/native-elf-format > ${.TARGET} || rm ${.TARGET}
SRCS+= native-elf-format.h
.endif
GENSRCS= libelf_fsize.c libelf_msize.c libelf_convert.c
CLEANFILES= ${GENSRCS}
CLEANDIRS= sys