diff options
author | px4dev <px4@purgatory.org> | 2013-01-17 01:00:46 -0800 |
---|---|---|
committer | px4dev <px4@purgatory.org> | 2013-01-17 01:00:46 -0800 |
commit | 1a532d16dd3a90f20c3668b00ea4f3a86ea32c49 (patch) | |
tree | a770db1fe91e5a3c08e4cb03b216ac36c6f7684d /apps/examples/posix_spawn/filesystem/mksymtab.sh | |
parent | 7d7c352fb44b718cb96096a624a19b5225e39f92 (diff) | |
parent | caeef71797019505fd450b1a0ae573ac5e490c6e (diff) | |
download | px4-firmware-1a532d16dd3a90f20c3668b00ea4f3a86ea32c49.tar.gz px4-firmware-1a532d16dd3a90f20c3668b00ea4f3a86ea32c49.tar.bz2 px4-firmware-1a532d16dd3a90f20c3668b00ea4f3a86ea32c49.zip |
Merge NuttX r5527
Diffstat (limited to 'apps/examples/posix_spawn/filesystem/mksymtab.sh')
-rwxr-xr-x | apps/examples/posix_spawn/filesystem/mksymtab.sh | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/apps/examples/posix_spawn/filesystem/mksymtab.sh b/apps/examples/posix_spawn/filesystem/mksymtab.sh new file mode 100755 index 000000000..51408a89c --- /dev/null +++ b/apps/examples/posix_spawn/filesystem/mksymtab.sh @@ -0,0 +1,51 @@ +#!/bin/bash + +usage="Usage: $0 <test-dir-path>" + +# Check for the required ROMFS directory path + +dir=$1 +if [ -z "$dir" ]; then + echo "ERROR: Missing <test-dir-path>" + echo "" + echo $usage + exit 1 +fi + +if [ ! -d "$dir" ]; then + echo "ERROR: Directory $dir does not exist" + echo "" + echo $usage + exit 1 +fi + +# Extract all of the undefined symbols from the ELF files and create a +# list of sorted, unique undefined variable names. + +varlist=`find ${dir} -executable -type f | xargs nm | fgrep ' U ' | sed -e "s/^[ ]*//g" | cut -d' ' -f2 | sort | uniq` + +# Now output the symbol table as a structure in a C source file. All +# undefined symbols are declared as void* types. If the toolchain does +# any kind of checking for function vs. data objects, then this could +# faile + +echo "#include <nuttx/compiler.h>" +echo "#include <nuttx/binfmt/symtab.h>" +echo "" + +for var in $varlist; do + echo "extern void *${var};" +done + +echo "" +echo "const struct symtab_s exports[] = " +echo "{" + +for var in $varlist; do + echo " {\"${var}\", &${var}}," +done + +echo "};" +echo "" +echo "const int nexports = sizeof(exports) / sizeof(struct symtab_s);" + |