diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2023-05-04 12:41:55 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2023-05-04 12:41:55 +0100 |
commit | 35130e73da95371af99734cda3ef8915a6eb5e7a (patch) | |
tree | 6dc7f91caf687ddd562fd726f523c70acca4befe /ld | |
parent | 654dfab0666513a4e9c053559d0c184b863139c4 (diff) | |
download | binutils-35130e73da95371af99734cda3ef8915a6eb5e7a.zip binutils-35130e73da95371af99734cda3ef8915a6eb5e7a.tar.gz binutils-35130e73da95371af99734cda3ef8915a6eb5e7a.tar.bz2 |
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.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 10 | ||||
-rw-r--r-- | ld/scripttempl/pru.sc | 34 |
2 files changed, 36 insertions, 8 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index f941b13..dcdf27c 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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. diff --git a/ld/scripttempl/pru.sc b/ld/scripttempl/pru.sc index 8531cb8..3ff86bc 100644 --- a/ld/scripttempl/pru.sc +++ b/ld/scripttempl/pru.sc @@ -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. */ |