Commit 68b92f78 by Roger Sayle Committed by Roger Sayle

configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine whether the…

configure.ac (HAVE_AS_IX86_DIFF_SECT_DELTA): New test to determine whether the assembler supports taking the difference of...


	* 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.

From-SVN: r118405
parent fc354c12
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> 2006-11-01 Pete Steinmetz <steinmtz@us.ibm.com>
Peter Bergner <bergner@vnet.ibm.com> Peter Bergner <bergner@vnet.ibm.com>
......
...@@ -203,6 +203,13 @@ ...@@ -203,6 +203,13 @@
#endif #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. */ /* Define if your assembler supports the ffreep mnemonic. */
#ifndef USED_FOR_TARGET #ifndef USED_FOR_TARGET
#undef HAVE_AS_IX86_FFREEP #undef HAVE_AS_IX86_FFREEP
......
/* Solaris 10 configuration. /* Solaris 10 configuration.
Copyright (C) 2004 Free Software Foundation, Inc. Copyright (C) 2004, 2006 Free Software Foundation, Inc.
Contributed by CodeSourcery, LLC. Contributed by CodeSourcery, LLC.
This file is part of GCC. This file is part of GCC.
...@@ -34,6 +34,14 @@ Boston, MA 02110-1301, USA. */ ...@@ -34,6 +34,14 @@ Boston, MA 02110-1301, USA. */
"-s %(asm_cpu)" "-s %(asm_cpu)"
#endif #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 NO_PROFILE_COUNTERS
#undef MCOUNT_NAME #undef MCOUNT_NAME
......
...@@ -15253,6 +15253,45 @@ _ACEOF ...@@ -15253,6 +15253,45 @@ _ACEOF
fi 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 # This one is used unconditionally by i386.[ch]; it is to be defined
# to 1 if the feature is present, 0 otherwise. # to 1 if the feature is present, 0 otherwise.
echo "$as_me:$LINENO: checking assembler for GOTOFF in data" >&5 echo "$as_me:$LINENO: checking assembler for GOTOFF in data" >&5
......
...@@ -2850,6 +2850,18 @@ foo: nop ...@@ -2850,6 +2850,18 @@ foo: nop
[AC_DEFINE(HAVE_AS_IX86_FFREEP, 1, [AC_DEFINE(HAVE_AS_IX86_FFREEP, 1,
[Define if your assembler supports the ffreep mnemonic.])]) [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 # This one is used unconditionally by i386.[ch]; it is to be defined
# to 1 if the feature is present, 0 otherwise. # to 1 if the feature is present, 0 otherwise.
gcc_GAS_CHECK_FEATURE([GOTOFF in data], gcc_GAS_CHECK_FEATURE([GOTOFF in data],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment