From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id CBLrOtZB/V/ANAAAWB0awg (envelope-from ) for ; Tue, 12 Jan 2021 01:29:42 -0500 Received: by simark.ca (Postfix, from userid 112) id E03C91EF7E; Tue, 12 Jan 2021 01:29:42 -0500 (EST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI,MSGID_FROM_MTA_HEADER,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 847321E590 for ; Tue, 12 Jan 2021 01:29:41 -0500 (EST) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E6138386EC3F; Tue, 12 Jan 2021 06:29:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E6138386EC3F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1610432980; bh=wmdYtHtiBbMnw2dHL2EChGN3fQGALuV4kDjRi7IFNZA=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=XsynigCKqhmOjk7GMxSWs7iI4OTZlUJrwvo/0WtKXH+6rq2juBk3zN9Dmhb38SazI b2bDsEp2aZDQexu4g7TYX8KlpbW+d6mmReHZ3pK3X42Fbxl3US3Bjp9AcsjS6MzcYk h6RtsLzjAOuhwip5Zel6T258s0UlexT030b1wu40= Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2058.outbound.protection.outlook.com [40.107.220.58]) by sourceware.org (Postfix) with ESMTPS id 613AE3858D29 for ; Tue, 12 Jan 2021 06:29:37 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 613AE3858D29 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hSO6Kt/teuK0nGLTnlYJTwk/cWLrE9VUbki9yAkj3wTX4oGcnXjW7SeVgVuJ+7TznwpAzmI4lsFop3L32akzCdpfKdJJ+JcXz9I3U/5Xch+sx/myJ9dsOVeIU2Q0NdOxPU1RCYbO/IUps+vPGuwTUTG4bBzaFB7/F9xNPjlco7sWjzCyytcGv6MbmSnpnNlQtI8EenManvRNSuEMXq9ZteJWZs68Duu+Xqjm0WPbPS7aNj4C+Okwb7lwzYWvhgHGhDizJ1NpHB3uqbwO9i/lsVt3UAk24SO4nT1SQV6ZIRO6KUMTWcCp8gCWf72RGwDJTohsGPibGxZ/MbTckIoiEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wmdYtHtiBbMnw2dHL2EChGN3fQGALuV4kDjRi7IFNZA=; b=QibvEgAXh99MEIBlCdkmsQ7W5Sh9gQkgzjwmURUnPYZ+Vs2v4SLRdRT1FU6axDEit6z2+HBsxFibPQ7i50v9qNOgvWgoXQf7Y9Hn/hVFGTNIolV7wKdDXfHR3VxSWtsIpchosVOQMpsWBGQXIG96jljJArmVVrBILykz+ZKS2eddj1Fr0uY6o6djVfO0OzjEX+xKfUGWzCRw+R59xFXHN4ZqcGvdQ5ZDT0mxkTfd4uCzHo2bj6Yqtf4V8UfltN9/smoJU9XpfiaDwFAJwgfxAV38sDu4ELOE6dS1I/aMvLoLmn4MzqAOwvT0Ts3eourTeZLDQFmghlkWSKZO/nSjaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none Received: from MN2PR12MB3039.namprd12.prod.outlook.com (2603:10b6:208:c9::27) by MN2PR12MB2974.namprd12.prod.outlook.com (2603:10b6:208:c1::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.12; Tue, 12 Jan 2021 06:29:35 +0000 Received: from MN2PR12MB3039.namprd12.prod.outlook.com ([fe80::8d36:559:10f6:d664]) by MN2PR12MB3039.namprd12.prod.outlook.com ([fe80::8d36:559:10f6:d664%3]) with mapi id 15.20.3742.012; Tue, 12 Jan 2021 06:29:35 +0000 To: gdb-patches@sourceware.org Subject: [PATCH] DWARFv5: Fix for the filename complaint when printing macro. Date: Tue, 12 Jan 2021 11:59:18 +0530 Message-Id: <20210112062918.2448-1-Nitika.Achra@amd.com> X-Mailer: git-send-email 2.17.1 Content-Type: text/plain X-Originating-IP: [165.204.156.251] X-ClientProxiedBy: MA1PR0101CA0051.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::13) To MN2PR12MB3039.namprd12.prod.outlook.com (2603:10b6:208:c9::27) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from bglcomp-haswell-105.amd.com (165.204.156.251) by MA1PR0101CA0051.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:20::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6 via Frontend Transport; Tue, 12 Jan 2021 06:29:33 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: c995e673-e56e-4ae5-3d50-08d8b6c36ded X-MS-TrafficTypeDiagnostic: MN2PR12MB2974: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s3ZtqRrTysVWD1rM1OVFDH2FsL3Liukco1SnZjFeBpjwiN4jREpuph+CYGR+p6XsJfhE9QDikWAa+AnnlBiQ7hme6p31oVtPj2Mt7TIx9DcssfCY8psPIgdOkzGSUgZlxa30PIf8+061FD3aWglcLCxoMJLnP56zCKV+D6m92udUedLhk9jOvDcGs34ZY/8t7vCFnSayTEG2aR6UXg/Vrsi/+HY+Hdtcf6Uaqfc4BfwsUyCVSQJGB+1y/ZFc7tEtvO9NQaYolwbgsG7glcn3NOTLJuM8cJkc7qaXNpahG1QITL0vidlNNO6Y8JsLdt/0UYpgsBZvxYpmiQpZDnFle4Jr6GuN5wGdDXYVrJbFk7LUYVTEAq+lH1e8woyswHbhd0uFcA5UZbGfSVT2tP+6QI/Wlo1/lFy+xmE9JeKnVKm8H0RMGqmpSowbBY5nJpiP X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3039.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(136003)(376002)(346002)(39860400002)(8676002)(66476007)(2906002)(2616005)(1076003)(66556008)(316002)(6666004)(4326008)(16526019)(5660300002)(186003)(8936002)(956004)(6916009)(66946007)(7696005)(26005)(6486002)(86362001)(83380400001)(52116002)(36756003)(9686003)(478600001)(403724002); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?us-ascii?Q?hc5gosxZMH0lwrwuFc3NBBc0sleqGnVEfvP9J1+tAE8F1UUSR4af7Dd3cU3b?= =?us-ascii?Q?j3X1hMF47bIxI7EjJB+Q1l83FqMvt7Z0gCP1UMjSeL+qoX11mjs6ij3HMEx2?= =?us-ascii?Q?v7aEguu+L4baWYhKRnlbbafDDjPJ/vqcP9z85b0CHGaIo3I2CPXwym1BtEMK?= =?us-ascii?Q?k8Whm/IVQwoVeudhsQqpvhI1R8ED1JfqYxd2h3kZYBkhgyZ6FDbAFaZHwuZI?= =?us-ascii?Q?H6xds3NnFcbjmmimVjLZqqJFGePfPmPFSQ9FEaoH+V7ZToH0V0zs3ofm3y+t?= =?us-ascii?Q?pyWQf0BfoFN/Sy+FUg7qbavZwXgJSIYvT5jLrfbqxhKAnmz25jfEUHFrESoy?= =?us-ascii?Q?zalBknwXDW+txD+QLQxXRom72rA+n3Bgc3aWx6EyscRS095GMK4tJKaNGSyP?= =?us-ascii?Q?Hlw/HLq+1ldUUW+epD5QselTn8vsRQi9ovuKfYlF5Tj1UmGm7MrZtJUp8Bjt?= =?us-ascii?Q?X+bmucEB/uic9eLW0xseLa8KESd6ZcR4AsAVsU4ka0iQpCLK10aUwXyZ0Jv6?= =?us-ascii?Q?23b5fYr3lb4ycQJmlxwgMosKTnutClCJfq7M2mo/ESnQNHj/DZwnndY1bpZs?= =?us-ascii?Q?/HPQsabunfDygnoc87vToSbjVVYY1h/+s8G9vOUcuhAapdj6xmjXz1exjxpJ?= =?us-ascii?Q?OC/lV3kBQHV6tWaYggQDd+Cm97gckshQtnz9VxhIcKcqc3Oeza8+s08xs4nC?= =?us-ascii?Q?tmZSgx3Hce/ESa2ESd0YQh5Z7fCcf7HZc1eojfQ6RqMWDka1YYSBTWzx3dV+?= =?us-ascii?Q?y//FDz63Q7wpccUfeireXSXWXV6eemLXhAj04IBr3MRM3R3OZcQ7Sl/jI806?= =?us-ascii?Q?/J28KyOK7HtYZCDZBegDtyDFecN7rWE3QpRyNpYCHDbCvpwu2mtbCK5NuAtm?= =?us-ascii?Q?vY71w7K543OAElPDtpzzoSPMRzWbQVNgN42bjcs7wNS/RzBbPUoaxEM/16mD?= =?us-ascii?Q?s6DkgtKNTKUgZ2kNJLR4Gl+aDzjj1lhxTRjdLXIieU7LhZST10nMPC25OQKh?= =?us-ascii?Q?9mXQ?= X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3039.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jan 2021 06:29:35.1027 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-Network-Message-Id: c995e673-e56e-4ae5-3d50-08d8b6c36ded X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jGMM0+mV1iEGETWBzif2F/kPZRYKCCYLhIBFLspLgencVs8FLrltxpJlqqNziWXMiQUO0SwPE4gwhG4Q+UUxaQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB2974 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: , From: "Nitika.Achra--- via Gdb-patches" Reply-To: Nitika.Achra@amd.com Cc: JiniSusan.George@amd.com, nitachra Errors-To: gdb-patches-bounces@sourceware.org Sender: "Gdb-patches" From: nitachra GDB complaints "During symbol reading: symtab found for file, but that file is not covered in the compilation unit's macro information. No symbol "MAX_SIZE" in the current context" when printing the macro with the testcase file macro.c given below. This patch fixes this and prints the correct value. When gdb reads file number from DW_MACRO_start_file data in .debug_macro section, it will do name lookup in file_names and include_directories index table of .debug_line section. A snippet of .debug_macro is as follows- DW_MACRO_start_file - lineno: 0 filenum: 1 DW_MACRO_define_strx - lineno: 3 macro: MAX_SIZE 10 DW_MACRO_end_file Index of the file for the lookup in file_names table in .debug_line is (filenum - 1) A snippet of .debug_line is as follows- file_names[ 0]: name: "macro.c" dir_index: 0 md5_checksum: 0ee310711170f2dd9844b522e844207d dir_index will be used to lookup the path in include_directories table- include_directories[ 0] = "/home/nitika/workspace" include_directories[ 1] = "/usr/include" include_directories[ 2] = "/usr/include/x86_64-linux-gnu/bits" include_directories[ 3] = "/usr/include/x86_64-linux-gnu/sys" include_directories[ 4] = "/usr/include/x86_64-linux-gnu/gnu" include_directories[ 5] = "up_llvm/llvm-project/build/lib/clang/11.0.0/include" include_directories[ 6] = "/usr/include/x86_64-linux-gnu/bits/types" Prior to DWARFv5 include_directories[0] has no info, so a lookup at that index will return NULL and we have file name "macro.c". But in dwarfv5, current directory is explicitly represented at index 0 (as shown in the snippet above), hence after lookup you get "/home/nitika/workspace/macro.c". (compilation directory is /home/nitika/workspace) Test case used (macro.c): #define MAX_SIZE 10 int main(void) { int size = 0; size = size + MAX_SIZE; printf("\n The value of size is [%d]\n",size); return 0; } clang -gdwarf-5 -fdebug-macro macro.c -o macro.out Before the patch: gdb -q macro.out -ex "start" -ex "set complaints 1" -ex "p MAX_SIZE" Reading symbols from macro.out... Temporary breakpoint 1 at 0x4004df: file macro.c, line 7. Starting program: /home/nitika/workspace/macro.out Temporary breakpoint 1, main () at macro.c:7 7 int size = 0; During symbol reading: symtab found for 'macro.c', but that file is not covered in the compilation unit's macro information. No symbol "MAX_SIZE" in current context. After the patch: gdb -q macro.out -ex "start" -ex "p MAX_SIZE" Reading symbols from macro.out... Temporary breakpoint 1 at 0x4004df: file macro.c, line 7. Starting program: /home/nitika/workspace/macro.out Temporary breakpoint 1, main () at macro.c:7 7 int size = 0; $1 = 10 Tested by running the testsuite before and after the patch with -gdwarf-5 and there is no increase in the number of test cases that fails. Used clang 11.0.0. gdb/ChangeLog: * macrotab.c (macro_lookup_inclusion): In DWARF version 5, macro filename includes the full directory path. Changing the if condition to include the comparison for full filename. * macrotab.h (macro_lookup_inclusion): Changing the definition, symtab as parameter instead of only the filename. * macroscope.c (sal_macro_scope): Passing the symtab instead of filename while calling macro_lookup_inclusion. * dwarf2/line-header.c (file_file_name): As per the comment in its definition in line-header.h, it should return file name relative to the compilation directory of file number I in this object's file name table. --- gdb/dwarf2/line-header.c | 8 -------- gdb/macroscope.c | 2 +- gdb/macrotab.c | 7 ++++--- gdb/macrotab.h | 2 +- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/gdb/dwarf2/line-header.c b/gdb/dwarf2/line-header.c index 7575297f96..8975a03285 100644 --- a/gdb/dwarf2/line-header.c +++ b/gdb/dwarf2/line-header.c @@ -69,14 +69,6 @@ line_header::file_file_name (int file) const { const file_entry *fe = file_name_at (file); - if (!IS_ABSOLUTE_PATH (fe->name)) - { - const char *dir = fe->include_dir (this); - if (dir != NULL) - return gdb::unique_xmalloc_ptr (concat (dir, SLASH_STRING, - fe->name, - (char *) NULL)); - } return make_unique_xstrdup (fe->name); } else diff --git a/gdb/macroscope.c b/gdb/macroscope.c index e2abdd1bdd..a994068003 100644 --- a/gdb/macroscope.c +++ b/gdb/macroscope.c @@ -50,7 +50,7 @@ sal_macro_scope (struct symtab_and_line sal) gdb::unique_xmalloc_ptr ms (XNEW (struct macro_scope)); main_file = macro_main (COMPUNIT_MACRO_TABLE (cust)); - inclusion = macro_lookup_inclusion (main_file, sal.symtab->filename); + inclusion = macro_lookup_inclusion (main_file, sal.symtab); if (inclusion) { diff --git a/gdb/macrotab.c b/gdb/macrotab.c index 96b29e345a..fae14b3c3c 100644 --- a/gdb/macrotab.c +++ b/gdb/macrotab.c @@ -504,10 +504,11 @@ macro_include (struct macro_source_file *source, struct macro_source_file * -macro_lookup_inclusion (struct macro_source_file *source, const char *name) +macro_lookup_inclusion (struct macro_source_file *source, struct symtab *symtab) { /* Is SOURCE itself named NAME? */ - if (filename_cmp (name, source->filename) == 0) + if (filename_cmp (symtab->filename, source->filename) == 0 || + filename_cmp (symtab->fullname, macro_source_fullname(source).c_str()) == 0) return source; /* It's not us. Try all our children, and return the lowest. */ @@ -519,7 +520,7 @@ macro_lookup_inclusion (struct macro_source_file *source, const char *name) for (child = source->includes; child; child = child->next_included) { struct macro_source_file *result - = macro_lookup_inclusion (child, name); + = macro_lookup_inclusion (child, symtab); if (result) { diff --git a/gdb/macrotab.h b/gdb/macrotab.h index ea539e872e..6cbd3bc474 100644 --- a/gdb/macrotab.h +++ b/gdb/macrotab.h @@ -235,7 +235,7 @@ void macro_define_special (struct macro_table *table); least-nested inclusion --- the one closest to the main source file. */ struct macro_source_file *macro_lookup_inclusion (struct macro_source_file *source, - const char *name); + struct symtab *symtab); /* Record an object-like #definition (i.e., one with no parameter list). -- 2.17.1