create-diff-object: Handle ppc64le toc with only constants

When a ppcle64 ".toc" section contains only constants, the compiler
might not (won't?) create a corresponding ".rela.toc" section.

In such cases, create-diff-object crashes, assuming ".rela.toc" exists
whenever .toc exists. Simply report that no rela are available when
looking up possible relocations in .toc.

Fixes #1078.
Signed-off-by: Julien Thierry <jthierry@redhat.com>
This commit is contained in:
Julien Thierry 2020-02-20 14:50:56 +00:00
parent fcc7dad42a
commit fbfc8f9bec

View File

@ -177,6 +177,10 @@ static struct rela *toc_rela(const struct rela *rela)
rela->type != R_PPC64_TOC16_LO_DS)
return (struct rela *)rela;
/* Only constants in toc */
if (!rela->sym->sec->rela)
return NULL;
/* Will return NULL for .toc constant entries */
return find_rela_by_offset(rela->sym->sec->rela,
(unsigned int)rela->addend);