From: Alan Modra Date: Thu, 2 Dec 2004 02:28:31 +0000 (+0000) Subject: re PR target/16952 (GCC for powerpc cross target with -mrelocatable reports error) X-Git-Tag: releases/gcc-3.4.4~466 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b06283350cc6dbfaa432ca0943fbe0d9257b10eb;p=thirdparty%2Fgcc.git re PR target/16952 (GCC for powerpc cross target with -mrelocatable reports error) PR target/16952 * config/rs6000/rs6000.c (rs6000_assemble_integer): Replace #ifdef RELOCATABLE_NEEDS_FIXUP with if. * config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Define in terms of target_flags_explicit. * config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Ditto for biarch case. Define as 0 for non-biarch. From-SVN: r91606 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2b3961eff440..a00324723f74 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2004-12-02 Alan Modra + + PR target/16952 + * config/rs6000/rs6000.c (rs6000_assemble_integer): Replace + #ifdef RELOCATABLE_NEEDS_FIXUP with if. + * config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Define in terms + of target_flags_explicit. + * config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Ditto for biarch + case. Define as 0 for non-biarch. + 2004-12-01 Richard Henderson * expr.c (optimize_bitfield_assignment_op): Split out from ... diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h index 750ba369d900..8d98c22f1a68 100644 --- a/gcc/config/rs6000/linux.h +++ b/gcc/config/rs6000/linux.h @@ -94,8 +94,11 @@ #undef TARGET_64BIT #define TARGET_64BIT 0 -/* We don't need to generate entries in .fixup. */ +/* We don't need to generate entries in .fixup, except when + -mrelocatable or -mrelocatable-lib is given. */ #undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP \ + (target_flags & target_flags_explicit & MASK_RELOCATABLE) #define TARGET_ASM_FILE_END file_end_indicate_exec_stack diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h index 68f54b69a361..53bd4afb7bdb 100644 --- a/gcc/config/rs6000/linux64.h +++ b/gcc/config/rs6000/linux64.h @@ -53,8 +53,11 @@ #undef PROCESSOR_DEFAULT64 #define PROCESSOR_DEFAULT64 PROCESSOR_PPC630 -#undef TARGET_RELOCATABLE -#define TARGET_RELOCATABLE (!TARGET_64BIT && (target_flags & MASK_RELOCATABLE)) +/* We don't need to generate entries in .fixup, except when + -mrelocatable or -mrelocatable-lib is given. */ +#undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP \ + (target_flags & target_flags_explicit & MASK_RELOCATABLE) #undef RS6000_ABI_NAME #define RS6000_ABI_NAME (TARGET_64BIT ? "aixdesc" : "sysv") @@ -188,6 +191,8 @@ #define TARGET_EABI 0 #undef TARGET_PROTOTYPE #define TARGET_PROTOTYPE 0 +#undef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP 0 #endif @@ -212,9 +217,6 @@ #define PROFILE_HOOK(LABEL) \ do { if (TARGET_64BIT) output_profile_hook (LABEL); } while (0) -/* We don't need to generate entries in .fixup. */ -#undef RELOCATABLE_NEEDS_FIXUP - /* PowerPC64 Linux word-aligns FP doubles when -malign-power is given. */ #undef ADJUST_FIELD_ALIGN #define ADJUST_FIELD_ALIGN(FIELD, COMPUTED) \ diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index b3e8fdc1e62d..50e45eed4cfb 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9742,6 +9742,10 @@ print_operand_address (FILE *file, rtx x) abort (); } +#ifndef RELOCATABLE_NEEDS_FIXUP +#define RELOCATABLE_NEEDS_FIXUP 0 +#endif + /* Target hook for assembling integer objects. The PowerPC version has to handle fixup entries for relocatable code if RELOCATABLE_NEEDS_FIXUP is defined. It also needs to handle DI-mode objects on 64-bit @@ -9750,9 +9754,8 @@ print_operand_address (FILE *file, rtx x) static bool rs6000_assemble_integer (rtx x, unsigned int size, int aligned_p) { -#ifdef RELOCATABLE_NEEDS_FIXUP /* Special handling for SI values. */ - if (size == 4 && aligned_p) + if (RELOCATABLE_NEEDS_FIXUP && size == 4 && aligned_p) { extern int in_toc_section (void); static int recurse = 0; @@ -9799,7 +9802,6 @@ rs6000_assemble_integer (rtx x, unsigned int size, int aligned_p) return true; } } -#endif /* RELOCATABLE_NEEDS_FIXUP */ return default_assemble_integer (x, size, aligned_p); }