diff --git a/ld/ChangeLog b/ld/ChangeLog index 73c0a086e8..e798a9b007 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,10 @@ +Mon Jan 27 12:28:43 1997 Ian Lance Taylor + + * scripttempl/elf.sc: Put linkonce reloc section in other + appropriate reloc sections. + * scripttempl/elfmips.sc: Add linkonce support. + * scripttempl/elfppc.sc: Likewise. + Fri Jan 24 10:44:09 1997 Jeffrey A Law (law@cygnus.com) * emulparms/mn10200.sh (OTHER_RELOCATING_SECTIONS): Move the diff --git a/ld/scripttempl/elfmips.sc b/ld/scripttempl/elfmips.sc index 19f3e72a0f..535310fb1b 100644 --- a/ld/scripttempl/elfmips.sc +++ b/ld/scripttempl/elfmips.sc @@ -68,12 +68,18 @@ SECTIONS .dynstr ${RELOCATING-0} : { *(.dynstr) } .dynsym ${RELOCATING-0} : { *(.dynsym) } .hash ${RELOCATING-0} : { *(.hash) } - .rel.text ${RELOCATING-0} : { *(.rel.text) } - .rela.text ${RELOCATING-0} : { *(.rela.text) } - .rel.data ${RELOCATING-0} : { *(.rel.data) } - .rela.data ${RELOCATING-0} : { *(.rela.data) } - .rel.rodata ${RELOCATING-0} : { *(.rel.rodata) } - .rela.rodata ${RELOCATING-0} : { *(.rela.rodata) } + .rel.text ${RELOCATING-0} : + { *(.rel.text) *(.rel.gnu.linkonce.t*) } + .rela.text ${RELOCATING-0} : + { *(.rela.text) *(.rela.gnu.linkonce.t*) } + .rel.data ${RELOCATING-0} : + { *(.rel.data) *(.rel.gnu.linkonce.d*) } + .rela.data ${RELOCATING-0} : + { *(.rela.data) *(.rela.gnu.linkonce.d*) } + .rel.rodata ${RELOCATING-0} : + { *(.rel.rodata) *(.rel.gnu.linkonce.r*) } + .rela.rodata ${RELOCATING-0} : + { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } .rel.got ${RELOCATING-0} : { *(.rel.got) } .rela.got ${RELOCATING-0} : { *(.rela.got) } .rel.ctors ${RELOCATING-0} : { *(.rel.ctors) } @@ -88,7 +94,7 @@ SECTIONS .rela.bss ${RELOCATING-0} : { *(.rela.bss) } .rel.plt ${RELOCATING-0} : { *(.rel.plt) } .rela.plt ${RELOCATING-0} : { *(.rela.plt) } - .rodata ${RELOCATING-0} : { *(.rodata) } + .rodata ${RELOCATING-0} : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 ${RELOCATING-0} : { *(.rodata1) } .init ${RELOCATING-0} : { *(.init) } =${NOP-0} .text ${RELOCATING-0} : @@ -98,6 +104,7 @@ SECTIONS *(.stub) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) + *(.gnu.linkonce.t*) } =${NOP-0} ${RELOCATING+_etext = .;} ${RELOCATING+PROVIDE (etext = .);} @@ -125,6 +132,7 @@ SECTIONS { ${RELOCATING+${DATA_START_SYMBOLS}} *(.data) + *(.gnu.linkonce.d*) ${CONSTRUCTING+CONSTRUCTORS} } .data1 ${RELOCATING-0} : { *(.data1) } diff --git a/ld/scripttempl/elfppc.sc b/ld/scripttempl/elfppc.sc index 69a2f53fa1..b6c542a4a9 100644 --- a/ld/scripttempl/elfppc.sc +++ b/ld/scripttempl/elfppc.sc @@ -53,9 +53,12 @@ SECTIONS .hash ${RELOCATING-0} : { *(.hash) } .dynsym ${RELOCATING-0} : { *(.dynsym) } .dynstr ${RELOCATING-0} : { *(.dynstr) } - .rela.text ${RELOCATING-0} : { *(.rela.text) } - .rela.data ${RELOCATING-0} : { *(.rela.data) } - .rela.rodata ${RELOCATING-0} : { *(.rela.rodata) } + .rela.text ${RELOCATING-0} : + { *(.rela.text) *(.rela.gnu.linkonce.t*) } + .rela.data ${RELOCATING-0} : + { *(.rela.data) *(.rela.gnu.linkonce.d*) } + .rela.rodata ${RELOCATING-0} : + { *(.rela.rodata) *(.rela.gnu.linkonce.r*) } .rela.got ${RELOCATING-0} : { *(.rela.got) } .rela.got1 ${RELOCATING-0} : { *(.rela.got1) } .rela.got2 ${RELOCATING-0} : { *(.rela.got2) } @@ -76,10 +79,11 @@ SECTIONS *(.text) /* .gnu.warning sections are handled specially by elf32.em. */ *(.gnu.warning) + *(.gnu.linkonce.t*) } =${NOP-0} .init ${RELOCATING-0} : { *(.init) } =${NOP-0} .fini ${RELOCATING-0} : { *(.fini) } =${NOP-0} - .rodata ${RELOCATING-0} : { *(.rodata) } + .rodata ${RELOCATING-0} : { *(.rodata) *(.gnu.linkonce.r*) } .rodata1 ${RELOCATING-0} : { *(.rodata1) } ${RELOCATING+_etext = .;} ${RELOCATING+PROVIDE (etext = .);} @@ -107,6 +111,7 @@ SECTIONS { ${RELOCATING+${DATA_START_SYMBOLS}} *(.data) + *(.gnu.linkonce.d*) ${CONSTRUCTING+CONSTRUCTORS} } .data1 ${RELOCATING-0} : { *(.data1) }