diff options
author | Alan Modra <amodra@gmail.com> | 2007-05-29 13:10:10 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2007-05-29 13:10:10 +0000 |
commit | 3ba20bde7e5976625515b62ba462f7bf2dbf8b23 (patch) | |
tree | 59e32e8fcc6a06aad5cf9feff4ce8768a5e98380 /binutils | |
parent | a7e4b3fed3e1b19a06dbc8461e127c282b20b735 (diff) | |
download | gdb-3ba20bde7e5976625515b62ba462f7bf2dbf8b23.zip gdb-3ba20bde7e5976625515b62ba462f7bf2dbf8b23.tar.gz gdb-3ba20bde7e5976625515b62ba462f7bf2dbf8b23.tar.bz2 |
binutils/
* embedspu.sh: Emit SPU ELF image to .data.rel.ro.speelf if
pic or pie and image needs relocs.
ld/
* emultempl/spuelf.em (base_name): New function, split out from..
(embedded_spu_file) ..here. Pass -fPIC or -fpie to embedspu
invocation if we deduce a shared lib or position independent
executable build by looking at ctrbegin* linker input files.
Diffstat (limited to 'binutils')
-rw-r--r-- | binutils/ChangeLog | 5 | ||||
-rw-r--r-- | binutils/embedspu.sh | 16 |
2 files changed, 16 insertions, 5 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog index fb8b1dc..e2ffe45 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,8 @@ +2007-05-29 Alan Modra <amodra@bigpond.net.au> + + * embedspu.sh: Emit SPU ELF image to .data.rel.ro.speelf if + pic or pie and image needs relocs. + 2007-05-24 Steve Ellcey <sje@cup.hp.com> * Makefile.in: Regenerate. diff --git a/binutils/embedspu.sh b/binutils/embedspu.sh index 7a32158..49776b0 100644 --- a/binutils/embedspu.sh +++ b/binutils/embedspu.sh @@ -146,11 +146,6 @@ main () # 5. Write a table of _SPUEAR_ symbols. ${CC} ${FLAGS} -x assembler-with-cpp -nostartfiles -nostdlib \ -Wa,-mbig -Wl,-r -Wl,-x -o ${OUTFILE} - <<EOF - .section .rodata.speelf,"a",@progbits - .p2align 7 -__speelf__: - .incbin "${INFILE}" - .section .data.spetoe,"aw",@progbits .p2align 7 __spetoe__: @@ -181,6 +176,7 @@ $7 != "'${toe}'" && $7 in sec_off { \ print "#else"; \ print " .reloc __speelf__+" strtonum ("0x" $2) + sec_off[$7] + 4 ", R_PPC_ADDR32, " ($8 == "_EAR_" ? "__speelf__" : substr($8, 6)); \ print "#endif"; \ + if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \ } \ $7 != "'${toe}'" && ! $7 in sec_off { \ print "#error Section not found for " $8; \ @@ -206,6 +202,7 @@ $3 ~ /R_SPU_PPU/ { \ print "#else"; \ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] + (substr($3, 10) == "64" ? 4 : 0)", R_PPC_ADDR32, " $5 "+0x" $7; \ print "#endif"; \ + if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \ } \ $3 ~ /unrecognized:/ { \ print "#ifdef _LP64"; \ @@ -213,8 +210,17 @@ $3 ~ /unrecognized:/ { \ print "#else"; \ print " .reloc __speelf__+" strtonum ("0x" $1) + sec_off[rela[sec]] + ($4 == "f" ? 4 : 0)", R_PPC_ADDR32, " $6 "+0x" $8; \ print "#endif"; \ + if (!donedef) { print "#define HAS_RELOCS 1"; donedef = 1; }; \ } \ '` +#if defined (HAS_RELOCS) && (defined (__PIC__) || defined (__PIE__)) + .section .data.rel.ro.speelf,"a",@progbits +#else + .section .rodata.speelf,"a",@progbits +#endif + .p2align 7 +__speelf__: + .incbin "${INFILE}" .section .data,"aw",@progbits .globl ${SYMBOL} |