aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2008-05-10 20:40:47 -0400
committerPaul Mackerras <paulus@samba.org>2008-05-23 01:27:23 -0400
commit2ca7633dc73405ee775a2e9b7961b47a38bc882d (patch)
tree2a4e5340e7c3020421b1dafeb4fd1955798b0a42
parent21451155d8858773ee764e9218de2ca0f4d6fc38 (diff)
[POWERPC] Tweak VDSO linker script to avoid upsetting old binutils
This works around bugs in older binutils' objcopy. The placement of these sections does not really matter, but it confused the buggy old BFD libraries. Signed-off-by: Roland McGrath <roland@redhat.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--arch/powerpc/kernel/vdso64/vdso64.lds.S6
-rw-r--r--include/asm-powerpc/ppc_asm.h6
2 files changed, 9 insertions, 3 deletions
diff --git a/arch/powerpc/kernel/vdso64/vdso64.lds.S b/arch/powerpc/kernel/vdso64/vdso64.lds.S
index 932b3fdb34b9..7d6585f90277 100644
--- a/arch/powerpc/kernel/vdso64/vdso64.lds.S
+++ b/arch/powerpc/kernel/vdso64/vdso64.lds.S
@@ -43,15 +43,15 @@ SECTIONS
43 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 43 .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
44 .rodata1 : { *(.rodata1) } 44 .rodata1 : { *(.rodata1) }
45 45
46 .dynamic : { *(.dynamic) } :text :dynamic
47
46 .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr 48 .eh_frame_hdr : { *(.eh_frame_hdr) } :text :eh_frame_hdr
47 .eh_frame : { KEEP (*(.eh_frame)) } :text 49 .eh_frame : { KEEP (*(.eh_frame)) } :text
48 .gcc_except_table : { *(.gcc_except_table) } 50 .gcc_except_table : { *(.gcc_except_table) }
51 .rela.dyn ALIGN(8) : { *(.rela.dyn) }
49 52
50 .opd ALIGN(8) : { KEEP (*(.opd)) } 53 .opd ALIGN(8) : { KEEP (*(.opd)) }
51 .got ALIGN(8) : { *(.got .toc) } 54 .got ALIGN(8) : { *(.got .toc) }
52 .rela.dyn ALIGN(8) : { *(.rela.dyn) }
53
54 .dynamic : { *(.dynamic) } :text :dynamic
55 55
56 _end = .; 56 _end = .;
57 PROVIDE(end = .); 57 PROVIDE(end = .);
diff --git a/include/asm-powerpc/ppc_asm.h b/include/asm-powerpc/ppc_asm.h
index 2dbd4e7884fa..ef96bfd4ef4c 100644
--- a/include/asm-powerpc/ppc_asm.h
+++ b/include/asm-powerpc/ppc_asm.h
@@ -356,6 +356,12 @@ END_FTR_SECTION_IFCLR(CPU_FTR_601)
356#define toreal(rd) 356#define toreal(rd)
357#define fromreal(rd) 357#define fromreal(rd)
358 358
359/*
360 * We use addis to ensure compatibility with the "classic" ppc versions of
361 * these macros, which use rs = 0 to get the tophys offset in rd, rather than
362 * converting the address in r0, and so this version has to do that too
363 * (i.e. set register rd to 0 when rs == 0).
364 */
359#define tophys(rd,rs) \ 365#define tophys(rd,rs) \
360 addis rd,rs,0 366 addis rd,rs,0
361 367