RE: [RFC-v4] Fix .text section offset for windows DLL (was Calling __stdcall functions in the inferior)

Pierre Muller
2012-11-26T10:14:16Z

Hi all,

thanks for trying the patch out...
As I commented inside my email, I
am not familiar with the make_cleanup/ do_cleanups
functions.
The crash you see it related to my lack of knowledge in that area,
sorry about this.
I really do need advice from knowledgeable persons
about how to correctly chain several cleanups...

Pierre

> -----Message d'origine-----
> De : gdb-patches-owner@sourceware.org [mailto:gdb-patches-
> owner@sourceware.org] De la part de asmwarrior
> Envoyé : lundi 26 novembre 2012 05:07
> À : Pierre Muller
> Cc : gdb-patches@sourceware.org
> Objet : Re: [RFC-v4] Fix .text section offset for windows DLL (was Calling
> __stdcall functions in the inferior)
>
> On 2012-11-26 6:50, Pierre Muller wrote:
> > I attach a new version of my patch to
> > cope with variable offset of .text section for Windows OS DLL's.
> >
> > I hope I have taken all advices of Joel in account.
> > In fact, I was unable to satisfy one suggestion...
> > See below, the answer about my lack of C knowledge.
> >
> >
> > Hoping we are getting closer...
> >
> > Pierre Muller
> >
>
> gdb crash here, see the Backtrace:
>
> (gdb) file cmd.exe
> Reading symbols from E:\code\cb\test_code\gdbpython-demo\bin\cmd.exe...done.
> (gdb) r
> Starting program: E:\code\cb\test_code\gdbpython-demo\bin\cmd.exe
> [New Thread 63092.0xf220]
> warning: HEAP[gdbcvs26.exe]:
> warning: Invalid Address specified to RtlFreeHeap( 00290000, 04C58028 )
>
>
> Program received signal SIGTRAP, Trace/breakpoint trap.
> 0x7c90120f in ntdll!DbgUiConnectToDbg () from C:\WINDOWS\system32\ntdll.dll
> (gdb) bt
> #0 0x7c90120f in ntdll!DbgUiConnectToDbg ()
> from C:\WINDOWS\system32\ntdll.dll
> #1 0x7c96ee31 in ntdll!RtlpNtMakeTemporaryKey ()
> from C:\WINDOWS\system32\ntdll.dll
> #2 0x7c96f26e in ntdll!RtlpNtMakeTemporaryKey ()
> from C:\WINDOWS\system32\ntdll.dll
> #3 0x7c970456 in ntdll!RtlpNtMakeTemporaryKey ()
> from C:\WINDOWS\system32\ntdll.dll
> #4 0x7c94bafc in ntdll!LdrFindEntryForAddress ()
> from C:\WINDOWS\system32\ntdll.dll
> #5 0x00290000 in ?? ()
> #6 0x7c91a1ba in ntdll!RtlpUnWaitCriticalSection ()
> from C:\WINDOWS\system32\ntdll.dll
> #7 0x77c2c2de in msvcrt!free () from C:\WINDOWS\system32\msvcrt.dll
> #8 0x00290000 in ?? ()
> #9 0x004a10dd in do_my_cleanups (pmy_chain=0x4c58020, old_chain=0x4c58020)
> at ../../gdb/gdb/cleanups.c:155
> #10 0x00536102 in read_pe_exported_syms (objfile=0x4bf9008)
> at ../../gdb/gdb/coff-pe-read.c:595
> #11 0x00535158 in coff_symtab_read (objfile=0x4bf9008, nsyms=0,
> symtab_offset=<optimized out>) at ../../gdb/gdb/coffread.c:1127
> #12 coff_symfile_read (objfile=0x4bf9008, symfile_flags=8)
> at ../../gdb/gdb/coffread.c:610
> #13 0x004d39e3 in syms_from_objfile (objfile=0x4bf9008,
> addrs=<optimized out>, offsets=0x0, num_offsets=0, add_flags=8)
> at ../../gdb/gdb/symfile.c:999
> #14 0x004d3ce0 in symbol_file_add_with_addrs_or_offsets (
> abfd=<optimized out>, add_flags=8, addrs=0x4bef518,
> flags=<optimized out>, parent=0x0, num_offsets=0, offsets=0x0)
> at ../../gdb/gdb/symfile.c:1105
> #15 0x005c27a7 in solib_read_symbols (so=0x30055c8, flags=8)
> at ../../gdb/gdb/solib.c:608
> #16 0x005c2bda in solib_add (pattern=0x0, from_tty=0,
> target=0x96dfa0 <current_target>, readsyms=1) at
> ../../gdb/gdb/solib.c:919
> #17 0x004dfa5e in post_create_inferior (target=0x96dfa0 <current_target>,
> from_tty=0) at ../../gdb/gdb/infcmd.c:477
> #18 0x004dfc0c in run_command_1 (args=0x0, from_tty=<optimized out>,
> tbreak_at_main=<optimized out>) at ../../gdb/gdb/infcmd.c:631
> #19 0x005ad435 in execute_command (p=0x294331 "", from_tty=1)
> at ../../gdb/gdb/top.c:491
> #20 0x004fd7b6 in command_handler (command=0x294330 "")
> at ../../gdb/gdb/event-top.c:429
> #21 0x004fdf63 in command_line_handler (rl=0x2f98a28 " ")
> at ../../gdb/gdb/event-top.c:630
> #22 0x005debd1 in rl_callback_read_char ()
> at ../../gdb/readline/callback.c:220
> #23 0x004fd828 in rl_callback_read_char_wrapper (client_data=0x0)
> at ../../gdb/gdb/event-top.c:163
> #24 0x004fcb24 in handle_file_event (data=...)
> at ../../gdb/gdb/event-loop.c:827
> #25 0x004fcab3 in process_event () at ../../gdb/gdb/event-loop.c:401
> #26 process_event () at ../../gdb/gdb/event-loop.c:351
> #27 0x004fce35 in gdb_do_one_event () at ../../gdb/gdb/event-loop.c:465
> #28 0x004fcf8c in start_event_loop () at ../../gdb/gdb/event-loop.c:490
> #29 0x004f7762 in captured_command_loop (data=0x0) at
> ../../gdb/gdb/main.c:256
> #30 0x004f64cb in catch_errors (func=0x4f7750 <captured_command_loop>,
> func_args=0x0, errstring=0x735b8d <__PRETTY_FUNCTION__.12478+107> "",
> mask=6) at ../../gdb/gdb/exceptions.c:546
> #31 0x004f8266 in captured_main (data=0x2a6fee0) at
> ../../gdb/gdb/main.c:1032
> #32 0x004f64cb in catch_errors (func=0x4f7910 <captured_main>,
> func_args=0x2a6fee0,
> errstring=0x735b8d <__PRETTY_FUNCTION__.12478+107> "", mask=6)
> at ../../gdb/gdb/exceptions.c:546
> #33 0x004f8850 in gdb_main (args=0x2a6fee0) at ../../gdb/gdb/main.c:1041
> #34 0x006d0218 in main (argc=1, argv=0x293ea0) at ../../gdb/gdb/gdb.c:34
> (gdb)