ld: pru: Fix resource_table output section alignment
authorDimitar Dimitrov <dimitar@dinux.eu>
Mon, 27 Sep 2021 19:43:24 +0000 (22:43 +0300)
committerDimitar Dimitrov <dimitar@dinux.eu>
Thu, 30 Sep 2021 19:15:50 +0000 (22:15 +0300)
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>
ld/ChangeLog
ld/scripttempl/pru.sc

index 34a508a918af57ca97eb1024f680eb662130a1a3..808191bd14e7e2ac239b495c7e25c29db870ff43 100644 (file)
@@ -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-09-27  Nick Alcock  <nick.alcock@oracle.com>
 
        * configure: Regenerate.
index b2c941b791116a018ea30b52577e7c504af4b9f0..97d8be0a0a42f39863812c84d3562cb287821c53 100644 (file)
@@ -151,11 +151,10 @@ SECTIONS
     ${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}