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

    <tr>
        <th>Summary</th>
        <td>
            [lld][ELF] lld doesn't check RISC-V e_flags for ET_DYN inputs
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            lld
      </td>
    </tr>

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

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

<pre>
    RISC-V linkers check `e_flags` for ABI compatibility between input files. LLD seems to do this only for ET_REL (.o) files. GNU (BFD) ld also checks ET_DYN (.so) files.

This led to an issue in Fuchsia WRT llvm-ifs. (See the [corresponding Fuchsia issue](https://issues.fuchsia.dev/issues/422200989) for details.)

This [reproducer](https://issues.fuchsia.dev/action/issues/422200989/attachments/66423793?download=true) succeeds on LLD, but it produces the following on GNU LD:
```
% ./prebuilt/third_party/gcc/linux-x64/bin/riscv64-elf-ld.bfd -o foo foo.o libbar.so
./prebuilt/third_party/gcc/linux-x64/bin/riscv64-elf-ld.bfd: libbar.so: can't link soft-float modules with double-float modules
./prebuilt/third_party/gcc/linux-x64/bin/riscv64-elf-ld.bfd: failed to merge target specific data of file libbar.so
```

Originally filed by @frobtech downstream; adding for context/discussion.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJysVE-L47gT_TTKpYiR5T9JDj44k_aPgWZ-0NO7y54aWSrb2pGlIJWTzrdf5E7Pdh8W9jCQYJBUr17Vq3oyRjM6xIZVR1adNnKhyYdmvkXCcJslTZve61vz9PX7l-3vYI37gSGCmlD9AFZzfBmsHCOrOQw-QHv8CsrPZ0mmN9bQDXqkK6ID484LwWAsxgweH08QEecI5EF7oMlE8M7eVpCH55enh0dgYp95Jg7vQf_79ls6O3andGg1SBv9G5OYYk5_fltj4ocgxlvG2-cEb1GnbNKBiXFBMA66RU3RSPjj6RmsvcxbM8QsYXxHBJoQWHVUPgSMZ--0cePPiBWCVScm9hPRObKiZaJjolsvYja8vcs0Xn4eMtGVQgjOD_vDytAH0EjS2JgxcfhAlVXHgOfg9aIw_OcsUpHx7l_SdZJIqmlGR-mmrktR7A4FKzrtr856qVlxorBgYhYXpRB1kiRJxcQX6BcCQ3AnFdfuDN5af01t8W5V5_GUGPKW1fz-4y0TFWRMdOeA_WIsMdHRZIJ-OctANya6USkmOmvc8rp9rUsmut6kKoKJ6lKXW7TD1uqsHzRsPQx-_WcerOl7GZLavP1FCVjRfoAtWlDSMbGjdewh-oG2g_WSYPZ6sRjhamgC7Zfe4uebX8tpkOY-vTOGEYFkGJEgnlGZwSjQkiT4YZ35T335JARv_x_MaJy0ac9WxP4GrORD8D2hSpVcXaSAcmbFEaReRz6NqfKO8DWVoU1US4zGu2yjm0IfioPcYJPvykNe5Xy330yNGkSfS1Xv853e13Uu9H4olChLXddip_nGNIKLite8yg_5rtplsqqKelC5wp2SJees5DhLY7O0lZkP42ad6SYvCy6KjZU92rhalhDWaiZE8q7QrEvcL2NkJbcmUvwHgAzZ1eXS--rEquPDY8eqE1irQXuMb0q_Gdvd7e7m9m5KyWBWG4ubJdjm80qOhqalz5Sfk7D28v7ZnoP_CxV93Mt7GZdG_B0AAP__qr7HTw">