0c60624276
Update make dependency for elf/module/nxflat/posix_spawn/sotest/thttpd examples which make use of mksymtab.sh. This could avoid them built twice in 'make depend' and 'make all' which would result in file truncated build break. Now only build once by 'make all'. Change-Id: I5d8f1ebbf73e3b12d7d2118f1f51b4233d0ed007 Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
46 lines
972 B
Bash
Executable File
46 lines
972 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
usage="Usage: %0 <test-dir-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
|
|
|
|
varlist=`find $dir -name "*-thunk.S"| xargs grep -h asciz | cut -f3 | 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
|
|
# failed
|
|
|
|
echo "#include <nuttx/compiler.h>"
|
|
echo "#include <nuttx/symtab.h>"
|
|
echo ""
|
|
|
|
for var in $varlist; do
|
|
echo "extern void *${var};"
|
|
done
|
|
|
|
echo ""
|
|
echo "const struct symtab_s g_thttpd_exports[] = "
|
|
echo "{"
|
|
|
|
for string in $varlist; do
|
|
var=`echo $string | sed -e "s/\"//g"`
|
|
echo " {$string, $var},"
|
|
done
|
|
|
|
echo "};"
|
|
echo "const int g_thttpd_nexports = sizeof(g_thttpd_exports) / sizeof(struct symtab_s);"
|