Fix a problem in ld, causing it to sometimes print messages similar to
"invalid string offset 65521 >= 27261 for section `.strtab'". for object files produced by recent versions of clang. In BFD's elf_create_symbuf() function, the size of the symbol buffer ('ssymbuf') is not calculated correctly, and the initial value for the 'ssym' variable is off by one, since 'ssymbuf' has shndx_count + 1 members. MFC after: 1 week
This commit is contained in:
parent
4a5681f2fa
commit
a4f5ccb7fc
@ -8934,14 +8934,14 @@ elf_create_symbuf (bfd_size_type symcount, Elf_Internal_Sym *isymbuf)
|
||||
shndx_count++;
|
||||
|
||||
ssymbuf = bfd_malloc ((shndx_count + 1) * sizeof (*ssymbuf)
|
||||
+ (indbufend - indbuf) * sizeof (*ssymbuf));
|
||||
+ (indbufend - indbuf) * sizeof (*ssym));
|
||||
if (ssymbuf == NULL)
|
||||
{
|
||||
free (indbuf);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ssym = (struct elf_symbuf_symbol *) (ssymbuf + shndx_count);
|
||||
ssym = (struct elf_symbuf_symbol *) (ssymbuf + shndx_count + 1);
|
||||
ssymbuf->ssym = NULL;
|
||||
ssymbuf->count = shndx_count;
|
||||
ssymbuf->st_shndx = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user