<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/58349>58349</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
LLD incorrectly handles armeb targets
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
eigenform
</td>
</tr>
</table>
<pre>
It seems like `ld.lld` will accept armeb input files, but proceeds to handle the relocations in little-endian (?) and silently produces invalid encodings for branches:
```
$ clang --target=armebv5te-none-eabi -mcpu=arm926ej-s -c start.s
$ ld.lld -Ttext=0 start.o -o start.lld.elf
$ arm-none-eabi-ld -Ttext=0 -EB start.o -o start.gcc.elf
$ arm-none-eabi-objdump -d start.lld.elf start.gcc.elf
start.lld.elf: file format elf32-bigarm
Disassembly of section .text:
00000000 <_start>:
0: e1a00000 nop ; (mov r0, r0)
4: edffffeb ldcl 15, cr15, [pc, #940]! ; 3b8 <bar+0x3a4>
8: eeffffeb cdp 15, 15, cr15, cr15, cr11, {7}
0000000c <foo>:
c: e1a00000 nop ; (mov r0, r0)
10: e12fff1e bx lr
00000014 <bar>:
14: e1a00000 nop ; (mov r0, r0)
18: e12fff1e bx lr
start.gcc.elf: file format elf32-bigarm
Disassembly of section .text:
00000000 <_start>:
0: e1a00000 nop ; (mov r0, r0)
4: eb000000 bl c <foo>
8: eb000001 bl 14 <bar>
0000000c <foo>:
c: e1a00000 nop ; (mov r0, r0)
10: e12fff1e bx lr
00000014 <bar>:
14: e1a00000 nop ; (mov r0, r0)
18: e12fff1e bx lr
```
This seems similar to the behavior addressed in 7605a9a009b5fa3bdac07e3131c8d82f6d08feb7 for Aarch64 (see https://reviews.llvm.org/D96188)?
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJztVV2PmzoQ_TXwYhEZDAQeeNg0XalSH_t-5Y8BvDU4sp10--_vmJBk2bZSpX27ugj5A8_MOR4PPsKqn92XQDzA5InR34EkNTVqZ4zCAfmhjSFcSjgFwt0Eguj5dA6k1wZ8UnwiAicnZyWA8iRYMvJZGSBhBOLAWMmDtrNHLwwegoEMZqX5TJKiSdhzUrQEHYjHcHMwP2ModZYQHS7caEVgllbpefCkt44Ix2c5IjJ7Sugxobe2put7nRYlkYbPA8mywN0AIWHHhf2lCpDNdkYaXGiSTfJ0vq61RQ0vmSeZJB59ws4_Yl3TQbJvAV5jKLqaWJLZdYjrOzD9wwdDPoCyrXf2-fBrhEHKGIH8KYQVL-o8nUimtpBb97dZ2TJjTyQ-8eBiKiceCH5mRSb0gEibdC7tUXvuPUwCj8UiDMh4lGR33cbGlK4PSdinfxbYhH2-2yAqXSYt5Hy1o-1sT9iuLzvEgpjshTgaqyq27d27XL1Vjw-WII6Nkga7vIrW0l37pDqc5DIoWFvSpDomRb6GZ6KJ7AR3SXGgr4yXkeINoVkR4IEg1ekOsIV50-cL2v6wT_bH3yRERsje2nfZkB_JRn7PZYFcc4je4jWmxP3KIC9vm94wyMsPMWj-isG2Lv8D5Sfo3VvE4nt7uu8L6Wqb3203B_F_odwYvLu3l_bbqP2qR15P2nAXdSUKioCRXzTKAFfKARaHirqyr2nFW-TXiqrnTCgu6R5YznLZqKboa0Ub_Kf3i4A8cSfHuoykEYKMIZwWMSlQip4dXDT88HhlXqaddQN-OrZ13jRxT-w5hS6v66pu62ZfpapjqmUtT4NGWeu-fj0iGWmdw0LFkr3qoF9F86pCnpD07Ey3RR10GM9iJ-2Ekwi9dhlq4QsGw6n2_hzl9rlqWNmmYyfLvu7LvG7Kfalon6uqrlsuyzpXQrZ9lRouwPgOb0S8BVPdFbQocpqzImclq3YYBVTBigoKBpxCUlKYuDb3raeuWziI8-Bx0WgfHnlJ8cfUwwxwi8_PYbSuAz3AHH_udCHcLWz_BdpeVFI">