From patchwork Wed Oct 24 09:04:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alan Hayward X-Patchwork-Id: 29861 Received: (qmail 81245 invoked by alias); 24 Oct 2018 09:04:53 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 81166 invoked by uid 89); 24 Oct 2018 09:04:49 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.0 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, MIME_BASE64_BLANKS, RCVD_IN_DNSWL_NONE, SPF_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=7.2.1, 2171 X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30084.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.84) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 24 Oct 2018 09:04:46 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector1-arm-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I+vJJ7K/WjunmerMuVqLYaW41NpxQBNNweQM09d04EY=; b=bvyi9YSGon7PW7iyHLKwNK+aokw8DaNMw9eBAKbKpvQC2Q7LVfKOqmcAy7nI9PXrzCwkhhZzl0QCTQb/5f4vmJi0dRToipPOGo7FHOOpUmbhtx5YEoz9dPNcPCTDcOgx243YYUdAWfpLOrEbOjPXYRbKaXhrsfKpCQbX/2Bop2Y= Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com (10.172.226.148) by DB6PR0802MB2183.eurprd08.prod.outlook.com (10.172.227.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1250.30; Wed, 24 Oct 2018 09:04:38 +0000 Received: from DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::748a:5f72:2321:bc11]) by DB6PR0802MB2133.eurprd08.prod.outlook.com ([fe80::748a:5f72:2321:bc11%7]) with mapi id 15.20.1250.028; Wed, 24 Oct 2018 09:04:38 +0000 From: Alan Hayward To: "gdb-patches@sourceware.org" CC: nd , Alan Hayward Subject: [PATCH 1/2] Allow function prologues to have multiple repeating lines Date: Wed, 24 Oct 2018 09:04:38 +0000 Message-ID: <20181024090427.22721-1-alan.hayward@arm.com> authentication-results: spf=none (sender IP is ) smtp.mailfrom=Alan.Hayward@arm.com; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) Content-ID: <03831AD98FA60B4FA7B3AE8FE20B86BF@eurprd08.prod.outlook.com> MIME-Version: 1.0 X-IsSubscribed: yes Compiling gdb.cp/ovldbreak.cc on Ubuntu places two identical line numbers in the function prologue. x86_64 Ubtunu 16.04 with GCC 5.4.0-6ubuntu1~16.04.4 000000000040052f
: Line 48 40052f: 55 push %rbp 400530: 48 89 e5 mov %rsp,%rbp 400533: 53 push %rbx 400534: 48 81 ec 88 00 00 00 sub $0x88,%rsp Line 48 40053b: 64 48 8b 04 25 28 00 mov %fs:0x28,%rax 400542: 00 00 400544: 48 89 45 e8 mov %rax,-0x18(%rbp) 400548: 31 c0 xor %eax,%eax Line 49 40054a: c6 45 85 02 movb $0x2,-0x7b(%rbp) Line 50 40054e: c6 45 86 03 movb $0x3,-0x7a(%rbp) etc Aarch64 Ubuntu 16.04 with GCC 7.2.0-1ubuntu1~16.04 0000000000400708
: Line 48 400708: d102c3ff sub sp, sp, #0xb0 40070c: a9027bfd stp x29, x30, [sp,#32] 400710: 910083fd add x29, sp, #0x20 400714: f9001bf3 str x19, [sp,#48] Line 48 400718: 90000100 adrp x0, 420000 <_GLOBAL_OFFSET_TABLE_+0x28> 40071c: 9100e000 add x0, x0, #0x38 400720: f9400001 ldr x1, [x0] 400724: f90047a1 str x1, [x29,#136] 400728: d2800001 mov x1, #0x0 // #0 Line 49 40072c: 52800040 mov w0, #0x2 // #2 400730: 3900b7a0 strb w0, [x29,#45] Line 50 400734: 52800060 mov w0, #0x3 // #3 400738: 3900bba0 strb w0, [x29,#46] etc Compare to openSUSE 13.3 AArch64 with GCC 7.2.1 20171020 00000000004005e4
: Line 48 4005e4: d102c3ff sub sp, sp, #0xb0 4005e8: a9027bfd stp x29, x30, [sp, #32] 4005ec: 910083fd add x29, sp, #0x20 4005f0: f9001bf3 str x19, [sp, #48] Line 49 4005f4: 52800040 mov w0, #0x2 // #2 4005f8: 39023fa0 strb w0, [x29, #143] Line 50 4005fc: 52800060 mov w0, #0x3 // #3 400600: 39023ba0 strb w0, [x29, #142] skip_prologue_using_sal () does did not allow for the case where there might be two SALs with the same line number in a function prologue. Allow this. Fixes over 50 tests on Aarch64 Ubuntu. 2018-10-24 Alan Hayward * symtab.c (skip_prologue_using_sal): Don't break for equal line numbers. --- gdb/symtab.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) -- 2.17.1 (Apple Git-112) diff --git a/gdb/symtab.c b/gdb/symtab.c index 2e48d6527e..67ab5d40fa 100644 --- a/gdb/symtab.c +++ b/gdb/symtab.c @@ -3925,9 +3925,9 @@ skip_prologue_using_sal (struct gdbarch *gdbarch, CORE_ADDR func_addr) sal = find_pc_line (prologue_sal.end, 0); if (sal.line == 0) break; - /* Assume that a consecutive SAL for the same (or larger) - line mark the prologue -> body transition. */ - if (sal.line >= prologue_sal.line) + /* Assume that a SAL to a larger line marks the prologue -> body + transition. */ + if (sal.line > prologue_sal.line) break; /* Likewise if we are in a different symtab altogether (e.g. within a file included via #include).  */