From 4795b4ae271fbaeafc06dbed729cfc45b0536b75 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 17 Mar 2010 19:30:44 +0000 Subject: [PATCH] rewind attempted fix for Solaris 10, because it doesn't work for Linux svn: r18568 --- src/foreign/gcc/libffi/configure | 37 ++++--------------------- src/foreign/gcc/libffi/configure.ac | 15 ---------- src/foreign/gcc/libffi/src/x86/sysv.S | 28 ++++--------------- src/foreign/gcc/libffi/src/x86/unix64.S | 12 +++----- 4 files changed, 15 insertions(+), 77 deletions(-) diff --git a/src/foreign/gcc/libffi/configure b/src/foreign/gcc/libffi/configure index d2404207d2..1d51dad5c4 100755 --- a/src/foreign/gcc/libffi/configure +++ b/src/foreign/gcc/libffi/configure @@ -3862,7 +3862,7 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 else eval ac_cv_prog_cc_${ac_cc}_c_o=no fi -rm -f -r core conftest* +rm -f core conftest* fi if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then @@ -6275,7 +6275,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f -r conftest* +rm -f conftest* fi @@ -6296,7 +6296,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f -r conftest* +rm -f conftest* fi @@ -11528,7 +11528,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f -r conftest* +rm -f conftest* fi @@ -11549,7 +11549,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_header_stdc=no fi -rm -f -r conftest* +rm -f conftest* fi @@ -11906,7 +11906,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | else ac_cv_os_cray=no fi -rm -f -r conftest* +rm -f conftest* fi { echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5 @@ -13349,31 +13349,6 @@ _ACEOF fi fi -if test x$TARGET = xX86 || test x$TARGET = xX86_64; then - { echo "$as_me:$LINENO: checking assembler supports pc related relocs" >&5 -echo $ECHO_N "checking assembler supports pc related relocs... $ECHO_C" >&6; } -if test "${libffi_cv_as_x86_pcrel+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - libffi_cv_as_x86_pcrel=yes - echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s - if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then - libffi_cv_as_x86_pcrel=no - fi - -fi -{ echo "$as_me:$LINENO: result: $libffi_cv_as_x86_pcrel" >&5 -echo "${ECHO_T}$libffi_cv_as_x86_pcrel" >&6; } - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - -cat >>confdefs.h <<\_ACEOF -#define HAVE_AS_X86_PCREL 1 -_ACEOF - - fi -fi - { echo "$as_me:$LINENO: checking whether .eh_frame section should be read-only" >&5 echo $ECHO_N "checking whether .eh_frame section should be read-only... $ECHO_C" >&6; } if test "${libffi_cv_ro_eh_frame+set}" = set; then diff --git a/src/foreign/gcc/libffi/configure.ac b/src/foreign/gcc/libffi/configure.ac index 1957b4915b..88e410de96 100644 --- a/src/foreign/gcc/libffi/configure.ac +++ b/src/foreign/gcc/libffi/configure.ac @@ -240,21 +240,6 @@ if test x$TARGET = xSPARC; then fi fi -if test x$TARGET = xX86 || test x$TARGET = xX86_64; then - AC_CACHE_CHECK([assembler supports pc related relocs], - libffi_cv_as_x86_pcrel, [ - libffi_cv_as_x86_pcrel=yes - echo '.text; foo: nop; .data; .long foo-.; .text' > conftest.s - if $CC $CFLAGS -c conftest.s 2>&1 | grep -i warning > /dev/null; then - libffi_cv_as_x86_pcrel=no - fi - ]) - if test "x$libffi_cv_as_x86_pcrel" = xyes; then - AC_DEFINE(HAVE_AS_X86_PCREL, 1, - [Define if your assembler supports PC relative relocs.]) - fi -fi - AC_CACHE_CHECK([whether .eh_frame section should be read-only], libffi_cv_ro_eh_frame, [ libffi_cv_ro_eh_frame=no diff --git a/src/foreign/gcc/libffi/src/x86/sysv.S b/src/foreign/gcc/libffi/src/x86/sysv.S index f1258b0def..4e652207ed 100644 --- a/src/foreign/gcc/libffi/src/x86/sysv.S +++ b/src/foreign/gcc/libffi/src/x86/sysv.S @@ -1,6 +1,5 @@ /* ----------------------------------------------------------------------- - sysv.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005, 2008 - Red Hat, Inc. + sysv.S - Copyright (c) 1996, 1998, 2001, 2002, 2003, 2005 Red Hat, Inc. X86 Foreign Function Interface @@ -242,20 +241,9 @@ ffi_closure_SYSV: #if !FFI_NO_RAW_API -/* Precalculate for e.g. the Solaris 10/x86 assembler. */ -#if FFI_TRAMPOLINE_SIZE == 10 -#define RAW_CLOSURE_CIF_OFFSET 12 -#define RAW_CLOSURE_FUN_OFFSET 16 -#define RAW_CLOSURE_USER_DATA_OFFSET 20 -#elif FFI_TRAMPOLINE_SIZE == 24 -#define RAW_CLOSURE_CIF_OFFSET 24 -#define RAW_CLOSURE_FUN_OFFSET 28 -#define RAW_CLOSURE_USER_DATA_OFFSET 32 -#else #define RAW_CLOSURE_CIF_OFFSET ((FFI_TRAMPOLINE_SIZE + 3) & ~3) #define RAW_CLOSURE_FUN_OFFSET (RAW_CLOSURE_CIF_OFFSET + 4) #define RAW_CLOSURE_USER_DATA_OFFSET (RAW_CLOSURE_FUN_OFFSET + 4) -#endif #define CIF_FLAGS_OFFSET 20 .align 4 @@ -354,12 +342,10 @@ ffi_closure_raw_SYSV: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ -#if defined __PIC__ && defined HAVE_AS_X86_PCREL +#ifdef __PIC__ .long .LFB1-. /* FDE initial location */ -#elif defined __PIC__ - .long .LFB1 at rel #else - .long .LFB1 + .long .LFB1 /* FDE initial location */ #endif .long .LFE1-.LFB1 /* FDE address range */ #ifdef __PIC__ @@ -381,10 +367,8 @@ ffi_closure_raw_SYSV: .long .LEFDE2-.LASFDE2 /* FDE Length */ .LASFDE2: .long .LASFDE2-.Lframe1 /* FDE CIE offset */ -#if defined __PIC__ && defined HAVE_AS_X86_PCREL +#ifdef __PIC__ .long .LFB2-. /* FDE initial location */ -#elif defined __PIC__ - .long .LFB2 at rel #else .long .LFB2 #endif @@ -417,10 +401,8 @@ ffi_closure_raw_SYSV: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ -#if defined __PIC__ && defined HAVE_AS_X86_PCREL +#ifdef __PIC__ .long .LFB3-. /* FDE initial location */ -#elif defined __PIC__ - .long .LFB3 at rel #else .long .LFB3 #endif diff --git a/src/foreign/gcc/libffi/src/x86/unix64.S b/src/foreign/gcc/libffi/src/x86/unix64.S index fda590e9ca..a33888180b 100644 --- a/src/foreign/gcc/libffi/src/x86/unix64.S +++ b/src/foreign/gcc/libffi/src/x86/unix64.S @@ -87,6 +87,7 @@ ffi_call_unix64: addq %r11, %r10 jmp *%r10 + .section .rodata .Lstore_table: .long .Lst_void-.Lstore_table /* FFI_TYPE_VOID */ .long .Lst_sint32-.Lstore_table /* FFI_TYPE_INT */ @@ -104,6 +105,7 @@ ffi_call_unix64: .long .Lst_struct-.Lstore_table /* FFI_TYPE_STRUCT */ .long .Lst_int64-.Lstore_table /* FFI_TYPE_POINTER */ + .text .align 2 .Lst_void: ret @@ -236,6 +238,7 @@ ffi_closure_unix64: addq %r11, %r10 jmp *%r10 + .section .rodata .Lload_table: .long .Lld_void-.Lload_table /* FFI_TYPE_VOID */ .long .Lld_int32-.Lload_table /* FFI_TYPE_INT */ @@ -253,6 +256,7 @@ ffi_closure_unix64: .long .Lld_struct-.Lload_table /* FFI_TYPE_STRUCT */ .long .Lld_int64-.Lload_table /* FFI_TYPE_POINTER */ + .text .align 2 .Lld_void: ret @@ -345,11 +349,7 @@ ffi_closure_unix64: .long .LEFDE1-.LASFDE1 /* FDE Length */ .LASFDE1: .long .LASFDE1-.Lframe1 /* FDE CIE offset */ -#if HAVE_AS_X86_PCREL .long .LUW0-. /* FDE initial location */ -#else - .long .LUW0 at rel -#endif .long .LUW4-.LUW0 /* FDE address range */ .uleb128 0x0 /* Augmentation size */ @@ -387,11 +387,7 @@ ffi_closure_unix64: .long .LEFDE3-.LASFDE3 /* FDE Length */ .LASFDE3: .long .LASFDE3-.Lframe1 /* FDE CIE offset */ -#if HAVE_AS_X86_PCREL .long .LUW5-. /* FDE initial location */ -#else - .long .LUW5 at rel -#endif .long .LUW9-.LUW5 /* FDE address range */ .uleb128 0x0 /* Augmentation size */