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

asmwarrior
2012-12-12T00:59:07Z

On 2012-11-27 22:58, Pierre Muller wrote:
> Thanks, Tom...
> it really seems that this is the culprit:
> I was freeing again already freed memory, which of course
> created random crashes later.
>
> I send here rapidly a new patch version.
> I really tested the allocation problems by adding
> allocation + free'ing of each of the first parameters
> used in prim_record_minimal_symbol
> and it does seem that freeing of char array doesn't lead to any problem.
>
> So the only trouble was related to the
> reallocation of section_data and seems to be fixed
> thanks to Tom's proposal.
>
> Yuanhui Zhang,
> could you please check if the new patch
> suppresses the crash you had when you tried the previous version?
>
> Thanks to everyone...
>
> Pierre Muller
>
>
> 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.
>

I test this patch again, it works fine without crash in the below cases:

gdb_pure_cvs_20121207 + this patch + python_enabled ----> No crash on debugging, "print GetLastError()" works correctly.
gdb_pure_cvs_20121207 + this patch + python_disabled----> No crash on debugging, "print GetLastError()" works correctly.

Yuanhui Zhang