--wrap ld functionality does not work with Init RTEMS function
Joel Sherrill
joel.sherrill at OARcorp.com
Tue Apr 8 19:46:26 UTC 2008
Aitor Viana wrote:
> Hi,
>
>
> On Tue, Apr 8, 2008 at 9:12 PM, Joel Sherrill
> <joel.sherrill at oarcorp.com <mailto:joel.sherrill at oarcorp.com>> wrote:
>
> Aitor Viana wrote:
>
> Hi all,
>
>
>
>
> On Tue, Apr 8, 2008 at 7:38 PM, Thomas Dörfler
> <Thomas.Doerfler at embedded-brains.de
> <mailto:Thomas.Doerfler at embedded-brains.de>
> <mailto:Thomas.Doerfler at embedded-brains.de
> <mailto:Thomas.Doerfler at embedded-brains.de>>> wrote:
>
> Hi,
>
> Joel Sherrill schrieb:
> > Aitor.Viana.Sanchez at esa.int
> <mailto:Aitor.Viana.Sanchez at esa.int>
> <mailto:Aitor.Viana.Sanchez at esa.int
> <mailto:Aitor.Viana.Sanchez at esa.int>>
>
> wrote:
> >
> >> Hi all,
> >>
> >> does anybody knows why when trying to wrap the Init
> RTEMS function
> >> with the ld --wrap functionality everything compiles
> well but
> >> eventually the wrapper function is not executed?
> >>
> >> Maybe I am missing something, but is taking me a while to
> discover why.
> >>
> >>
> > Init is a task/thread and threads will not return to the
> wrapper.
> > They are entered but exit via rtems_task_delete or
> pthread_exit.
> >
> > I would expect the wrapper to be entered, then Init but
> no return
> > from Init.
> >
> Normally Init will be referenced from within the same
> module: The
> "init.c" module contains the first task AND the default
> list in init
> tasks (somehwere deep down in system.h -> confdefs.h). And
> therefore I
> would expect that the pointer in the list of init tasks
> will point to
> the REAL function, no matter how it might have been renamed.
>
> Does this make sense?
>
>
> yes, I think this is the problem, the indirect point. Because
> when trying to wrap the Init function, the wrapper function
> (__wrap_Init()) is never called, maybe because it is called
> from an indirect pointer.
> I will try to dig deeply...but I would really need to wrap the
> Init function (task, thread, whatever).
>
> My example worked with an indirect function pointer.
> Can you look at the Initialization_tasks[] structure contents on
> the target?
> That way we can see if the table entry was right.
>
>
> Yes sorry, I didn't check it out...now I see that is working with
> indirect pointers.
>
> now I cannot look at the Initialization_tasks[] structure per se,
> because I am at home. But I can send the configuration so we maybe we
> can figure out the Initialization_tasks[]
We know that the entry point should be Init but the loader has to change
that to be wrap_Init and real_Init. This linker trick may only substitute
in so many cases. I can see where an indirect pointer through a table
might break it.
>
> #define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
> #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
>
> #define CONFIGURE_MAXIMUM_TASKS 10
>
> #define CONFIGURE_INIT_TASK_PRIORITY 1
> #define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_PREEMPT
> #define CONFIGURE_RTEMS_INIT_TASKS_TABLE
>
> #define CONFIGURE_INIT
> #include <rtems/confdefs.h>
>
>
>
>
>
>
>
> wkr,
> Thomas.
>
> >> Regards,
> >>
> >> Aitor
> >>
> >
> >
> >
>
>
> --
> --------------------------------------------
> embedded brains GmbH
> Thomas Doerfler Obere Lagerstr. 30
> D-82178 Puchheim Germany
> Tel. : +49-89-18 90 80 79-2
> Fax : +49-89-18 90 80 79-9
> email: Thomas.Doerfler at embedded-brains.de
> <mailto:Thomas.Doerfler at embedded-brains.de>
> <mailto:Thomas.Doerfler at embedded-brains.de
> <mailto:Thomas.Doerfler at embedded-brains.de>>
>
> PGP public key available on request
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne
> des EHUG.
>
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com <mailto:rtems-users at rtems.com>
> <mailto:rtems-users at rtems.com <mailto:rtems-users at rtems.com>>
>
> http://rtems.rtems.org/mailman/listinfo/rtems-users
>
>
>
>
> --
> Joel Sherrill, Ph.D. Director of Research & Development
> joel.sherrill at OARcorp.com On-Line Applications Research
> Ask me about RTEMS: a free RTOS Huntsville AL 35805
> Support Available (256) 722-9985
>
>
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel.sherrill at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list