- split up module_find_by_name in two different functions:
+ reused module_find_by_name which looks upon the module name
+ added module_is_already_loaded which looks upon the image name
- cleanup module loading using these functions (removed extra parameter
to pe_load_module_from_pcs)
Let dwarf and msc use this new feature.
As we also add global symbol without addresses, don't take those
constant symbols into account for searches by address.
Make use of it in dwarf.c to handle correctly variable location computation.
Split code to handle both location with parse time computation
(current code) and yet to come run-time computation
- more strickling differentiation variable location between
a register, and the dereferenced address defined by a
register (and possibly an offset)
- added a parameter to symt_add_func_local (and internal symbol
data struct) to help differentiate
- fix all debug parsers to confer to this new scheme
- now internally storing module info as a 64bit module structure
(the interest in not in the 64 bit side of things, but because
it allows storing lots of usefull information)
- fixed SymGetModuleInfo64W which wasn't returning the
LoadedPdbName field
- now filling for MSC files with the extended information
(instead of guessing it)
- reused the extended module info to store wine ELF module
information (link for map link, stabs vs dwarf symbol info)
- added the elf_is_in_thunk_area() function to locate an address
within the known thunk area of Wine's builtin modules
- now passing this thunk information to the dwarf parser so that it
can drop functions from the thunk areas (as dwarf symbols), so that
those functions can be later on marked as thunks in dbghelp
internals
- added the ability to tell to add_func_local whether we're adding
a local variable or a parameter (and removed the black magic
we were using)
- we can now address variables defined as an offset to a register
- implemented correct lookup when SymFindFileInPath is called to find
a PDB file
- added pdb_fetch_file_info to gather relevant information
- when looking for a PDB file (from a .EXE or a .DLL), now using
SymFindFileInPath to locate the PDB file with the correct
information
- implemented SymInitializeW (and made SymInitialize call it)
- implemented Sym{SG}etSearchPathW (and made Sym{SG}etSearchPath
call them)
- per process search path is now stored as unicode string
- report the correct image base for a symbol which is
seen as being in a builtin PE module, whilst its debug
information is gotten from an ELF module
- module_get_debug now returns a pair of modules
(the requested that has to be presented back to the client
and the effective one, which contains the debug info)
- reworked SymFromName in order to provide also the revelant
module base address
. added timestamp & checksum in PE module
. added size & checksum in ELF module
. wine loader now appears with its pathname.
- Implemented PE & ELF timestamp & checksum validation in
SymFindFileInPath.
- don't map twice an ELF file for symbol lookup (in non deferred mode)
- no longer entirely map an ELF file into memory, but only the
sections we need.
Added support for loading ELF modules thru SymLoadModule in a non life
process.
Factorisation of code for ELF module handling.
Fixes to ELF symbol loading
- drops symbols from symtab which are neither funcs nor global
variables
- fixes some incorrect size computation for latest GCC versions.
Several cleanups and fixes.
- Fix debug info look-up (bug in translating the RVA of the debug
directory).
- Fix code for adding PE export table as debug info (crash with NULL
passed to RtlImageDirectoryEntryToData).
- Fix computation of non-relocatable ELF shared objects size.
- Fix loading (while parsing the link map) of new non-relocatable ELF
shared objects (no longer take account load-address of link-map).
- Finished the AUTO_PUBLIC, NO_PUBLICS and PUBLICS_ONLY support for PE and ELF.
- Cleaned up public symbol management (which should now properly work).
- fixed some bugs in SYMOPT_NO_PUBLICS and SYMOPT_PUBLICS_ONLY
handling
- in stabs parsing, just drop any debug info for a module if stabs
parsing fails (instead of assert()'ing)
- symbol lookup now allows lookup in pure ELF modules
- fixed some bugs in symbol enumeration
<elf>)
- added generic thunk support for builtin modules (with the help of
winebuild's new markers for thunks)
- for ELF modules, no longer generating SymTagPublicSymbols objects
from ELF public symbol table
- because of last point, rewrote stabs symbols' address and size
management by parsing directly the symtab instead of using
SymTagPublicSymbols objects
- cleaned up SymTagPublicSymbols object names for native modules
- fixed off by one errors in array management
- SymLoadModule(hProc,0,0,0,0) (wine extension) will force the
resynchronization of internal ELF modules list)
- new option (0x40000000) for Sym{Get|Set}Option to report ELF modules
in SymEnumModules (as well as loader with <wine-loader>)
- some minor internal clean-ups
- enhanced const correctness
patch)
- removed location field in symt_data, and reworked the actual
location of information based on the 'kind' field
- shorten debug channel name
- added support for bitfield in struct:s
- cleaned up source line information support
- now storing constants values as VARIANT
and stabs.c)
- started implementing typedef support
- functions now have a real function signature (only in stabs.c, still
to be done in msc.c)
- small enhancements to TI_GET_TYPE for functions
- added support for functions' block and local variables in registers
(msc.c)
- fixed some bugs in StackWalk
- constants are now stored as variants (instead of unsigned ints)
- fixed regular expression management (dbghelp's RE are not the same
as POSIX ones)