[PATCH v2] elf: Set this_idx to -1 for invalid relocations
"H.J. Lu" <[email protected]> Sun, 2 Aug 2026 08:55:00 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAMe9rOoKvk2rF289Ei4mYh5z7afkWS1a9uacY1fu9iZobJ1iSA@mail.gmail.com> |
--000000000000486edc065805e10b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Sun, Aug 2, 2026 at 6:18=E2=80=AFAM H.J. Lu <[email protected]> wrote: > > When invalid relocation is reported by elf_link_read_relocs_from_section > called from lang_gc_sections: > > ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >=3D 0x13) for > offset 0x4 in section `.text.get_tls[get_tls]' > > the same error is reported again: > > ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >=3D 0x13) for > offset 0x4 in section `.text.get_tls[get_tls]' > > from lang_check_relocs since lang_gc_sections error doesn't stop linker. > Update elf_link_read_relocs_from_section to set this_idx to -1 for invali= d > relocations and return false if this_idx < 0. > > PR ld/34448 > * elf-bfd.h (bfd_elf_section_data): Update comments for this_idx. > * elflink.c (elf_link_read_relocs_from_section): Return false if > this_idx < 0. Set this_idx to -1 for invalid relocations. > Changes in v2: 1. Use ELF_SECTION_WITH_INVALID_RELOCATION instead of -1. 2. Update _bfd_elf_section_from_bfd_section to check this_idx < 0. 3. Call bfd_set_error when this_idx < 0. --=20 H.J. --- When invalid relocation is reported by elf_link_read_relocs_from_section called from lang_gc_sections: ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >=3D 0x13) for offset 0x4 in section `.text.get_tls[get_tls]' the same error is reported again: ld: pr34448-bug_18.o: bad reloc symbol index (0xf2000005 >=3D 0x13) for offset 0x4 in section `.text.get_tls[get_tls]' from lang_check_relocs since lang_gc_sections error doesn't stop linker. Update elf_link_read_relocs_from_section to set this_idx to -1 for invalid relocations and return false if this_idx < 0. PR ld/34448 * elf-bfd.h (ELF_SECTION_WITH_INVALID_RELOCATION): New. (bfd_elf_section_data): Update comments for this_idx. * elf.c (_bfd_elf_section_from_bfd_section): Return SHN_BAD if this_idx < 0. * elflink.c (elf_link_read_relocs_from_section): Return false if this_idx < 0. Set this_idx to ELF_SECTION_WITH_INVALID_RELOCATION for invalid relocations. --000000000000486edc065805e10b Content-Type: text/x-patch; charset="US-ASCII"; name="v2-0001-elf-Set-this_idx-to-1-for-invalid-relocations.patch" Content-Disposition: attachment; filename="v2-0001-elf-Set-this_idx-to-1-for-invalid-relocations.patch" Content-Transfer-Encoding: base64 Content-ID: <f_msb363at0> X-Attachment-Id: f_msb363at0 RnJvbSAxNjI5MjQ5YWE2ZjRmYzIxMWU0MDA4MjQ5ZWU1MzRkZDYxN2RhYzYyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFN1biwgMiBBdWcgMjAyNiAwNjowOToxMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjJdIGVsZjog U2V0IHRoaXNfaWR4IHRvIC0xIGZvciBpbnZhbGlkIHJlbG9jYXRpb25zCgpXaGVuIGludmFsaWQg cmVsb2NhdGlvbiBpcyByZXBvcnRlZCBieSBlbGZfbGlua19yZWFkX3JlbG9jc19mcm9tX3NlY3Rp b24KY2FsbGVkIGZyb20gbGFuZ19nY19zZWN0aW9uczoKCmxkOiBwcjM0NDQ4LWJ1Z18xOC5vOiBi YWQgcmVsb2Mgc3ltYm9sIGluZGV4ICgweGYyMDAwMDA1ID49IDB4MTMpIGZvciBvZmZzZXQgMHg0 IGluIHNlY3Rpb24gYC50ZXh0LmdldF90bHNbZ2V0X3Rsc10nCgp0aGUgc2FtZSBlcnJvciBpcyBy ZXBvcnRlZCBhZ2FpbjoKCmxkOiBwcjM0NDQ4LWJ1Z18xOC5vOiBiYWQgcmVsb2Mgc3ltYm9sIGlu ZGV4ICgweGYyMDAwMDA1ID49IDB4MTMpIGZvciBvZmZzZXQgMHg0IGluIHNlY3Rpb24gYC50ZXh0 LmdldF90bHNbZ2V0X3Rsc10nCgpmcm9tIGxhbmdfY2hlY2tfcmVsb2NzIHNpbmNlIGxhbmdfZ2Nf c2VjdGlvbnMgZXJyb3IgZG9lc24ndCBzdG9wIGxpbmtlci4KVXBkYXRlIGVsZl9saW5rX3JlYWRf cmVsb2NzX2Zyb21fc2VjdGlvbiB0byBzZXQgdGhpc19pZHggdG8gLTEgZm9yIGludmFsaWQKcmVs b2NhdGlvbnMgYW5kIHJldHVybiBmYWxzZSBpZiB0aGlzX2lkeCA8IDAuCgoJUFIgbGQvMzQ0NDgK CSogZWxmLWJmZC5oIChFTEZfU0VDVElPTl9XSVRIX0lOVkFMSURfUkVMT0NBVElPTik6IE5ldy4K CShiZmRfZWxmX3NlY3Rpb25fZGF0YSk6IFVwZGF0ZSBjb21tZW50cyBmb3IgdGhpc19pZHguCgkq IGVsZi5jIChfYmZkX2VsZl9zZWN0aW9uX2Zyb21fYmZkX3NlY3Rpb24pOiBSZXR1cm4gU0hOX0JB RCBpZgoJdGhpc19pZHggPCAwLgoJKiBlbGZsaW5rLmMgKGVsZl9saW5rX3JlYWRfcmVsb2NzX2Zy b21fc2VjdGlvbik6IFJldHVybiBmYWxzZSBpZgoJdGhpc19pZHggPCAwLiAgU2V0IHRoaXNfaWR4 IHRvIEVMRl9TRUNUSU9OX1dJVEhfSU5WQUxJRF9SRUxPQ0FUSU9OCglmb3IgaW52YWxpZCByZWxv Y2F0aW9ucy4KClNpZ25lZC1vZmYtYnk6IEguSi4gTHUgPGhqbC50b29sc0BnbWFpbC5jb20+Ci0t LQogYmZkL2VsZi1iZmQuaCB8ICA2ICsrKysrLQogYmZkL2VsZi5jICAgICB8IDEzICsrKysrKysr KystLS0KIGJmZC9lbGZsaW5rLmMgfCAxMiArKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9iZmQvZWxmLWJm ZC5oIGIvYmZkL2VsZi1iZmQuaAppbmRleCBiMzU0Zjc3ZjQyMS4uNzM2YjZlNDEyMGUgMTAwNjQ0 Ci0tLSBhL2JmZC9lbGYtYmZkLmgKKysrIGIvYmZkL2VsZi1iZmQuaApAQCAtMTg4OSw3ICsxODg5 LDExIEBAIHN0cnVjdCBiZmRfZWxmX3NlY3Rpb25fZGF0YQogICAgICB3aXRoIHRoaXMgc2VjdGlv biwgaWYgYW55LiAgKi8KICAgc3RydWN0IGJmZF9lbGZfc2VjdGlvbl9yZWxvY19kYXRhIHJlbCwg cmVsYTsKIAotICAvKiBUaGUgRUxGIHNlY3Rpb24gbnVtYmVyIG9mIHRoaXMgc2VjdGlvbi4gICov CisgIC8qIFRoZSBFTEYgc2VjdGlvbiBudW1iZXIgb2YgdGhpcyBzZWN0aW9uLiAgQSB2YWx1ZSBv ZiA8IDAgbWVhbnMgdGhhdAorICAgICBzb21lIGNvbnRlbnRzIGluIHRoZSBzZWN0aW9uIGFyZSBp bnZhbGlkOgorICAgICAtKDEgPDwgMCk6IFNlY3Rpb24gd2l0aCBpbnZhbGlkIHJlbG9jYXRpb24u CisgICAqLworI2RlZmluZSBFTEZfU0VDVElPTl9XSVRIX0lOVkFMSURfUkVMT0NBVElPTgktKDEg PDwgMCkKICAgaW50IHRoaXNfaWR4OwogCiAgIC8qIFVzZWQgYnkgdGhlIGJhY2tlbmQgbGlua2Vy IHdoZW4gZ2VuZXJhdGluZyBhIHNoYXJlZCBsaWJyYXJ5IHRvCmRpZmYgLS1naXQgYS9iZmQvZWxm LmMgYi9iZmQvZWxmLmMKaW5kZXggZWExMjc5MTliOWYuLmJkYTMxY2EyZmZmIDEwMDY0NAotLS0g YS9iZmQvZWxmLmMKKysrIGIvYmZkL2VsZi5jCkBAIC03MzAzLDkgKzczMDMsMTYgQEAgX2JmZF9l bGZfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uIChiZmQgKmFiZmQsIHN0cnVjdCBiZmRfc2VjdGlv biAqYXNlY3QpCiAgIGVsZl9iYWNrZW5kX2RhdGEgKmJlZDsKICAgdW5zaWduZWQgaW50IHNlY19p bmRleDsKIAotICBpZiAoZWxmX3NlY3Rpb25fZGF0YSAoYXNlY3QpICE9IE5VTEwKLSAgICAgICYm IGVsZl9zZWN0aW9uX2RhdGEgKGFzZWN0KS0+dGhpc19pZHggIT0gMCkKLSAgICByZXR1cm4gZWxm X3NlY3Rpb25fZGF0YSAoYXNlY3QpLT50aGlzX2lkeDsKKyAgaWYgKGVsZl9zZWN0aW9uX2RhdGEg KGFzZWN0KSAhPSBOVUxMKQorICAgIHsKKyAgICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChhc2Vj dCktPnRoaXNfaWR4ID4gMCkKKwlyZXR1cm4gZWxmX3NlY3Rpb25fZGF0YSAoYXNlY3QpLT50aGlz X2lkeDsKKyAgICAgIGVsc2UgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKGFzZWN0KS0+dGhpc19pZHgg PCAwKQorCXsKKwkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub25yZXByZXNlbnRhYmxlX3Nl Y3Rpb24pOworCSAgcmV0dXJuIFNITl9CQUQ7CisJfQorICAgIH0KIAogICBpZiAoYmZkX2lzX2Fi c19zZWN0aW9uIChhc2VjdCkpCiAgICAgc2VjX2luZGV4ID0gU0hOX0FCUzsKZGlmZiAtLWdpdCBh L2JmZC9lbGZsaW5rLmMgYi9iZmQvZWxmbGluay5jCmluZGV4IDBhZjk4MzdhMjhjLi4yOTE1Nzgw NDMzOSAxMDA2NDQKLS0tIGEvYmZkL2VsZmxpbmsuYworKysgYi9iZmQvZWxmbGluay5jCkBAIC0y ODA4LDYgKzI4MDgsMTQgQEAgZWxmX2xpbmtfcmVhZF9yZWxvY3NfZnJvbV9zZWN0aW9uIChiZmQg KmFiZmQsCiAgIHNpemVfdCBuc3ltczsKICAgdm9pZCAqZXh0ZXJuYWxfcmVsb2NzID0gKmV4dGVy bmFsX3JlbG9jc19hZGRyOwogCisgIC8qIFJldHVybiBmYWxzZSBpZiBzb21lIHJlbG9jYXRpb25z IGluIHRoZSBzZWN0aW9uIGFyZSBpbnZhbGlkIGR1cmluZworICAgICB0aGUgcHJldmlvdXMgY2Fs bC4gICovCisgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChzZWMpLT50aGlzX2lkeCA8IDApCisgICAg eworICAgICAgYmZkX3NldF9lcnJvciAoYmZkX2Vycm9yX2JhZF92YWx1ZSk7CisgICAgICByZXR1 cm4gZmFsc2U7CisgICAgfQorCiAgIC8qIFBvc2l0aW9uIG91cnNlbHZlcyBhdCB0aGUgc3RhcnQg b2YgdGhlIHNlY3Rpb24uICAqLwogICBpZiAoYmZkX3NlZWsgKGFiZmQsIHNoZHItPnNoX29mZnNl dCwgU0VFS19TRVQpICE9IDApCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg1OCw2ICsyODY2LDgg QEAgZWxmX2xpbmtfcmVhZF9yZWxvY3NfZnJvbV9zZWN0aW9uIChiZmQgKmFiZmQsCiAJCSAgICIg Zm9yIG9mZnNldCAlIyIgUFJJeDY0ICIgaW4gc2VjdGlvbiBgJXBBJyIpLAogCQkgYWJmZCwgKHVp bnQ2NF90KSByX3N5bW5keCwgKHVuc2lnbmVkIGxvbmcpIG5zeW1zLAogCQkgKHVpbnQ2NF90KSBp cmVsYS0+cl9vZmZzZXQsIHNlYyk7CisJICAgICAgZWxmX3NlY3Rpb25fZGF0YSAoc2VjKS0+dGhp c19pZHgKKwkJPSBFTEZfU0VDVElPTl9XSVRIX0lOVkFMSURfUkVMT0NBVElPTjsKIAkgICAgICBi ZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKIAkgICAgICByZXR1cm4gZmFsc2U7 CiAJICAgIH0KQEAgLTI4NzEsNiArMjg4MSw4IEBAIGVsZl9saW5rX3JlYWRfcmVsb2NzX2Zyb21f c2VjdGlvbiAoYmZkICphYmZkLAogCSAgICAgICAiIHdoZW4gdGhlIG9iamVjdCBmaWxlIGhhcyBu byBzeW1ib2wgdGFibGUiKSwKIAkgICAgIGFiZmQsICh1aW50NjRfdCkgcl9zeW1uZHgsCiAJICAg ICAodWludDY0X3QpIGlyZWxhLT5yX29mZnNldCwgc2VjKTsKKwkgIGVsZl9zZWN0aW9uX2RhdGEg KHNlYyktPnRoaXNfaWR4CisJICAgID0gRUxGX1NFQ1RJT05fV0lUSF9JTlZBTElEX1JFTE9DQVRJ T047CiAJICBiZmRfc2V0X2Vycm9yIChiZmRfZXJyb3JfYmFkX3ZhbHVlKTsKIAkgIHJldHVybiBm YWxzZTsKIAl9Ci0tIAoyLjU1LjAKCg== --000000000000486edc065805e10b--