aboutsummaryrefslogtreecommitdiff
path: root/gcc/configure.ac
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2004-08-21 01:40:00 +0000
committerAlan Modra <amodra@gcc.gnu.org>2004-08-21 11:10:00 +0930
commit85b776dff75bd79d649d4125d116fa89bfd10b9e (patch)
tree59847964b19ce34a89d09442325d0bd276be829e /gcc/configure.ac
parenteba6cfb6b5694f15f880827805ca7d0b0907c60d (diff)
downloadgcc-85b776dff75bd79d649d4125d116fa89bfd10b9e.zip
gcc-85b776dff75bd79d649d4125d116fa89bfd10b9e.tar.gz
gcc-85b776dff75bd79d649d4125d116fa89bfd10b9e.tar.bz2
linux64.h (DOT_SYMBOLS): Define.
* config/rs6000/linux64.h (DOT_SYMBOLS): Define. (CRT_CALL_STATIC_FUNCTION): Define !DOT_SYMBOLS version. (ASM_DECLARE_FUNCTION_SIZE): Modify for !DOT_SYMBOLS. (ASM_OUTPUT_SOURCE_LINE, DBX_OUTPUT_BRAC, DBX_OUTPUT_NFUN): Likewise. (RS6000_ABI_NAME): Define as "linux". (SUBSUBTARGET_OVERRIDE_OPTIONS): Set dot_symbols. * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Select ABI_AIX when rs6000_abi_name is "linux" and TARGET_64BIT. * config/rs6000/rs6000-protos.h (rs6000_output_function_entry): Decl. * config/rs6000/rs6000.c (dot_symbols): New global var. (rs6000_output_function_entry): New function, modified for !DOT_SYMBOLS.. (print_operand <case 'z'>): ..extracted from here. (rs6000_assemble_visibility): Modify for !DOT_SYMBOLS. (rs6000_output_function_epilogue): Likewise. (rs6000_elf_declare_function_name): Likewise. * config/rs6000/rs6000.h (DOT_SYMBOLS): Define. (ASM_WEAKEN_DECL, ASM_OUTPUT_DEF_FROM_DECLS): Modify for !DOT_SYMBOLS. * configure.ac (HAVE_LD_NO_DOT_SYMS): Add new AC_DEFINE. * configure: Regenerate. * config.in: Regenerate. From-SVN: r86354
Diffstat (limited to 'gcc/configure.ac')
-rw-r--r--gcc/configure.ac41
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/configure.ac b/gcc/configure.ac
index dad497c..db368f3 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2854,6 +2854,47 @@ if test x"$gcc_cv_ld_as_needed" = xyes; then
[Define if your linker supports --as-needed and --no-as-needed options.])
fi
+case "$target" in
+ powerpc64*-*-linux*)
+ AC_CACHE_CHECK(linker support for omitting dot symbols,
+ gcc_cv_ld_no_dot_syms,
+ [gcc_cv_ld_no_dot_syms=no
+ if test $in_tree_ld = yes ; then
+ if test "$gcc_cv_gld_major_version" -eq 2 -a "$gcc_cv_gld_minor_version" -ge 16 -o "$gcc_cv_gld_major_version" -gt 2; then
+ gcc_cv_ld_no_dot_syms=yes
+ fi
+ elif test x$gcc_cv_as != x -a x$gcc_cv_ld != x ; then
+ cat > conftest1.s <<EOF
+ .text
+ bl .foo
+EOF
+ cat > conftest2.s <<EOF
+ .section ".opd","aw"
+ .align 3
+ .globl foo
+ .type foo,@function
+foo:
+ .quad .LEfoo,.TOC.@tocbase,0
+ .text
+.LEfoo:
+ blr
+ .size foo,.-.LEfoo
+EOF
+ if $gcc_cv_as -a64 -o conftest1.o conftest1.s > /dev/null 2>&1 \
+ && $gcc_cv_as -a64 -o conftest2.o conftest2.s > /dev/null 2>&1 \
+ && $gcc_cv_ld -melf64ppc -o conftest conftest1.o conftest2.o > /dev/null 2>&1; then
+ gcc_cv_ld_no_dot_syms=yes
+ fi
+ rm -f conftest conftest1.o conftest2.o conftest1.s conftest2.s
+ fi
+ ])
+ if test x"$gcc_cv_ld_no_dot_syms" = xyes; then
+ AC_DEFINE(HAVE_LD_NO_DOT_SYMS, 1,
+ [Define if your PowerPC64 linker only needs function descriptor syms.])
+ fi
+ ;;
+esac
+
if test x$with_sysroot = x && test x$host = x$target \
&& test "$prefix" != "/usr" && test "x$prefix" != "x$local_prefix" ; then
AC_DEFINE_UNQUOTED(PREFIX_INCLUDE_DIR, "$prefix/include",