From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7447 invoked by alias); 28 Jul 2005 05:23:34 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 7411 invoked by uid 22791); 28 Jul 2005 05:23:29 -0000 Received: from ausmtp01.au.ibm.com (HELO ausmtp01.au.ibm.com) (202.81.18.186) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Thu, 28 Jul 2005 05:23:29 +0000 Received: from sd0208e0.au.ibm.com (d23rh904.au.ibm.com [202.81.18.202]) by ausmtp01.au.ibm.com (8.12.10/8.12.10) with ESMTP id j6S5PhSX152760 for ; Thu, 28 Jul 2005 15:25:44 +1000 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.250.237]) by sd0208e0.au.ibm.com (8.12.10/NCO/VERS6.7) with ESMTP id j6S5PvgD164916 for ; Thu, 28 Jul 2005 15:25:58 +1000 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.12.11/8.13.3) with ESMTP id j6S5N0G5016044 for ; Thu, 28 Jul 2005 15:23:00 +1000 Received: from wks190494wss.cn.ibm.com (wks190494wss.cn.ibm.com [9.181.134.203]) by d23av04.au.ibm.com (8.12.11/8.12.11) with ESMTP id j6S5Mr33015915; Thu, 28 Jul 2005 15:22:57 +1000 Date: Thu, 28 Jul 2005 05:23:00 -0000 From: Wu Zhou X-X-Sender: woodzltc@localhost.localdomain To: gdb-patches@sources.redhat.com cc: drow@false.net Subject: [RFC]: set the main function in Fortran programs to "MAIN__" Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-SW-Source: 2005-07/txt/msg00220.txt.bz2 Daniel, Although the proper way of adding case insensitivity to symbol lookup is still under discussion, I think it might be desirable to set the main function of Fortran programs to "MAIN__" first. Because it can at least let GDB recognize that the language is Fortran after loading a Fortran executable only. What is your idea on this? Please comments. TIA! Here is the patch to set the main function in Fortran programs to "MAIN__". And followed is a patch to verify this. Tested with g77 and gfortran on x86, and g77 on ppc64. With the first patch, it reported PASS; without, report FAIL. No regression is found in gdb.fortran testcases. P.S: if there is a symbol named "MAIN__" in sources of other languages, it might disturb the debugging. But I am not sure how much it is. Index: gdb/symtab.c =================================================================== RCS file: /cvs/src/src/gdb/symtab.c,v retrieving revision 1.145 diff -c -p -r1.145 symtab.c *** gdb/symtab.c 8 Mar 2005 04:34:44 -0000 1.145 --- gdb/symtab.c 28 Jul 2005 03:16:48 -0000 *************** find_main_name (void) *** 4125,4132 **** } /* The languages above didn't identify the name of the main procedure. ! Fallback to "main". */ ! set_main_name ("main"); } char * --- 4125,4136 ---- } /* The languages above didn't identify the name of the main procedure. ! Fallback to "MAIN__" (g77 and gfortran) if we can find it in the ! minimal symtab, to "main" otherwise. */ ! if (lookup_minimal_symbol ("MAIN__", NULL, NULL)) ! set_main_name ("MAIN__"); ! else ! set_main_name ("main"); } char * Testcase lang.exp to verify the above patch: =========================================================== *** /dev/null Mon Jul 25 13:51:17 2005 --- gdb/testsuite/gdb.fortran/lang.exp Mon Jul 25 06:50:20 2005 *************** *** 0 **** --- 1,40 ---- + # Copyright 2005 Free Software Foundation, Inc. + + # This program is free software; you can redistribute it and/or modify + # it under the terms of the GNU General Public License as published by + # the Free Software Foundation; either version 2 of the License, or + # (at your option) any later version. + # + # This program is distributed in the hope that it will be useful, + # but WITHOUT ANY WARRANTY; without even the implied warranty of + # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + # GNU General Public License for more details. + # + # You should have received a copy of the GNU General Public License + # along with this program; if not, write to the Free Software + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + # This file was written by Wu Zhou. (woodzltc@cn.ibm.com) + + # This file is part of the gdb testsuite. It is intended to test that gdb + # could recognize the Fortran language after loading the binary + + if $tracelevel then { + strace $tracelevel + } + + set testfile "array-element" + set srcfile ${srcdir}/${subdir}/${testfile}.f + set binfile ${objdir}/${subdir}/${testfile} + + if { [gdb_compile "${srcfile}" "${binfile}" executable {debug f77}] != "" } { + untested "Couldn't compile ${srcfile}" + return -1 + } + + gdb_exit + gdb_start + gdb_reinitialize_dir $srcdir/$subdir + gdb_load ${binfile} + + gdb_test "show language" ".*currently fortran.*" "show language(fortran)" Regards - Wu Zhou