<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/146451>146451</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[AVR] llvm-objdump should automatically select the instruction set
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
benshi001
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
benshi001
</td>
</tr>
</table>
<pre>
Given a simple test program:
```c++
int adiw(int a) {
return a + 51;
}
```
Build it with `clang a.c --target=avr -mmcu=avr2 -c -O3`, and then disassemble it with `llvm-objdump -d a.o`, we see
```asm
a.o: file format elf32-avr
Disassembly of section .text:
00000000 <adiw>:
0: c3 96 08 95 <unknown>
```
We must specify `--mcpu=avr2` to `llvm-objdump` explicitly to make `adiw` correctly decoded.
```asm
a.o: file format elf32-avr
Disassembly of section .text:
00000000 <adiw>:
0: c3 96 adiw r24, 0x33
2: 08 95 ret
```
However the generated object file does contain the `avr2` family information.
```bash
ELF Header:
Magic: 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
Class: ELF32
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: REL (Relocatable file)
Machine: Atmel AVR 8-bit microcontroller
Version: 0x1
Entry point address: 0x0
Start of program headers: 0 (bytes into file)
Start of section headers: 284 (bytes into file)
Flags: 0x82, EF_AVR_ARCH_AVR2, relaxable
Size of this header: 52 (bytes)
Size of program headers: 0 (bytes)
Number of program headers: 0
Size of section headers: 40 (bytes)
Number of section headers: 5
Section header string table index: 1
```
So the `llvm-objdump` should automatically select the avr family according to ELF header, other than rely on user's explicit specification.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzMVk2P4ygQ_TXkUnKEsZ3EhxzcH9kZaT6k7t3evY0wVGJmMESAu5P99Suwk-lM93RfFyElouoV9V5BYe692hnENamuCGMtGt8pSnPCGKluZnwInXXr8_KstfK4_kM9ogEOXvV7jRDQB9g7u3O8J0VDaEMWdJyCsKs4aaNMAC7VE2Gr9JewGsgyWgitHYbBxYiEXUGVkyKtL2-eh0qezdWgtAQV4EmFDuIOmpsd8LmALAvc7TCQ4oY_Osj6XgzjfwaZgOxrEaOwa-BGQujQgFSee499q_F5SK0f-8y23-XQ7yGTwOd2Qj4heMTnWXHfE9pEj0i83iqNsLWu5wFQbwuW8Uc3Zn5z3uwIdgseRVDWwDzgIUyq0YZOA0hxndQqbkcbjIOSogFRQL0AuoK6AiC0JsX1YH4Y-2Si-wvJ_kboBx_A71Go7TEyzLJe7E_ikAWFYH8lHlfxsNdKqKCP0aHnPzB6pbwWFIR1DkU0gkRhJcr5_0OZaRBaJ0daO1bG6tFDUfwEsAiYRDwDHIaXAhLafLBP-IguHhvYoUHHA0qw7XcUARI1adGDsCZwZZJblGBSd8t7pY-gzMhfWXOhVMt9R2hz-2kDH5BLdCdin_lOiZgmwHILZQWlgHIBND9N-ruZ4Neaez_Cfz9uP20KltxveODRmxG2jFTi3e7RhCidViFoBDRScZO8H9B5ZU0E5EDYSgzOJec6mb_eE7Zprj6-s_1fXz7-AxncH33AHh4StLn6-Dz662Nk-Odxj9Hn7vZTzOEOtRU88HifY1FOyXzmolMG386lCT1qaB7uYJW1KkCvhLOxoM5qje5X0r8f9JAn51sT3BH2dux80uFrxaCHkcl94C7E0z_1UejSSbhE0EiyPQb0oEywFxzPAU7X57UAbFW-EWKj-e7d80IPKxZPxO3mW_Nw9625u_4Q_6Q1h5ofovpjRupfjAmFTvkpm5fBK3ZO6Mxkwr2lxDMpTrAvQ9-iewdIL3Z4Syoo39riFWQ1hr4wgA9OmR2MR1IZiYd0YV72mHt7ahq_NmHf2UFL4EOwsXcIrvURPOrYeSIkvnVTg-FCWCfThjZe7JPq7Bps6FL74iZW6QjWwOCjaenPbX56IZQYWxTM5LqQdVHzGa7zZZUXRZWz5axb5zlK2i7FSpaSrhYF45TWrKZ1zhd5ua1mas0oq-iS5jSvVuVyviy2tC1EJdo2l7yipKTYc6Xnke3cut1MeT_gOi8XZZXPNG9R--mbxOATJOv0TeLWSaJ22HlSUq188D_DBBV0-phpHu5IdQMXb_l7UirjgxvGAnoMs8HpdRfCPtaXsA1hm50K3dDOhe0J28TY00-2dza-BYRtUqqesM3E5XHN_gsAAP__kYC2Hg">