<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">