From 8103e0321234bec9383d442068a66162e67c2598 Mon Sep 17 00:00:00 2001 From: Gregory Nutt Date: Thu, 16 May 2013 09:36:55 -0600 Subject: apps/examples/helloxx entry point name was mangled when built as an NSH builtin; plus some README updates --- apps/ChangeLog.txt | 2 ++ apps/examples/Makefile | 5 +---- apps/examples/cxxtest/Makefile | 2 +- apps/examples/helloxx/Makefile | 2 +- apps/examples/helloxx/helloxx_main.cxx | 40 ++++++++++++++++++---------------- 5 files changed, 26 insertions(+), 25 deletions(-) (limited to 'apps') diff --git a/apps/ChangeLog.txt b/apps/ChangeLog.txt index ec626ea84..a7f0fad8b 100644 --- a/apps/ChangeLog.txt +++ b/apps/ChangeLog.txt @@ -553,3 +553,5 @@ is not selected. Also, complete the empty Kconfig file (2013-5-7). * apps/NxWidgets/Kconfig: Updated to match NxWidgets/Kconfig by Ken Pettit (2013-5-11). + * apps/examples/helloxx: C++ name mangling was occurring when this + example is built as an NSH built-in application. (2013-5-16). diff --git a/apps/examples/Makefile b/apps/examples/Makefile index a10fef5dc..7827bf9a3 100644 --- a/apps/examples/Makefile +++ b/apps/examples/Makefile @@ -59,13 +59,10 @@ CNTXTDIRS = pwm ifeq ($(CONFIG_NSH_BUILTIN_APPS),y) CNTXTDIRS += adc can cdcacm composite cxxtest dhcpd discover flash_test ftpd -CNTXTDIRS += hello json keypadtestmodbus mtdpart nettest nxlines relays +CNTXTDIRS += hello helloxx json keypadtestmodbus mtdpart nettest nxlines relays CNTXTDIRS += qencoder smart_test telnetd watchdog wgetjson endif -ifeq ($(CONFIG_EXAMPLES_HELLOXX_BUILTIN),y) -CNTXTDIRS += helloxx -endif ifeq ($(CONFIG_EXAMPLES_LCDRW_BUILTIN),y) CNTXTDIRS += lcdrw endif diff --git a/apps/examples/cxxtest/Makefile b/apps/examples/cxxtest/Makefile index 97fdb6ede..ecdc1d4fb 100644 --- a/apps/examples/cxxtest/Makefile +++ b/apps/examples/cxxtest/Makefile @@ -100,7 +100,7 @@ $(CXXOBJS): %$(OBJEXT): %.cxx $(call ARCHIVE, $(BIN), $(OBJS)) @touch .built -ifeq ($(CONFIG_EXAMPLES_HELLOXX_BUILTIN),y) +ifeq ($(CONFIG_NSH_BUILTIN_APPS),y) $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME)_main.bdat: $(DEPCONFIG) Makefile $(call REGISTER,$(APPNAME),$(PRIORITY),$(STACKSIZE),$(APPNAME)_main) diff --git a/apps/examples/helloxx/Makefile b/apps/examples/helloxx/Makefile index 44d880658..5cbe7dd59 100644 --- a/apps/examples/helloxx/Makefile +++ b/apps/examples/helloxx/Makefile @@ -100,7 +100,7 @@ $(CXXOBJS): %$(OBJEXT): %.cxx $(call ARCHIVE, $(BIN), $(OBJS)) @touch .built -ifeq ($(CONFIG_EXAMPLES_HELLOXX_BUILTIN),y) +ifeq ($(CONFIG_NSH_BUILTIN_APPS),y) $(BUILTIN_REGISTRY)$(DELIM)$(APPNAME)_main.bdat: $(DEPCONFIG) Makefile $(call REGISTER,$(APPNAME),$(PRIORITY),$(STACKSIZE),$(APPNAME)_main) diff --git a/apps/examples/helloxx/helloxx_main.cxx b/apps/examples/helloxx/helloxx_main.cxx index 60fd0487b..eeca52263 100644 --- a/apps/examples/helloxx/helloxx_main.cxx +++ b/apps/examples/helloxx/helloxx_main.cxx @@ -1,7 +1,7 @@ //*************************************************************************** // examples/helloxx/helloxx_main.cxx // -// Copyright (C) 2009, 2011-2012 Gregory Nutt. All rights reserved. +// Copyright (C) 2009, 2011-2013 Gregory Nutt. All rights reserved. // Author: Gregory Nutt // // Redistribution and use in source and binary forms, with or without @@ -128,38 +128,40 @@ static CHelloWorld g_HelloWorld; * Name: helloxx_main ****************************************************************************/ -int helloxx_main(int argc, char *argv[]) +extern "C" { - // If C++ initialization for static constructors is supported, then do - // that first + int helloxx_main(int argc, char *argv[]) + { + // If C++ initialization for static constructors is supported, then do + // that first #ifdef CONFIG_HAVE_CXXINITIALIZE - up_cxxinitialize(); + up_cxxinitialize(); #endif - // Exercise an explictly instantiated C++ object + // Exercise an explictly instantiated C++ object - CHelloWorld *pHelloWorld = new CHelloWorld; - printf("helloxx_main: Saying hello from the dynamically constructed instance\n"); - pHelloWorld->HelloWorld(); + CHelloWorld *pHelloWorld = new CHelloWorld; + printf("helloxx_main: Saying hello from the dynamically constructed instance\n"); + pHelloWorld->HelloWorld(); - // Exercise an C++ object instantiated on the stack + // Exercise an C++ object instantiated on the stack #ifndef CONFIG_EXAMPLES_HELLOXX_NOSTACKCONST - CHelloWorld HelloWorld; + CHelloWorld HelloWorld; - printf("helloxx_main: Saying hello from the instance constructed on the stack\n"); - HelloWorld.HelloWorld(); + printf("helloxx_main: Saying hello from the instance constructed on the stack\n"); + HelloWorld.HelloWorld(); #endif - // Exercise an statically constructed C++ object + // Exercise an statically constructed C++ object #ifdef CONFIG_HAVE_CXXINITIALIZE - printf("helloxx_main: Saying hello from the statically constructed instance\n"); - g_HelloWorld.HelloWorld(); + printf("helloxx_main: Saying hello from the statically constructed instance\n"); + g_HelloWorld.HelloWorld(); #endif - delete pHelloWorld; - return 0; + delete pHelloWorld; + return 0; + } } - -- cgit v1.2.3