Hi,

I've been working on ELF binary loading for the eZ80. I'm compiling
with CONFIG_SYSTEM_NSH=m to produce a stand-alone nsh binary.

I'm finding the symbol tables (both the one generated in libs/libc
with CONFIG_EXECFUNCS_SYSTEM_SYMTAB=y and the one generated in apps) to be
wrong when it comes to C functions having a prepended underscore - the
system symtab doesn't prepend an underscore, so all symbol lookups fail.
The apps symtab does prepend an underscore to its "extern" definitions, so
any use of that symbol table fails with undefined external references.

Is this a configuration issue on my end?

I've modified tools/mksymtab to (a) prepend an underscore to the symbol's
name, and (b) prepend an "&" to the symbol's value. The latter change
allows exporting global variables like optarg and optind - I've also added
a number of missing symbols to syscall/syscall.csv and libs/libc/libc.csv.

I can now boot a NuttX kernel with no shell and successfully execute nsh
from SD card after my changes, but before I start making PRs I'd like to
understand if the difficulties I've faced are a PEBKAC issue or something
others encounter.

(I'll also be contributing the Z80 elf loader, but it's not useful if
you're using ZDS-II.)

-- 
Byron

Reply via email to