Commit Graph

919 Commits

Author SHA1 Message Date
Ken Thomases 83c1255f66 dbghelp: Fix mapping of DWARF register numbers on x86 OS X.
For backward compatibility with old, buggy GCC, Apple uses a different register
numbering scheme for the eh_frame section.

See, for reference, the comments near the top of this file from LLDB's source:
https://github.com/llvm-mirror/lldb/blob/release_36/source/Plugins/Process/Utility/RegisterContext_x86.h
2015-06-29 19:07:51 +09:00
Ken Thomases 3a9698f4af dbghelp: Parse the DWARF information in Mach-O modules.
At this point, this is just the .eh_frame information used for walking the stack.
2015-06-25 14:29:38 +09:00
Ken Thomases 500df92108 dbghelp: Add partial support for version 3 of DWARF CIEs which are generated by Clang/LLVM. 2015-06-25 14:29:38 +09:00
Ken Thomases 0bfa11455c dbghelp: Implement the image_private.h functions for Mach-O modules. 2015-06-25 14:29:38 +09:00
Ken Thomases 729b53fb9e dbghelp: For Mach-O, keep the module file mapped for as long as the module is tracked. 2015-06-25 14:02:17 +09:00
Ken Thomases e15e9331cb dbghelp: Move the macho_file_map structure into image_file_map. 2015-06-25 14:02:12 +09:00
Ken Thomases dcbec3bf6a dbghelp: Use existing IMAGE_NO_MAP constant instead of redundant MACHO_NO_MAP. 2015-06-25 14:02:00 +09:00
Ken Thomases 41d741761f dbghelp: Remove the unused arch_size field of struct macho_file_map.
It was set, but never read.
2015-06-25 14:01:54 +09:00
Ken Thomases 4923f9afd5 dbghelp: Enable enumerating and loading 64-bit Mach-O modules. 2015-06-25 14:01:49 +09:00
Ken Thomases 378d557d77 dbghelp: Fix a leak of the Mach-O module structure by adding a module_remove callback. 2015-06-25 14:01:32 +09:00
Ken Thomases 8430ebc6b5 dbghelp: Eliminate an unnecessary parameter from macho_load_debug_info().
From outside of macho_module.c, it's only called with NULL.  When it's
called with a non-NULL parameter, it's just a thin wrapper around
macho_load_debug_info_from_map(), so the code can just call that
directly.
2015-06-25 14:01:26 +09:00
Ken Thomases 604ce29cb3 dbghelp: Fix STABS support for 64-bit on OS X.
OS X uses a struct nlist_64 for 64-bit images, where the n_value field is a
64-bit unsigned integer.
2015-06-25 14:01:10 +09:00
André Hentschel bd1f7ef186 include: Rename 64-bit PState to 32-bit Cpsr on ARM64. 2015-06-15 14:51:33 +09:00
André Hentschel 8e0164bd26 include: Add more ARM64 CV constants. 2015-05-28 14:20:55 +09:00
André Hentschel 0d68edf03e dbghelp: Fix typo in trace output. 2015-05-20 22:10:19 +09:00
Austin English f832f85c80 dbghelp: Ignore some more symbol ids.
These are from MSVC 2013.
2015-05-20 17:32:49 +09:00
Grazvydas Ignotas 2fee06de49 dbghelp: Detect if return address information is missing. 2015-04-07 15:08:44 +09:00
Francois Gouget ed82981ae0 dbghelp: Mark internal symbols with hidden visibility. 2015-03-16 15:06:29 +09:00
Francois Gouget ba6e4ff66e dbghelp: pe_unmap_directory() is unused so remove it. 2015-03-16 15:03:31 +09:00
Francois Gouget 654657b715 dbghelp: Remove an unneeded NONAMELESSSTRUCT directive. 2015-03-10 15:18:25 +09:00
Michael Stefaniuc 1328ec4854 dbghelp: Remove no-op additions with 0 (PVS-Studio). 2015-03-09 22:06:39 +09:00
Francois Gouget 11f985541a dbghelp: Fix compilation on systems that don't support nameless unions. 2015-03-02 13:49:02 +09:00
David Heidelberg e6e50f6c47 dbghelp: Implement DW_TAG_unspecified_type. 2015-02-13 00:45:25 +09:00
Charles Davis b3232e7c9d dbghelp: Support 64-bit dyld_all_image_infos structures, too. 2015-02-06 22:35:23 +09:00
Sebastian Lackner c6fcb427a2 dbghelp: Don't fill KdHelp structure for usermode applications. 2015-02-03 14:40:50 +09:00
André Hentschel b2f967e086 dbghelp: Fix compiler warnings with flag -Wunused-macros. 2014-12-10 13:31:05 +01:00
Bruno Jesus a5c3f38773 dbghelp: Remove a dead assignment (Cppcheck). 2014-11-20 22:32:43 +09:00
David Heidelberger 4f18c053d3 winedbg: List Dwarf2 GNU extensions as TODO to workaround spam in debug. 2014-10-22 21:02:01 +09:00
David Heidelberger df5ff98b07 dbghelp: Implement DW_TAG_const_type in dwarf2_parse_udt_type. 2014-10-09 17:36:22 +02:00
Gerald Pfeifer a910704ccf dbghelp: Do not try to ignore the return codes in PEV_ERROR and and PEV_ERROR1. 2014-07-28 17:22:23 -05:00
Austin English 8980a6fa5c dbghelp: Ignore a few more symbol ids. 2014-07-14 09:57:48 +02:00
Ken Thomases 5acf1510fb dbghelp: Ignore the __PAGEZERO segment.
It made it seem as though the wineloader always started at address 0.
Issue identified by Jacek Caban.
2014-07-07 23:00:52 +02:00
Ken Thomases 1f2680f5f3 dbghelp: If the caller didn't provide a module load address use the segment start address. 2014-07-07 23:00:47 +02:00
Victor Martinez Calvo 9eca0aa8a7 dbghelp: Fix invalid assignment in symt_fill_sym_info. 2014-04-30 18:32:21 +02:00
André Hentschel 46594b8e6b dbghelp: Make pdb_load_stream_name_table a void function. 2014-04-29 11:18:56 +02:00
André Hentschel 1986dabc3e dbghelp: Use boolean return value in boolean function. 2014-04-29 11:18:51 +02:00
Alistair Leslie-Hughes b816a8e629 dbghelp: Improve dwarf support. 2014-03-26 19:20:42 +01:00
Alexandre Julliard cf0e96c6d0 configure: Rename substituted variables to a standard _CFLAGS and _LIBS format. 2014-01-30 14:51:33 +01:00
Andrey Gusev e7f0a8a081 Assorted spelling and typos fixes. 2014-01-27 17:00:11 +01:00
Frédéric Delanoy 74b0f6b4ad dbghelp: Remove an "#if 1" preprocessor directive. 2014-01-13 17:36:59 +01:00
Frédéric Delanoy 91f2435469 Assorted spelling fixes. 2014-01-09 17:39:59 +01:00
Alexandre Julliard 5e7416e5c8 makefiles: Get rid of the MAKE_DLL_RULES variable. 2014-01-02 12:08:18 +01:00
Frédéric Delanoy d066561625 dbghelp: Constify some character strings. 2013-12-16 12:02:49 +01:00
Ken Thomases 1577fb6c3f dbghelp: For Mach-O, get the address of the process's image info from its PEB. 2013-12-05 12:40:56 +01:00
Frédéric Delanoy 5ba7f79bad Assorted spelling fixes. 2013-12-03 19:41:53 +01:00
Ken Thomases 15467577fc dbghelp: Add debug logging to some error paths in the Mach-O support. 2013-12-03 12:34:45 +01:00
Ken Thomases 3fe34fe346 dbghelp: Fix some parameter names and types in the Mach-O support. 2013-12-03 12:33:55 +01:00
Stefan Leichter 89832cde4e dbghelp: Add a null check for optional output parameter for function SymFromAddr. 2013-12-02 10:50:32 +01:00
Frédéric Delanoy 1d65efe50b dbghelp: Use BOOL type where appropriate. 2013-11-12 12:58:03 +01:00
Alexandre Julliard 836b682ed3 dbghelp: Remove a useless DllMain, msvcrt can't be unloaded. 2013-11-11 11:49:18 +01:00
Frédéric Delanoy c002197692 dbghelp: Use BOOL type where appropriate. 2013-10-04 12:46:20 +02:00
Huw Davies 5c7c954658 dbghelp: Skip the dllprefix when matching PE with ELF modules. 2013-09-27 12:20:00 +02:00
Huw Davies 96e32da5c9 dbghelp: Add a couple of structures that are missing from the Android ndk. 2013-09-23 20:32:21 +02:00
Marcus Meissner b3f9747b28 dbghelp: Free srcpath in stabs handling (Coverity). 2013-06-24 11:45:10 +02:00
Marcus Meissner 7a406d0adf dbghelp: Free root in error case (Coverity). 2013-06-24 11:44:01 +02:00
Andrew Cook 878ea7d9ea dbghelp: Add stubs for SymSetHomeDirectory. 2013-04-01 20:42:33 +02:00
André Hentschel c174b3f5ec dbghelp: Remove SPARC support. 2013-03-05 11:01:11 +01:00
Jeff Muizelaar 03cae02611 dbghelp: Store the vendor id in the correct order. 2013-03-04 11:15:57 +01:00
Maarten Lankhorst 1dc3ef5188 dbghelp: Add support for zlib compressed debug sections.
Patch created with the assistance of Eric Pouech who helped diagnose
the problem, wrote some parts of this patch and reviewed this patch.
2013-01-30 20:10:44 +01:00
André Hentschel 9d49dd82e8 dbghelp: Remove useless code in ARM stack walk. 2013-01-23 12:44:12 +01:00
André Hentschel 49f59ccf71 dbghelp: Implement rudimentary stack walk for ARM64. 2013-01-23 12:44:06 +01:00
André Hentschel ce8640cbef dbghelp: Add ARM64 support. 2013-01-16 12:53:16 +01:00
Andrew Talbot ddf922d7a1 dbghelp: Avoid signed-unsigned integer comparisons. 2013-01-15 12:14:11 +01:00
Alexandre Julliard a81996d757 dbghelp: Use sysconf() instead of getpagesize(). 2013-01-09 12:15:25 +01:00
Andrew Talbot 9feb4053fe dbghelp: Indentation fix. 2012-12-17 11:47:38 +01:00
Marcus Meissner 6d6b216002 dbghelp: Size of the floating point stack registers is 10 bytes (Coverity). 2012-10-25 11:49:06 +02:00
André Hentschel 538a0abbd7 include: Rename IMAGE_FILE_MACHINE_ARMV7 to IMAGE_FILE_MACHINE_ARMNT. 2012-08-17 10:45:17 +02:00
Michael Stefaniuc 31fdb97632 dbghelp: Remove a superfluous TRUE:FALSE conditional expression. 2012-08-15 12:12:43 +02:00
Eric Pouech 83462bf081 dbghelp: Added support for index leaves in types definition for CodeView debug format. 2012-06-25 10:32:55 +02:00
Gerald Pfeifer 6cb7cd1983 dbghelp: Avoid unconditional use of NT_GNU_BUILD_ID. 2012-06-04 12:17:55 +02:00
Eric Pouech d647bd108c dbghelp: Use build-id information to locate debug information (and prefer it over .debug_link when both are present). 2012-06-01 13:24:36 +02:00
Eric Pouech dbd70d0917 dbghelp: Protect COFF line number parsing against out of bounds access. 2012-05-21 11:33:59 +02:00
Francois Gouget fac36c55e9 Assorted typo, spelling, wording and case fixes. 2012-05-15 16:26:43 +02:00
André Hentschel 89cb501927 dbghelp: Assorted fixes for shadow variables. 2012-04-23 12:58:36 +02:00
Thomas Faber 9f0119a0c0 dbghelp: Fix uninitialized variable usage. 2012-03-28 13:55:26 +02:00
Michael Stefaniuc 4cf695e164 dbghelp: Print the debug string and not the pointer to it. 2012-03-26 18:15:25 +02:00
Alexandre Julliard 0a7827b8b2 dbghelp: Add support for jump instructions in function epilogs on x86_64. 2012-03-16 13:16:45 +01:00
André Hentschel 84a036a435 dbghelp: Silence arm_fetch_minidump_module. 2012-03-09 11:34:13 +01:00
André Hentschel 138cb84be0 dbghelp: Add arm_fetch_minidump_thread implementation. 2012-03-09 11:34:02 +01:00
Eric Pouech 43f62c99b9 dbghelp: Fix a couple of traces in dwarf line info parsing. 2012-02-14 17:58:59 +01:00
Eric Pouech 90207b1d69 dbghelp: In i386 stack unwinder, only check for NULL ebp after calling the dwarf/MSVC unwinders as they allow NULL ebp. 2012-02-14 17:58:58 +01:00
Eric Pouech 0905afd0bc dbghelp: In traces for Dwarf/CFA engine, some offset are signed entities. 2012-02-14 17:58:58 +01:00
Eric Pouech 5201415626 dbghelp: In dwarf parser, when looking for FDE/CIE skip first O-length entries. 2012-02-14 17:58:56 +01:00
Eric Pouech 611d5e470d dbghelp: Correctly initialize module word_size field when only the eh_frame is present (and not compilation unit). 2012-02-14 17:58:54 +01:00
Eric Pouech 8328606141 dbghelp: Store the 32/64 bitness in the image structure. 2012-02-14 12:31:48 +01:00
Eric Pouech a672a51cbf dbghelp: Allow each CPU backend to save CPU specific memory ranges in minidump.
Used this feature to add x86_64 unwind information.
2012-01-24 18:10:32 +01:00
Eric Pouech 1c5450f91f dbghelp: Allow CPU backends to add specific information into a minidump.
Use it to add a 256 byte block around current program counter.
2012-01-24 18:10:32 +01:00
Eric Pouech d02295d998 dbghelp: Add our own thread data gathering struct for minidump internals instead on relying on SYSTEM_PROCESS_INFO. 2012-01-24 18:10:32 +01:00
Eric Pouech 2ce0e94018 winedbg, winedump: Embed wine build-id information info minidump, and display it. 2012-01-24 18:10:32 +01:00
Eric Pouech f3107df576 dbghelp: Use new regular expression matcher for files. 2012-01-23 16:07:39 +01:00
Eric Pouech 026ec7f690 dbghelp: Do all module and symbol names matching using unicode string (and new regular expression matcher). 2012-01-23 16:07:39 +01:00
Eric Pouech be9a7b9b97 dbghelp: Rewrote a simple regular expression matcher, and use for implementing SymMatchString[AW]. 2012-01-23 16:07:38 +01:00
Eric Pouech 7c2a5e184d dbghelp: In x86-64 support code, fix RUNTIME_FUNCTION dumping. 2012-01-23 16:06:49 +01:00
Eric Pouech 2ed88d7ac2 dbghelp: On x86-64 CPUs, add capability to interpret properly the epilog part. 2012-01-23 16:06:40 +01:00
Eric Pouech e40430cd16 dbghelp: Fix a couple of bugs in function table interpretation for x86-64 processors. 2012-01-23 15:59:59 +01:00
Eric Pouech 82d961e382 dbghelp: Always ensure that 64bit module functions use real 64bit addresses. 2012-01-23 15:59:59 +01:00
Alexandre Julliard 55107912f0 dbghelp: Fix a couple of pointer cast warnings. 2012-01-16 18:17:43 +01:00
Francois Gouget 67448e5661 dbghelp: Fix the position where the calling convention is specified in function pointers. 2012-01-16 12:45:33 +01:00
André Hentschel b95574e286 dbghelp: No need for WINE_ prefixed ERR. 2012-01-10 17:55:29 +01:00
Daniel Lehman 44233d5f07 dbghelp: Use CDECL calling convention for __unDName and callbacks. 2012-01-09 12:52:17 +01:00
Eric Pouech 28bb6f954a dbghelp: Correctly return flags in SYMBOL_INFO structure for local variables stored in a register. 2012-01-03 12:37:28 +01:00
André Hentschel c486cec0d6 dbghelp: Use ARMv7 for debugging. 2011-11-02 12:25:39 +01:00
André Hentschel d6fadb882f dbghelp: Implement SymMatchStringW. 2011-11-01 10:42:53 +01:00
André Hentschel 7e3fe1975a dbghelp: Rename SymMatchString and forward it to SymMatchStringA. 2011-11-01 10:42:50 +01:00
André Hentschel 85051917fe dbghelp: Rewrite stabs parsing to not need PATH_MAX. 2011-10-17 17:45:03 +02:00
André Hentschel bfdc93cdc5 dbghelp: Remove superfluous PATH_MAX defines. 2011-10-11 19:44:33 +02:00
Andrew Talbot 14d5268e5e dbghelp: Mark a fall-through in a switch statement. 2011-09-30 10:27:56 -05:00
André Hentschel 650e000bc9 dbghelp: Add some new dwarf enumerations. 2011-09-06 13:25:51 +02:00
Andrew Talbot 94c0407cac dbghelp: Constify some variables. 2011-08-23 16:53:52 +02:00
Frédéric Delanoy f932abf326 dlls: Assorted spelling fixes. 2011-08-01 18:26:27 +02:00
André Hentschel e6390a5c7f dbghelp: One line only for the copyright. 2011-08-01 18:26:26 +02:00
Austin English 13d86cc0a3 dbghelp: Add stubs for SymEnumSourceLines/SymEnumSourceLinesW. 2011-07-18 16:23:29 +02:00
André Hentschel 5d0d2ef893 dbghelp: Remove dead code (clang). 2011-07-11 11:51:11 +02:00
Frédéric Delanoy e35cdaa138 dbghelp: Remove dead code (Clang). 2011-07-05 14:43:43 +02:00
André Hentschel 3a183a42df dbghelp: Only declare deltapc for i386. 2011-06-29 10:07:24 -05:00
Andrew Nguyen 6ee16099a3 dbghelp: Implement SymEnumSourceFilesW. 2011-06-01 17:59:17 +02:00
Alistair Leslie-Hughes 5d01166f96 dbghelp: Add stubs SymFromIndex, SymFromIndexW. 2011-05-30 17:21:57 +02:00
Eric Pouech 108b63f5a6 dbghelp: Enhance a couple of register mapping functions for i386. 2011-05-02 12:37:07 +02:00
Eric Pouech 2c2da87ccd dbghelp: Don't try to load fieldlist for a forward declaration. 2011-05-02 12:36:05 +02:00
Peter Urbanec de4040699a dbghelp: Prevent winedbg page faults when loading some PDBs generated by the Intel C Compiler. 2011-04-29 16:56:30 +02:00
Marcus Meissner b858b53991 dbghelp: Mark internal symbols as hidden. 2011-04-28 18:13:56 +02:00
André Hentschel 7af9179eb9 dbghelp: Implement rudimentary stack walk for ARM. 2011-04-28 11:13:53 +02:00
André Hentschel dae65898e2 dbghelp: Implement sparc_map_dwarf_register. 2011-04-27 11:49:53 +02:00
Austin English 6abf5fff9d dbghelp: Get rid of a couple unused variables. 2011-04-19 13:29:23 +02:00
André Hentschel e0d14005ce dbghelp: Set the right ARM frame pointer. 2011-04-19 13:29:03 +02:00
André Hentschel bdcc47d9e7 dbghelp: Implement arm_fetch_context_reg. 2011-04-18 12:31:30 +02:00
André Hentschel 1bae92b9bb dbghelp: Implement arm_fetch_regname. 2011-04-18 12:31:26 +02:00
André Hentschel 4055b7f2c3 dbghelp: Implement arm_map_dwarf_register. 2011-04-18 12:30:36 +02:00
Eric Pouech 44c52c16fd dbghelp: Silence DW_TAG_GNU_call_site objects. 2011-04-15 10:07:57 +02:00
Eric Pouech 18f539ac2e dbghelp: Added some missing defines to dwarf.h. 2011-04-15 10:07:57 +02:00
André Hentschel f2fc5e6e17 dbghelp: Implement sparc_get_addr. 2011-04-14 17:13:58 +02:00
Eric Pouech 9c09f14270 dbghelp: Extended CPU structure by adding a default register number for frame. 2011-04-12 12:49:53 +02:00
Eric Pouech 8fecef8757 dbghelp: Force void type in const declaration, when subtype cannot be found. 2011-04-12 12:49:40 +02:00
Eric Pouech 2dd45a12c1 dbghelp: For codeview/bprel symbols force the register to be EBP, other CPUs should use regrel symbol instead of bprel. 2011-04-12 12:49:34 +02:00
Gerald Pfeifer d93b6c0aa2 dbghelp: Add a return statement for the default/assert case in elf_map_file. 2011-04-01 10:48:57 +02:00
Eric Pouech 6a60266575 dbghelp: In const types, force 'void' type when none is found. 2011-03-28 17:24:50 +02:00
Eric Pouech 96a38c93d5 dbghelp: Return proper null value when lookup_type fails. 2011-03-28 17:24:48 +02:00
Eric Pouech b10977fc3c dbghelp: Now that compilers (like clang) start to merge symbols across compilation units, no longer barf about duplicates. 2011-03-28 17:24:42 +02:00
Eric Pouech 4220cd6608 dbghelp: When parsing .debug_line section in dwarf debug info, protect against out of bounds indexes. 2011-03-28 17:08:52 +02:00
Eric Pouech 0be7461fc8 dbghelp: Set also reloc_delta information in module description for PE native modules. 2011-03-14 13:20:29 +01:00
Eric Pouech 6d7c2e02d8 dbghelp: In dwarf debug functions, use register name instead of register value. 2011-03-14 13:20:24 +01:00
Eric Pouech a26ed12676 dbghelp: When managing DW_OP_deref_size, always ensure we read the size parameter. 2011-03-14 13:20:15 +01:00
Eric Pouech 9ae6350c58 dbghelp: Fix unwinding on x86-64 (correct frame and context). 2011-03-14 13:20:07 +01:00
Eric Pouech b3d7643c96 dbghelp: For the internal functions on x86_64 stack unwinding, only rely on CONTEXT information, and manage STACKFRAME64 updates in outer functions. 2011-03-14 13:19:54 +01:00
Eric Pouech ab9cc3e9dc dbghelp: In msc unwinding code (from FPO extended data), take care of cases where several variables are stored in the same hash. 2011-03-14 13:19:41 +01:00
Eric Pouech 20b229a2a8 dbghelp: In i386 stackwalk implementation, store the frame index in the private information. 2011-03-14 13:19:34 +01:00
Eric Pouech 16e8816505 dbghelp: When doing a stack backtrace on i386 with dwarf or pdb unwinders, get the PC from the right frame. 2011-03-14 13:19:22 +01:00
Eric Pouech 9156501084 dbghelp: In dwarf unwinder, fix the last valid IP value to be used for a given line of Call Frame Information. 2011-03-14 13:19:05 +01:00
Eric Pouech 44eed2465c dbghelp: Fix StackWalk when dwarf or pdb unwinders are called on first frame (CPU i386). 2011-03-14 13:18:59 +01:00
Eric Pouech c5f329e62c dbghelp: In i386 stack unwinder, ensure we always return decent 64bit values. 2011-03-14 13:18:45 +01:00