I am using VxWorks 5.5 with a BSP for the 5307 Coldfire CPU, and the Diab 4.4 compiler. The problem is this: The makeSymTbl.tcl script filters symbols that do not begin with an underscore =93_=94. This removes symbols from the symbol table such as =91dbmul=92 and =91fltused=92 found in libdcc.a., libcfp.a, and/or libimpfp.a. When creating a dynamically loadable module (.out), the loadModule function (or ld shell function) can=92t load and link the module because symbols required to perform double/FP arithmetic are not in the symbol table. Undefined symbol: dbmul (binding 1 type 0) Undefined symbol: fltused (binding 1 type 0) These symbols are indeed in the vxWorks image. Here is the code in the makeSymTbl.tcl script. This is a WindRiver build tool for making a standalone symbol table. C:\Tornado2.2\host\src\hutils\makeSymTbl.tcl:134 filters these out. Here is the comment associated with the filter: # for 68k and coldfire, all global symbols which don't begin with '_' # should be filtered out. Such symbols are from assembly code and # can't # be referenced in C file. Subsequently, they can't be in symTbl.c. # To make global symbols defined in assembly code valid for # standalone symbol table, they have to begin with '_'. Note this # is true for 68k and coldfire only. if [regexp {^.* . [^_].*$} $symbolEntry] { if {($cpuType =3D=3D "68k") || ($cpuType =3D=3D "cf")} { continue } } How can we build a dynamic load module (.out) that uses FP arithmetic when the required symbols are removed from the symbol table in the VxWorks kernel executable?

makeSymTbl filters required symbols
Started by ●January 29, 2009
