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

    <tr>
        <th>Summary</th>
        <td>
            Wrong "llvm-objcopy" operation when using --rename-section and --add-symbol at the same time
        </td>
    </tr>

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

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

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

<pre>
    Command to reproduce the problem is:
```
echo 'SOME_DATA' > data.file \
&& objcopy \
 --input-target binary \
     --output-target=elf64-x86-64 \
 --rename-section .data=.my_data_section \
     --add-symbol DATA_SECTION_START=.my_data_section:0 \
     data.file \
     elf.o \
&& readelf -a elf.o
```

As a result the ".data" section is created and renamed into ".my_data_section".

At the same time, "DATA_SECTION_START" symbol/variable pointing to the beginning of the newly created ".my_data_section" section is "--add-symbol"ed (here is a problem, read further explanation).

I found that "llvm-objcopy" generates wrong "DATA_SECTION_START" variable (**Ndx is ABS**):
```
Section Headers:
  [Nr] Name              Type Address           Offset
...
  [ 1] .my_data_section  PROGBITS 0000000000000000  00000040
...
Symbol table '.symtab' contains 6 entries:
   Num:    Value          Size Type    Bind   Vis      Ndx Name
     ...
     5: 000000000000000a     0 NOTYPE  GLOBAL DEFAULT **ABS** DATA_SECTION_START

```

At the same time, I see no problem when using "objcopy" (GCC):
```
Section Headers:
  [Nr] Name              Type             Address           Offset
...
  [ 1] .my_data_section  PROGBITS         0000000000000000 00000040
...
Symbol table '.symtab' contains 6 entries:
   Num: Value          Size Type    Bind   Vis      Ndx Name
     ...
     5: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT    **1** DATA_SECTION_START
```

P.S. Problem could be resolved if to use:
```
     --rename-section .data=.data \
```

instead of:

```
     --rename-section .data=.my_data_section \
```

but in this case GCC's (Binutil's) objdump will be unable to process such command.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vl9v4zYM_zTKC2HDphMneciDkzS3ArekuGQb9lTINh3rIEuBJF8v-_SD7LR103QDhlUo6ugfyR_5IylurTgqogWbLNlkPeKtq7VZPMRxPDdxM8p1eV6sdNNwVYLTYOhkdNkWBK4mOBmdS2pAWJZkLFqzKGNpdPnrplTUGhhO97tf7x7X2SFjOAWW3EHJHQ8rIQnYZHW5iinDFHT-vdCn8-s6BIFQp9YFjpsjOciF4ma470cQ6Na9HmLJmmSVjoOfszRIx2-EGVK8ocBS4YRWEHpTWLIOm_Oj__n4vHGtgJdlYM9NriV4JI_7u9Xhfrd93B-yb4cbAliSRVdCbqDu1klWoX7nCUO8JFlBwPsDNz3c_88scDBkW-m6yDDEHhciPOMRFgpD3FEJPpq9G0oQyunu_LX5iOEbFb1kyxsCJxpiuPLXbrjC6-z8xHDzgxvBc0lw0kI5oY6eRV5OTkehlF_QVbeg6EmeXyy8bdAQC0McxoQhdtdmNRny-_yZnt5Q70qoWuNqMkA_T5Ir3sucvwF5D5VuPdVr7rwGKX80wYWRXv-RFBnuyMKT0er4sQNecDOcMcwYZtvypzcrW-77OcP5R1mzv6D8xRPAvCYXAJsst4ZN1rD1YXgzDucTQVaWhqwdLO-qypLr74dhOBAEsRf0jvbw8G33ZXl_2EN0NeCyMo6uxO37rHAXwNPQnhvHc5_rhVaOC2UhBVLOCBqigW3bsKRLgd-5bAeA9uIv6hEBwFKo0h8RF1zekx7_IIEGyABg4oVeGc-7nQi2u8OfD3cAX77ultlXWN9tst--HqCPyUtwbmX4gCa3c_BGgtyDJQKlX0rlU00KWit67gyYxXD2ZbX6FFIMx_9KkOfxjiifxJNPJ0n0zyQBuPAk_jeW3OLHQ7gP4eHCg0K3soScfNHW8oevw5Uvja2ljwhwaUMftS__HbSQWxYIZZ0vhLp61fEfNH3YKG8qzVsHQoGrff_hlqCj-dQX8NlSqNYJ6acM5771l21zgichpfdNqzqmuC59Ck9b2xY1FP17JByVi6ScJ3M-okWczuL5fJxMcFQv4hiLJM8nUZrMplEVJ3Ms-Hg2xjzhWMb5SCwwwiQaYxRjMo8xzJMpjqfTeVTwaTopKjaOqOFChr4BhNocR8LalhYpYoojyXOStnszISp6gm6TIfonlFl0TSNvj5aNIymss69SnHCSFn88947r9qJPvrt4nw7qxLtA-O795jnCryrPqDVyUTt36pIINww3R-HqNg8L3TDceLWXT3Ay-jsVjuGmA2EZbjqQfwcAAP__xW3hZg">