The following commit has been merged into the objtool/core branch of tip: Commit-ID: 5920038dc2aa75b7aa3f5ca767b06a71c67cf897 Gitweb: https://git.kernel.org/tip/5920038dc2aa75b7aa3f5ca767b06a71c67cf897 Author: Kristen Carlson Accardi <kristen@xxxxxxxxxxxxxxx> AuthorDate: Wed, 15 Apr 2020 14:04:43 -07:00 Committer: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> CommitterDate: Tue, 21 Apr 2020 18:50:26 -05:00 objtool: Do not assume order of parent/child functions If a .cold function is examined prior to it's parent, the link to the parent/child function can be overwritten when the parent is examined. Only update pfunc and cfunc if they were previously nil to prevent this from happening. This fixes an -ffunction-sections issue. Signed-off-by: Kristen Carlson Accardi <kristen@xxxxxxxxxxxxxxx> Signed-off-by: Josh Poimboeuf <jpoimboe@xxxxxxxxxx> --- tools/objtool/elf.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/objtool/elf.c b/tools/objtool/elf.c index 43748cb..03e542d 100644 --- a/tools/objtool/elf.c +++ b/tools/objtool/elf.c @@ -418,7 +418,13 @@ static int read_symbols(struct elf *elf) size_t pnamelen; if (sym->type != STT_FUNC) continue; - sym->pfunc = sym->cfunc = sym; + + if (sym->pfunc == NULL) + sym->pfunc = sym; + + if (sym->cfunc == NULL) + sym->cfunc = sym; + coldstr = strstr(sym->name, ".cold"); if (!coldstr) continue;