#!/usr/bin/env bash usage="Usage: %0 " dir=$1 if [ -z "$dir" ]; then echo "ERROR: Missing " 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 " echo "#include " 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);"