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

    <tr>
        <th>Summary</th>
        <td>
            llvm-objcopy MachO: cant find sections in object file when update-section is called
        </td>
    </tr>

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

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

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

<pre>
    Hi!

I've noticed that when I try to update a section in Mach-O binaries, I receive a failure message:
```text
/opt/llvm-bins/bin/llvm-objcopy: error: 'out.o': could not find segment with name '__DATA'
```

How to reproduce:
1. Build llvm from source:
```bash
git checkout llvmorg-19.1.7
mkdir build && cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="llvm;clang" ../llvm
ninja clang llvm-readelf llvm-objcopy
```
2. Compile example.cpp with builded tools:
```cpp
#include <stdio.h>

static const char __attribute__((section("__DATA,__storage"))) storage[0x1000] = {0};

int main() {
  for(int i = 0; i < 16; ++i) {
    int val = storage[i];
 printf("0x%02X ", val);
  }
  return 0;
}
```

```bash
./bin/clang++ example.cpp -c -o out.o --target=arm64-apple-macos11
```

3. Use llvm-readelf to observe sections:
```bash
./bin/llvm-readelf -S out.o
```
Output has:
```text
Section {
    Index: 1
    Name: __storage (5F 5F 73 74 6F 72 61 67 65 00 00 00 00 00 00 00)
    Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
    Address: 0x78
 Size: 0x1000
    Offset: 672
    Alignment: 0
    RelocationOffset: 0x0
    RelocationCount: 0
    Type: Regular (0x0)
    Attributes [ (0x0)
    ]
    Reserved1: 0x0
    Reserved2: 0x0
    Reserved3: 0x0
 }
```
4. Updating the section content using llvm-objcopy:
```bash
./bin/llvm-objcopy --update-section=__DATA,__storage=example.cpp out.o
```

Error:
```text
./bin/llvm-objcopy: error: 'out.o': could not find segment with name '__DATA'
```
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJy0VlFv6rgS_jXmZZTIcRICDzwAgXt6b0971PZc7T4hxxkSn-PEke20dH_9ygmUQpH2aaUI7LFn5puZz2Nza2XVIi5IuiJpPuG9q7VZPKCoSz4pdPm--CYJiwhdErq8Iyx7RWi1kwJLcDV38FZjC3fgzDs4DX1XcofAwaJwUrcgW_jORR08QiFbbiRawtZwBwYFyle_c8-l6g1Cg9byCknsPZEpHT-HB-fnbKs7R9hWqdcmKGRrCdsWsj1JdPFL6O6dxEtAY7TxA8Iy3btQE5b5qdC9Kj122Mu2BItVg62DN-lqaHmDfv9uly9fll7hE4Qx9m_6zQdosDO67MURZxTCqpeqBI8C9kY3YHVvxHUYBbc1octKOhA1it-6d4OKNlUQzcMo9B6b36U0UAz2CJsSNgVRjnNCl6LhvxGC_8CDbH9xCPL19-X_NrvVz7v7fPfy548NifMnVMgtQpDf3___-27zsFzdb3Y_nh7_u1m_PJM4J4x5tyReCcXbijAGYXhMIqHLdjA9LA3wAoO8RLWHiyRf5oaFsNZNJxUCHnjTKQxF1415HbB7pmit7FVKRNcNhY1lK1RfIpB4bV0pdViTeDMm3TrupAChW-sTxw3sdtw5I4ve4W5H2Iyw2ZFqw4SdKrje7azTxhOKMcLm4wcnWbqih4hSStIcSJwDyVaUZDmJV6Nj2TpouByNzv0yoUuAvTaEzfyiHNQoiVfDcA3R1I8JWxG2kp91APz-V64GjTMASdKjP-iMbN1-DIAeCEsp-wMG3Guv6LGPG8Fj9P8GXW_awb8HPEivCHvNvfDjxBxL75FelCwQEGgYzgwEgeOmQkfinJtmmgS86xQGDRfaRtFXb3EIPy1eksZp0IVF84qndnDNgS_QLvSD5xHMlbfH3nW9g5pfWzv2iudj6zkX4K4t8eB7QHQUPPDGn1D4IAkQNku3kG4hiyFLYLqFjME0gmkG0xQo_fr5qozWnsdWMhr09DtbSxJIIkiH31tGblhblqVB62MDeshmXvos_8JxPnB23Pe431scnE4zdtJVsmpPWE4bn1BpwX1Kzir08HV1rftLxZf3bnD7hFWvuPFReb0z0tNJtEDS1Zdlz--Tj4EFZXTtehSz2-L4k_grw5MQfvrLRrYVuPqDYb5XON_XeytPTex8Ofwz9457IQjGqyw4dZc4v9Fa4vzz-blFVkKXm-OFdIOqt53_K7fYpFzE5Tye8wkuoiyezyidJemkXkQCaTSnJUMhkv2UJVOMBIuKmLP9dLYXE7lg1LekKIsSSuN5KEoezyhNoqSISsESklBsuFShDyLUpppIa3tcRCxL5ulE8QKVHV4YjLX4BsOqb29pPjGL8UbvK0sSqqR19mzGSadwcVEX_5h4HBLB248cjL3FvzV08QuFlyscXyaXVQRpQXClsJz0Ri1q57qhibAtYdtKurovQqGb04V4LEtntLdK2HZA7p8ex9BeF-zvAAAA__-8PrYU">