From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 311233858D20 for ; Tue, 15 Mar 2022 01:22:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 311233858D20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from bogon.localdomain (unknown [113.200.148.30]) by mail.loongson.cn (Coremail) with SMTP id AQAAf9DxPxMu6i9i_34JAA--.6318S2; Tue, 15 Mar 2022 09:21:50 +0800 (CST) From: Youling Tang To: gdb-patches@sourceware.org, "Maciej W. Rozycki" Subject: [PATCH] gdb: mips: Fix large-frame.exp test case failure Date: Tue, 15 Mar 2022 09:21:50 +0800 Message-Id: <1647307310-21454-1-git-send-email-tangyouling@loongson.cn> X-Mailer: git-send-email 2.1.0 X-CM-TRANSID: AQAAf9DxPxMu6i9i_34JAA--.6318S2 X-Coremail-Antispam: 1UD129KBjvJXoW7WF4DJF4DGF1Dtw48Ar4fZrb_yoW8CF15p3 y3Kw17CF48JFnrC3W2kr48trZ5KFWkuFyYy3yfA3yjkF45Z347KrZ7t3Wjkw1rWFZava4a 93Z3AwnFvrn3A3DanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkFb7Iv0xC_Kw4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_Xr0_Ar1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Cr0_Gr1UM28EF7xvwVC2z280aVAFwI0_Cr1j6rxdM28EF7xvwV C2z280aVCY1x0267AKxVWxJr0_GcWle2I262IYc4CY6c8Ij28IcVAaY2xG8wAqx4xG64xv F2IEw4CE5I8CrVC2j2WlYx0E2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE14v26r1j6r 4UMcvjeVCFs4IE7xkEbVWUJVW8JwACjcxG0xvY0x0EwIxGrwCY02Avz4vE14v_KwCF04k2 0xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI 8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41l IxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIx AIcVCF04k26cxKx2IYs7xG6Fyj6rWUJwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I8E 87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07bYlk3UUUUU= X-CM-SenderInfo: 5wdqw5prxox03j6o00pqjv00gofq/ X-Spam-Status: No, score=-13.4 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Mar 2022 01:22:03 -0000 $ objdump -d outputs/gdb.base/large-frame/large-frame-O2 0000000120000b20 : 120000b20: 67bdbff0 daddiu sp,sp,-16400 120000b24: ffbc4000 sd gp,16384(sp) 120000b28: 3c1c0002 lui gp,0x2 120000b2c: 679c8210 daddiu gp,gp,-32240 120000b30: 0399e02d daddu gp,gp,t9 120000b34: df998058 ld t9,-32680(gp) 120000b38: ffbf4008 sd ra,16392(sp) 120000b3c: 0411ffd8 bal 120000aa0 ... The disassembly of the above func function shows that we may use instructions such as daddiu/daddu, so add "daddiu $gp,$gp,n", "daddu $gp,$gp,$t9" and "daddu $gp,$t9,$gp" to the mips32_scan_prologue function to fix the large-frame.exp test case. Before applying the patch: backtrace^M #0 blah (a=0xfffffee220) at /home/tang/gdb-work/upstream/binutils-gdb/gdb/testsuite/gdb.base/large-frame-1.c:24^M #1 0x0000000120000b44 in func ()^M Backtrace stopped: frame did not save the PC^M (gdb) FAIL: gdb.base/large-frame.exp: optimize=-O2: backtrace # of expected passes 5 # of unexpected failures 1 After applying the patch: # of expected passes 6 Signed-off-by: Youling Tang --- gdb/mips-tdep.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 5cd72ae..7e37578 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -3588,8 +3588,11 @@ mips32_scan_prologue (struct gdbarch *gdbarch, || (inst & 0xFF9F07FF) == 0x00800021 /* move reg,$a0-$a3 */ || high_word == 0x3c1c /* lui $gp,n */ || high_word == 0x279c /* addiu $gp,$gp,n */ + || high_word == 0x679c /* daddiu $gp,$gp,n */ || inst == 0x0399e021 /* addu $gp,$gp,$t9 */ || inst == 0x033ce021 /* addu $gp,$t9,$gp */ + || inst == 0x0399e02d /* daddu $gp,$gp,$t9 */ + || inst == 0x033ce02d /* daddu $gp,$t9,$gp */ ) { /* These instructions are part of the prologue, but we don't -- 2.1.0