-
Couldn't load subscription status.
- Fork 15k
Open
Description
While building LLVM 17.0.0 rc1 on Solaris/amd64, two test-suite tests FAILed to link, breaking the test-suite build:
FAILED: MicroBenchmarks/XRay/ReturnReference/retref-bench
[...]
Undefined first referenced
symbol in file
__xray_set_handler MicroBenchmarks/XRay/ReturnReference/CMakeFiles/retref-bench.dir/retref-bench.cc.o
__xray_patch MicroBenchmarks/XRay/ReturnReference/CMakeFiles/retref-bench.dir/retref-bench.cc.o
__xray_remove_handler MicroBenchmarks/XRay/ReturnReference/CMakeFiles/retref-bench.dir/retref-bench.cc.o
__xray_unpatch MicroBenchmarks/XRay/ReturnReference/CMakeFiles/retref-bench.dir/retref-bench.cc.o
ld: fatal: symbol referencing errors
FAILED: MicroBenchmarks/XRay/FDRMode/fdrmode-bench
[...]
Undefined first referenced
symbol in file
__xray_log_flushLog MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_log_init_mode MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_patch MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_remove_customevent_handler MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_unpatch MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_log_finalize MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
__xray_log_select_mode MicroBenchmarks/XRay/FDRMode/CMakeFiles/fdrmode-bench.dir/fdrmode-bench.cc.o
ld: fatal: symbol referencing errors
This is a regression from LLVM 16 and caused by problems of the MicroBenchmarks/XRay/CMakeLists.txt XRay checks. The build log shows
-- Performing Test COMPILER_HAS_FXRAY_INSTRUMENT
-- Performing Test COMPILER_HAS_FXRAY_INSTRUMENT - Success
-- Looking for include file xray/xray_interface.h
-- Looking for include file xray/xray_interface.h - found
-- XRay tests enabled
- The first test obviously passed for a
test-release.shbuild: the just-builtclangalways supports the-fxray-instrumentflag. - The test for
xray/xray_interface.halways passes as well: the XRay headers are always installed, irrespective whether XRay is supported on a particular target. I believe this is something that should be fixed, thus avoiding the problem in the first place. - The cmake tests are thus at least incomplete, wrong in the worst case. They should check if an executable using XRay can be compiled and linked. This way, the hack in
CMakeLists.txtto check forx86 && !darwin(which is practically guaranteed to become stale) can be avoided.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
Needs Triage