From: Josh Poimboeuf <jpoimboe@redhat.com> To: Peter Zijlstra <peterz@infradead.org> Cc: Sami Tolvanen <samitolvanen@google.com>, Jann Horn <jannh@google.com>, the arch/x86 maintainers <x86@kernel.org>, Masahiro Yamada <masahiroy@kernel.org>, Steven Rostedt <rostedt@goodmis.org>, Will Deacon <will@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, "Paul E. McKenney" <paulmck@kernel.org>, Kees Cook <keescook@chromium.org>, Nick Desaulniers <ndesaulniers@google.com>, clang-built-linux <clang-built-linux@googlegroups.com>, Kernel Hardening <kernel-hardening@lists.openwall.com>, linux-arch <linux-arch@vger.kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org>, linux-kbuild <linux-kbuild@vger.kernel.org>, kernel list <linux-kernel@vger.kernel.org>, linux-pci@vger.kernel.org Subject: Re: [PATCH v6 22/25] x86/asm: annotate indirect jumps Date: Wed, 21 Oct 2020 16:27:47 -0500 [thread overview] Message-ID: <20201021212747.ofk74lugt4hhjdzg@treble> (raw) In-Reply-To: <20201021093213.GV2651@hirez.programming.kicks-ass.net> On Wed, Oct 21, 2020 at 11:32:13AM +0200, Peter Zijlstra wrote: > On Wed, Oct 21, 2020 at 10:56:06AM +0200, Peter Zijlstra wrote: > > > I do not see these in particular, although I do see a lot of: > > > > "sibling call from callable instruction with modified stack frame" > > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x10a: sibling call from callable instruction with modified stack frame > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x99: (branch) > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x3e: (branch) > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x0: <=== (sym) > > $ nm defconfig-build/vmlinux.o | grep msr_write > 0000000000043250 t msr_write > 00000000004289c0 T msr_write > 0000000000003056 t msr_write.cold > > Below 'fixes' it. So this is also caused by duplicate symbols. There's a new linker flag for renaming duplicates: https://sourceware.org/bugzilla/show_bug.cgi?id=26391 But I guess that doesn't help us now. I don't have access to GCC 10 at the moment so I can't recreate it. Does this fix it? diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c index 4e1d7460574b..aecdf25b2381 100644 --- a/tools/objtool/elf.c +++ b/tools/objtool/elf.c @@ -217,11 +217,14 @@ struct symbol *find_func_containing(struct section *sec, unsigned long offset) return NULL; } +#define for_each_possible_sym(elf, name, sym) \ + elf_hash_for_each_possible(elf->symbol_name_hash, sym, name_hash, str_hash(name)) + struct symbol *find_symbol_by_name(const struct elf *elf, const char *name) { struct symbol *sym; - elf_hash_for_each_possible(elf->symbol_name_hash, sym, name_hash, str_hash(name)) + for_each_possible_sym(elf, name, sym) if (!strcmp(sym->name, name)) return sym; @@ -432,6 +435,8 @@ static int read_symbols(struct elf *elf) list_for_each_entry(sym, &sec->symbol_list, list) { char pname[MAX_NAME_LEN + 1]; size_t pnamelen; + struct symbol *psym; + if (sym->type != STT_FUNC) continue; @@ -454,8 +459,14 @@ static int read_symbols(struct elf *elf) strncpy(pname, sym->name, pnamelen); pname[pnamelen] = '\0'; - pfunc = find_symbol_by_name(elf, pname); - + pfunc = NULL; + for_each_possible_sym(elf, pname, psym) { + if ((!psym->cfunc || psym->cfunc == psym) && + !strcmp(psym->name, pname)) { + pfunc = psym; + break; + } + } if (!pfunc) { WARN("%s(): can't find parent function", sym->name);
WARNING: multiple messages have this Message-ID (diff)
From: Josh Poimboeuf <jpoimboe@redhat.com> To: Peter Zijlstra <peterz@infradead.org> Cc: linux-arch <linux-arch@vger.kernel.org>, Kees Cook <keescook@chromium.org>, "Paul E. McKenney" <paulmck@kernel.org>, Jann Horn <jannh@google.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Masahiro Yamada <masahiroy@kernel.org>, the arch/x86 maintainers <x86@kernel.org>, Nick Desaulniers <ndesaulniers@google.com>, kernel list <linux-kernel@vger.kernel.org>, Steven Rostedt <rostedt@goodmis.org>, linux-kbuild <linux-kbuild@vger.kernel.org>, clang-built-linux <clang-built-linux@googlegroups.com>, Sami Tolvanen <samitolvanen@google.com>, linux-pci@vger.kernel.org, Kernel Hardening <kernel-hardening@lists.openwall.com>, Will Deacon <will@kernel.org>, Linux ARM <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH v6 22/25] x86/asm: annotate indirect jumps Date: Wed, 21 Oct 2020 16:27:47 -0500 [thread overview] Message-ID: <20201021212747.ofk74lugt4hhjdzg@treble> (raw) In-Reply-To: <20201021093213.GV2651@hirez.programming.kicks-ass.net> On Wed, Oct 21, 2020 at 11:32:13AM +0200, Peter Zijlstra wrote: > On Wed, Oct 21, 2020 at 10:56:06AM +0200, Peter Zijlstra wrote: > > > I do not see these in particular, although I do see a lot of: > > > > "sibling call from callable instruction with modified stack frame" > > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x10a: sibling call from callable instruction with modified stack frame > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x99: (branch) > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x3e: (branch) > defconfig-build/vmlinux.o: warning: objtool: msr_write()+0x0: <=== (sym) > > $ nm defconfig-build/vmlinux.o | grep msr_write > 0000000000043250 t msr_write > 00000000004289c0 T msr_write > 0000000000003056 t msr_write.cold > > Below 'fixes' it. So this is also caused by duplicate symbols. There's a new linker flag for renaming duplicates: https://sourceware.org/bugzilla/show_bug.cgi?id=26391 But I guess that doesn't help us now. I don't have access to GCC 10 at the moment so I can't recreate it. Does this fix it? diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c index 4e1d7460574b..aecdf25b2381 100644 --- a/tools/objtool/elf.c +++ b/tools/objtool/elf.c @@ -217,11 +217,14 @@ struct symbol *find_func_containing(struct section *sec, unsigned long offset) return NULL; } +#define for_each_possible_sym(elf, name, sym) \ + elf_hash_for_each_possible(elf->symbol_name_hash, sym, name_hash, str_hash(name)) + struct symbol *find_symbol_by_name(const struct elf *elf, const char *name) { struct symbol *sym; - elf_hash_for_each_possible(elf->symbol_name_hash, sym, name_hash, str_hash(name)) + for_each_possible_sym(elf, name, sym) if (!strcmp(sym->name, name)) return sym; @@ -432,6 +435,8 @@ static int read_symbols(struct elf *elf) list_for_each_entry(sym, &sec->symbol_list, list) { char pname[MAX_NAME_LEN + 1]; size_t pnamelen; + struct symbol *psym; + if (sym->type != STT_FUNC) continue; @@ -454,8 +459,14 @@ static int read_symbols(struct elf *elf) strncpy(pname, sym->name, pnamelen); pname[pnamelen] = '\0'; - pfunc = find_symbol_by_name(elf, pname); - + pfunc = NULL; + for_each_possible_sym(elf, pname, psym) { + if ((!psym->cfunc || psym->cfunc == psym) && + !strcmp(psym->name, pname)) { + pfunc = psym; + break; + } + } if (!pfunc) { WARN("%s(): can't find parent function", sym->name); _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-10-21 21:28 UTC|newest] Thread overview: 188+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-10-13 0:31 [PATCH v6 00/25] Add support for Clang LTO Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 01/25] kbuild: preprocess module linker script Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 02/25] objtool: Add a pass for generating __mcount_loc Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 16:50 ` Ingo Molnar 2020-10-14 16:50 ` Ingo Molnar 2020-10-14 18:21 ` Peter Zijlstra 2020-10-14 18:21 ` Peter Zijlstra 2020-10-15 20:10 ` Josh Poimboeuf 2020-10-15 20:10 ` Josh Poimboeuf 2020-10-13 0:31 ` [PATCH v6 03/25] objtool: Don't autodetect vmlinux.o Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 04/25] tracing: move function tracer options to Kconfig Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 05/25] tracing: add support for objtool mcount Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 06/25] x86, build: use " Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 07/25] treewide: remove DISABLE_LTO Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 22:43 ` Kees Cook 2020-10-14 22:43 ` Kees Cook 2020-10-17 1:46 ` Masahiro Yamada 2020-10-17 1:46 ` Masahiro Yamada 2020-10-13 0:31 ` [PATCH v6 08/25] kbuild: add support for Clang LTO Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 09/25] kbuild: lto: fix module versioning Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 10/25] objtool: Split noinstr validation from --vmlinux Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 11/25] kbuild: lto: postpone objtool Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 12/25] kbuild: lto: limit inlining Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 13/25] kbuild: lto: merge module sections Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 22:49 ` Kees Cook 2020-10-14 22:49 ` Kees Cook 2020-10-20 16:42 ` Sami Tolvanen 2020-10-20 16:42 ` Sami Tolvanen 2020-10-20 16:42 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 14/25] kbuild: lto: remove duplicate dependencies from .mod files Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 22:50 ` Kees Cook 2020-10-14 22:50 ` Kees Cook 2020-12-03 17:59 ` Masahiro Yamada 2020-12-03 17:59 ` Masahiro Yamada 2020-12-03 18:47 ` Sami Tolvanen 2020-12-03 18:47 ` Sami Tolvanen 2020-12-03 18:47 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 15/25] init: lto: ensure initcall ordering Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 16/25] init: lto: fix PREL32 relocations Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 22:53 ` Kees Cook 2020-10-14 22:53 ` Kees Cook 2020-10-15 0:12 ` Jann Horn 2020-10-15 0:12 ` Jann Horn 2020-10-15 0:12 ` Jann Horn 2020-10-13 0:31 ` [PATCH v6 17/25] PCI: Fix PREL32 relocations for LTO Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-14 22:58 ` Kees Cook 2020-10-14 22:58 ` Kees Cook 2020-10-13 0:31 ` [PATCH v6 18/25] modpost: lto: strip .lto from module names Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 19/25] scripts/mod: disable LTO for empty.c Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 20/25] efi/libstub: disable LTO Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` [PATCH v6 21/25] drivers/misc/lkdtm: disable LTO for rodata.o Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:31 ` Sami Tolvanen 2020-10-13 0:32 ` [PATCH v6 22/25] x86/asm: annotate indirect jumps Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-14 22:46 ` Kees Cook 2020-10-14 22:46 ` Kees Cook 2020-10-14 23:23 ` Jann Horn 2020-10-14 23:23 ` Jann Horn 2020-10-14 23:23 ` Jann Horn 2020-10-15 10:22 ` Peter Zijlstra 2020-10-15 10:22 ` Peter Zijlstra 2020-10-15 20:39 ` Josh Poimboeuf 2020-10-15 20:39 ` Josh Poimboeuf 2020-10-20 16:45 ` Sami Tolvanen 2020-10-20 16:45 ` Sami Tolvanen 2020-10-20 16:45 ` Sami Tolvanen 2020-10-20 18:52 ` Josh Poimboeuf 2020-10-20 18:52 ` Josh Poimboeuf 2020-10-20 19:24 ` Sami Tolvanen 2020-10-20 19:24 ` Sami Tolvanen 2020-10-20 19:24 ` Sami Tolvanen 2020-10-21 8:56 ` Peter Zijlstra 2020-10-21 8:56 ` Peter Zijlstra 2020-10-21 9:08 ` Peter Zijlstra 2020-10-21 9:08 ` Peter Zijlstra 2020-10-21 9:32 ` Peter Zijlstra 2020-10-21 9:32 ` Peter Zijlstra 2020-10-21 21:27 ` Josh Poimboeuf [this message] 2020-10-21 21:27 ` Josh Poimboeuf 2020-10-22 7:25 ` Peter Zijlstra 2020-10-22 7:25 ` Peter Zijlstra 2020-10-23 17:48 ` Sami Tolvanen 2020-10-23 17:48 ` Sami Tolvanen 2020-10-23 18:04 ` Nick Desaulniers 2020-10-23 18:04 ` Nick Desaulniers 2020-10-23 18:04 ` Nick Desaulniers 2020-10-21 15:01 ` Sami Tolvanen 2020-10-21 15:01 ` Sami Tolvanen 2020-10-21 15:01 ` Sami Tolvanen 2020-10-22 0:22 ` Sami Tolvanen 2020-10-22 0:22 ` Sami Tolvanen 2020-10-22 0:22 ` Sami Tolvanen 2020-10-23 17:36 ` Sami Tolvanen 2020-10-23 17:36 ` Sami Tolvanen 2020-11-09 23:11 ` Sami Tolvanen 2020-11-09 23:11 ` Sami Tolvanen 2020-11-09 23:11 ` Sami Tolvanen 2020-11-10 2:29 ` Josh Poimboeuf 2020-11-10 2:29 ` Josh Poimboeuf 2020-11-10 3:18 ` Nick Desaulniers 2020-11-10 3:18 ` Nick Desaulniers 2020-11-10 3:18 ` Nick Desaulniers 2020-11-10 4:48 ` Sami Tolvanen 2020-11-10 4:48 ` Sami Tolvanen 2020-11-10 4:48 ` Sami Tolvanen 2020-11-10 16:11 ` Josh Poimboeuf 2020-11-10 16:11 ` Josh Poimboeuf 2020-11-10 17:46 ` Josh Poimboeuf 2020-11-10 17:46 ` Josh Poimboeuf 2020-11-10 18:59 ` Sami Tolvanen 2020-11-10 18:59 ` Sami Tolvanen 2020-11-10 18:59 ` Sami Tolvanen 2020-11-13 19:54 ` Josh Poimboeuf 2020-11-13 19:54 ` Josh Poimboeuf 2020-11-13 20:24 ` Sami Tolvanen 2020-11-13 20:24 ` Sami Tolvanen 2020-11-13 20:24 ` Sami Tolvanen 2020-11-13 20:52 ` Josh Poimboeuf 2020-11-13 20:52 ` Josh Poimboeuf 2020-11-13 22:34 ` Josh Poimboeuf 2020-11-13 22:34 ` Josh Poimboeuf 2020-11-13 22:54 ` Sami Tolvanen 2020-11-13 22:54 ` Sami Tolvanen 2020-11-13 22:54 ` Sami Tolvanen 2020-11-13 22:56 ` Josh Poimboeuf 2020-11-13 22:56 ` Josh Poimboeuf 2020-11-13 23:31 ` Sami Tolvanen 2020-11-13 23:31 ` Sami Tolvanen 2020-11-13 23:31 ` Sami Tolvanen 2020-11-14 0:49 ` Josh Poimboeuf 2020-11-14 0:49 ` Josh Poimboeuf 2020-10-21 9:51 ` Peter Zijlstra 2020-10-21 9:51 ` Peter Zijlstra 2020-10-21 18:30 ` Josh Poimboeuf 2020-10-21 18:30 ` Josh Poimboeuf 2020-10-13 0:32 ` [PATCH v6 23/25] x86, vdso: disable LTO only for vDSO Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` [PATCH v6 24/25] x86, cpu: disable LTO for cpu.c Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` [PATCH v6 25/25] x86, build: allow LTO_CLANG and THINLTO to be selected Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen 2020-10-13 0:32 ` Sami Tolvanen
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201021212747.ofk74lugt4hhjdzg@treble \ --to=jpoimboe@redhat.com \ --cc=clang-built-linux@googlegroups.com \ --cc=gregkh@linuxfoundation.org \ --cc=jannh@google.com \ --cc=keescook@chromium.org \ --cc=kernel-hardening@lists.openwall.com \ --cc=linux-arch@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kbuild@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-pci@vger.kernel.org \ --cc=masahiroy@kernel.org \ --cc=ndesaulniers@google.com \ --cc=paulmck@kernel.org \ --cc=peterz@infradead.org \ --cc=rostedt@goodmis.org \ --cc=samitolvanen@google.com \ --cc=will@kernel.org \ --cc=x86@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.