forked from Imagelibrary/rtems
Patch from Rosimildo DaSilva <rdasilva@connecttel.com> to make C++
exceptions work on the pc386 BSP with i386-elf. This patch also included changes to the i386-rtemself egcs configuration.
This commit is contained in:
@@ -7,6 +7,9 @@
|
|||||||
*cpp:
|
*cpp:
|
||||||
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
|
%(old_cpp) %{qrtems: -D__embedded__} -Asystem(embedded)
|
||||||
|
|
||||||
|
*endfile:
|
||||||
|
crtend.o%s crtn.o%s
|
||||||
|
|
||||||
*lib:
|
*lib:
|
||||||
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
|
%{!qrtems: %(old_lib)} %{qrtems: --start-group \
|
||||||
%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
|
%{!qrtems_debug: -lrtemsall} %{qrtems_debug: -lrtemsall_g} \
|
||||||
@@ -15,7 +18,7 @@
|
|||||||
|
|
||||||
*startfile:
|
*startfile:
|
||||||
%{!qrtems: %(old_startfile)} %{qrtems: \
|
%{!qrtems: %(old_startfile)} %{qrtems: \
|
||||||
%{!qrtems_debug: start.o%s} \
|
%{!qrtems_debug: start.o%s crti.o%s crtbegin.o%s} \
|
||||||
%{qrtems_debug: start_g.o%s}}
|
%{qrtems_debug: start_g.o%s}}
|
||||||
|
|
||||||
*link:
|
*link:
|
||||||
|
|||||||
@@ -39,7 +39,9 @@ include $(RTEMS_ROOT)/make/leaf.cfg
|
|||||||
# (OPTIONAL) Add local stuff here using +=
|
# (OPTIONAL) Add local stuff here using +=
|
||||||
#
|
#
|
||||||
|
|
||||||
DEFINES +=
|
# USE_INIT_FINI tells main.c what C++ help we need.
|
||||||
|
|
||||||
|
DEFINES += -DUSE_INIT_FINI
|
||||||
CPPFLAGS +=
|
CPPFLAGS +=
|
||||||
CFLAGS +=
|
CFLAGS +=
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,12 @@ SECTIONS
|
|||||||
|
|
||||||
_etext = ALIGN( 0x10 ) ;
|
_etext = ALIGN( 0x10 ) ;
|
||||||
}
|
}
|
||||||
.data ADDR( .text ) + SIZEOF( .text ):
|
.init :
|
||||||
|
{ *( .init ) } = 0x9090
|
||||||
|
.fini :
|
||||||
|
{ *( .fini ) } = 0x9090
|
||||||
|
|
||||||
|
.data ADDR( .fini ) + SIZEOF( .fini ):
|
||||||
{
|
{
|
||||||
_data_start = . ;
|
_data_start = . ;
|
||||||
*(.data)
|
*(.data)
|
||||||
|
|||||||
@@ -28,6 +28,11 @@ extern rtems_configuration_table Configuration;
|
|||||||
extern rtems_configuration_table BSP_Configuration;
|
extern rtems_configuration_table BSP_Configuration;
|
||||||
extern rtems_cpu_table Cpu_table;
|
extern rtems_cpu_table Cpu_table;
|
||||||
|
|
||||||
|
#if defined(USE_INIT_FINI)
|
||||||
|
extern void _fini( void );
|
||||||
|
extern void _init( void );
|
||||||
|
#endif
|
||||||
|
|
||||||
rtems_interrupt_level bsp_isr_level;
|
rtems_interrupt_level bsp_isr_level;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -82,6 +87,11 @@ int boot_card(int argc, char **argv)
|
|||||||
* are any.
|
* are any.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USE_INIT_FINI)
|
||||||
|
atexit( _fini );
|
||||||
|
_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
status = main(argc, argv);
|
status = main(argc, argv);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user