This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Problems with Newlib built with Clang for Cortex-M


Hello, I'm doing a project using RIOT-OS on Cortex-M.
I would like to instrument the code that are linked into the final binary
using LLVM. Since RIOT-OS uses newlib, I tried to compile newlib using
Clang.

I used the GNU ARM Embedded Toolchain (gcc-arm-none-eabi-7-2018-q2-update)
with 20180831 snapshot of newlib, clang-7.0.0, and RIOT-OS 2018.10 branch.

First there were a few compile errors.
(libgloss/arm/linux-syscalls0.S - GLOBAL => global  on line 105
liggloss/libnosys/warning.h -  define stub_warning as null
newlib/libc/machine/arm/strlen-thumb2-Os.S) - ldrb.w => ldrb (line 48)

(The fact that these are all quite old files gives me a feeling that newlib
is not really serious about supporting Clang??)

After I fixed the errors I could get the library file.
But when I tried to run the application on Cortex-M3 (Arduino-due board),
some of the app crash or produce incorrect results.
One of the bug I suspect is with newlib/libc/stdlib/dtoa.c  file, since it
makes my system halt when I try to print floating point number.
(I looked up the internet and added -fno-strict-aliasing flag to cflags
with no luck.)
When I replaced that specific object file in the libc library with the
gcc-compiled one, the app does not crash. (However, it still produces
incorrect results)
Replacing libm with the gcc-compiled version corrected the results to some
extent, but the floating point numbers are randomly printed with wrong sign.

I would very much appreciate any help on this issue.

Regards,
Jangseop


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]