EmbeddedRelated.com
Forums
The 2024 Embedded Online Conference

makeSymTbl filters required symbols

Started by Unknown January 29, 2009
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?

The 2024 Embedded Online Conference