diff options
author | Alan Modra <amodra@bigpond.net.au> | 2004-08-21 01:40:00 +0000 |
---|---|---|
committer | Alan Modra <amodra@gcc.gnu.org> | 2004-08-21 11:10:00 +0930 |
commit | 85b776dff75bd79d649d4125d116fa89bfd10b9e (patch) | |
tree | 59847964b19ce34a89d09442325d0bd276be829e /gcc/configure.ac | |
parent | eba6cfb6b5694f15f880827805ca7d0b0907c60d (diff) | |
download | gcc-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.ac | 41 |
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", |