Build failures with new macOS/Xcode versions
varungandhi-src opened this issue · comments
Varun Gandhi commented
❯ clang --version
Apple clang version 15.0.0 (clang-1500.1.0.2.5)
Target: arm64-apple-darwin23.1.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
scip-clang commit: 3035e46
The binaries that are build require rpath to be set:
❯ otool -L /private/var/tmp/_bazel_varun/556335f3782e99575c0c742955be4ea7/execroot/scip_clang/bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/llvm-project/clang/clang-tblgen
/private/var/tmp/_bazel_varun/556335f3782e99575c0c742955be4ea7/execroot/scip_clang/bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/llvm-project/clang/clang-tblgen:
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1336.61.1)
/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 1600.157.0)
/usr/lib/libc++abi.dylib (compatibility version 1.0.0, current version 1600.157.0)
@rpath/libunwind.1.dylib (compatibility version 1.0.0, current version 1.0.0)
But there is no LC_RPATH command in the output of otool -l
/private/var/tmp/_bazel_varun/556335f3782e99575c0c742955be4ea7/execroot/scip_clang/bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/llvm-project/clang/clang-tblgen:
Load command 0
cmd LC_SEGMENT_64
cmdsize 72
segname __PAGEZERO
vmaddr 0x0000000000000000
vmsize 0x0000000100000000
fileoff 0
filesize 0
maxprot 0x00000000
initprot 0x00000000
nsects 0
flags 0x0
Load command 1
cmd LC_SEGMENT_64
cmdsize 792
segname __TEXT
vmaddr 0x0000000100000000
vmsize 0x0000000000244000
fileoff 0
filesize 2375680
maxprot 0x00000005
initprot 0x00000005
nsects 9
flags 0x0
Section
sectname __text
segname __TEXT
addr 0x000000010000523c
size 0x00000000001c5aac
offset 21052
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __stubs
segname __TEXT
addr 0x00000001001cace8
size 0x00000000000009fc
offset 1879272
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000408
reserved1 0 (index into indirect symbol table)
reserved2 12 (size of stubs)
Section
sectname __stub_helper
segname __TEXT
addr 0x00000001001cb6e4
size 0x000000000000099c
offset 1881828
align 2^2 (4)
reloff 0
nreloc 0
flags 0x80000400
reserved1 0
reserved2 0
Section
sectname __init_offsets
segname __TEXT
addr 0x00000001001cc080
size 0x0000000000000010
offset 1884288
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000016
reserved1 0
reserved2 0
Section
sectname __gcc_except_tab
segname __TEXT
addr 0x00000001001cc090
size 0x0000000000012268
offset 1884304
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __cstring
segname __TEXT
addr 0x00000001001de2f8
size 0x0000000000016066
offset 1958648
align 2^0 (1)
reloff 0
nreloc 0
flags 0x00000002
reserved1 0
reserved2 0
Section
sectname __const
segname __TEXT
addr 0x00000001001f4360
size 0x000000000000a6de
offset 2048864
align 2^4 (16)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __unwind_info
segname __TEXT
addr 0x00000001001fea40
size 0x000000000000a408
offset 2091584
align 2^2 (4)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __eh_frame
segname __TEXT
addr 0x0000000100208e48
size 0x000000000003b1b4
offset 2133576
align 2^3 (8)
reloff 0
nreloc 0
flags 0x6800000b
reserved1 0
reserved2 0
Load command 2
cmd LC_SEGMENT_64
cmdsize 232
segname __DATA_CONST
vmaddr 0x0000000100244000
vmsize 0x000000000000c000
fileoff 2375680
filesize 49152
maxprot 0x00000003
initprot 0x00000003
nsects 2
flags 0x10
Section
sectname __got
segname __DATA_CONST
addr 0x0000000100244000
size 0x00000000000002a8
offset 2375680
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000006
reserved1 213 (index into indirect symbol table)
reserved2 0
Section
sectname __const
segname __DATA_CONST
addr 0x00000001002442a8
size 0x000000000000ac88
offset 2376360
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Load command 3
cmd LC_SEGMENT_64
cmdsize 552
segname __DATA
vmaddr 0x0000000100250000
vmsize 0x0000000000004000
fileoff 2424832
filesize 16384
maxprot 0x00000003
initprot 0x00000003
nsects 6
flags 0x0
Section
sectname __la_symbol_ptr
segname __DATA
addr 0x0000000100250000
size 0x0000000000000658
offset 2424832
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000007
reserved1 298 (index into indirect symbol table)
reserved2 0
Section
sectname __data
segname __DATA
addr 0x0000000100250658
size 0x0000000000000100
offset 2426456
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
Section
sectname __thread_vars
segname __DATA
addr 0x0000000100250758
size 0x0000000000000060
offset 2426712
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000013
reserved1 0
reserved2 0
Section
sectname __thread_bss
segname __DATA
addr 0x00000001002507b8
size 0x000000000000001c
offset 2426808
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000012
reserved1 0
reserved2 0
Section
sectname __bss
segname __DATA
addr 0x00000001002507d8
size 0x0000000000002638
offset 0
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Section
sectname __common
segname __DATA
addr 0x0000000100252e10
size 0x00000000000000a9
offset 0
align 2^3 (8)
reloff 0
nreloc 0
flags 0x00000001
reserved1 0
reserved2 0
Load command 4
cmd LC_SEGMENT_64
cmdsize 72
segname __LINKEDIT
vmaddr 0x0000000100254000
vmsize 0x00000000000c4000
fileoff 2441216
filesize 798096
maxprot 0x00000001
initprot 0x00000001
nsects 0
flags 0x0
Load command 5
cmd LC_DYLD_INFO_ONLY
cmdsize 48
rebase_off 2441216
rebase_size 1928
bind_off 2443144
bind_size 3960
weak_bind_off 2447104
weak_bind_size 13208
lazy_bind_off 2460312
lazy_bind_size 5824
export_off 2466136
export_size 98912
Load command 6
cmd LC_SYMTAB
cmdsize 24
symoff 2572536
nsyms 8054
stroff 2703408
strsize 510656
Load command 7
cmd LC_DYSYMTAB
cmdsize 80
ilocalsym 0
nlocalsym 5414
iextdefsym 5414
nextdefsym 2372
iundefsym 7786
nundefsym 268
tocoff 0
ntoc 0
modtaboff 0
nmodtab 0
extrefsymoff 0
nextrefsyms 0
indirectsymoff 2701400
nindirectsyms 501
extreloff 0
nextrel 0
locreloff 0
nlocrel 0
Load command 8
cmd LC_LOAD_DYLINKER
cmdsize 32
name /usr/lib/dyld (offset 12)
Load command 9
cmd LC_UUID
cmdsize 24
uuid 5AEFC811-54DE-3AC8-8F3E-5E7BBAF982C6
Load command 10
cmd LC_BUILD_VERSION
cmdsize 32
platform 1
minos 14.0
sdk 14.0
ntools 1
tool 3
version 1022.1
Load command 11
cmd LC_SOURCE_VERSION
cmdsize 16
version 0.0
Load command 12
cmd LC_MAIN
cmdsize 24
entryoff 873392
stacksize 0
Load command 13
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libSystem.B.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1336.61.1
compatibility version 1.0.0
Load command 14
cmd LC_LOAD_DYLIB
cmdsize 48
name /usr/lib/libc++.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1600.157.0
compatibility version 1.0.0
Load command 15
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/lib/libc++abi.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1600.157.0
compatibility version 1.0.0
Load command 16
cmd LC_LOAD_DYLIB
cmdsize 56
name @rpath/libunwind.1.dylib (offset 24)
time stamp 2 Thu Jan 1 08:00:02 1970
current version 1.0.0
compatibility version 1.0.0
Load command 17
cmd LC_FUNCTION_STARTS
cmdsize 16
dataoff 2565048
datasize 7488
Load command 18
cmd LC_DATA_IN_CODE
cmdsize 16
dataoff 2572536
datasize 0
Load command 19
cmd LC_CODE_SIGNATURE
cmdsize 16
dataoff 3214064
datasize 25248
Consequently, there is a failure when attempting to run the binaries (here is an example)
ERROR: /private/var/tmp/_bazel_varun/556335f3782e99575c0c742955be4ea7/external/llvm-project/llvm/BUILD.bazel:724:11: Generating code from table: include/llvm/IR/Intrinsics.td @llvm-project//llvm:intrinsic_RISCV_gen__gen_intrinsic_enums__intrinsic_prefix_riscv_genrule failed: (Aborted): bash failed: error executing command (from target @llvm-project//llvm:intrinsic_RISCV_gen__gen_intrinsic_enums__intrinsic_prefix_riscv_genrule) /bin/bash -c ... (remaining 1 argument skipped)
dyld[14979]: Library not loaded: @rpath/libunwind.1.dylib
Referenced from: <0A452CEC-C892-3712-8A76-60D49AC12E0B> /private/var/tmp/_bazel_varun/556335f3782e99575c0c742955be4ea7/execroot/scip_clang/bazel-out/darwin_arm64-opt-exec-2B5CBBC6/bin/external/llvm-project/llvm/llvm-tblgen
Reason: no LC_RPATH's found
I cannot quite tell what changed from before -- is libunwind
missing from some system directory, is it not getting built for some reason, was LC_RPATH
set before but it isn't being set now...
Varun Gandhi commented
It looks like libunwind
is present in the toolchain.
❯ file bazel-scip-clang/external/llvm_toolchain_llvm/lib/libunwind.1.dylib
bazel-scip-clang/external/llvm_toolchain_llvm/lib/libunwind.1.dylib: Mach-O 64-bit dynamically linked shared library arm64
Varun Gandhi commented
It looks like #461 should fix this to some extent (the CI build pipeline works for macOS - https://github.com/sourcegraph/scip-clang/actions/runs/8106024167), still need to figure out my local build.