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

Joel Sherrill joel at rtems.org
Thu Jul 1 18:58:28 UTC 2021


On Thu, Jul 1, 2021 at 1:50 PM Gedare Bloom <gedare at rtems.org> wrote:
>
> 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.

Based on our chats, it looks like the move to per function section linking
pointing out deficiencies in a few BSPs linker scripts. Maybe someone
on your side can grep and see if there are any more obvious places
missing KEEP.

> I will back-port to 5 with a ticket.

Great!

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

Is there a reset register on the uc5282? Qemu has support in some
machine models for exiting instead of resetting via a command line
option.

Otherwise, poke Alex to see what he did with the Microblaze. I don't
think qemu exits automatically for it either.

--joel

>
> 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
> >
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel


More information about the devel mailing list