Add support for .sdata2/.sbss2 and old 2.7.2 compiler; Make text start at 64k; make...
authorMichael Meissner <gnu@the-meissners.org>
Fri, 12 Jan 1996 18:37:47 +0000 (18:37 +0000)
committerMichael Meissner <gnu@the-meissners.org>
Fri, 12 Jan 1996 18:37:47 +0000 (18:37 +0000)
ld/ChangeLog
ld/Makefile.in
ld/scripttempl/elfppc.sc

index 7ec58b713fa4d72477b7243f3315b88e60460012..d6bc811d702da1fa8597476f4d26315a6620ff58 100644 (file)
@@ -1,3 +1,16 @@
+Fri Jan 12 13:29:55 1996  Michael Meissner  <meissner@tiktok.cygnus.com>
+
+       * scripttempl/elfppc.sc: Add support for .sdata2/.sbss2, etc.  Add
+       in old support that 2.7.2 needs, but the current compiler does
+       not.
+
+       * Makefile.in (eelf32{,l}ppc.c): Fix up dependencies to use the
+       correct Linker script template.
+
+       * emulparams/elf32{,l}ppc.sh (TEXT_START_ADDR): Set to 0x40000,
+       not 0x400000.
+       (DATA_ADDR,NONPAGED_TEXT_START_ADDR): Delete.
+
 Tue Jan  9 15:53:02 1996  Ian Lance Taylor  <ian@cygnus.com>
 
        * scripttempl/alpha.sc: Put .rconst right after .rdata.
index 0912cca12852c22511b9605e19230358705f2f38..62e70329e62c2cfe2c39f33d8e7d7c6077e69763 100644 (file)
@@ -203,7 +203,7 @@ ALL_EMULATIONS = ea29k.o ealpha.o earmaoutl.o earmaoutb.o \
        eriscix.o esa29200.o eshl.o esh.o esparclynx.o esparcnbsd.o \
        est2000.o esun3.o esun4.o evanilla.o evax.o evsta.o \
        ez8001.o ez8002.o ei386pe.o earmpe.o eelf32b4300.o eelf32l4300.o \
-       eaixppc.o eaixrs6.o edelta68.o eppcpe.o
+       eaixppc.o eaixrs6.o eppcmacos.o edelta68.o eppcpe.o
 
 CFILES = ldctor.c ldemul.c ldexp.c ldfile.c ldlang.c \
        ldmain.c ldmisc.c ldver.c ldwrite.c lexsup.c \
@@ -431,10 +431,10 @@ esparclynx.c: $(srcdir)/emulparams/sparclynx.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/sparclynx.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} sparclynx
 eelf32ppc.c: $(srcdir)/emulparams/elf32ppc.sh \
-  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32ppc
 eelf32lppc.c: $(srcdir)/emulparams/elf32lppc.sh \
-  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elf.sc ${GEN_DEPENDS}
+  $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/elfppc.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} elf32lppc
 eriscix.c: $(srcdir)/emulparams/riscix.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/aout.sc ${GEN_DEPENDS}
@@ -460,6 +460,10 @@ ew65.c: $(srcdir)/emulparams/w65.sh \
   $(srcdir)/emultempl/generic.em $(srcdir)/scripttempl/w65.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} w65
 
+eppcmacos.c:   $(srcdir)/emulparams/ppcmacos.sh \
+  $(srcdir)/emultempl/aix.em $(srcdir)/scripttempl/aix.sc ${GEN_DEPENDS}
+       ${GENSCRIPTS} ppcmacos
+
 ei386nw.c:     $(srcdir)/emulparams/i386nw.sh \
   $(srcdir)/emultempl/elf32.em $(srcdir)/scripttempl/nw.sc ${GEN_DEPENDS}
        ${GENSCRIPTS} i386nw
index 2b47af86bb81e69a1f6cc819908a31cfb80c993d..dc41da55e29552cacfbfad80e0a1fe63fb4cd874 100644 (file)
@@ -100,23 +100,50 @@ SECTIONS
   .data1 ${RELOCATING-0} : { *(.data1) }
   ${RELOCATING+${OTHER_READWRITE_SECTIONS}}
 
-  .got1 ${RELOCATING-0} :  { *(.got1) }
-  .dynamic     ${RELOCATING-0} : { *(.dynamic) }
+  .sdata2      ${RELOCATING-0} : { *(.sdata2) }
+  .sbss2       ${RELOCATING-0} : { *(.sbss2) }
+  .got1                ${RELOCATING-0} : { *(.got1) }
+  .dynamic     ${RELOCATING-0} : { *(.dynamic) }
 
   /* Put .ctors and .dtors next to the .got2 section, so that the pointers
-     get relocated with -mrelocatable. Also put in the .fixup pointers.  */
+     get relocated with -mrelocatable. Also put in the .fixup pointers.
+     The current compiler no longer needs this, but keep it around for 2.7.2  */
 
-  .got2  ${RELOCATING-0} :  { *(.got2) }
-  .ctors ${RELOCATING-0} : { *(.ctors) }
-  .dtors ${RELOCATING-0} : { *(.dtors) }
-  .fixup ${RELOCATING-0} : { *(.fixup) }
+               ${RELOCATING+_GOT2_START_ = .;}
+  .got2                ${RELOCATING-0} :  { *(.got2) }
+
+               ${RELOCATING+__CTOR_LIST__ = .;}
+  .ctors       ${RELOCATING-0} : { *(.ctors) }
+               ${RELOCATING+__CTOR_END__ = .;}
+
+               ${RELOCATING+__DTOR_LIST__ = .;}
+  .dtors       ${RELOCATING-0} : { *(.dtors) }
+               ${RELOCATING+__DTOR_END__ = .;}
+
+               ${RELOCATING+_FIXUP_START_ = .;}
+  .fixup       ${RELOCATING-0} : { *(.fixup) }
+               ${RELOCATING+_FIXUP_END_ = .;}
+               ${RELOCATING+_GOT2_END_ = .;}
+
+  /* .got.neg is for items that would normally go in the .got that are addressed
+     negative of _GLOBAL_OFFSET_TABLE.  .got.blrl is to hold the blrl instruction
+     that is _GLOBAL_OFFSET_TABLE_-4 so that a function can easily get the
+     address of _GLOBAL_OFFSET_TABLE.   */
+
+  .got.neg     ${RELOCATING-0} : { *(.got.neg) }
+  .got.blrl    ${RELOCATING-0} : { *(.got.blrl) }
+               ${RELOCATING+_GOT_START_ = .;}
+               ${RELOCATING+_GLOBAL_OFFSET_TABLE_ = .;}
+  .got         ${RELOCATING-0} : { *(.got) }
+  .got.plt     ${RELOCATING-0} : { *(.got.plt) }
+               ${RELOCATING+_GOT_END_ = .;}
 
-  .got         ${RELOCATING-0} : { *(.got) *(.got.plt) }
   ${DATA_PLT+${PLT}}
 
   /* We want the small data sections together, so single-instruction offsets
      can access them all, and initialized data all before uninitialized, so
      we can shorten the on-disk segment size.  */
+  ${RELOCATING+_SDA_BASE_ = . + 32768;}
   .sdata   ${RELOCATING-0} : { *(.sdata) }
   ${RELOCATING+_edata  =  .;}
   ${RELOCATING+PROVIDE (edata = .);}
@@ -127,7 +154,6 @@ SECTIONS
     *(.scommon)
     ${RELOCATING+__sbss_end = .;}
   }
-  ${RELOCATING+_GOT_END_ = .;}
   .bss     ${RELOCATING-0} :
   {
    ${RELOCATING+${OTHER_BSS_SYMBOLS}}