Commit Graph

67 Commits

Author SHA1 Message Date
Eric Pouech
5b61db4161 dbghelp: Correctly store the addresses of blocks.
They are stored internally as offsets to the start of the function
which embeds the block.
2006-11-27 17:58:44 +01:00
Eric Pouech
31f4f1b003 dbghelp: Properly handle the void type in some declarations. 2006-11-27 17:58:22 +01:00
Eric Pouech
cfd9013317 dbghelp: We can now remove the default name prefix as all the non conforming cases have been eliminated.
Got rid of dwarf2_find_name which is now useless.
2006-11-27 17:58:11 +01:00
Eric Pouech
305621d5cf dbghelp: Extend support for inlined functions and handle them as generic blocks inside functions
(except for parameters which are converted into local variables).

Rewrote dwarf2_find_attribute so that it takes into account the
abstract origin information when available.

A+
2006-11-27 17:57:54 +01:00
Eric Pouech
497b2e4ea5 dbghelp: Be a bit more strict on where we do actually expect default names to be generated
(removed this feature for UDTs, structures' fields, enums, typedefs, compilands)
2006-11-27 17:57:21 +01:00
Eric Pouech
96bfe9d056 dbghelp: Add support for a label in a subprogram block. 2006-11-27 17:56:58 +01:00
Eric Pouech
8eef2de3eb dbghelp: Register numbers in OP_piece don't need to be next to each other. 2006-11-27 17:56:49 +01:00
Eric Pouech
4202a49b75 dbghelp: Add support for deref operation in location computation. 2006-11-27 17:56:36 +01:00
Eric Pouech
e48a46b2b5 dbghelp: Add ability to add a SymTagCustom element to a function.
Make use of it to store the frame information for a dwarf function
(either because frame's location is a location list, or because one of
the function's variables is not properly computed at parse time).
2006-11-27 17:56:17 +01:00
Eric Pouech
0d942b3aaa dbghelp: Function points location is now expressed as a struct location. 2006-11-27 17:55:44 +01:00
Eric Pouech
d812f8b42c dbghelp: Added infrastructure to compute variable location at runtime (as opposed to debug info parse time).
Use it to send the variables depending on not known frame register at parse time.
Made just a stub for the location computation function for dwarf2.
2006-11-27 17:55:17 +01:00
Eric Pouech
20fc25bc55 dbghelp: Use the location info structure thoughout the code to handle the location of a data variable. 2006-11-27 17:54:39 +01:00
Eric Pouech
d5c4e55d36 dbghelp: Added struct location to help computing a location.
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
2006-11-27 17:54:08 +01:00
Eric Pouech
848f8c41c0 dbghelp: Pass .debug_loc section info from the ELF loader to the dwarf parser. 2006-11-27 17:53:52 +01:00
Eric Pouech
1a723f237c dbghelp: Store compiland's address in internal structures. 2006-11-27 17:49:50 +01:00
Eric Pouech
04c7c203fc dbghelp: Simplify code with function to get section size. 2006-11-27 17:48:44 +01:00
Peter Oberndorfer
05368de685 dbghelp: Make dwarf2 parser only report file numbers when at least one compilation unit really has numbers. 2006-11-08 15:50:18 +01:00
Peter Oberndorfer
6d0948f7a6 dbghelp: Make dwarf2_parse_line_numbers handle missing line number section. 2006-11-08 15:49:46 +01:00
Peter Oberndorfer
fd2d43f131 dbghelp: Make dwarf2 parser handle file paths relative to working dir better. 2006-11-06 13:47:35 +01:00
David Anderson
c80f5181ff dbghelp: Avoid printing too many "What the heck" messages from winedbg. 2006-10-26 13:04:52 +02:00
Eric Pouech
7c92e801aa dbghelp: Added support for a couple of compiland's children. 2006-09-26 11:53:53 +02:00
Eric Pouech
baf8dfd8c8 dbghelp: Fix location computation when attribute has a constant form instead of a block form. 2006-09-26 11:53:40 +02:00
Eric Pouech
4432a1fa91 dbghelp: Change the definition of an attribute so that we can pass around the form. 2006-09-26 11:51:57 +02:00
Eric Pouech
f8e06dd613 dbghelp: Move the attribute union (now nameless) into a structure called attribute. 2006-09-26 11:49:36 +02:00
Eric Pouech
fa7332fd27 dbghelp: Added support for DW_OP_breg* operations in location computation. 2006-09-26 11:48:56 +02:00
Eric Pouech
6c4c64265d dbghelp: Variables & registers.
- 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
2006-09-26 11:48:39 +02:00
Eric Pouech
5f4ac24991 dbghelp: Missing bits from previous patch about variables with constant values. 2006-08-07 15:04:16 +02:00
Eric Pouech
820acf0901 dbghelp: Properly handle variable with const value (ie without location) in dwarf code. 2006-08-03 20:17:35 +02:00
Eric Pouech
e4441d7e6f dbghelp: Module info.
- 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)
2006-06-27 11:17:34 +02:00
Eric Pouech
e9910fee66 dbghelp: Dwarf & thunks.
- 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
2006-06-26 13:38:03 +02:00
Eric Pouech
797acdf436 dbghelp: dwarf: Tidy up leb128 reading. 2006-06-20 11:58:48 +02:00
Eric Pouech
54d6f8cc45 dbghelp: Indent the code as the rest of dbghelp module. 2006-06-20 11:58:24 +02:00
Eric Pouech
8a92d9ae49 dbghelp: dwarf: Generate the current source file and store it in dbghelp's internals. 2006-06-20 11:57:12 +02:00
Eric Pouech
7af4097d80 dbghelp: Added the ability to define a source file by dir+filename instead of only filename. 2006-06-20 11:54:40 +02:00
Eric Pouech
52db5c094e dbghelp: dwarf: Started parsing the attributes for lines (in compilation unit).
Walking the whole lot, not doing anything interesting apart from
traversing the data.
2006-06-20 11:54:17 +02:00
Eric Pouech
a655b14340 dbghelp: Pass .debug_loc section information to dwarf. 2006-06-20 11:52:29 +02:00
Eric Pouech
d6bd8661ff dbghelp: Dwarf & parse context.
- split the data structures for walking through the data (abbrev,
  cu... -> traverse_ctx) and data manipulation/loading (-> parse_ctx)
- created dwarf2_parse_compilation_unit() for clarity
- added section structure to gather information about all ELF sections
  related to all dwarf2 sections (more to come)
2006-06-20 11:52:01 +02:00
Eric Pouech
298198c318 dbghelp: Dwarf & udt members.
- correctly set size & offsets for regular udt members
- first shot at bitfields for udt members
2006-06-20 11:51:34 +02:00
Eric Pouech
a2b4432107 dbghelp: Dwarf & function blocks.
- properly handling function blocks
- handling of variables inside of blocks (either on stack, or in a
  register, or relative to the frame register if any)
- added dwarf2_subprogram_t structure so that we can pass around
  relevant information for function parsing
2006-06-20 11:51:16 +02:00
Eric Pouech
7476f8c840 dbghelp: dwarf: Properly handle function formal parameters. 2006-06-20 11:50:39 +02:00
Eric Pouech
df179e9bf1 dbghelp: Dwarf & global symbols.
Offset the addresses for global symbols (func & variables) by the base
image of the corresponding module.
2006-06-20 11:47:16 +02:00
Eric Pouech
686237e043 dbghelp: dwarf: Added support for function labels. 2006-06-20 11:46:51 +02:00
Eric Pouech
6cee154b23 dbghelp: Proper support for nested types definitions (even in C). 2006-06-20 11:46:18 +02:00
Eric Pouech
468956f4cd dbghelp: Dwarf - function scheme.
- various fixes to follow better the functions definition (nesting,
  subroutines...)
- don't directly parse types referenced by a subprogram, they'll be
  loaded anyway when needed
2006-06-20 11:45:48 +02:00
Eric Pouech
ae67326863 dbghelp: Dwarf & locations.
- put back the block attribute parsing
- added dwarf2_compute_location to properly decode a location (at
  least starting it)
2006-06-20 11:45:33 +02:00
Eric Pouech
6d61cc0c7b dbghelp: Dwarf compiland.
- rewrote all entities loading to make use of new dwarf2_debug_info_t scheme
- commented out the location parsing which is an ugly hack
2006-06-20 11:43:17 +02:00
Eric Pouech
ec8328d1b1 dbghelp: Dwarf & new scheme.
- add some helpers for the rewrite
- module is now part of the dwarf2_parse_context
2006-06-20 11:42:45 +02:00
Eric Pouech
2301d1a3d0 dbghelp: Dwarf & type references.
Removed unused type references scheme that we'll implement using a
different scheme in next patches.
2006-06-20 11:41:55 +02:00
Eric Pouech
3bd7d2976e dbghelp: Dwarf merge parsing of UDT.
Merge into a single function the struct/class/union parsing.
2006-06-20 11:41:36 +02:00
Eric Pouech
c571b8506e dbghelp: Dwarf & debug info entries.
- now loading the debug info entries into specific structures
- this will help writing new functions
- this will allow handling of forward references
2006-06-20 11:41:15 +02:00