Skip to content

Commit

Permalink
create-diff-object: Handle ppc64le toc with only constants
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
Julien Thierry committed Feb 28, 2020
1 parent fcc7dad commit fbfc8f9
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions kpatch-build/create-diff-object.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit fbfc8f9

Please sign in to comment.