diff options
| author | Tiezhu Yang <yangtiezhu@loongson.cn> | 2025-02-11 19:50:11 +0800 |
|---|---|---|
| committer | Josh Poimboeuf <jpoimboe@kernel.org> | 2025-03-12 15:43:38 -0700 |
| commit | 091bf313f8a852a7f30c3a8dcef569edfd06f5dc (patch) | |
| tree | 2447b795d16e1763249a446642edfb5688176000 /tools/objtool/check.c | |
| parent | ab6ce22b789622ca732e91cbb3a5cb5ba370cbd0 (diff) | |
objtool: Handle different entry size of rodata
In the most cases, the entry size of rodata is 8 bytes because the
relocation type is 64 bit. There are also 32 bit relocation types,
the entry size of rodata should be 4 bytes in this case.
Add an arch-specific function arch_reloc_size() to assign the entry
size of rodata for x86, powerpc and LoongArch.
Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Link: https://lore.kernel.org/r/20250211115016.26913-3-yangtiezhu@loongson.cn
Acked-by: Huacai Chen <chenhuacai@loongson.cn>
Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Diffstat (limited to 'tools/objtool/check.c')
| -rw-r--r-- | tools/objtool/check.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/objtool/check.c b/tools/objtool/check.c index cfab4a1b1f70..f762d231c747 100644 --- a/tools/objtool/check.c +++ b/tools/objtool/check.c @@ -1969,7 +1969,7 @@ static int add_jump_table(struct objtool_file *file, struct instruction *insn, break; /* Make sure the table entries are consecutive: */ - if (prev_offset && reloc_offset(reloc) != prev_offset + 8) + if (prev_offset && reloc_offset(reloc) != prev_offset + arch_reloc_size(reloc)) break; sym_offset = reloc->sym->offset + reloc_addend(reloc); |
