tools/mksymtab.sh: Support adding additional symbols that are not in undefined list
e.g. For CHRE dynamic nanoapps, pre-saving symbols that may be used later, no need recompiling. Test: (unique & sorted) $ nm ./hello_world.o | grep " U " U __aeabi_unwind_cpp_pr1 U chreGetTime U chreGetVersion U chreLog U __stack_chk_fail U __stack_chk_guard $ cat additional.txt -n 1 test_symbol 2 test_symbol $ /PATH/TO/APPS/tools/mksymtab.sh ./hello_world.o MY_PREFIX -a additional.txt #include <nuttx/compiler.h> #include <nuttx/symtab.h> extern void *__aeabi_unwind_cpp_pr1; extern void *__stack_chk_fail; extern void *__stack_chk_guard; extern void *chreGetTime; extern void *chreGetVersion; extern void *chreLog; extern void *test_symbol; const struct symtab_s MY_PREFIX_exports[] = { {"__aeabi_unwind_cpp_pr1", &__aeabi_unwind_cpp_pr1}, {"__stack_chk_fail", &__stack_chk_fail}, {"__stack_chk_guard", &__stack_chk_guard}, {"chreGetTime", &chreGetTime}, {"chreGetVersion", &chreGetVersion}, {"chreLog", &chreLog}, {"test_symbol", &test_symbol}, }; const int MY_PREFIX_nexports = sizeof(MY_PREFIX_exports) / sizeof(struct symtab_s); Signed-off-by: wangjianyu3 <wangjianyu3@xiaomi.com>
This commit is contained in:
parent
da83fa8ab2
commit
7f7ff8c7d4
@ -21,7 +21,7 @@
|
||||
|
||||
export LC_ALL=C
|
||||
|
||||
usage="Usage: $0 <imagedirpath> [symtabprefix]"
|
||||
usage="Usage: $0 <imagedirpath> [symtabprefix [additionalsymbolspath]]"
|
||||
|
||||
# Check for the required directory path
|
||||
|
||||
@ -36,6 +36,7 @@ fi
|
||||
# Get the symbol table prefix
|
||||
|
||||
prefix=$2
|
||||
add_sym=$3
|
||||
|
||||
# Extract all of the undefined symbols from the ELF files and create a
|
||||
# list of sorted, unique undefined variable names.
|
||||
@ -59,6 +60,18 @@ if [ -z "$varlist" ]; then
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "x$add_sym" != "x" ]; then
|
||||
if [ -f $add_sym ]; then
|
||||
varlist="${varlist}\n$(cat $add_sym)"
|
||||
elif [ -d $add_sym ]; then
|
||||
varlist="${varlist}\n$(find $add_sym -type f | xargs cat)"
|
||||
else
|
||||
echo $usage
|
||||
exit 1
|
||||
fi
|
||||
varlist=$(echo -e "${varlist}" | sort -u)
|
||||
fi
|
||||
|
||||
# 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
|
||||
|
Loading…
Reference in New Issue
Block a user