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
This commit is contained in:
Roger Sayle 2006-11-02 00:56:38 +00:00 committed by Roger Sayle
parent fc354c12ad
commit 68b92f787e
5 changed files with 78 additions and 1 deletions

View 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>

View File

@ -203,6 +203,13 @@
#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

View 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

39
gcc/configure vendored
View File

@ -15251,6 +15251,45 @@ cat >>confdefs.h <<\_ACEOF
#define HAVE_AS_IX86_FFREEP 1
_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

View 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],