diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-01-05 17:50:03 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 1999-01-05 17:50:03 +0000 |
commit | 97503aa5e3ada1e04d60bf906eb438465cadc521 (patch) | |
tree | e636362daa009cafbe307b1eb4a9a4145d8b57b7 /c | |
parent | Patch from D. V. Henkel-Wallace <gumby@zembu.com> to use puts and have protot... (diff) | |
download | rtems-97503aa5e3ada1e04d60bf906eb438465cadc521.tar.bz2 |
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.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/shared/main.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/c/src/lib/libbsp/shared/main.c b/c/src/lib/libbsp/shared/main.c index 5a49524cba..f413a0628b 100644 --- a/c/src/lib/libbsp/shared/main.c +++ b/c/src/lib/libbsp/shared/main.c @@ -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; +} + |