summaryrefslogtreecommitdiff
path: root/apps/examples/nxflat
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-19 21:16:03 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-19 21:16:03 +0000
commit1f5151d2c5574cbb57e57ea32416ca8970e0dec4 (patch)
tree96a1a335193aa75f1690a4226655ddbf2dc7bb73 /apps/examples/nxflat
parent913f876fac94f21a683809d9f648e4793f61e237 (diff)
downloadnuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.tar.gz
nuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.tar.bz2
nuttx-1f5151d2c5574cbb57e57ea32416ca8970e0dec4.zip
Some minor fixes for CONFIG_ADDRENV=y
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5444 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/examples/nxflat')
-rw-r--r--apps/examples/nxflat/nxflat_main.c41
1 files changed, 38 insertions, 3 deletions
diff --git a/apps/examples/nxflat/nxflat_main.c b/apps/examples/nxflat/nxflat_main.c
index 638e960a0..536bc1dd8 100644
--- a/apps/examples/nxflat/nxflat_main.c
+++ b/apps/examples/nxflat/nxflat_main.c
@@ -69,6 +69,10 @@
# error "You must provide file descriptors via CONFIG_NFILE_DESCRIPTORS in your configuration file"
#endif
+#ifdef CONFIG_BINFMT_DISABLE
+# error "The binary loader is disabled (CONFIG_BINFMT_DISABLE)!"
+#endif
+
#ifndef CONFIG_NXFLAT
# error "You must select CONFIG_NXFLAT in your configuration file"
#endif
@@ -125,7 +129,9 @@
static const char delimiter[] =
"****************************************************************************";
-static char path[128];
+#ifndef CONFIG_BINFMT_EXEPATH
+static char fullpath[128];
+#endif
/****************************************************************************
* Private Functions
@@ -188,19 +194,46 @@ int nxflat_main(int argc, char *argv[])
nxflat_uninitialize();
}
+ /* Does the system support the PATH variable? Has the PATH variable
+ * already been set? If YES and NO, then set the PATH variable to
+ * the ROMFS mountpoint.
+ */
+
+#if defined(CONFIG_BINFMT_EXEPATH) && !defined(CONFIG_PATH_INITIAL)
+ (void)setenv("PATH", MOUNTPT, 1);
+#endif
+
/* Now excercise every progrm in the ROMFS file system */
for (i = 0; dirlist[i]; i++)
{
+ /* Output a seperated so that we can clearly discrinmate the output of
+ * this program from the others.
+ */
+
testheader(dirlist[i]);
+ /* Initialize the binary_s structure */
+
memset(&bin, 0, sizeof(struct binary_s));
- snprintf(path, 128, "%s/%s", MOUNTPT, dirlist[i]);
- bin.filename = path;
+ /* If the binary loader does not support the PATH variable, then
+ * create the full path to the executable program. Otherwise,
+ * use the relative path so that the binary loader will have to
+ * search the PATH variable to find the executable.
+ */
+
+#ifdef CONFIG_BINFMT_EXEPATH
+ bin.filename = dirlist[i];
+#else
+ snprintf(fullpath, 128, "%s/%s", MOUNTPT, dirlist[i]);
+ bin.filename = fullpath;
+#endif
bin.exports = exports;
bin.nexports = NEXPORTS;
+ /* Load the NXFLAT module */
+
ret = load_module(&bin);
if (ret < 0)
{
@@ -208,6 +241,8 @@ int nxflat_main(int argc, char *argv[])
exit(1);
}
+ /* Execute the ELF module */
+
ret = exec_module(&bin, 50);
if (ret < 0)
{