ARM newlib oddity

Duane Ellis duane@duaneellis.com
Sun Oct 9 08:31:00 GMT 2011


 >>  I find that when I try and use time() that a syscalls file gets 
linked in which conflicts with the one I am supplying.

 >> [snip, many examples of duplicate symbol errors].

What is happening is this:

     The NEWLIB file you are linking with defines a few extra symbols 
that your replacement is not defining.
     Those other symbols are needed (for some reason) and thus, the 
NEWLIB supplied syscalls are being brought in.

You need a list of symbols supplied by both, the newlib-syscalls, and 
your syscalls.

You can create this list with the "nm" command, often the generic NM 
command just works, sometimes you need your build specific one, which 
should be:  'arm-non-eabi-nm'  {same prefix as your gcc}

Step 1:  Run NM against your syscalls.
Step 2: Run NM against the NEWLIB library that is being brought in.
Step 3: Compare the resulting lists.

Actually, all the duplicates are the ones that both are supplying,

you want the list of missing names.

-Duane.



More information about the Newlib mailing list