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

    <tr>
        <th>Summary</th>
        <td>
            [lld] why does lld export hidden symbols  without warning when dynamic libraries link to object files?
        </td>
    </tr>

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

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

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

<pre>
    When I compile .o with two c files -fvisibility=hidden,and a.c depends on a function of b.c. then generates bit dynamic libraries of a.c, Finally define a main function in the new file to generate executable files together, there will be an error using ld, but not lld.

code:
a.c:

```
#include<stdio.h>
#include"a.h"

int main1(void) {
    printf("main1\n");
    return 0;
}
```
a.h:

`int main1(void);`
b.c:

```
#include<stdio.h>
#include"a.h"

extern int main1();

int shared1(void) {
      printf("shared1\n");
      main1();
      return 0;
}
```
main.c:

```
int main(void) {
    return 0;
}
```
and the compiler Commands is:
```
clang -fvisibility=hidden -o a.o  -c a.c
clang -fvisibility=hidden -o main.o  -c main.c
clang -fvisibility=hidden -o b.o  -c b.c
clang -shared -Wl,-soname,libb.so -o libb.so b.o
clang -fuse-ld=ld  -o main.out  main.o a.o libb.so
```
error:
```
/usr/bin/ld: main.out: hidden symbol `main1' in a.o is referenced by DSO
/usr/bin/ld: final link failed: bad value
clang-15: error: linker command failed with exit code 1 (use -v to see invocation)
```
without any error or warning:
clang -fuse-ld=lld  -o main.out  main.o a.o libb.so



</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy0Vc2O6jgTfRqzKRElDiGwyOI23Ejf6lvM4kqz808l8YxjI9uB5u1HFULTPU3P9GYkFJy4TvnUcf2IGE3vEBtWvbDquBJTGnxofh_QDcL1BS_KlfT62vwa0MH_QPnxZCxC5uFi0gDp4kFBZyxGWHdnE4001qQrK4-D0Rod-9mylwPbHYTTIDIFGk_odATvQEA3OZWMd-A7kJnKINExPToMImEEaRLoqxOjUWCNDCIYjGQsMsX4AVrjhLVX0NgZhyBgFMY9vBpHDsHhZaYIyb_5BnxFNSUhLS70k-8xDRjIL_0jXIy1IBGEAwzBB5iicT1YTSZySuB8Amt1xvIjy3_cnsprZOXyQjTv6-W5zZff7ZWXxik7EeYQkzY-G1j589Mm5yIbGOfvXRmX5ngLxndnbzTje2D1y20TAOAUjEsd4zvG-c2wOjhywvesfGcXME3BQf72kdXHp2yJw6dwntAgR3eM_C8lwNeEge75QeF9cA-d4iAC6i-V-qjV3fi5WvD0qNvOt5UkF_8mzD2qr0h__9qcnutgKd4ABz-OgorQxAeFjxhlheuflzSsPYjMA6zVXIffsZ_jvUGW0L-DkgtE_s3-dkGw_mUZP6yjd2JExg_WSJlFT8j7Umb-40lTxLXVrDxaDQ9iU4I7RYpsQT8VZu4EX6nGeDvFwHgr6dpaOujH2xG0XmKL11F6C2ybL7lUU6-io02EgB0GdAo1yCscf_v_P_juqAGCNe5P6ISxOH-UQsNZ2Anfhb4uKtq6s58hGCglKBMW8K2n46tJQG0MCmB8N0WE9Zl6Z0QE485eCequlP3PNCAfJKhw16Vt-gAXEZxx_Ztun6_j-_fx7rnSTan35V6ssCnqoqg4z8t6NTSb7UYKsa8wL_MCy123Ubu9qmSBW1nnnV6Zhud8k5e8zrebuqizWlUyr8qNUJ3cdYVgmxxHYWxm7XnMfOhXJsYJm922ruuVFRJtnKcm55YmAqfxGRqyXsupj2yTWxNTfOCTSXYetGRfHeEyXEF7jDRCAF9PPqSP-REB7mIu-sGF5uPniTgnQPLg5R-o0m2gsbJdTcE2Q0qnucx5y3jbmzRMMlN-pByy5_vf-hQ8YRlv5zgj4-0c6l8BAAD__3xQbAc">