delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2015/05/24/11:45:43

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp AT delorie DOT com
Message-ID: <5561F262.2010001@gmx.de>
Date: Sun, 24 May 2015 17:46:42 +0200
From: "Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de)" <djgpp AT delorie DOT com>
User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; de; rv:1.9.2.13) Gecko/20101206 SUSE/3.1.7 Thunderbird/3.1.7
MIME-Version: 1.0
To: djgpp AT delorie DOT com
Subject: Re: New GDB versions and DJGPP (Was: ANNOUNCE: DJGPP 2.05 beta 1)
References: <201505042003 DOT t44K3odg011007 AT delorie DOT com> <555829A6 DOT 8010502 AT iki DOT fi> <CAA2C=vA73qPvoDFytp3FeW6bCD1-XuGsFFoDinoKn2KYY1fkow AT mail DOT gmail DOT com> <555870E8 DOT 7040302 AT iki DOT fi> <CAA2C=vDhD6BJj89o1i0FRd2U0H4bTpGGN4zH6qs7FJKxzqhuQg AT mail DOT gmail DOT com> <201505180114 DOT t4I1EiaX017288 AT envy DOT delorie DOT com> <CAA2C=vCyrQ_+Yq6XsRD-UO4r=j9WoGGiXoqQFrkbiEQpzX+=MA AT mail DOT gmail DOT com> <201505181216 DOT t4ICGaKO014123 AT envy DOT delorie DOT com> <CAA2C=vCk5MY74z+HNVzzdLByg71Y_9ObK-1jPxJ_KF8eqRDZMQ AT mail DOT gmail DOT com> <83zj52dkns DOT fsf AT gnu DOT org> <CAA2C=vAPcN+MKC_2tcZqVmo9gvF2Cxdo+K+-qfKaNrQuCkMnEw AT mail DOT gmail DOT com> <555A0DD5 DOT 1010607 AT iki DOT fi> <83r3qdemuj DOT fsf AT gnu DOT org> <555AADE6 DOT 3030905 AT iki DOT f> <83lhgkehn4 DOT fsf AT gnu DOT org> <201505191714 DOT t4JHEr0B010992 AT envy DOT delorie DOT com> <83vbfo7a74 DOT fsf AT gnu DOT org> <201505191729 DOT t4JHTIRe011541 AT envy DOT delorie DOT com> <83sias77km DOT fsf AT gnu DOT org> <555CFF9C DOT 1050301 AT gmx DOT de> <555D5E30 DOT 7020107 AT iki DOT fi> <83vbfl6hs9 DOT fsf AT gnu DOT org> <55618917.7@[87.69.4.28]> <83d21q1g6n DOT fsf AT gnu DOT org> <5561C8A0 DOT 2010401 AT gmx DOT de>
In-Reply-To: <5561C8A0.2010401@gmx.de>
X-Provags-ID: V03:K0:W+V4wgI9LXqt4y5i63QQTcdFmxnWXk+JXcDzbUPnVXTwKVHJSHZ
TDIIU/ctQaanwIlzbAGAYXn6hd2LEvN7Cb+p17kJhVdVUuuf9uvvnMSiepOkFHNmerk+axv
P5igNpAhotAHMbIjxzWGRQOr4Dv/hy/pdlQWHQCxq/AOz24HAjxA1LwiBDpj4CNWqYu1MK6
AzZuOfwCW07jNb67Q5DUw==
X-UI-Out-Filterresults: notjunk:1;
Reply-To: djgpp AT delorie DOT com

Am 24.05.2015 14:48, schrieb Juan Manuel Guerrero (juan DOT guerrero AT gmx DOT de):
> Am 24.05.2015 11:24, schrieb Eli Zaretskii (eliz AT gnu DOT org):
>>> Date: Sun, 24 May 2015 11:17:27 +0300
>>> From: "Andris Pavenis (andris DOT pavenis AT iki DOT fi)"<djgpp AT delorie DOT com>
>>>
>>>> So what and how goes wrong in the DJGPP build of GDB? Can someone
>>>> with enough free time step through the go32 initialization, and see
>>>> what's wrong there?
>>>
>>> Perhaps at least some hint could give GDB commit which caused that DJGPP port stopped to work (with
>>> symptoms described earlier)
>>>
>>> https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=9b409511d07fe375284701af34909fb539029caf
>>
>> Thanks!
>>
>> Actually, it seems bd265cd0bde9e045ab5946532449430b66fe91ad, which is
>> a followup to the one you mentioned, is the bad commit. It seems a
>> simple case of misunderstanding the API conventions of our read_child
>> and write_child.
>>
>> Can you try the patch below? If it fixes the problem, I will push it.
>>
>> diff --git a/gdb/go32-nat.c b/gdb/go32-nat.c
>> index f3966cd..852473b 100644
>> --- a/gdb/go32-nat.c
>> +++ b/gdb/go32-nat.c
>> @@ -587,6 +587,13 @@
>> else
>> res = read_child (memaddr, readbuf, len);
>>
>> + /* read_child and write_child return zero on success, non-zero on
>> + failure; adjust the result value to that. */
>> + if (res == 0)
>> + res = len;
>> + else
>> + res = -1;
>> +
>> if (res<= 0)
>> return TARGET_XFER_E_IO;
>>
>
> I have tried the patch with gdb 7.9.1 and djgpp support seems to work again.
> Neitherless sometimes backtrace and finish behave strange. Please give me
> some time more to check. Especially with djgpp 2.05.
>
> Regards,
> Juan M. Guerrero
>
>


OFYI,
I have compiled the repository code from yesterday using GCC 4.9.2 and GNU Binutils 2.24.
I have used -O0 -ggdb flags.  This was intentional to be able to step into functions.
The produced library has been installed and used to compile GDB 7.9.1.

The following test program has been compiled using -O0 -ggdb:
-------------  program start -------------
#include <stdio.h>


int print(const char *message)
{
   int written;

   written = printf("%s\n", message);

   return written;
}

int main(void)
{
   int written = 0;

   written = print("qwertz");

   return written;
}
-------------  program end -------------

Steppinng into the code works well.
If I step into printf() and I issue the bt command I get the following
output:

(gdb) r
Starting program: c:/tmp/5/a.exe

Breakpoint 1, main () at a.c:15
15        int written = 0;
(gdb) s
17        written = print("qwertz");
(gdb)
print (message=0x1f35 <print+33> "qwertz") at a.c:8
8         written = printf("%s\n", message);
(gdb)
printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:10
10      {
(gdb)
printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:14
14        va_start(args, fmt);
(gdb) n
15        len = _doprnt(fmt, args, stdout);
(gdb) bt
#0  printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:15
#1  0x00003316 in nofpsig () at npxsetup.c:51
#2  0x00000006 in ?? ()
#3  0x00001f2a in print (message=0x1f35 <print+33> "qwertz") at a.c:8
#4  0x00001f61 in main () at a.c:17
(gdb)



The remarkable issue is that although I used the n command to avoid stepping
into _doprnt() gdb behaves as if the s command had been used.  After having
stepped into _doprnt() I get the following output for the bt command:

10      {
(gdb)
printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:14
14        va_start(args, fmt);
(gdb) n
15        len = _doprnt(fmt, args, stdout);
(gdb) bt
#0  printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:15
#1  0x00003316 in nofpsig () at npxsetup.c:51
#2  0x00000006 in ?? ()
#3  0x00001f2a in print (message=0x1f35 <print+33> "qwertz") at a.c:8
#4  0x00001f61 in main () at a.c:17
(gdb) n
_doprnt (fmt0=0x1f10 <_crt0_init_mcount+10> "%s\n", argp=0x99b24 "5\037",
     fp=0x11db0 <__dj_stdout>) at doprnt.c:119
119     {
(gdb)
148       locale_info = localeconv();
(gdb)
149       decimal_point = locale_info->decimal_point[0];
(gdb) bt
#0  _doprnt (fmt0=0x1f10 <_crt0_init_mcount+10> "%s\n", argp=0x99b24 "5\037",
     fp=0x11db0 <__dj_stdout>) at doprnt.c:149
#1  0x00000000 in ?? ()
(gdb)



If I issue the finish command to run until the end of the function
I get the following output:

#0  printf (fmt=0x1f10 <_crt0_init_mcount+10> "%s\n") at printf.c:15
#1  0x00003316 in nofpsig () at npxsetup.c:51
#2  0x00000006 in ?? ()
#3  0x00001f2a in print (message=0x1f35 <print+33> "qwertz") at a.c:8
#4  0x00001f61 in main () at a.c:17
(gdb) n
_doprnt (fmt0=0x1f10 <_crt0_init_mcount+10> "%s\n", argp=0x99b24 "5\037",
     fp=0x11db0 <__dj_stdout>) at doprnt.c:119
119     {
(gdb)
148       locale_info = localeconv();
(gdb)
149       decimal_point = locale_info->decimal_point[0];
(gdb) bt
#0  _doprnt (fmt0=0x1f10 <_crt0_init_mcount+10> "%s\n", argp=0x99b24 "5\037",
     fp=0x11db0 <__dj_stdout>) at doprnt.c:149
#1  0x00000000 in ?? ()
(gdb) finish
Run till exit from #0  _doprnt (fmt0=0x1f10 <_crt0_init_mcount+10> "%s\n",
     argp=0x99b24 "5\037", fp=0x11db0 <__dj_stdout>) at doprnt.c:149
Warning:
Cannot insert breakpoint 0.
Cannot access memory at address 0x0

(gdb)



If more information is required please let me know.

Regards,
Juan M. Guerrero

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019