2022-02-02 18:14:39 +00:00
|
|
|
From a9c3934f6cb4407c5aaae82ada3b859d8ca9df83 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Dimitar Dimitrov <dimitar@dinux.eu>
|
|
|
|
Date: Mon, 27 Sep 2021 22:43:24 +0300
|
|
|
|
Subject: [PATCH] ld: pru: Fix resource_table output section alignment
|
|
|
|
|
|
|
|
My commit 261980de18b added alignment for the resource table symbol.
|
|
|
|
But it is wrong. The Linux remoteproc driver loads and interprets the
|
|
|
|
contents of the .resource_table ELF section, not of a table symbol.
|
|
|
|
|
|
|
|
Without this patch, if the linker happens to output padding for symbol
|
|
|
|
alignment, then the resource table contents as viewed by the kernel
|
|
|
|
loader would "shift" and look corrupted.
|
|
|
|
|
|
|
|
ld/ChangeLog:
|
|
|
|
|
|
|
|
* scripttempl/pru.sc (.resource_table): Align the output
|
|
|
|
section, not the first symbol.
|
|
|
|
|
|
|
|
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
|
|
|
|
(cherry picked from commit 5109a7bd9b87bdad530f2ebf97036e6087b4504d)
|
|
|
|
---
|
2022-02-11 02:00:59 +00:00
|
|
|
ld/ChangeLog | 5 +++++
|
|
|
|
ld/scripttempl/pru.sc | 7 +++----
|
2022-02-02 18:14:39 +00:00
|
|
|
2 files changed, 8 insertions(+), 4 deletions(-)
|
|
|
|
|
|
|
|
--- a/ld/ChangeLog
|
|
|
|
+++ b/ld/ChangeLog
|
|
|
|
@@ -1,3 +1,8 @@
|
|
|
|
+2021-09-30 Dimitar Dimitrov <dimitar@dinux.eu>
|
|
|
|
+
|
|
|
|
+ * scripttempl/pru.sc (.resource_table): Align the output
|
|
|
|
+ section, not the first symbol.
|
|
|
|
+
|
|
|
|
2021-07-18 Nick Clifton <nickc@redhat.com>
|
|
|
|
|
|
|
|
* 2.37 release.
|
|
|
|
--- a/ld/scripttempl/pru.sc
|
|
|
|
+++ b/ld/scripttempl/pru.sc
|
2022-02-11 02:00:59 +00:00
|
|
|
@@ -151,11 +151,10 @@
|
2022-02-02 18:14:39 +00:00
|
|
|
${RELOCATING+ PROVIDE (_data_end = .) ; }
|
|
|
|
} ${RELOCATING+ > dmem }
|
|
|
|
|
|
|
|
- .resource_table ${RELOCATING-0} :
|
|
|
|
+ /* Linux remoteproc loader requires the resource_table section
|
|
|
|
+ start address to be aligned to 8 bytes. */
|
|
|
|
+ .resource_table ${RELOCATING-0} ${RELOCATING+ ALIGN(8)} :
|
|
|
|
{
|
|
|
|
- /* Linux remoteproc loader requires the resource table address
|
|
|
|
- to be aligned to 8 bytes. */
|
|
|
|
- ${RELOCATING+. = ALIGN(8);}
|
|
|
|
KEEP (*(.resource_table))
|
|
|
|
} ${RELOCATING+ > dmem}
|
|
|
|
|