From 4fe13b2bdd64d72478b0f10e3da45ff77bb825f5 Mon Sep 17 00:00:00 2001 From: Michael Meissner Date: Fri, 12 Jan 1996 18:37:47 +0000 Subject: [PATCH] Add support for .sdata2/.sbss2 and old 2.7.2 compiler; Make text start at 64k; make data follow on next 64k page after text --- ld/ChangeLog | 13 ++++++++++++ ld/Makefile.in | 10 ++++++--- ld/scripttempl/elfppc.sc | 44 ++++++++++++++++++++++++++++++++-------- 3 files changed, 55 insertions(+), 12 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 7ec58b713f..d6bc811d70 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,16 @@ +Fri Jan 12 13:29:55 1996 Michael Meissner + + * 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 * scripttempl/alpha.sc: Put .rconst right after .rdata. diff --git a/ld/Makefile.in b/ld/Makefile.in index 0912cca128..62e70329e6 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -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 diff --git a/ld/scripttempl/elfppc.sc b/ld/scripttempl/elfppc.sc index 2b47af86bb..dc41da55e2 100644 --- a/ld/scripttempl/elfppc.sc +++ b/ld/scripttempl/elfppc.sc @@ -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}} -- 2.34.1