aboutsummaryrefslogtreecommitdiff
path: root/clients
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2014-07-15 20:52:32 +1000
committerNikunj A Dadhania <nikunj@linux.vnet.ibm.com>2014-10-29 16:17:34 +0530
commitc3c8d6ae27a2c86cd133b285d3e9bbf5ef047701 (patch)
tree9b67e55e9539bf55260ce8e0f65396a293aec793 /clients
parent1e732c553fe0a07515eec7278a715356da0bacfa (diff)
downloadSLOF-c3c8d6ae27a2c86cd133b285d3e9bbf5ef047701.zip
SLOF-c3c8d6ae27a2c86cd133b285d3e9bbf5ef047701.tar.gz
SLOF-c3c8d6ae27a2c86cd133b285d3e9bbf5ef047701.tar.bz2
net-snk: Sanitize our .lds file
No need to have a single giant section, break it back up, add some missing bits, and make sure .opd is separate so that objdump and gdb can properly reconstitute the dot symbols. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> [ do not discard .comment, this is fixed with binutils 2.24] Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com>
Diffstat (limited to 'clients')
-rw-r--r--clients/net-snk/client.lds76
-rw-r--r--clients/net-snk/kernel/init.c2
-rw-r--r--clients/net-snk/sec-client.lds7
3 files changed, 55 insertions, 30 deletions
diff --git a/clients/net-snk/client.lds b/clients/net-snk/client.lds
index 2ebf9d1..39d0459 100644
--- a/clients/net-snk/client.lds
+++ b/clients/net-snk/client.lds
@@ -15,37 +15,71 @@ OUTPUT_ARCH(powerpc:common64)
ENTRY(_entry)
SECTIONS {
- .client 0xF000100:
- {
- __client_start = .;
- *(.text .stub .text.* .gnu.linkonce.t.*)
+ . = 0xF000100;
+ .text :
+ {
+ __client_start = .;
+ *(.text* .stub .gnu.linkonce.t.*)
*(.sfpr .glink)
- *(.rodata .rodata.* .gnu.linkonce.r.*)
- KEEP (*(.opd))
- . = ALIGN(256);
- *(.data .data.* .gnu.linkonce.d.*)
- . = ALIGN(256);
- } =0x60000000
-
- .lowmem :
+ }
+
+ . = ALIGN(0x100);
+ .rodata :
+ {
+ *(.rodata* .gnu.linkonce.r.*)
+ }
+
+ . = ALIGN(0x10);
+ .data :
+ {
+ *(.data* .gnu.linkonce.d.*)
+ *(.force.data)
+ *(.toc1)
+ *(.branch_lt)
+ }
+
+ . = ALIGN(0x10);
+ .opd :
{
- _lowmem_start = .;
- *(.lowmem)
- _lowmem_end = .;
+ *(.opd)
}
+ . = ALIGN(0x10);
.got :
{
- . = ALIGN(8);
_got = .;
- *(.got .toc)
+ *(.got)
+ *(.toc)
_got_end = .;
- }
- .comment : { *(.comment) }
- .branch_lt : { *(.branch_lt) }
+ }
+
+ . = ALIGN(0x1000);
.bss :
{
- *(*COM* .bss .gnu.linkonce.b.*)
+ *(*COM* .bss* .gnu.linkonce.b.*)
+ }
__client_end = .;
+
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ . = ALIGN(0x10);
+ .dynamic : {
+ *(.dynamic)
+ }
+ . = ALIGN(0x10);
+ .rela.dyn : {
+ *(.rela*)
+ }
+ .hash : { *(.hash) }
+
+ .comment : {
+ /*
+ * Discarding this section caused errors on binutils 2.23,
+ * this is fixed in 2.24.
+ */
+ *(.comment)
+ }
+ /DISCARD/ : {
+ *(.interp)
}
}
diff --git a/clients/net-snk/kernel/init.c b/clients/net-snk/kernel/init.c
index 8ae436f..1376b64 100644
--- a/clients/net-snk/kernel/init.c
+++ b/clients/net-snk/kernel/init.c
@@ -31,8 +31,6 @@ snk_fileio_t fd_array[FILEIO_MAX];
extern uint64_t tb_freq;
-extern char _lowmem_start;
-extern char _lowmem_end;
extern char __client_start;
extern char __client_end;
diff --git a/clients/net-snk/sec-client.lds b/clients/net-snk/sec-client.lds
index 0ca24ab..0eefdda 100644
--- a/clients/net-snk/sec-client.lds
+++ b/clients/net-snk/sec-client.lds
@@ -28,13 +28,6 @@ SECTIONS {
/* *(*COM* .bss .gnu.linkonce.b.*) */
} =0x60000000
- .lowmem :
- {
- _lowmem_start = .;
- *(.lowmem)
- _lowmem_end = .;
- }
-
.got :
{
. = ALIGN(8);