ld: pru: Place exception-handling sections correctly

* scripttempl/pru.sc (OUTPUT_SECTION_ALIGN): New helper variable to place at end of DMEM output sections.
  (.data): Use the helper variable.
  (.eh_frame): New output section.
  (.gnu_extab): Ditto.
  (.gcc_except_table): Ditto.
  (.resource_table): Use the helper variable.
This commit is contained in:
Dimitar Dimitrov 2023-05-04 12:41:55 +01:00 committed by Nick Clifton
parent 654dfab066
commit 35130e73da
2 changed files with 36 additions and 8 deletions

View File

@ -1,3 +1,13 @@
2023-05-04 Dimitar Dimitrov <dimitar@dinux.eu>
* scripttempl/pru.sc (OUTPUT_SECTION_ALIGN): New helper variable
to place at end of DMEM output sections.
(.data): Use the helper variable.
(.eh_frame): New output section.
(.gnu_extab): Ditto.
(.gcc_except_table): Ditto.
(.resource_table): Use the helper variable.
2023-04-27 Nick Clifton <nickc@redhat.com>
* ldmisc.c (vfinfo): Add support for %x and %lx.

View File

@ -24,6 +24,12 @@ ENTRY (_start)
EOF
OUTPUT_SECTION_ALIGN="
${RELOCATING+/* In case this is the last input section,
align to keep the loadable segment size a multiple of the common page size.
Some SoCs have stricter memory size requirements than others. */
. = ALIGN (CONSTANT (COMMONPAGESIZE));}"
cat <<EOF
SECTIONS
{
@ -163,10 +169,25 @@ SECTIONS
${RELOCATING+*(COMMON)}
${RELOCATING+ PROVIDE (_bss_end = .) ; }
${RELOCATING+/* In case this is the last input section, align to
keep the loadable segment size a multiple of the common page size.
Some SoCs have stricter memory size requirements than others. */
. = ALIGN (CONSTANT (COMMONPAGESIZE));}
${OUTPUT_SECTION_ALIGN}
} ${RELOCATING+ > dmem}
.eh_frame ${RELOCATING-0} :
{
KEEP (*(.eh_frame))${RELOCATING+ *(.eh_frame.*)}
${OUTPUT_SECTION_ALIGN}
} ${RELOCATING+ > dmem}
.gnu_extab ${RELOCATING-0} :
{
*(.gnu_extab)
${OUTPUT_SECTION_ALIGN}
} ${RELOCATING+ > dmem}
.gcc_except_table ${RELOCATING-0} :
{
*(.gcc_except_table${RELOCATING+ .gcc_except_table.*})
${OUTPUT_SECTION_ALIGN}
} ${RELOCATING+ > dmem}
/* Linux remoteproc loader requires the resource_table section
@ -175,10 +196,7 @@ SECTIONS
.resource_table ${RELOCATING-0} ${RELOCATING+ ALIGN (CONSTANT (MAXPAGESIZE))} :
{
KEEP (*(.resource_table))
${RELOCATING+/* In case this is the last input section, align to
keep the loadable segment size a multiple of the common page size.
Some SoCs have stricter memory size requirements than others. */
. = ALIGN (CONSTANT (COMMONPAGESIZE));}
${OUTPUT_SECTION_ALIGN}
} ${RELOCATING+ > dmem}
/* Global data not cleared after reset. */