<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/59535>59535</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Crash in llvm-lipo (with minimal repro)
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          sztomi
      </td>
    </tr>
</table>

<pre>
    ## Stacktrace

```
0.      Program arguments: /Users/tamas/.conan_plex/v2/data/clang-bootstrap/15.0.4-5c68a1cb/_/_/package/0dadf5e389aec9c830aab3a96420c9a50871a193/bin/lipo -create -output PrettyStackTrace.o /va
r/folders/qf/hwn8fdhx6k329g6vh0fv9c940000gn/T/PrettyStackTrace-642083/PrettyStackTrace-x86_64.o /var/folders/qf/hwn8fdhx6k329g6vh0fv9c940000gn/T/PrettyStackTrace-b71132/PrettyStackTrace-arm64.
o
Stack dump without symbol names (ensure you have llvm-symbolizer in your PATH or set the environment var `LLVM_SYMBOLIZER_PATH` to point to it):
0  lipo 0x0000000108b37feb llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) + 43
1  lipo 0x0000000108b36f74 llvm::sys::RunSignalHandlers() + 260
2  lipo 0x0000000108b38640 SignalHandler(int) + 272
3 libsystem_platform.dylib 0x00007fff20472d7d _sigtramp + 29
4 libsystem_platform.dylib 0x0002ffff00001f80 _sigtramp + 703686900249120
5 lipo                     0x0000000108ac3c79 llvm::ModuleSymbolTable::addModule(llvm::Module*) + 329
6  lipo 0x0000000108ab42cb llvm::object::IRObjectFile::create(llvm::MemoryBufferRef, llvm::LLVMContext&) + 1291
7  lipo                     0x0000000108ac731f llvm::object::SymbolicFile::createSymbolicFile(llvm::MemoryBufferRef, llvm::file_magic, llvm::LLVMContext*, bool) + 495
8  lipo 0x0000000108a8c6d7 llvm::object::createBinary(llvm::MemoryBufferRef, llvm::LLVMContext*, bool) + 119
9  lipo 0x0000000108a8c9b6 llvm::object::createBinary(llvm::StringRef, llvm::LLVMContext*, bool) + 198
10 lipo 0x0000000108a7e8ed readInputBinaries(llvm::LLVMContext&, llvm::ArrayRef<(anonymous namespace)::InputFile>) + 157
11 lipo 0x0000000108a7de39 main + 4201
12 libdyld.dylib 0x00007fff20448f3d start + 1
13 libdyld.dylib 0x0000000000000006 start + 18446603339974799562
clang-15: error: unable to execute command: Segmentation fault: 11
clang-15: error: lipo command failed due to signal (use -v to see invocation)
PlexBootstrap clang version 15.0.4
Target: arm64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Users/tamas/.conan_plex/v2/data/clang-bootstrap/15.0.4-5c68a1cb/_/_/package/0dadf5e389aec9c830aab3a96420c9a50871a193/bin
clang-15: note: diagnostic msg: Error generating preprocessed source(s) - cannot generate preprocessed source with multiple -arch options.
```

## Steps to repro

1. Symlink `llvm-lipo` to `lipo` in the compiler install dir
2. Use the following source and clang invocation

```cpp
asm(".desc ___crashreporter_info__, 0x10");
```

```
clang++ -flto=thin -arch x86_64 -arch arm64 -c PrettyStackTrace.cpp 
```

The flags are also minimal. 

My steps to minimize the case (in a not too fine granularity) can be found in the git history here, in case that's interesting: https://github.com/sztomi/llvm-lipo-crash-repro

## Context

I was trying to build a PGO-optimized clang on macOS Big Sur using the host Xcode (Apple clang version 13.0.0 (clang-1300.0.29.30)). I ran into all sorts of issues with libtool and lipo:

```
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: Invalid value (Producer: 'LLVM15.0.4' Reader: 'LLVM APPLE_1_1300.0.29.30_0')
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: lib/Demangle/CMakeFiles/LLVMDemangle.dir/Demangle.cpp.o is not an object file (not
allowed in a library)
```

and

```
warning: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: Invalid value (Producer: 'LLVM15.0.4' Reader: 'LLVM APPLE_1_1300.0.29.30_0')
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: can't figure out the architecture type of: /var/folders/qf/hwn8fdhx6k329g6vh0fv9c94000
0gn/T/getErrc-9db0ee/getErrc-x86_64.o
```

While I was able to use `llvm-libtool-darwin` in place of the Xcode libtool via setting `CMAKE_LIBTOOL`, lipo can't be replaced the same way because it's [hardcoded](https://github.com/llvm/llvm-project/blob/main/clang/lib/Driver/ToolChains/Darwin.cpp#L835) in the driver. So I symlinked `llvm-lipo` to `lipo` in the install dir (right next to my stage1 clang I was using). 



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzMWF9z27gR_zTwy444JChR5IMf7DjqeepMPLGv_140SxKk0IAAC4CydZ--swBly4nOvXQ6vdMksgiA-_e3uz8SnZO9FuKSra7Z6uYCJ78z9tL94s0gL2rTHi4ZzxnP4cFj89VbbARLb1h6NX8X6fwvXKYJhM-9Nb3FAdD20yC0dyy_AsY3PzthHeMbjwPS36QxGvV2VOKZ8c2eM75p0SPjm0ah7he1Md55iyPjm2yVpMlysWqKErOmZnyznf-P2HzFXjC-SVtsu5XIywpFUzVlniLWOVbFkqdNhau0XGeYVTnjm1pqxjdKjgYWjRXoBSzM5MfJw70V3h-Cw4_kcGLI9j1GHy3jm86oNnryr47xze5Jl127ey6-5rzqi_0u7fZVUy3TNE17UvPI-OZbqQsyqszP7TyXxbZYHtX-zxTW6yzL-bkdtEOxTKJ_Jv4Ju9BOwwhP0u_M5MEdhtoo0DgIB4yXQrvJCjiYCXa4F6DUfljEQ_IXYUFq2rNwf_X4ExgLTnjwOwFC76U1moABe7TAivTu7i-ftg9__3T9-e72Hx-_bOkWVqTgDYxGak8_pGe8YvmMvBQgJC99TuMnS8s6X3eiDnbQufzKHVz8cW-l9q8OM16-HrL4tDXOW4ED4wXjH0BqUgWMX8Myj-qys-qKbr08p-7LpB9kr1H9hLpVIXHlUSI_Fgs_K7Islim8uZnx8sQgvubx9hyUrN3BeTFsR4W-M3ZI2oOS9Sxx3XUdT5dr3q5b2DrZe4vDGIVUUcbyP8jgXdd1wbSuTL-RsU7zoiyqNOXLKuOzT6vo0rnPqZvY5M26OoncJ9NOSjwE7DxirURcxraNO28Sdly6OsYkP_pTnAkp1kvenILC1P8UjY-_b798DlcbeVQZe8FbfWIw9nA9dZ2wX0RHCHndJOR-MNqLZx_QEy3KeJVFk9bwW0OyzrPuV8yMgZHNt2a-Wf_NJndSie2AvWzeceWK9mpj1EslVKvoUXkuyGVTtOtfsT7aei012sN_GdjvrMmyOeXVeWuquvhRax68lbr_UTuqcm4Q6Rk71qIULViB7a0eJx-USuHeqP0WQKe6r6zFA1mUf2C8RG30YTCTiy14DI2smoFM8iM8Pr7YtlrPtmXnbGtFXsGAUsf08nRGbMapK7QH1Z5rJ8uyy1twHq2PSuab8rM3nXyK05vK5bIo0jzPq2q9XFfVqpi7Wpz72YoIg7DWWPoxaWoJNAPEs2gmL6Axw4C6pc0H0dMkQS-Nhg4nRXmGLHtHXgjGLAI6lEq00E5BgQudl6bb5AQs9mFNCJB6b5qggx2bzb0Sz9dHggJBEeyFdWRHJCvx3CPaXgSjwphd4DgqsWjRPknN06RI5t75uCOgwGBaoej0aJx8jlu32nlUSrQ30v4xqdR3wdbGU6uCVmKvjfOygcH1tPKR0gC90MKil7qH0YrRmkY4J1pwZrJhQDuC8QIa1Nr443Fx7nAgKDBMystRCVigbXZgRkqWS87y1Pn7yGzF6CjPQfLpgSyBh8OgpP5KHCXQG4LOTExoab6SOhCbxgyjVIH5hHxBK-086xP42YlwqDNKmSfye7aeQBjRcwKycxy7Gce4gm4IhIInrXANbLfbxqLbWTEa64XdSt2Z7ZZaSfqcpYzz0Cau3wvF28VgDuPXVKuLTnnD8hu_k3qObeSn80UANSya72lzM47wjs5HCobC3gFaAaicgUFqOaBK4PTcpwO4Y4rCAflLjGSDTkBgR4CEN_DGQCe1gN6inhRa6Q-EogY11BT5SbfHXPXSw046b-wBdsKKyPuiTL9Dz_jaEREUVjhCKSF35_0YGB7fML7ppd9NddKYgfFNfGKiJ4ojShYhJ4vvQDWj7tjyT3Zu4QkdeHsgcHgD9SRVCwj3f_q8IDiT40eoGA0DNp8f4Fr28DBZmFy4aydgZ5yHvzWmDcG5om7zbXfKkzRJaXeu2DxNkzThVZKnBBVeJXALFjUFwAAh2RnrHZgOpHOTcLHklKy9MSogOJTCkZyfzfoTWj0HkvEN2SUj2Kl9BXsTHKk9hdDQQyPf3Ii9UGYkErx5NEY1O5Sv529E6PfJc-OPe4xvJmdPnu-ChaTzVu9RyRb2qKYQmXtr2qkRc0Nd0xye2zZfwxeB7ZstuLq_v_u4zbanwdqmjK9fBsLLfPk93OsiNaScBMED6p5I4ebDJ_wqiBmQXPLkuJdQd3o9SuWaGJAulBJqiKQpCKZwaTODFal_iVBISOpsIFLVO5VOk_qPhouA1v8DKDr0qOD3gEb0sEHN-JrS2NPDOj3HU5Og1i29aDwt-sMowHSzfT_6xmF-Hn9579AL_9HaZlG1dSrEycLxtcY7SPnrjtAWG-GR8xERex2_AfAze5pH76iwIfuDY7HxHTvTXiI44QPNYEX64dPVnz9u726vHz9_viPVxLYDGZyjVAtiASSvDdIcDgKe8AC1aJAMkXEwsNX1Dm1Lulq2umG8fGc2BD4_T4bRmvAowje1MlSpQ0zdPHE3c_lauX_J_Idj5m-C01SnjOd3Zb6i2TaPszbckcCDgVtwkbSI9rfRlhO2QiVgZb_zoMVzeOsy0PTFXmTzDIm5CdMmzIk3hR2-L9rLvK3yCi_EZVassyytyrK62F0WuMxXvCjzqmnrLE_LvK7LRpRZ2uB6VRQX8pKnnGc8W2V5llExLVuRtaKsO-yKVYFsmYoBpUrIqcTY_iKMo8tVtcpXFwproVx4lcm5Fk9xVhH9Wd1c2MsQiHrqHVumSjrvXqV46ZW4_EADm4LyEjIKRySXkZjMFJFXF5NVlz-c8jg7Gd8Ee_8dAAD___liolw">