I am trying to cross compile with clang and run Undefined Behavior Sanitizer for .c file
Command I am running
clang -target sparc -integrated-as -fuse-ld=lld -fsanitize=undefined test1.c
clang is the cross compiler
sparc is the target architecture.
-integrated-as to use the llvm assembler
-fuse-ld=lld to use lld linker
-fsanitize=undefined to run UBSan
Error
ld.lld: error: /tmp/test1-43c7c0.o is incompatible with elf64-x86-64
collect2: error: ld returned 1 exit status
clang-11: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
My system
Ubuntu 18.04
x86_64
command executed on ubuntu terminal
without -target sparc on a file.c which does not contain sparc assembly the clang works fine
I am trying to cross compile with clang and run Undefined Behavior Sanitizer for .c file
Command I am running
clang -target sparc -integrated-as -fuse-ld=lld -fsanitize=undefined test1.c
clang is the cross compiler
sparc is the target architecture.
-integrated-as to use the llvm assembler
-fuse-ld=lld to use lld linker
-fsanitize=undefined to run UBSan
Error
ld.lld: error: /tmp/test1-43c7c0.o is incompatible with elf64-x86-64
collect2: error: ld returned 1 exit status
clang-11: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)
My system
Ubuntu 18.04
x86_64
command executed on ubuntu terminal
without -target sparc on a file.c which does not contain sparc assembly the clang works fine
This is the same problem you had with as. You need to properly specify the target and have the target as and ld in your PATH.
–joel