Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: asmwarrior <asmwarrior@gmail.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: Pierre Muller <pierre.muller@ics-cnrs.unistra.fr>,
	 'Eli Zaretskii' <eliz@gnu.org>,
	gdb-patches@sourceware.org
Subject: Re: [RFC-v5] Fix .text section offset for windows DLL (was Calling __stdcall functions in the inferior)
Date: Fri, 07 Dec 2012 15:23:00 -0000	[thread overview]
Message-ID: <50C20A66.70002@gmail.com> (raw)
In-Reply-To: <20121207071035.GG31477@adacore.com>

On 2012-12-7 15:10, Joel Brobecker wrote:
>> 2012-11-25  Pierre Muller<muller@sourceware.org>
>> >
>> >         * coff-pe-read.h (pe_text_section_offset): Declare new function.
>> >         * coff-pe-read.c (debug_coff_pe_read): New static variable.
>> >         (struct read_pe_section_data): Add section_name field.
>> >         (IMAGE_SCN_CNT_CODE): New macro, if not already defined.
>> >         (IMAGE_SCN_CNT_INITIALIZED_DATA): Ditto.
>> >         (IMAGE_SCN_CNT_UNINITIALIZED_DATA): Ditto.
>> >         (get_pe_section_index): New function.
>> >         (struct pe_sections_info): New type.
>> >         (get_section_vmas): Use new struct pe_sections_info.
>> >         (add_pe_exported_sym): Handle unnamed exported function.
>> >         (add_pe_forwarded_sym): New function.
>> >         (read_pe_truncate_name): Truncate at last dot.
>> >         (pe_as16): New function.
>> >         (read_pe_exported_syms): Use ordinal of function to
>> >         retrieve correct RVA address of function and handle
>> >         forwarded symbol.
>> >         (pe_text_section_offset): New function.
>> >         (show_debug_coff_pe_read): New function.
>> >         (_initialize_coff_pe_read): New function adding
>> >         'set/show debug coff_pe_read' commands.
>> >
>> >         * windows-tdep.c (windows_xfer_shared_library): Use
>> >         pe_text_section_offset function instead of possibly wrong
>> >         0x1000 constant for .text sextion offset.
> Looks good
I still has crashes, see the debug log and crash bt.

I use an un-patched gdb to debug the patched gdb. The debugee gdb crashes when try to run a exe file(codeblocks.exe)


E:\code\cb\CB_NIGHTLY>gdb_stable gdb.exe
GNU gdb (GDB) 7.5.50.20121126-cvs
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from E:\code\gcc\PCXMinGW463\bin\gdb.exe...done.
(gdb) r
Starting program: E:\code\gcc\PCXMinGW463\bin\gdb.exe
[New Thread 38480.0x95a0]
GNU gdb (GDB) 7.5.50.20121207-cvs
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "mingw32".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) [New Thread 38480.0x9620]
[New Thread 38480.0x9028]
file e:/code/cb/cleantrunk/src/devel/codeblocks.exe
Reading symbols from e:\code\cb\cleantrunk\src\devel\codeblocks.exe...done.
<ciations --multiply-instance --no-splash-screen --verbose -p=debugCC
(gdb) r
Starting program: e:\code\cb\cleantrunk\src\devel\codeblocks.exe --debug-log --n
o-dde --no-check-associations --multiply-instance --no-splash-screen --verbose -
p=debugCC
[New Thread 37324.0x9270]

Program received signal SIGSEGV, Segmentation fault.
0x77c47740 in strcmp () from C:\WINDOWS\system32\msvcrt.dll
(gdb) bt
#0  0x77c47740 in strcmp () from C:\WINDOWS\system32\msvcrt.dll
#1  0x00535669 in get_pe_section_index (nb_sections=5,
     sections=<optimized out>, section_name=0x576b410 ".data")
     at ../../gdb/gdb/coff-pe-read.c:112
#2  get_section_vmas (abfd=0x30543d0, sectp=0x576c4c0, context=0x2a7f894)
     at ../../gdb/gdb/coff-pe-read.c:133
#3  0x005f9672 in bfd_map_over_sections (abfd=0x30543d0,
     operation=0x535630 <get_section_vmas>, user_storage=0x2a7f894)
     at ../../gdb/bfd/section.c:1329
#4  0x00536066 in read_pe_exported_syms (objfile=0x5834090)
     at ../../gdb/gdb/coff-pe-read.c:524
#5  0x00535408 in coff_symtab_read (objfile=0x5834090, nsyms=0,
     symtab_offset=<optimized out>) at ../../gdb/gdb/coffread.c:1127
#6  coff_symfile_read (objfile=0x5834090, symfile_flags=8)
     at ../../gdb/gdb/coffread.c:610
#7  0x004d3967 in read_symbols (objfile=0x5834090, add_flags=8)
     at ../../gdb/gdb/symfile.c:885
#8  0x004d340e in syms_from_objfile (objfile=0x5834090,
     addrs=<optimized out>, offsets=0x0, num_offsets=0, add_flags=8)
     at ../../gdb/gdb/symfile.c:1020
#9  0x004d36f0 in symbol_file_add_with_addrs_or_offsets (
     abfd=<optimized out>, add_flags=8, addrs=0x4d9d640,
     flags=<optimized out>, parent=0x0, num_offsets=0, offsets=0x0)
     at ../../gdb/gdb/symfile.c:1123
#10 0x005c2df7 in solib_read_symbols (so=0x2ff7ff8, flags=8)
     at ../../gdb/gdb/solib.c:608
#11 0x005c322a in solib_add (pattern=0x0, from_tty=0,
     target=0x96efa0 <current_target>, readsyms=1) at ../../gdb/gdb/solib.c:919
#12 0x004dfcce in post_create_inferior (target=0x96efa0 <current_target>,
     from_tty=0) at ../../gdb/gdb/infcmd.c:477
#13 0x004dfe7c in run_command_1 (args=0x0, from_tty=<optimized out>,
     tbreak_at_main=<optimized out>) at ../../gdb/gdb/infcmd.c:631
#14 0x005ada85 in execute_command (p=0x4cfa1b9 "", from_tty=1)
     at ../../gdb/gdb/top.c:491
#15 0x004fda16 in command_handler (command=0x4cfa1b8 "")
     at ../../gdb/gdb/event-top.c:429
#16 0x004fe1c3 in command_line_handler (rl=0x292888 " ")
     at ../../gdb/gdb/event-top.c:630
#17 0x005df1c1 in rl_callback_read_char ()
     at ../../gdb/readline/callback.c:220
#18 0x004fda88 in rl_callback_read_char_wrapper (client_data=0x0)
     at ../../gdb/gdb/event-top.c:163
#19 0x004fcd84 in handle_file_event (data=...)
     at ../../gdb/gdb/event-loop.c:827
#20 0x004fcd13 in process_event () at ../../gdb/gdb/event-loop.c:401
#21 process_event () at ../../gdb/gdb/event-loop.c:351
#22 0x004fd095 in gdb_do_one_event () at ../../gdb/gdb/event-loop.c:465
#23 0x004fd1ec in start_event_loop () at ../../gdb/gdb/event-loop.c:490
#24 0x004f79c2 in captured_command_loop (data=0x0) at ../../gdb/gdb/main.c:256
#25 0x004f66eb in catch_errors (func=0x4f79b0 <captured_command_loop>,
     func_args=0x0, errstring=0x736c0d <__PRETTY_FUNCTION__.12471+203> "",
     mask=6) at ../../gdb/gdb/exceptions.c:546
#26 0x004f84c6 in captured_main (data=0x2a7fee0) at ../../gdb/gdb/main.c:1032
#27 0x004f66eb in catch_errors (func=0x4f7b70 <captured_main>,
     func_args=0x2a7fee0,
     errstring=0x736c0d <__PRETTY_FUNCTION__.12471+203> "", mask=6)
     at ../../gdb/gdb/exceptions.c:546
#28 0x004f8ab0 in gdb_main (args=0x2a7fee0) at ../../gdb/gdb/main.c:1041
#29 0x006d0878 in main (argc=1, argv=0x293fe0) at ../../gdb/gdb/gdb.c:34
(gdb) frame 1
#1  0x00535669 in get_pe_section_index (nb_sections=5,
     sections=<optimized out>, section_name=0x576b410 ".data")
     at ../../gdb/gdb/coff-pe-read.c:112
112         if (strcmp (sections[i].section_name, section_name) == 0)
(gdb) p i
$1 = <optimized out>
(gdb) p sections[i]
value has been optimized out
(gdb) p section_name
$2 = 0x576b410 ".data"
(gdb) p sections[i].section_name
value has been optimized out
(gdb) p nb_sections
$3 = 5
(gdb) p sections
$4 = <optimized out>
(gdb)

---------------------------------------------------
But it looks like a lot of variables were optimized out.

But it looks like the crash happens here:

static int
get_pe_section_index (const char *section_name,
               struct read_pe_section_data *sections,
               int nb_sections)
{
   int i;
   for (i = 0; i < nb_sections; i++)
     if (strcmp (sections[i].section_name, section_name) == 0)
       return i;
   return PE_SECTION_INDEX_INVALID;
}

In the "strcmp" function call.

Yuanhui Zhang


  reply	other threads:[~2012-12-07 15:23 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <83a9vs89r9.fsf@gnu.org>
     [not found] ` <201210120953.q9C9rqfu020865@glazunov.sibelius.xs4all.nl>
     [not found]   ` <834nm07z0s.fsf@gnu.org>
     [not found]     ` <5077FEB9.4030304@redhat.com>
     [not found]       ` <83y5jb7rfe.fsf@gnu.org>
2012-10-15 13:36         ` [RFC] " Pierre Muller
2012-10-24 19:45           ` Joel Brobecker
2012-10-25 12:21             ` Pierre Muller
2012-11-05 17:11               ` Joel Brobecker
2012-11-06 14:31                 ` [RFC-v2] " Pierre Muller
     [not found]                 ` <50991f5f.8382440a.1100.ffff82abSMTPIN_ADDED@mx.google.com>
2012-11-07 19:44                   ` Pedro Alves
2012-11-08  9:54                     ` [RFC-v3] " Pierre Muller
2012-11-22 17:30                       ` Joel Brobecker
2012-11-22 17:51                         ` Pedro Alves
2012-11-25 22:50                         ` [RFC-v4] " Pierre Muller
2012-11-26 17:22                           ` Joel Brobecker
2012-11-26 18:36                             ` Tom Tromey
2012-11-26 20:58                               ` Joel Brobecker
     [not found]                         ` <15690.5992342674$1353883881@news.gmane.org>
2012-11-26  4:04                           ` asmwarrior
2012-11-26 10:14                             ` Pierre Muller
     [not found]                             ` <50b340fb.0aec440a.1c48.5818SMTPIN_ADDED_BROKEN@mx.google.com>
2012-11-26 11:39                               ` Pedro Alves
2012-11-26 16:54                           ` Tom Tromey
2012-11-27 14:59                             ` [RFC-v5] " Pierre Muller
2012-12-07  7:10                               ` Joel Brobecker
2012-12-07 15:23                                 ` asmwarrior [this message]
2012-12-07 15:41                                   ` Pierre Muller
     [not found]                                   ` <29545.4593528577$1354894901@news.gmane.org>
2012-12-07 16:15                                     ` asmwarrior
2012-12-07 16:27                                       ` Pierre Muller
     [not found]                                       ` <50c21914.a750420a.2ec3.ffffe4ffSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-07 17:10                                         ` Pedro Alves
2012-12-07 17:49                                           ` Pedro Alves
2012-12-13 10:57                                             ` Pierre Muller
2012-12-13 11:07                                               ` Pedro Alves
2012-12-13 11:49                                                 ` Pedro Alves
     [not found]                                                 ` <00a201cdd931$b0ee13f0$12ca3bd0$@muller@ics-cnrs.unistra.fr>
2012-12-13 14:32                                                   ` Pedro Alves
2012-12-13 15:17                                                     ` Pierre Muller
2012-12-13 14:33                                                   ` Pedro Alves
2012-12-13 14:56                                                     ` Pierre Muller
2012-12-13 15:03                                                       ` Pedro Alves
2012-12-13 16:43                                                         ` Pedro Alves
2012-12-13 16:54                                                           ` Pierre Muller
2012-12-13 16:56                                                             ` Pedro Alves
2012-12-13 17:09                                                               ` Pierre Muller
2012-12-13 15:08                                                       ` Pierre Muller
2012-12-13 16:04                                                         ` Pedro Alves
     [not found]                                       ` <50c218e5.2850b40a.0281.ffffbef4SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-08 14:17                                         ` asmwarrior
2012-12-08 15:07                                           ` asmwarrior
2012-12-08 18:01                                           ` Pierre Muller
     [not found]                                           ` <50c38058.03d0d80a.31dd.4e28SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-09  2:45                                             ` asmwarrior
2012-12-09 12:45                                               ` Pierre Muller
     [not found]                                               ` <50c487f8.a813b40a.57d7.ffffdc7fSMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-09 13:19                                                 ` asmwarrior
2012-12-13 10:48                                 ` Pierre Muller
     [not found]                                 ` <37373.4003318988$1355395714@news.gmane.org>
2012-12-13 16:16                                   ` Tom Tromey
2012-12-13 16:21                                     ` Pierre Muller
     [not found]                                     ` <12936.6976012991$1355415704@news.gmane.org>
2012-12-13 20:05                                       ` Tom Tromey
     [not found]                             ` <42721.1671988063$1354028360@news.gmane.org>
2012-11-28  2:44                               ` asmwarrior
2012-11-29  3:40                                 ` asmwarrior
2012-12-12  0:59                               ` asmwarrior
     [not found]                         ` <50b2a0d1.c849420a.3a3a.3538SMTPIN_ADDED_BROKEN@mx.google.com>
2012-12-07 16:38                           ` [RFC-v4] " Pedro Alves
2012-12-07 17:03                             ` Pierre Muller
2012-12-07 17:50                               ` Pedro Alves
     [not found]                     ` <000301cdbd96$f5cd9f10$e168dd30$%muller@ics-cnrs.unistra.fr>
2012-11-17 10:01                       ` [RFC-v3] " Eli Zaretskii
     [not found]         ` <006001cdaada$00c81f00$02585d00$%muller@ics-cnrs.unistra.fr>
2012-10-15 17:23           ` [RFC] " Eli Zaretskii
2012-11-03 10:36             ` Eli Zaretskii
2012-11-06 13:55               ` Pierre Muller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50C20A66.70002@gmail.com \
    --to=asmwarrior@gmail.com \
    --cc=brobecker@adacore.com \
    --cc=eliz@gnu.org \
    --cc=gdb-patches@sourceware.org \
    --cc=pierre.muller@ics-cnrs.unistra.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox