OSDN Git Service

* configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Nov 2006 00:56:38 +0000 (00:56 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Nov 2006 00:56:38 +0000 (00:56 +0000)
whether the assembler supports taking the difference of symbols in
different sections.  On x86/Solaris, GAS does but Solaris as doesn't.
* configure: Regenerate.
* config.in: Regenerate.
* config/i386/sol2-10.h (JUMP_TABLES_IN_TEXT_SECTION): Define if
the assembler doesn't support taking the difference of symbols in
different sections, i.e. we're using the native solaris assembler.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@118405 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config.in
gcc/config/i386/sol2-10.h
gcc/configure
gcc/configure.ac

index e3a2435..65fdde0 100644 (file)
@@ -1,3 +1,14 @@
+2006-11-01  Roger Sayle  <roger@eyesopen.com>
+
+       * configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine
+       whether the assembler supports taking the difference of symbols in
+       different sections.  On x86/Solaris, GAS does but Solaris as doesn't.
+       * configure: Regenerate.
+       * config.in: Regenerate.
+       * config/i386/sol2-10.h (JUMP_TABLES_IN_TEXT_SECTION): Define if
+       the assembler doesn't support taking the difference of symbols in
+       different sections, i.e. we're using the native solaris assembler.
+
 2006-11-01  Pete Steinmetz  <steinmtz@us.ibm.com>
            Peter Bergner  <bergner@vnet.ibm.com>
 
index 0f5f011..a8e18bc 100644 (file)
 #endif
 
 
+/* Define if your assembler supports the subtraction of symbols in different
+   sections. */
+#ifndef USED_FOR_TARGET
+#undef HAVE_AS_IX86_DIFF_SECT_DELTA
+#endif
+
+
 /* Define if your assembler supports the ffreep mnemonic. */
 #ifndef USED_FOR_TARGET
 #undef HAVE_AS_IX86_FFREEP
index af51b4c..587e56f 100644 (file)
@@ -1,5 +1,5 @@
 /* Solaris 10 configuration.
-   Copyright (C) 2004 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006 Free Software Foundation, Inc.
    Contributed by CodeSourcery, LLC.
 
 This file is part of GCC.
@@ -34,6 +34,14 @@ Boston, MA 02110-1301, USA.  */
                 "-s %(asm_cpu)"
 #endif
 
+/* The native Solaris assembler can't calculate the difference between
+   symbols in different sections, which causes problems for -fPIC jump
+   tables in .rodata.  */
+#ifndef HAVE_AS_IX86_DIFF_SECT_DELTA
+#undef JUMP_TABLES_IN_TEXT_SECTION
+#define JUMP_TABLES_IN_TEXT_SECTION 1
+#endif
+
 #undef NO_PROFILE_COUNTERS
 
 #undef MCOUNT_NAME
index 2e2b0bc..582e37b 100755 (executable)
@@ -15253,6 +15253,45 @@ _ACEOF
 
 fi
 
+    echo "$as_me:$LINENO: checking assembler for different section symbol subtraction" >&5
+echo $ECHO_N "checking assembler for different section symbol subtraction... $ECHO_C" >&6
+if test "${gcc_cv_as_ix86_diff_sect_delta+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  gcc_cv_as_ix86_diff_sect_delta=no
+  if test x$gcc_cv_as != x; then
+    echo '.section .rodata
+.L1:
+        .long .L2-.L1
+        .long .L3-.L1
+        .text
+.L3:    nop
+.L2:    nop' > conftest.s
+    if { ac_try='$gcc_cv_as  -o conftest.o conftest.s >&5'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }
+    then
+       gcc_cv_as_ix86_diff_sect_delta=yes
+    else
+      echo "configure: failed program was" >&5
+      cat conftest.s >&5
+    fi
+    rm -f conftest.o conftest.s
+  fi
+fi
+echo "$as_me:$LINENO: result: $gcc_cv_as_ix86_diff_sect_delta" >&5
+echo "${ECHO_T}$gcc_cv_as_ix86_diff_sect_delta" >&6
+if test $gcc_cv_as_ix86_diff_sect_delta = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_AS_IX86_DIFF_SECT_DELTA 1
+_ACEOF
+
+fi
+
     # This one is used unconditionally by i386.[ch]; it is to be defined
     # to 1 if the feature is present, 0 otherwise.
     echo "$as_me:$LINENO: checking assembler for GOTOFF in data" >&5
index fca9fed..b089f60 100644 (file)
@@ -2850,6 +2850,18 @@ foo:     nop
       [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
         [Define if your assembler supports the ffreep mnemonic.])])
 
+    gcc_GAS_CHECK_FEATURE([different section symbol subtraction],
+      gcc_cv_as_ix86_diff_sect_delta,,,
+      [.section .rodata
+.L1:
+        .long .L2-.L1
+        .long .L3-.L1
+        .text
+.L3:    nop
+.L2:    nop],,
+      [AC_DEFINE(HAVE_AS_IX86_DIFF_SECT_DELTA, 1,
+        [Define if your assembler supports the subtraction of symbols in different sections.])])
+
     # This one is used unconditionally by i386.[ch]; it is to be defined
     # to 1 if the feature is present, 0 otherwise.
     gcc_GAS_CHECK_FEATURE([GOTOFF in data],