[PATCH] x86: Check TLS relocation against non-thread local symbol

"H.J. Lu" <[email protected]> Thu, 30 Jul 2026 18:59:14 +0800
Newsgroups gmane.comp.gnu.binutils
Message-ID <CAMe9rOqKCufOrwvkKNOR-tj+ZFxCvypAJkr7UKLdSCOtO-zoWw@mail.gmail.com>
--000000000000a959610657d1f89a
Content-Type: text/plain; charset="UTF-8"

TLS relocations must be against thread local symbols.  Update x86 scan
relocs functions to issue an error for TLS relocation against non-thread
local symbol.

PR ld/34448
* elf32-i386.c (elf_i386_scan_relocs): Issue an error for TLS
relocation against non-thread local symbol.
* elf64-x86-64.c (elf_x86_64_scan_relocs): Likewise.
* elfxx-x86.c (_bfd_x86_elf_link_report_tls_invalid_section_error):
Check relocation against non-thread local symbol.


-- 
H.J.

--000000000000a959610657d1f89a
Content-Type: text/x-patch; charset="US-ASCII"; 
	name="0001-x86-Check-TLS-relocation-against-non-thread-local-sy.patch"
Content-Disposition: attachment; 
	filename="0001-x86-Check-TLS-relocation-against-non-thread-local-sy.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_ms7ehi870>
X-Attachment-Id: f_ms7ehi870

RnJvbSA5OWQzYzBmZjM3Nzk5NDUwYzFhMmY1ZmY0MzAxMWNkOGY4NWRmMjg3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6
IFRodSwgMzAgSnVsIDIwMjYgMTM6NDM6NTYgKzA4MDAKU3ViamVjdDogW1BBVENIXSB4ODY6IENo
ZWNrIFRMUyByZWxvY2F0aW9uIGFnYWluc3Qgbm9uLXRocmVhZCBsb2NhbCBzeW1ib2wKClRMUyBy
ZWxvY2F0aW9ucyBtdXN0IGJlIGFnYWluc3QgdGhyZWFkIGxvY2FsIHN5bWJvbHMuICBVcGRhdGUg
eDg2IHNjYW4KcmVsb2NzIGZ1bmN0aW9ucyB0byBpc3N1ZSBhbiBlcnJvciBmb3IgVExTIHJlbG9j
YXRpb24gYWdhaW5zdCBub24tdGhyZWFkCmxvY2FsIHN5bWJvbC4KCglQUiBsZC8zNDQ0OAoJKiBl
bGYzMi1pMzg2LmMgKGVsZl9pMzg2X3NjYW5fcmVsb2NzKTogSXNzdWUgYW4gZXJyb3IgZm9yIFRM
UwoJcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi10aHJlYWQgbG9jYWwgc3ltYm9sLgoJKiBlbGY2NC14
ODYtNjQuYyAoZWxmX3g4Nl82NF9zY2FuX3JlbG9jcyk6IExpa2V3aXNlLgoJKiBlbGZ4eC14ODYu
YyAoX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0X3Rsc19pbnZhbGlkX3NlY3Rpb25fZXJyb3IpOgoJ
Q2hlY2sgcmVsb2NhdGlvbiBhZ2FpbnN0IG5vbi10aHJlYWQgbG9jYWwgc3ltYm9sLgoKU2lnbmVk
LW9mZi1ieTogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KLS0tCiBiZmQvZWxmMzItaTM4
Ni5jICAgfCAgNSArKysrLQogYmZkL2VsZjY0LXg4Ni02NC5jIHwgIDUgKysrKy0KIGJmZC9lbGZ4
eC14ODYuYyAgICB8IDI2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAzIGZpbGVzIGNoYW5n
ZWQsIDI4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvYmZkL2Vs
ZjMyLWkzODYuYyBiL2JmZC9lbGYzMi1pMzg2LmMKaW5kZXggYmViZTgxZDg4ZjYuLmVkYTY2MGIx
MjA2IDEwMDY0NAotLS0gYS9iZmQvZWxmMzItaTM4Ni5jCisrKyBiL2JmZC9lbGYzMi1pMzg2LmMK
QEAgLTE3NDksNyArMTc0OSwxMCBAQCBlbGZfaTM4Nl9zY2FuX3JlbG9jcyAoYmZkICphYmZkLAog
CiAJICAgIGlmICh0bHNfdHlwZSA+PSBHT1RfVExTX0dECiAJCSYmIHRsc190eXBlIDw9IEdPVF9U
TFNfR0RFU0MKLQkJJiYgKGVsZl9zZWN0aW9uX3R5cGUgKHNlYykgIT0gU0hUX1BST0dCSVRTCisJ
CSYmICgoaCAhPSBOVUxMCisJCSAgICAgPyBoLT50eXBlICE9IFNUVF9UTFMKKwkJICAgICA6IEVM
Rl9TVF9UWVBFIChpc3ltLT5zdF9pbmZvKSAhPSBTVFRfVExTKQorCQkgICAgfHwgZWxmX3NlY3Rp
b25fdHlwZSAoc2VjKSAhPSBTSFRfUFJPR0JJVFMKIAkJICAgIHx8IChzZWMtPmZsYWdzICYgU0VD
X0NPREUpID09IDApKQogCSAgICAgIHsKIAkJX2JmZF94ODZfZWxmX2xpbmtfcmVwb3J0X3Rsc19p
bnZhbGlkX3NlY3Rpb25fZXJyb3IKZGlmZiAtLWdpdCBhL2JmZC9lbGY2NC14ODYtNjQuYyBiL2Jm
ZC9lbGY2NC14ODYtNjQuYwppbmRleCBiYmJhY2E4Y2FiOC4uMzBjMzNjYTMwODIgMTAwNjQ0Ci0t
LSBhL2JmZC9lbGY2NC14ODYtNjQuYworKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKQEAgLTI3NzIs
NyArMjc3MiwxMCBAQCBuZWVkX2dvdDoKIAogCSAgICBpZiAodGxzX3R5cGUgPj0gR09UX1RMU19H
RAogCQkmJiB0bHNfdHlwZSA8PSBHT1RfVExTX0dERVNDCi0JCSYmIChlbGZfc2VjdGlvbl90eXBl
IChzZWMpICE9IFNIVF9QUk9HQklUUworCQkmJiAoKGggIT0gTlVMTAorCQkgICAgID8gaC0+dHlw
ZSAhPSBTVFRfVExTCisJCSAgICAgOiBFTEZfU1RfVFlQRSAoaXN5bS0+c3RfaW5mbykgIT0gU1RU
X1RMUykKKwkJICAgIHx8IGVsZl9zZWN0aW9uX3R5cGUgKHNlYykgIT0gU0hUX1BST0dCSVRTCiAJ
CSAgICB8fCAoc2VjLT5mbGFncyAmIFNFQ19DT0RFKSA9PSAwKSkKIAkgICAgICB7CiAJCV9iZmRf
eDg2X2VsZl9saW5rX3JlcG9ydF90bHNfaW52YWxpZF9zZWN0aW9uX2Vycm9yCmRpZmYgLS1naXQg
YS9iZmQvZWxmeHgteDg2LmMgYi9iZmQvZWxmeHgteDg2LmMKaW5kZXggMGY3OWVmNThmMDIuLjNh
NjlmZTZiM2YzIDEwMDY0NAotLS0gYS9iZmQvZWxmeHgteDg2LmMKKysrIGIvYmZkL2VsZnh4LXg4
Ni5jCkBAIC0zMzc4LDE0ICszMzc4LDI4IEBAIF9iZmRfeDg2X2VsZl9saW5rX3JlcG9ydF90bHNf
aW52YWxpZF9zZWN0aW9uX2Vycm9yCiAgICByZWxvY19ob3d0b190eXBlICpob3d0bykKIHsKICAg
Y29uc3QgY2hhciAqbmFtZTsKKyAgYm9vbCBub25fdGxzOwogICBpZiAoaCkKLSAgICBuYW1lID0g
aC0+cm9vdC5yb290LnN0cmluZzsKKyAgICB7CisgICAgICBuYW1lID0gaC0+cm9vdC5yb290LnN0
cmluZzsKKyAgICAgIG5vbl90bHMgPSBoLT50eXBlICE9IFNUVF9UTFM7CisgICAgfQorICBlbHNl
CisgICAgeworICAgICAgbm9uX3RscyA9IEVMRl9TVF9UWVBFIChzeW0tPnN0X2luZm8pICE9IFNU
VF9UTFM7CisgICAgICBuYW1lID0gYmZkX2VsZl9zeW1fbmFtZSAoYWJmZCwgc3ltdGFiX2hkciwg
c3ltLCBOVUxMKTsKKyAgICB9CisgIGlmIChub25fdGxzKQorICAgIF9iZmRfZXJyb3JfaGFuZGxl
cgorICAgICAgLyogeGdldHRleHQ6Yy1mb3JtYXQgKi8KKyAgICAgIChfKCIlcEI6IHJlbG9jYXRp
b24gJXMgYWdhaW5zdCBub24tdGhyZWFkIGxvY2FsIHN5bWJvbCAiCisJICJgJXMnIGluIHNlY3Rp
b24gYCVwQSciKSwKKyAgICAgICBhYmZkLCBob3d0by0+bmFtZSwgbmFtZSwgc2VjKTsKICAgZWxz
ZQotICAgIG5hbWUgPSBiZmRfZWxmX3N5bV9uYW1lIChhYmZkLCBzeW10YWJfaGRyLCBzeW0sIE5V
TEwpOwotICBfYmZkX2Vycm9yX2hhbmRsZXIKLSAgICAvKiB4Z2V0dGV4dDpjLWZvcm1hdCAqLwot
ICAgIChfKCIlcEI6IHJlbG9jYXRpb24gJXMgYWdhaW5zdCB0aHJlYWQgbG9jYWwgc3ltYm9sIGAl
cycgaW4gIgotICAgICAgICJpbnZhbGlkIHNlY3Rpb24gYCVwQSciKSwgYWJmZCwgaG93dG8tPm5h
bWUsIG5hbWUsIHNlYyk7CisgICAgX2JmZF9lcnJvcl9oYW5kbGVyCisgICAgICAvKiB4Z2V0dGV4
dDpjLWZvcm1hdCAqLworICAgICAgKF8oIiVwQjogcmVsb2NhdGlvbiAlcyBhZ2FpbnN0IHRocmVh
ZCBsb2NhbCBzeW1ib2wgYCVzJyBpbiAiCisJICJpbnZhbGlkIHNlY3Rpb24gYCVwQSciKSwgYWJm
ZCwgaG93dG8tPm5hbWUsIG5hbWUsIHNlYyk7CiAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9i
YWRfdmFsdWUpOwogfQogCi0tIAoyLjU1LjAKCg==
--000000000000a959610657d1f89a--