diff --git a/util/cbfstool/rmodule.c b/util/cbfstool/rmodule.c index 817bc604f0..80e89118e5 100644 --- a/util/cbfstool/rmodule.c +++ b/util/cbfstool/rmodule.c @@ -50,12 +50,18 @@ static int valid_reloc_amd64(Elf64_Rela *rel) type = ELF64_R_TYPE(rel->r_info); - /* Only these 5 relocations are expected to be found. */ + /* Only these 6 relocations are expected to be found. */ return (type == R_AMD64_64 || type == R_AMD64_PC64 || type == R_AMD64_32S || type == R_AMD64_32 || - type == R_AMD64_PC32); + type == R_AMD64_PC32 || + /* + * binutils 2.31 introduced R_AMD64_PLT32 for non local + * functions. As we don't care about procedure linkage + * table entries handle it as R_X86_64_PC32. + */ + type == R_AMD64_PLT32); } static int should_emit_amd64(Elf64_Rela *rel)