This is a discussion on PowerPC: loadModule - symbols not found by another downloaded module - VxWorks ; I have a bunch of precompiled .o files that I store in flash. These modules are loaded using loadModule in my UsrAppInit. After boot, I invoke moduleShow from a windshell and the serial terminal - both list all the .o ...
I have a bunch of precompiled .o files that I store in flash.
These modules are loaded using loadModule in my UsrAppInit.
After boot, I invoke moduleShow from a windshell and the serial terminal -
both list all the .o files.
A lkup "allocateData" in both windshell and serial term identifies a
function that is containe in one of the .o files and gives an address for
Using Tornado, I build and download an app that depends on some of the
external libraries. If I don't get UsrAppInit to load the modules before I
download, I get a "unresolved symbols" error msg from Tornado. If
UsrAppInit calls loadModule successfully, the Tornado download gives no
error msg at all.
I invoke the application from a windhsell and allow it to run. When it
tries to invoke a function from the preloaded modules (eg. allocateData()),
I get a memory at 0x0000 accessed error in the debugger.
If I add some code before the call to allocateData to do a symFindByName
using the name "allocateData", the code loads my function pointer with the
same address I see when I do the lkup "allocateData" from the windshell.
If I have UsrAppInit loadModule the application as well as the .o files, it
all works okay. Similarly, if I download the .o files and the application
from Tornado, it all works fine again - it's just this mix of some modules
loaded via UsrAppInit calling loadModule and the application downloaded
using the debugger that fails.
It sounds to me like the running application downloaded from Tornado and
started from a windshell cannot successfully resolve symbols from a file
loaded using loadModule. In spite of the fact that the Torando download
does not report any unresolved symbols.
Any ideas? Before anyone suggests it, Symbol Table Synch is already ON for
*all* symbols in the target server. Both modules and application are built
using the same set of compiler switches (-mlongcall etc).