ARM-software / LLVM-embedded-toolchain-for-Arm

A project dedicated to building LLVM toolchain for 32-bit Arm embedded targets.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

clang/clang++ multi-lib selection: prefer no rtti, no exceptions variant for clang

JoshuaYonathan opened this issue · comments

Hello,

When I run the following command:
clang -print-multi-directory --target=arm-none-eabi -march=armv7e-m -mfloat-abi=hard -mfpu=fpv5-d16

I expect the output:
arm-none-eabi/armv7em_hard_fpv5_d16

However, I get the output:
arm-none-eabi/armv7em_hard_fpv5_d16_exn_rtti

Adding the -fno-rtti -fno-exceptions flags gets me the output I expect, but wouldn't it be the correct behavior to select the non-exn_rtti libs when invoking clang and not clang++?

Hi Joshua,

Thank you for reaching out!

-fno-rtti -fno-exceptions should not have impact on C code generation and thus the C libraries, so effectively C libraries in both folders armv7em_hard_fpv5_d16 and armv7em_hard_fpv5_d16_exn_rtti must be the same. Which is not ideal, but this is how the multilib setup works now.

For a C project library folder selection should not make a difference, however I agree that it would be cleaner to select armv7em_hard_fpv5_d16 when clang is used as you suggested. I will keep this issue as an improvement in the multilib setup.