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

    <tr>
        <th>Summary</th>
        <td>
            llvm-objdump returns exit code 0 when broken Mach-O is passed
        </td>
    </tr>

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

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

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

<pre>
    On POSIX systems, usually non-zero exit code means failure and zero exit code means successful execution.
In 2016 there was a commit "[llvm] r266248 - Start to add real error messages for malformed Mach-O files." [^1] for `llvm-objdump`. This change allows to easily detect broken Mach-O binaries. However, when error is detected `llvm-objdump` returns exit code `0`.

How to reproduce:

```sh
$ file empty.o 
empty.o: DOS executable (block device driver)
$ llvm-objdump --macho --all-headers empty.o 
empty.o: is not an object file
$ echo $?
0
```

`llvm-objdump -v`: Ubuntu LLVM version 18.0.0 

[^1]: https://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20160411/347289.html
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx0U12P2zYQ_DXUy0ICRUmW9aCHS10jAXJwgevXKyWuLeYoUuCSdtxfX1B2knN6BQwDJHdnZ0azkkifLGLPmg-s2WUyhsn53uhT9Nplg1PX_mDht8PLp7-BrhRwJiZ-gUhRGnMF62z-D3oH-FUHGJ1CmFFagqPUJnoEaRW8W0BxHJHoGA3gVxxj0M4WjO8Yf_pkQfByA2FCj3CRBBJGN886ABOCNR-MOc-s2YEXm42ot5DDS5A-QHAglQKP0gB67zzMSCRPSHBMB2mOzs-o4FmOU36AozZIBRMCVvm_lgk0VbINTzNyN3xRcV7Yhhfw-6QJxknaE4I0xl0ozUNJ2lxBYcAxwODdK9pv8IO20mukAj66C57RJ-cuE9o7OU33PlTvTASPIXpLb5xjG84Tl5tNt_-P7pJ4eFy8U3FEVj29fWYbfvvRdL8Q9aobcF7CtXBwu76fWPUEu8PL_ZPIwSAwsR2MG19B4VmPCMrrVUr3A-8tc8jzWY6TgzyXxuQTSoWe_n-aJrAugLTghi_Jw0TuBzQmKCZqVu1vl_wnXT-JfaRyTgXVE_wxRBsifP785zOc0ZN2FsptwQsOD_3fU5CaphAWSnaKPRN7oylQkeAL509M7Be9oJ-lNukxTb1FlJjY_4X4mrtj_uxsnpLM67JkYl_Vrdh2xRRmk6m-Ul3VyQz7suVdK8qmrbKpl7xtOyFaVauuGTslu6ptWj40VaPEUW0z3Qsual7xTcmrrqqKceBbHNpODseOl3JkNcdE6zvXTBNF7Ld1WW8zIwc0tK67EBYvsD6ua7XLfL8KGeKJWM0fFWdBB4P9g7__TSi_5ftxDzTBIolQZdGb_tHWkw5THIrRzXcbv7m5eJfiwMR-ZZhsXRX8GwAA___TcnwC">