diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2022-12-19 12:27:25 -0300 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2022-12-19 12:27:25 -0300 |
commit | 30d647f5ba9ebefa153ad2bc3f05e3a7c7d90d1c (patch) | |
tree | 418c535ebc1a0001b7c448e1d7ff97cf79bff8fd /tools/objtool/elf.c | |
parent | 66dfc517e8ec530b1d8d4776c05e3f264f38ecb8 (diff) | |
parent | aeba12b26c79fc35e07e511f692a8907037d95da (diff) |
Merge remote-tracking branch 'torvalds/master' into perf/core
To pick up fixes.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/objtool/elf.c')
-rw-r--r-- | tools/objtool/elf.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c index 8cd7f018002c5..64443a7f4bbf9 100644 --- a/tools/objtool/elf.c +++ b/tools/objtool/elf.c @@ -1174,6 +1174,7 @@ static struct section *elf_create_rela_reloc_section(struct elf *elf, struct sec { char *relocname; struct section *sec; + int addrsize = elf_class_addrsize(elf); relocname = malloc(strlen(base->name) + strlen(".rela") + 1); if (!relocname) { @@ -1183,7 +1184,10 @@ static struct section *elf_create_rela_reloc_section(struct elf *elf, struct sec strcpy(relocname, ".rela"); strcat(relocname, base->name); - sec = elf_create_section(elf, relocname, 0, sizeof(GElf_Rela), 0); + if (addrsize == sizeof(u32)) + sec = elf_create_section(elf, relocname, 0, sizeof(Elf32_Rela), 0); + else + sec = elf_create_section(elf, relocname, 0, sizeof(GElf_Rela), 0); free(relocname); if (!sec) return NULL; @@ -1192,7 +1196,7 @@ static struct section *elf_create_rela_reloc_section(struct elf *elf, struct sec sec->base = base; sec->sh.sh_type = SHT_RELA; - sec->sh.sh_addralign = 8; + sec->sh.sh_addralign = addrsize; sec->sh.sh_link = find_section_by_name(elf, ".symtab")->idx; sec->sh.sh_info = base->idx; sec->sh.sh_flags = SHF_INFO_LINK; |