Browse Source

Fix PX4IO to run C++ static ctors

sbg
px4dev 12 years ago
parent
commit
d5da457e29
  1. 5
      apps/px4io/px4io.c
  2. 9
      nuttx/configs/px4io/common/ld.script
  3. 2
      nuttx/configs/px4io/io/defconfig

5
apps/px4io/px4io.c

@ -55,10 +55,15 @@
__EXPORT int user_start(int argc, char *argv[]); __EXPORT int user_start(int argc, char *argv[]);
extern void up_cxxinitialize(void);
struct sys_state_s system_state; struct sys_state_s system_state;
int user_start(int argc, char *argv[]) int user_start(int argc, char *argv[])
{ {
/* run C++ ctors before we go any further */
up_cxxinitialize();
/* reset all to zero */ /* reset all to zero */
memset(&system_state, 0, sizeof(system_state)); memset(&system_state, 0, sizeof(system_state));

9
nuttx/configs/px4io/common/ld.script

@ -74,6 +74,15 @@ SECTIONS
_etext = ABSOLUTE(.); _etext = ABSOLUTE(.);
} > flash } > flash
/*
* Init functions (static constructors and the like)
*/
.init_section : {
_sinit = ABSOLUTE(.);
KEEP(*(.init_array .init_array.*))
_einit = ABSOLUTE(.);
} > flash
.ARM.extab : { .ARM.extab : {
*(.ARM.extab*) *(.ARM.extab*)
} > flash } > flash

2
nuttx/configs/px4io/io/defconfig

@ -345,7 +345,7 @@ CONFIG_DEBUG_INPUT=n
CONFIG_MSEC_PER_TICK=1 CONFIG_MSEC_PER_TICK=1
CONFIG_HAVE_CXX=y CONFIG_HAVE_CXX=y
CONFIG_HAVE_CXXINITIALIZE=n CONFIG_HAVE_CXXINITIALIZE=y
CONFIG_MM_REGIONS=1 CONFIG_MM_REGIONS=1
CONFIG_MM_SMALL=y CONFIG_MM_SMALL=y
CONFIG_ARCH_LOWPUTC=y CONFIG_ARCH_LOWPUTC=y

Loading…
Cancel
Save