diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c index 531df648..8b567f43 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c @@ -236,19 +236,19 @@ static struct rela *toc_rela(const struct rela *rela) static void kpatch_bundle_symbols(struct kpatch_elf *kelf) { struct symbol *sym; - unsigned int expected_offset; + uint64_t expected_offset; list_for_each_entry(sym, &kelf->symbols, list) { if (is_bundleable(sym)) { if (sym->pfx) - expected_offset = 16; + expected_offset = sym->pfx->sym.st_size; else if (is_gcc6_localentry_bundled_sym(kelf, sym)) expected_offset = 8; else expected_offset = 0; if (sym->sym.st_value != expected_offset) { - ERROR("symbol %s at offset %lu within section %s, expected %u", + ERROR("symbol %s at offset %lu within section %s, expected %lu", sym->name, sym->sym.st_value, sym->sec->name, expected_offset); } diff --git a/kpatch-build/kpatch-elf.c b/kpatch-build/kpatch-elf.c index 7e9d2c81..c8ab5bd3 100755 --- a/kpatch-build/kpatch-elf.c +++ b/kpatch-build/kpatch-elf.c @@ -470,7 +470,7 @@ static void kpatch_link_prefixed_functions(struct kpatch_elf *kelf) list_for_each_entry(func, &kelf->symbols, list) { if (func->type == STT_FUNC && func->sec == pfx->sec && - func->sym.st_value == pfx->sym.st_value + 16) { + func->sym.st_value == pfx->sym.st_value + pfx->sym.st_size) { /* * If a func has aliases, it's possible for