From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751622AbdGZNzM (ORCPT ); Wed, 26 Jul 2017 09:55:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:50448 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751601AbdGZNzK (ORCPT ); Wed, 26 Jul 2017 09:55:10 -0400 DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com B1972A9626 Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx09.extmail.prod.ext.phx2.redhat.com; spf=fail smtp.mailfrom=jpoimboe@redhat.com Date: Wed, 26 Jul 2017 08:55:08 -0500 From: Josh Poimboeuf To: Arnd Bergmann Cc: Linux Kernel Mailing List , Ingo Molnar Subject: Re: objtool failures with -march=atom Message-ID: <20170726135508.lfvkf2oef5vxclaj@treble> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.6.0.1 (2016-04-01) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.38]); Wed, 26 Jul 2017 13:55:10 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 26, 2017 at 12:12:04PM +0200, Arnd Bergmann wrote: > With the latest objtool failure, I get countless warnings when > -march=atom or -mtune=atom is used, > at least with gcc-4.9 through gcc-7 (I did not try older versions: > > kernel/sched/core.o: warning: objtool: > trace_raw_output_sched_stat_runtime()+0x9a: return with modified stack > frame > kernel/sched/core.o: warning: objtool: cpu_cgroup_fork()+0x7c: return > with modified stack frame > kernel/sched/core.o: warning: objtool: walk_tg_tree_from()+0xd3: > return with modified stack frame > kernel/sched/core.o: warning: objtool: ttwu_do_wakeup()+0x2a8: return > with modified stack frame > kernel/sched/core.o: warning: objtool: do_set_cpus_allowed()+0x1fe: > return with modified stack frame > kernel/sched/core.o: warning: objtool: sched_ttwu_pending()+0xf2: > return with modified stack frame > kernel/sched/core.o: warning: objtool: sched_exec()+0xd0: return with > modified stack frame > kernel/sched/core.o: warning: objtool: task_sched_runtime()+0x148: > return with modified stack frame > kernel/sched/core.o: warning: objtool: sched_move_task()+0x176: return > with modified stack frame > kernel/sched/core.o: warning: objtool: sched_init()+0x6cb: return with > modified stack frame > > Can you have a look? > > There are probably other failures as well, I'm trying to reproduce the > others now with atom > optimizations disabled. Does this fix them all? diff --git a/tools/objtool/arch/x86/decode.c b/tools/objtool/arch/x86/decode.c index a36c2eba64e7..4559a21a8de2 100644 --- a/tools/objtool/arch/x86/decode.c +++ b/tools/objtool/arch/x86/decode.c @@ -271,7 +271,7 @@ int arch_decode_instruction(struct elf *elf, struct section *sec, case 0x8d: if (rex == 0x48 && modrm == 0x65) { - /* lea -disp(%rbp), %rsp */ + /* lea disp(%rbp), %rsp */ *type = INSN_STACK; op->src.type = OP_SRC_ADD; op->src.reg = CFI_BP; @@ -281,6 +281,30 @@ int arch_decode_instruction(struct elf *elf, struct section *sec, break; } + if (rex == 0x48 && (modrm == 0xa4 || modrm == 0x64) && + sib == 0x24) { + + /* lea disp(%rsp), %rsp */ + *type = INSN_STACK; + op->src.type = OP_SRC_ADD; + op->src.reg = CFI_SP; + op->src.offset = insn.displacement.value; + op->dest.type = OP_DEST_REG; + op->dest.reg = CFI_SP; + break; + } + + if (rex == 0x48 && modrm == 0x2c && sib == 0x24) { + + /* lea (%rsp), %rbp */ + *type = INSN_STACK; + op->src.type = OP_SRC_REG; + op->src.reg = CFI_SP; + op->dest.type = OP_DEST_REG; + op->dest.reg = CFI_BP; + break; + } + if (rex == 0x4c && modrm == 0x54 && sib == 0x24 && insn.displacement.value == 8) {