Don't include WIN64/EFI64 for x32

Since x32 doesn't support WIN64/EFI64, don't include it for x32.  Also
x32 has sizeof size_t == 4.  But TARGET should be X86_64.
This commit is contained in:
H.J. Lu
2017-10-25 04:36:49 -07:00
parent 8d26e8c6da
commit b2a343ffc6
2 changed files with 16 additions and 3 deletions

View File

@@ -106,10 +106,18 @@ case "${host}" in
if test $ac_cv_sizeof_size_t = 4; then if test $ac_cv_sizeof_size_t = 4; then
case "$host" in case "$host" in
x86_64-*x32|x86_64-x32-*) x86_64-*x32|x86_64-x32-*)
TARGET_X32=yes
TARGET=X86_64 TARGET=X86_64
;; ;;
*) *)
TARGET=X86 echo 'int foo (void) { return __x86_64__; }' > conftest.c
if $CC $CFLAGS -Werror -S conftest.c -o conftest.s > /dev/null 2>&1; then
TARGET_X32=yes
TARGET=X86_64
else
TARGET=X86;
fi
rm -f conftest.*
;; ;;
esac esac
else else
@@ -255,7 +263,11 @@ case "${TARGET}" in
SOURCES="ffi.c sysv.S" SOURCES="ffi.c sysv.S"
;; ;;
X86_64) X86_64)
SOURCES="ffi64.c unix64.S ffiw64.c win64.S" if test x"$TARGET_X32" = xyes; then
SOURCES="ffi64.c unix64.S"
else
SOURCES="ffi64.c unix64.S ffiw64.c win64.S"
fi
;; ;;
X86_WIN64) X86_WIN64)
if test "$MSVC" = 1; then if test "$MSVC" = 1; then

View File

@@ -324,7 +324,8 @@ proc run-many-tests { testcases extra_flags } {
"-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__" "-DABI_NUM=FFI_THISCALL -DABI_ATTR=__THISCALL__"
"-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__" "-DABI_NUM=FFI_FASTCALL -DABI_ATTR=__FASTCALL__"
} }
} elseif [istarget "x86_64-*-*"] { } elseif { [istarget "x86_64-*-*"] \
&& [libffi_feature_test "#ifndef __ILP32__"] } {
set targetabis { set targetabis {
"" ""
"-DABI_NUM=FFI_WIN64 -DABI_ATTR=__MSABI__" "-DABI_NUM=FFI_WIN64 -DABI_ATTR=__MSABI__"