In debuginfo files the phdrs file offsets match those of the original ELF
file. So the section header file offsets and the TLS symbol value offset
in debuginfo files cannot be sanity checked against the phdrs file offset.
The issue can be triggered with run-strip-strmerge.sh test when configured
with --enable-gcov. Which will insert a .tbss section and TLS symbols that
trigger the above checks.
Signed-off-by: Mark Wielaard <mjw@redhat.com>
2015-10-16 Mark Wielaard <mjw@redhat.com>
+ * elflint.c (check_symtab): Don't check TLS symbol value against TLS
+ phdr offset in debuginfo files.
+ (check_sections): Don't try to match section offsets to phdrs offsets
+ in debuginfo files.
+
+2015-10-16 Mark Wielaard <mjw@redhat.com>
+
* elflint.c (check_reloc_shdr): Reject only desthdrs if they have both
SHF_MERGE and SHF_STRINGS set.
section [%2d] '%s': symbol %zu: TLS symbol but couldn't get TLS program header entry\n"),
idx, section_name (ebl, idx), cnt);
}
- else
+ else if (!is_debuginfo)
{
if (st_value
< destshdr->sh_offset - phdr->p_offset)
}
}
- if (ehdr->e_type != ET_REL && (shdr->sh_flags & SHF_ALLOC) != 0)
+ if (ehdr->e_type != ET_REL && (shdr->sh_flags & SHF_ALLOC) != 0
+ && !is_debuginfo)
{
/* Make sure the section is contained in a loaded segment
and that the initialization part matches NOBITS sections. */