diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c index ebdff49..328d6b1 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c @@ -2520,12 +2520,10 @@ static void kpatch_create_intermediate_sections(struct kpatch_elf *kelf, /* add rela to fill in krelas[index].dest field */ ALLOC_LINK(rela2, &krela_sec->rela->relas); - if (sec->base->sym) - rela2->sym = sec->base->sym; - else if (sec->base->secsym) + if (sec->base->secsym) rela2->sym = sec->base->secsym; else - ERROR("can't create dynrela for section %s (symbol %s): no bundled section or section symbol", + ERROR("can't create dynrela for section %s (symbol %s): no bundled or section symbol", sec->name, rela->sym->name); rela2->type = ABSOLUTE_RELA_TYPE; diff --git a/kpatch-build/create-klp-module.c b/kpatch-build/create-klp-module.c index e3fa09b..a217b6a 100644 --- a/kpatch-build/create-klp-module.c +++ b/kpatch-build/create-klp-module.c @@ -205,13 +205,10 @@ static void create_klp_relasecs_and_syms(struct kpatch_elf *kelf, struct section /* Add the klp rela to the .klp.rela. section */ ALLOC_LINK(rela, &klp_relasec->relas); + rela->offset = dest->sym.st_value + dest_off; rela->type = krelas[index].type; rela->sym = sym; rela->addend = krelas[index].addend; - if (!strcmp(dest->sec->name, ".toc")) - rela->offset = dest_off; - else - rela->offset = dest_off + dest->sym.st_value; } }