Patch from Chris Johns <ccj@acm.org> to get around a C++ problem with psim.

This problem should and likely was occurring with other BSPs.  This is from
Chris' email:

    I had a look in the psim bsp for the older snapshot I have and it looks
    like you are using the `libbsp/shared/main.c' and this is known to work.

    I have just built the powerpc tools, and compiled the bsp. I have not
    added the linker command file patch so got the list of linker warnings.

    It looks to me like a compiler bug. The `main' call is being inlined and
    when that happens the special code to call `__eabi' is not being added
    to the inlined version. I have attached a patch which places `main'
    after `boot_card' and a call to main is now generated. I have not tested
    it but it should work. I also include a dump of `boot_card' and `main'
    showing the bug.
This commit is contained in:
Joel Sherrill
1999-01-05 17:50:03 +00:00
parent eb0d7ae2da
commit 97503aa5e3

View File

@@ -30,19 +30,6 @@ extern rtems_cpu_table Cpu_table;
rtems_interrupt_level bsp_isr_level;
int main(int argc, char **argv)
{
if ((argc > 0) && argv && argv[0])
rtems_progname = argv[0];
else
rtems_progname = "RTEMS";
rtems_initialize_executive_late( bsp_isr_level );
return 0;
}
int boot_card(int argc, char **argv)
{
int status;
@@ -104,3 +91,16 @@ int boot_card(int argc, char **argv)
return status;
}
int main(int argc, char **argv)
{
if ((argc > 0) && argv && argv[0])
rtems_progname = argv[0];
else
rtems_progname = "RTEMS";
rtems_initialize_executive_late( bsp_isr_level );
return 0;
}