From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 28150 invoked by alias); 12 Jan 2012 00:12:33 -0000 Received: (qmail 28135 invoked by uid 22791); 12 Jan 2012 00:12:31 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_DB,TW_SM X-Spam-Check-By: sourceware.org Received: from mail-iy0-f169.google.com (HELO mail-iy0-f169.google.com) (209.85.210.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 12 Jan 2012 00:12:14 +0000 Received: by iafj26 with SMTP id j26so2189628iaf.0 for ; Wed, 11 Jan 2012 16:12:13 -0800 (PST) Received: by 10.50.40.129 with SMTP id x1mr1528760igk.4.1326327133805; Wed, 11 Jan 2012 16:12:13 -0800 (PST) Received: from [192.168.1.103] ([218.109.112.240]) by mx.google.com with ESMTPS id g34sm10647481ibk.10.2012.01.11.16.12.10 (version=SSLv3 cipher=OTHER); Wed, 11 Jan 2012 16:12:12 -0800 (PST) Message-ID: <4F0E266C.8080208@gmail.com> Date: Thu, 12 Jan 2012 00:17:00 -0000 From: asmwarrior User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:9.0) Gecko/20111222 Thunderbird/9.0.1 MIME-Version: 1.0 To: Doug Evans CC: gdb-patches@sourceware.org Subject: Re: Building GDB 7.3.92 with MinGW References: <83hb03e9sx.fsf@gnu.org> <838vlfe0k9.fsf@gnu.org> <4F0CD948.8080909@gmail.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2012-01/txt/msg00388.txt.bz2 On 2012-1-12 1:48, Doug Evans wrote: > On Tue, Jan 10, 2012 at 4:35 PM, asmwarrior wrote: >> On 2012-1-11 5:23, Doug Evans wrote: >>> For one, remembering to pass -data-directory is a pain. >> >> This parameter does not work correctly under MinGW in the case that I would >> like gdb to automatically run the python script when it startup. > When you say "run the python script", *which* python script are you > referring to? The script code is embedded in c source code in "python.c", in function: voidfinish_python_initialization (void) > >> Normally, my gdb is put in MinGW/bin, and the gdb's own python script is >> under: >> MinGW\share\gdb\python\gdb\*.py >> >> I need to hard-code the code in gdb/main.c to set the data-directory value. >> (Because gdb is build from MSYS+MinGW, but it run normally on Windows shell >> without MSYS) >> >> Here are some hard-code modify to the main.c file, if you do not change >> this, there is no way to load gdb's own python scripts. >> >> diff --git a/gdb/main.c b/gdb/main.c >> index 8b45c25..46b11a8 100644 >> --- a/gdb/main.c >> +++ b/gdb/main.c >> @@ -42,6 +42,10 @@ >> #include "python/python.h" >> #include "objfiles.h" >> +#ifdef _WIN32 >> +extern int get_app_fullpath(char *location, int length); >> +#endif >> + >> /* The selected interpreter. This will be used as a set command >> variable, so it should always be malloc'ed - since >> do_setshow_command will free it. */ >> @@ -355,8 +359,27 @@ captured_main (void *data) >> debug_file_directory = relocate_gdb_directory (DEBUGDIR, >> DEBUGDIR_RELOCATABLE); >> + >> +#ifdef _WIN32 >> + { >> + char location[500]; >> + int len= get_app_fullpath(location, sizeof (location)); >> + if (len == 0 || len> 500 - 1) >> + gdb_datadir = relocate_gdb_directory >> (GDB_DATADIR,GDB_DATADIR_RELOCATABLE); >> + else >> + { >> + char *p_slash =strrchr(location,'\\'); >> + *p_slash = '\000'; >> + p_slash =strrchr(location,'\\'); /* remove the bin folder*/ >> + *p_slash = '\000'; >> + strcat(location,"\\share\\gdb"); >> + gdb_datadir = xstrdup (location); >> + } >> + } >> +#else >> gdb_datadir = relocate_gdb_directory (GDB_DATADIR, >> - GDB_DATADIR_RELOCATABLE); >> + GDB_DATADIR_RELOCATABLE); >> +#endif >> #ifdef WITH_PYTHON_PATH >> { >> >> If I remember correctly, I have post it some months ago. > *If* there is a bug here, and it's not pilot error, it feels like > perhaps the bug is in relocate_gdb_directory. > [Why don't all calls to relocate_gdb_directory require similar treatment? > Thus this feels like the wrong way to go.] > > Maybe if you provide a sample session (and complete session please, no > editing to trim it down), that will help. I have just look at my notes half years ago(no time to write a complete session right now), the issue is: In the file: build\gdb\config.status The value is hard-coded: D["DEBUGDIR"]=" \"/mingw/lib/debug\"" D["DEBUGDIR_RELOCATABLE"]=" 1" D["GDB_DATADIR"]=" \"/mingw/share/gdb\"" There are some code snippet: gdb_program_name = xstrdup (argv[0]); if (! getcwd (gdb_dirbuf, sizeof (gdb_dirbuf))) /* Don't use *_filtered or warning() (which relies on current_target) until after initialize_all_files(). */ fprintf_unfiltered (gdb_stderr, _("%s: warning: error finding " "working directory: %s\n"), argv[0], safe_strerror (errno)); current_directory = gdb_dirbuf; /* Set the sysroot path. */ gdb_sysroot = relocate_gdb_directory (TARGET_SYSTEM_ROOT, TARGET_SYSTEM_ROOT_RELOCATABLE); debug_file_directory = relocate_gdb_directory (DEBUGDIR, DEBUGDIR_RELOCATABLE); gdb_datadir = relocate_gdb_directory (GDB_DATADIR, GDB_DATADIR_RELOCATABLE); But those values were not set correctly, so I need to hack the path under MinGW. It is quite simple to test whether GDB set the python path correctly, just run: python print gdb.PYTHONDIR If it shows the correct path, then it's good. PS: I will have a travel in two days, so further response from me will be some bit later. asmwarrior ollydbg from codeblocks' forum