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

    <tr>
        <th>Summary</th>
        <td>
            riscv: llc -compile-twice -filetype=obj generates mysterious ".apple_objc"
        </td>
    </tr>

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

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

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

<pre>
    test case
```
target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128"
target triple = "riscv64-unknown-linux-gnu"
```
llc output
```
# fail
> llc -compile-twice -filetype=obj -mattr=+m,+a,+f,+d,+c test.ll -o twice.o
Running the pass manager twice changed the output.
Writing the result of the second run to the specified output
To generate the one-run comparison binary, just run without
the compile-twice option
```
use readelf -a and compare the output with and without -compile-twice:
```
13,14c13,14
<   Start of section headers:          232 (bytes into file)
<   Flags:                             0x0
---
>   Start of section headers:          240 (bytes into file)
>   Flags:                             0x1, RVC, soft-float ABI
28c28
<        000000000000003b  0000000000000000           0     0     1
---
>        0000000000000041  0000000000000000           0     0     1
33,34c33,34
<   [ 4] .apple_objc       PROGBITS         0000000000000000  00000040
<        0000000000000034  0000000000000000           0     0     1
---
>   [ 4] .riscv.attributes RISCV_ATTRIBUTE  0000000000000000  00000040
>        0000000000000035  0000000000000000           0     0     1
58a59,62
> Attribute Section: riscv
> File Attributes
>   Tag_RISCV_stack_align: 16-bytes
>   Tag_RISCV_arch: "rv64i2p0_m2p0_a2p0_f2p0_d2p0_c2p0"
```

This is a major block for the Julia riscv port to bootstrap a compiler successfully. Similar issues seem to have happened before in [ppc](https://github.com/llvm/llvm-project/issues/26752) and [arm](https://reviews.llvm.org/D15950). 

I understand that -compile-twice is probably not supported atm, but it would help the Julia riscv port a lot to at least get around the mysterious .apple_objc mixed in, as that seems to cause an incompatible cast into MCSymbolELF in Julia. Something looks like
```
julia: /var/tmp/portage/sys-devel/llvm-14.0.1/work/llvm/include/llvm/Support/Casting.h:269: typename llvm::cast_r
etty<X, Y*>::ret_type llvm::cast(Y*) [with X = llvm::MCSymbolELF; Y = llvm::MCSymbol; typename llvm::cast_retty<X, Y*>::ret_type = llvm::MCSymbolELF*]: Assertion `isa<X>(Val) && "cast<Ty>() argument of incompatible type!"' failed.
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJylVttu4zYQ_Rr5hZAgUZZjP_jBuRUpWrSI3e3ukzGSKJsJRaoklcR_vzOUHTuB0822hsGLSM6cuR2yNPVu7oXzrAInovQ6ShfRJN3_w9SD3QjPavCgYGd6z6L8mkWci7iN8oWIO2wn49DE8nWQ8SmOsI01Tpc05fyNRG9lp8RBmpWuesKdvX7U5lnHSur-Jd7o_vXYO1xKVQzRdL0_uxzxnDUg1X6W3zA6EFem7aQSsX-WlWBxg2O_6wSCMOUDi1vw3uIk4pdtxK-wg6Frhq4euoqRzxKlWGxYEJWYQdF9r7XUG-a3gnXgHGtBw0bYYRertqA3og7LA_hkOPe3lf5wzgrXK89ME2ZOVEbXzPaaeTN86UQlG4liTu1fGbYRWljwYhCvRUyHyGJA7xrNSqnB7tAE9tBjyGn1WfqtOYigY28dZDovjT7r4N4RUqiFalgMDBDjoEqcWBfkh7W9oncRwBQ5KzzLEWU2rvb9IYhXjLElpk9wDjqGwLEtgbAORbHXH885JtW03GGcmNToOIp0xGenkm4VbN4eO_NLX_aQ4jg-5tJnYYzTf4dx83kYGcXt_ssVdc40Pm6UAc8Wl3eDMD6tsMZOzBvOvfnl5fsvaXqq5KTNzlp9RuY4-1mZOQU1H1f7_hRzVFyycVRcswQ6JIc1FmW1F_Tn_R-_XN6tluw8DFK6B5T-yAvj_-mFI8rAWgmRhix7CvL93fLqy3qxWt3fXf61uvkMyg_8mhc_i7KYQjFDl074UfTiAI0thzylRAuoj3tuMSePG90prhVs1oNJzkP1uAYlN0FENolDVp_fDLba0i7idSR1ybt03VID1DTU1NRU2HzE73tW20qsHMcAifTBWFYqUz2yBkdEMr_2SsJgDusM1iNWWGmMd95Ch2f2XGOZ66tKONf0Su0StpStVGBRrusxZk6Ilk5u4Ulg03VIozUrBWoRWLUU7q6rMN5YylvvOyrWiN_if4Ok1pcJqsGJUk-HLu6seUB_43TQgQM-uSg4ln5gQxQJtj0n0oonKZ5dQmISYzf46TorZgX6aZawU9fcsV4T43gS6LfwnlvJbYijhFLtmDYendCRk9A28HS7MQw3k8jRplc18pfqzjsVmDLBtahCCcCbg65vsKbXw03W7pwXVprevanbVr6gLqlJFbgBIvnakawK6AIBjevh2vCyxCysSHogyt-vlru2NOrmt1uKQQCFkTOt8Fu6KJUxj44p-Xj-1fJA-4cUvH0Ci61vO2zJILyPceR2Lq7Fk1CHmGXjJE2QZW-fjX08xhPxqb4Wxw_LwY04ukK0iCWhXOeTGamjx4SGVrCwGYOaL8imtR1gCe93yEtfySXfIk6FM2yywq_p7LtzmB5hG6YNpky4TL-GF9Nx24mjovySfftgmdY-BPdjWB_rxN2Yxmj6wjlhw1WIUZAOgkAUxKdfQAUL-AT_RArBtPxqtRvWQ1XYTd8KHa7UNykRnmc8I5rgF-FJJ-rkXcxH9TyvZ_kMRl56JeYDwSGmT7z5Do8md5rGqO0kk3E26q2a__fiL4piPB1t51k1nc6yaZnms4uLps7y8QSKi6wsU0jHk6IcKSiFcnMMNirV4nngKDK-uB7JOU85T4tsmk7zPM8SqJtJ2VSZmNWTKYeLaJyKFj30yh4jOw-Qyh6fGONUSeeP1DLC9ynSuRBBHcqHHt9odg5KvDSg_5GjoHwewH8HYMyJQg">