<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/88880>88880</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[LLVM-Tools] [LLVM-ReadElf] Erroneous JSON output when using `-d` or `--unwind` or `--all`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
e3krisztian
</td>
</tr>
</table>
<pre>
## Description
I am trying to use `llvm-readelf` to dump ELF data in JSON format for further processing. Unfortunately with some flags the output is not a valid JSON file.
## How to reproduce
In an `ubuntu:noble` docker container install `llvm-18` (`18.1.2`), then
```json
# llvm-readelf-18 -d --elf-output-style=JSON --pretty-print /bin/ls
[
{
"FileSummary": {
"File": "/bin/ls",
"Format": "elf64-x86-64",
"Arch": "x86_64",
"AddressSize": "64bit",
"LoadName": "<Not found>"
}DynamicSection [ (28 entries)
Tag Type Name/Value
0x0000000000000001 NEEDED Shared library: [libselinux.so.1]
0x0000000000000001 NEEDED Shared library: [libc.so.6]
0x000000000000000C INIT 0x4000
0x000000000000000D FINI 0x18DA4
0x0000000000000019 INIT_ARRAY 0x21F30
0x000000000000001B INIT_ARRAYSZ 8 (bytes)
0x000000000000001A FINI_ARRAY 0x21F38
0x000000000000001C FINI_ARRAYSZ 8 (bytes)
0x000000006FFFFEF5 GNU_HASH 0x3B0
0x0000000000000005 STRTAB 0x1000
0x0000000000000006 SYMTAB 0x400
0x000000000000000A STRSZ 1556 (bytes)
0x000000000000000B SYMENT 24 (bytes)
0x0000000000000015 DEBUG 0x0
0x0000000000000003 PLTGOT 0x22C38
0x0000000000000002 PLTRELSZ 2496 (bytes)
0x0000000000000014 PLTREL RELA
0x0000000000000017 JMPREL 0x2D38
0x0000000000000007 RELA 0x1808
0x0000000000000008 RELASZ 5424 (bytes)
0x0000000000000009 RELAENT 24 (bytes)
0x000000000000001E FLAGS BIND_NOW
0x000000006FFFFFFB FLAGS_1 NOW PIE
0x000000006FFFFFFE VERNEED 0x1718
0x000000006FFFFFFF VERNEEDNUM 2
0x000000006FFFFFF0 VERSYM 0x1614
0x000000006FFFFFF9 RELACOUNT 212
0x0000000000000000 NULL 0x0
]
}
]
```
```json
# llvm-readelf-18 --unwind --elf-output-style=JSON --pretty-print /bin/ls
[
{
"FileSummary": {
"File": "/bin/ls",
"Format": "elf64-x86-64",
"Arch": "x86_64",
"AddressSize": "64bit",
"LoadName": "<Not found>"
},
"EHFrameHeader": {Address: 0x1e170
Offset: 0x1e170
Size: 0x5ec
"Corresponding Section": ".eh_frame_hdr",
"Header": {
"version": 1eh_frame_ptr_enc: 0x1b
fde_count_enc: 0x3
table_enc: 0x3b
eh_frame_ptr: 0x1e760
,
"fde_count": 188,
"entry 0": {initial_location: 0x4020
address: 0x1e790
},
"entry 1": {initial_location: 0x46b0
address: 0x1e7b8
},
"entry 2": {initial_location: 0x46f0
address: 0x1e7d0
},
"entry 3": {initial_location: 0x4d70
address: 0x1ed60
},
...
```
## Related issue
`-d` problem was previously mentioned in https://github.com/llvm/llvm-project/issues/74529#issuecomment-1843851049 as a similar problem, but there only the problem in the issue description was fixed (bad JSON output for `--needed-libs`).
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsV11v6rgW_TXmZSsodj4IDzxASU47ovSotGd05gU5iSmeMTaynRbm1185JBBa6KnO1X27ESKJvfby2h-ys6kx_EUyNkLRBEXTHq3sWukRC_7R3PxrOZW9XJX7ESIBIgFMmSk031quJPKnyB8f_u-AbsDqPZcvYBVUhgGKfSFeN55mtGRihWLfzZTVZgvpLIOSWgpcwh-LhzmslN5Q626wqrRdMw1brQpmDJcvfXiWK6VtJallYg9v3K7BqA2DlaAvBuyagarstrLADUhlgcIrFbxsuLlg_a7WxpNb9eYEabbVqqwKduaOBCqdB1VeSVuhYCxVLpjzoVTFP0xDoaSlXDINXBpLhTj6ixMHQ8TdcNLHfYJiH5EhIjdO6lnY3Ez9-9sc40kC6MbNwwl4JXieez646Rm7FwwF09o_z9tqZu3e22ouLSCS5VwikgnTEEaTwwMAGrSPiJCMC7aoNhuq94gQFIw70_XVYNpJQrrU7u3mPbrO4gnPxCoOvV0Se3F40WCsi_UJvkvi5TVgWWpmzIL_25EThzm3F-EzRcs53XSlBzdz5QqskiUKUjdyNEGD6XQv6YYXC1a4wgYUTVwCSQJMWs2Zcelr8E_0Bd5dT_stO74c1s1-UFE1JQX-zj-_MMzTdJpOG5PFmmpWguC5dslwiqOJ4Llhgstq1zeqj1E0_S_ZCscTf8JzA3fzu6ejI_4u9H2_dfsDegrZ3fwO_B1OpuPwGgwPa9Ll-PFx_LMmJTgLrrLiSQe--AsSl4Z8b88y8MFoXEt5t0ZyxU1800H_eok4y7IszSL4Nn9e3o4Xt-Dvgsn1sESweHp8Gk-OQcSfBTGGxc_7Ljr8BDx21Iu_2vzgKIovaP9gNnFrpPM2sST8UkwjmKaT529u4qqgAL7Pnr49PB3VE3JzjPtHOHHwx3TWuEDC4SX9H6WEjV2zzGM6G1_L7QD-uP9-gvo7Mv1E0KDmqkvYv45KatQx7lF4MYIfzIa12THuXwx7Ctls_G0Bk7v5dDl_-BOuVGSWTQ7IJW62nYc_4ftdCh_kNPAUfqSPbp841uUAX_C5QWctev58D-QqzHewxc_7U7HH-MJW0KAPEbl5eD7EhOALxO0F8-fZrLMV-e1ZNu0en27rfj_Rnqi_c8x6lXzj8v-H7f_2sD1RIELS20zTDbt1WdCn0DQa3Ju_wwwPmnw-rFaG2Q_DtdZ6MGLFWYW0Km-U1sxslSzdJ2pz0J8k99l6uXJClutSn7mJCHkvrktdk78ybU50-Mi1tXrJZNHIzQ92q5ItC1VJe5oKDjOW5oJ1RhuDLl3r-eBY4Of5qOUcV2gFJcklmPu22YN_8otLbjkVS6EKWoenXiz0SbMWPU_KYNhq6Ob0PT_-JX-cX-HPky_wk1_zr67wl1_RH_ySvxxc5i_jC_z9fv-zjerQmjwyQS0rgRtTsXcbmVe69mKrXT-ygTdqYKvZK1eVEXvYMOmEOVMJa2u3TgwiGSLZC7frKu8XauP2FPHa3rytVn-zwiKS1csZRLJBGLl-JagHCrVxtB5OwiCJsB8OgRqgYPiGC6pbKa69ySvrWhzNQEmxrxuzViiX9WvNCOWpiaw9WPEdK-vzkTZNW9PPuYbQ-exJxkpWeu6j-NBNNVHslaOgHAZD2mMjPMABiQckDHrrEWVlTEMS4pAFUeFHwxUOg7IooojgKGe4x0fEJ6Ef4hjjIPRJf4iHUZEUkV_GiT9MIhT6bEO56Lso9ZV-6dXiR0mSJH5P0JwJUzfNhEj21uSKENdD61Ed2bx6MSj0BTfWnFgst6LutmezH_fek1LCoGgK7cAjo2UqVm4o1VpJpipzFpO3NZNQucYYjuXQhulwfnVHqBAo9nuVFqPfr4fa5f8EAAD__xjQQ-k">