You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
r301016 enabled CFI tests using ThinLTO on Darwin, but those are failing:
ld: warning: ignoring file /var/folders/09/r4vw4v8n5kb67jl66zvlbljw0000gn/T/lit_tmp_j2NEGY/nvcall-1477f4.o, file was built for unsupported file format ( 0x42 0x43 0xC0 0xDE 0x35 0x14 0x00 0x00 0x05 0x00 0x00 0x00 0x62 0x0C 0x30 0x24 ) which is not the architecture being linked (x86_64): /var/folders/09/r4vw4v8n5kb67jl66zvlbljw0000gn/T/lit_tmp_j2NEGY/nvcall-1477f4.o
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
This has no hope of working until ld64 is changed to use the resolution-based LTO API. Until then, we will need to change the clang driver to prevent the use of -flto=thin with -fsanitize=cfi (and -fwhole-program-vtables).
Extended Description
r301016 enabled CFI tests using ThinLTO on Darwin, but those are failing:
ld: warning: ignoring file /var/folders/09/r4vw4v8n5kb67jl66zvlbljw0000gn/T/lit_tmp_j2NEGY/nvcall-1477f4.o, file was built for unsupported file format ( 0x42 0x43 0xC0 0xDE 0x35 0x14 0x00 0x00 0x05 0x00 0x00 0x00 0x62 0x0C 0x30 0x24 ) which is not the architecture being linked (x86_64): /var/folders/09/r4vw4v8n5kb67jl66zvlbljw0000gn/T/lit_tmp_j2NEGY/nvcall-1477f4.o
Undefined symbols for architecture x86_64:
"_main", referenced from:
implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
http://green.lab.llvm.org/green/job/clang-stage1-configure-RA_check/30480/consoleFull#-121919748349ba4694-19c4-4d7e-bec5-911270d8a58c
It seems that -fsanitize=cfi somehow causes -flto=thin to emit bitcode instead of mach-o:
$ ./bin/clang -flto=thin -fvisibility=hidden -fsanitize=cfi /tmp/t.cpp -c && file t.o
t.o: LLVM IR bitcode
$ ./bin/clang -flto=thin -fvisibility=hidden /tmp/t.cpp -c && file t.o
t.o: LLVM bitcode, wrapper x86_64
And it seems that ld64 doesn't accept raw bitcode.
The text was updated successfully, but these errors were encountered: