+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):
#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
#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"
#define TARGET_EABI 0
#undef TARGET_PROTOTYPE
#define TARGET_PROTOTYPE 0
+#undef RELOCATABLE_NEEDS_FIXUP
+#define RELOCATABLE_NEEDS_FIXUP 0
#endif
#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) \
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
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;
return true;
}
}
-#endif /* RELOCATABLE_NEEDS_FIXUP */
return default_assemble_integer (x, size, aligned_p);
}