-mrelocatable broken on ppc-linux
Aldy Hernandez
aldyh@redhat.com
Wed Jan 21 14:08:00 GMT 2004
Hi Alan.
Thanks for taking a look at this.
> Well, that fixes the problem for powerpc-linux-gcc, but not for
> powerpc64-linux-gcc -m32
Ah yes, good catch.
How about this? I'm assuming there's no other ppc variant that
includes sysv4.h and is 64-bits-- which seems to be the case.
Aldy
2004-01-21 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/linux.h (RELOCATABLE_NEEDS_FIXUP): Delete.
* config/rs6000/linux64.h (RELOCATABLE_NEEDS_FIXUP): Delete.
* config/rs6000/rs6000.c (rs6000_assemble_integer): Only fix up
relocatables for 32-bit.
Index: config/rs6000/linux.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/linux.h,v
retrieving revision 1.42
diff -c -p -r1.42 linux.h
*** config/rs6000/linux.h 16 Sep 2003 08:04:33 -0000 1.42
--- config/rs6000/linux.h 21 Jan 2004 13:31:14 -0000
***************
*** 86,94 ****
#undef TARGET_64BIT
#define TARGET_64BIT 0
- /* We don't need to generate entries in .fixup. */
- #undef RELOCATABLE_NEEDS_FIXUP
-
#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
/* Do code reading to identify a signal frame, and set the frame
--- 86,91 ----
Index: config/rs6000/linux64.h
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/linux64.h,v
retrieving revision 1.53
diff -c -p -r1.53 linux64.h
*** config/rs6000/linux64.h 8 Jan 2004 15:13:17 -0000 1.53
--- config/rs6000/linux64.h 21 Jan 2004 13:31:14 -0000
***************
*** 207,215 ****
#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) \
--- 207,212 ----
Index: config/rs6000/rs6000.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/config/rs6000/rs6000.c,v
retrieving revision 1.569
diff -c -p -r1.569 rs6000.c
*** config/rs6000/rs6000.c 8 Jan 2004 21:51:56 -0000 1.569
--- config/rs6000/rs6000.c 21 Jan 2004 13:31:22 -0000
*************** rs6000_assemble_integer (rtx x, unsigned
*** 9314,9320 ****
{
#ifdef RELOCATABLE_NEEDS_FIXUP
/* Special handling for SI values. */
! if (size == 4 && aligned_p)
{
extern int in_toc_section (void);
static int recurse = 0;
--- 9314,9320 ----
{
#ifdef RELOCATABLE_NEEDS_FIXUP
/* Special handling for SI values. */
! if (TARGET_32BIT && size == 4 && aligned_p)
{
extern int in_toc_section (void);
static int recurse = 0;
More information about the Gcc-patches
mailing list