diff options
author | Alan Modra <amodra@gmail.com> | 2024-12-11 17:02:00 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2024-12-13 15:21:45 +1030 |
commit | a21e2f0c20565216fbc560225ba15d8c5c1e1aa8 (patch) | |
tree | 977aa6d4394a27b7a1b0a33a9aca1c4c69c8641d /include/coff | |
parent | 2cd1fe362711bb7221826cb5e1d791bffc04fc51 (diff) | |
download | gdb-a21e2f0c20565216fbc560225ba15d8c5c1e1aa8.zip gdb-a21e2f0c20565216fbc560225ba15d8c5c1e1aa8.tar.gz gdb-a21e2f0c20565216fbc560225ba15d8c5c1e1aa8.tar.bz2 |
xcoff reading dynamic relocs
This adds a sanity check to relocation symbol indices, and tidies code
a little.
The patch does result in a couple of testsuite failures
rs6000-aix7.2 +FAIL: TLS relocations (32-bit)
rs6000-aix7.2 +FAIL: TLS relocations (64-bit)
That seems reasonable to me, because prior to this patch l_symndx was
being set to -1 and -2 for .tdata and .tbss symbols resulting in a
buffer overflow when accessing the syms array.
bfd/
* xcofflink.c (_bfd_xcoff_canonicalize_dynamic_reloc): Prevent
symbol array overflow on invalid relocation symbol index.
Tidy code for relocs against standard sections.
(xcoff_create_ldrel): Remove cast.
include/
* coff/xcoff.h (struct internal_ldrel): Make l_symndx uint32_t.
Make l_rtype and l_rsecnm int16_t.
Diffstat (limited to 'include/coff')
-rw-r--r-- | include/coff/xcoff.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/include/coff/xcoff.h b/include/coff/xcoff.h index 104660f..82d82eb 100644 --- a/include/coff/xcoff.h +++ b/include/coff/xcoff.h @@ -298,13 +298,13 @@ struct internal_ldrel bfd_vma l_vaddr; /* The symbol table index in the .loader section symbol table. */ - bfd_size_type l_symndx; + uint32_t l_symndx; /* The relocation type and size. */ - short l_rtype; + int16_t l_rtype; /* The section number this relocation applies to. */ - short l_rsecnm; + int16_t l_rsecnm; }; /* An entry in the XCOFF linker hash table. */ |