[PATCH] m68k/uC5282: linkcmds KEEP and SORT sections

Gedare Bloom gedare at rtems.org
Thu Jul 1 18:50:26 UTC 2021


Hello all,

The uC5282 stopped working in 5 and master. This patch seems to get
things working again on both branches. I can run hello.exe and
ticker.exe on the WIP qemu Harrison is working on.

I will back-port to 5 with a ticket.

We'll work on full tester configuration after the WIP qemu
modifications are finished. (Test execution termination isn't working,
so automation is out.)

Gedare

On Thu, Jul 1, 2021 at 12:40 PM Gedare Bloom <gedare at rtems.org> wrote:
>
> Fixes a problem with bad epilog code in _fini and to keep sections
> necessary with the -ffunction/data-sections.
> ---
>  bsps/m68k/uC5282/start/linkcmds | 34 ++++++++++++++++++---------------
>  1 file changed, 19 insertions(+), 15 deletions(-)
>
> diff --git a/bsps/m68k/uC5282/start/linkcmds b/bsps/m68k/uC5282/start/linkcmds
> index 6ac9de96ae..2111e53036 100644
> --- a/bsps/m68k/uC5282/start/linkcmds
> +++ b/bsps/m68k/uC5282/start/linkcmds
> @@ -91,13 +91,13 @@ SECTIONS
>           * crtn.o are in.
>           */
>          PROVIDE (_init = .);
> -        *crti.o(.init)
> -        *(.init)
> -        *crtn.o(.init)
> +        KEEP (*crti.o(.init))
> +        KEEP (*(.init))
> +        KEEP (*crtn.o(.init))
>          PROVIDE (_fini = .);
> -        *crti.o(.fini)
> -        *(.fini)
> -        *crtn.o(.fini)
> +        KEEP (*crti.o(.fini))
> +        KEEP (*(.fini))
> +        KEEP (*crtn.o(.fini))
>
>          /*
>           * Special FreeBSD sysctl sections.
> @@ -122,18 +122,22 @@ SECTIONS
>           * crtend.o.  The same comments apply to it.
>           */
>          . = ALIGN (16);
> -        *crtbegin.o(.ctors)
> -        *(.ctors)
> -        *crtend.o(.ctors)
> -        *crtbegin.o(.dtors)
> -        *(.dtors)
> -        *crtend.o(.dtors)
> +        KEEP (*crtbegin.o(.ctors))
> +        KEEP (*crtbegin?.o(.ctors))
> +        KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors))
> +        KEEP (*(SORT(.ctors.*)))
> +        KEEP (*(.ctors))
> +        KEEP (*crtbegin.o(.dtors))
> +        KEEP (*crtbegin?.o(.dtors))
> +        KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors))
> +        KEEP (*(SORT(.dtors.*)))
> +        KEEP (*(.dtors))
>
>          /*
>           * Exception frame info
>           */
>          . = ALIGN (16);
> -        *(.eh_frame)
> +        KEEP (*(.eh_frame))
>
>          /*
>           * Read-only data
> @@ -141,7 +145,7 @@ SECTIONS
>          . = ALIGN (16);
>          _rodata_start = . ;
>          *(.rodata*)
> -       KEEP (*(SORT(.rtemsroset.*)))
> +        KEEP (*(SORT(.rtemsroset.*)))
>          *(.gnu.linkonce.r*)
>
>          . = ALIGN (16);
> @@ -179,7 +183,7 @@ SECTIONS
>          KEEP (*(SORT(.rtemsrwset.*)))
>          *(.gnu.linkonce.d*)
>          *(.gcc_except_table*)
> -        *(.jcr)
> +        KEEP (*(.jcr))
>          . = ALIGN (16);
>          PROVIDE (_edata = .);
>          PROVIDE (_copy_end = .);
> --
> 2.25.1
>


More information about the devel mailing list