f7e8f5d439
[ELF] Handle non-glob patterns before glob patterns in version scripts & fix a corner case of --dynamic-list This fixes PR38549, which is silently accepted by ld.bfd. This seems correct because it makes sense to let non-glob patterns take precedence over glob patterns. lld issues an error because `assignWildcardVersion(ver, VER_NDX_LOCAL);` is processed before `assignExactVersion(ver, v.id, v.name);`. Move all assignWildcardVersion() calls after assignExactVersion() calls to fix this. Also, move handleDynamicList() to the bottom. computeBinding() called by includeInDynsym() has this cryptic rule: if (versionId == VER_NDX_LOCAL && isDefined() && !isPreemptible) return STB_LOCAL; Before the change: * foo's version is set to VER_NDX_LOCAL due to `local: *` * handleDynamicList() is called - foo.computeBinding() is STB_LOCAL - foo.includeInDynsym() is false - foo.isPreemptible is not set (wrong) * foo's version is set to V1 After the change: * foo's version is set to VER_NDX_LOCAL due to `local: *` * foo's version is set to V1 * handleDynamicList() is called - foo.computeBinding() is STB_GLOBAL - foo.includeInDynsym() is true - foo.isPreemptible is set (correct) Reviewed By: ruiu Differential Revision: https://reviews.llvm.org/D64550 This makes it longer necessary to patch the version scripts for the samba ports, to avoid "duplicate symbol 'pdb_search_init' in version script" errors. PR: 230602 MFC after: 3 days |
||
---|---|---|
.. | ||
amd | ||
apr | ||
apr-util | ||
atf | ||
bearssl | ||
binutils | ||
blacklist | ||
bmake | ||
bsnmp | ||
byacc | ||
bzip2 | ||
capsicum-test | ||
com_err | ||
compiler-rt | ||
cortex-strings | ||
dialog | ||
diff | ||
dma | ||
dtc | ||
ee | ||
elftoolchain | ||
expat | ||
file | ||
flex | ||
gcc | ||
gcclibs | ||
gdb | ||
gdtoa | ||
googletest | ||
gperf | ||
hyperv/tools | ||
ipfilter | ||
jemalloc | ||
ldns | ||
ldns-host | ||
less | ||
libarchive | ||
libbegemot | ||
libc-pwcache | ||
libc-vis | ||
libc++ | ||
libcxxrt | ||
libdivsufsort | ||
libevent | ||
libexecinfo | ||
libgnuregex | ||
libpcap | ||
libstdc++ | ||
libucl | ||
libunwind | ||
libxo | ||
llvm | ||
lua | ||
mandoc | ||
mknod | ||
mtree | ||
ncurses | ||
netbsd-tests | ||
netcat | ||
ngatm | ||
ntp | ||
nvi | ||
ofed | ||
one-true-awk | ||
openbsm | ||
opencsd/decoder | ||
openmp | ||
openpam | ||
openresolv | ||
opie | ||
pam_modules/pam_passwdqc | ||
pf | ||
pjdfstest | ||
pnpinfo | ||
processor-trace | ||
sendmail | ||
serf | ||
smbfs | ||
sqlite3 | ||
subversion | ||
tcp_wrappers | ||
tcpdump | ||
tcsh | ||
telnet | ||
tnftp | ||
traceroute | ||
tzcode | ||
tzdata | ||
unbound | ||
unvis | ||
vis | ||
wpa | ||
xz |