-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