OSDN Git Service

PR target/16952
authoramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Dec 2004 02:21:28 +0000 (02:21 +0000)
committeramodra <amodra@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 2 Dec 2004 02:21:28 +0000 (02:21 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91605 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/rs6000/linux.h
gcc/config/rs6000/linux64.h
gcc/config/rs6000/rs6000.c

index 132b1e1..88593cf 100644 (file)
@@ -1,3 +1,13 @@
+2004-12-02  Alan Modra  <amodra@bigpond.net.au>
+
+       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  Zack Weinberg  <zack@codesourcery.com>
 
        * config/rs6000/t-aix43, config/rs6000/t-aix52 (SHLIB_LINK):
index d4ce105..e35f033 100644 (file)
 #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
 
index 8168cd3..2cfabb6 100644 (file)
@@ -62,8 +62,11 @@ extern int dot_symbols;
 #undef  PROCESSOR_DEFAULT64
 #define PROCESSOR_DEFAULT64 PROCESSOR_POWER4
 
-#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 "linux"
@@ -198,6 +201,8 @@ extern int dot_symbols;
 #define        TARGET_EABI             0
 #undef TARGET_PROTOTYPE
 #define        TARGET_PROTOTYPE        0
+#undef RELOCATABLE_NEEDS_FIXUP
+#define RELOCATABLE_NEEDS_FIXUP 0
 
 #endif
 
@@ -222,9 +227,6 @@ extern int dot_symbols;
 #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) \
index d9b363a..89f5335 100644 (file)
@@ -11124,6 +11124,10 @@ print_operand_address (FILE *file, rtx x)
     abort ();
 }
 \f
+#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
@@ -11132,9 +11136,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;
@@ -11182,7 +11185,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);
 }