| #
2fc93eab |
| 13-Nov-2011 |
Greg Clayton <[email protected]> |
<rdar://problem/10338439>
This is the actual fix for the above radar where global variables that weren't initialized were not being shown correctly when leaving the DWARF in the .o files. Global va
<rdar://problem/10338439>
This is the actual fix for the above radar where global variables that weren't initialized were not being shown correctly when leaving the DWARF in the .o files. Global variables that aren't intialized have symbols in the .o files that specify they are undefined and external to the .o file, yet document the size of the variable. This allows the compiler to emit a single copy, but makes it harder for our DWARF in .o files with the executable having a debug map because the symbol for the global in the .o file doesn't exist in a section that we can assign a fixed up linked address to, and also the DWARF contains an invalid address in the "DW_OP_addr" location (always zero). This means that the DWARF is incorrect and actually maps all such global varaibles to the first file address in the .o file which is usually the first function. So we can fix this in either of two ways: make a new fake section in the .o file so that we have a file address in the .o file that we can relink, or fix the the variable as it is created in the .o file DWARF parser and actually give it the file address from the executable. Each variable contains a SymbolContextScope, or a single pointer that helps us to recreate where the variables came from (which module, file, function, etc). This context helps us to resolve any file addresses that might be in the location description of the variable by pointing us to which file the file address comes from, so we can just replace the SymbolContextScope and also fix up the location, which we would have had to do for the other case as well, and update the file address. Now globals display correctly.
The above changes made it possible to determine if a variable is a global or static variable when parsing DWARF. The DWARF emits a DW_TAG_variable tag for each variable (local, global, or static), yet DWARF provides no way for us to classify these variables into these categories. We can now detect when a variable has a simple address expressions as its location and this will help us classify these correctly.
While making the above changes I also noticed that we had two symbol types: eSymbolTypeExtern and eSymbolTypeUndefined which mean essentially the same thing: the symbol is not defined in the current object file. Symbol objects also have a bit that specifies if a symbol is externally visible, so I got rid of the eSymbolTypeExtern symbol type and moved all code locations that used it to use the eSymbolTypeUndefined type.
llvm-svn: 144489
show more ...
|
| #
ef5f6a23 |
| 10-Nov-2011 |
Jason Molenda <[email protected]> |
Fix order of arguments for target stop-hook list/delete. Having the argument description in the command name could cause a command alias to crash, e.g. command alias zzz target stop-hook delete 1 be
Fix order of arguments for target stop-hook list/delete. Having the argument description in the command name could cause a command alias to crash, e.g. command alias zzz target stop-hook delete 1 because the "name" is used to re-fetch the exact CommandObject when adding the final arg.
<rdar://problem/10423753>
llvm-svn: 144330
show more ...
|
| #
8ee64382 |
| 10-Nov-2011 |
Greg Clayton <[email protected]> |
Added the ability for many of the "target modules dump xxx" commands to find modules first in the target, then fall back to the global shared module cache, then fall back to the global module list.
Added the ability for many of the "target modules dump xxx" commands to find modules first in the target, then fall back to the global shared module cache, then fall back to the global module list.
llvm-svn: 144256
show more ...
|
|
Revision tags: llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2 |
|
| #
a08823fd |
| 31-Oct-2011 |
Daniel Dunbar <[email protected]> |
warnings: Fix a bunch of -Wreorder problems.
llvm-svn: 143381
|
| #
5009f9d5 |
| 27-Oct-2011 |
Greg Clayton <[email protected]> |
Added support for the new ".apple_objc" accelerator tables. These tables are in the same hashed format as the ".apple_names", but they map objective C class names to all of the methods and class func
Added support for the new ".apple_objc" accelerator tables. These tables are in the same hashed format as the ".apple_names", but they map objective C class names to all of the methods and class functions. We need to do this because in the DWARF the methods for Objective C are never contained in the class definition, they are scattered about at the translation unit level and they don't even have attributes that say the are contained within the class itself.
Added 3 new formats which can be used to display data:
eFormatAddressInfo eFormatHexFloat eFormatInstruction eFormatAddressInfo describes an address such as function+offset and file+line, or symbol + offset, or constant data (c string, 2, 4, 8, or 16 byte constants). The format character for this is "A", the long format is "address".
eFormatHexFloat will print out the hex float format that compilers tend to use. The format character for this is "X", the long format is "hex float".
eFormatInstruction will print out disassembly with bytes and it will use the current target's architecture. The format character for this is "i" (which used to be being used for the integer format, but the integer format also has "d", so we gave the "i" format to disassembly), the long format is "instruction".
Mate the lldb::FormatterChoiceCriterion enumeration private as it should have been from the start. It is very specialized and doesn't belong in the public API.
llvm-svn: 143114
show more ...
|
| #
86edbf41 |
| 26-Oct-2011 |
Greg Clayton <[email protected]> |
Cleaned up many error codes. For any who is filling in error strings into lldb_private::Error objects the rules are: - short strings that don't start with a capitol letter unless the name is a clas
Cleaned up many error codes. For any who is filling in error strings into lldb_private::Error objects the rules are: - short strings that don't start with a capitol letter unless the name is a class or anything else that is always capitolized - no trailing newline character - should be one line if possible
Implemented a first pass at adding "--gdb-format" support to anything that accepts format with optional size/count.
llvm-svn: 142999
show more ...
|
| #
1deb7962 |
| 25-Oct-2011 |
Greg Clayton <[email protected]> |
Updated all commands that use a "--format" / "-f" options to use the new OptionGroupFormat. Updated OptionGroupFormat to be able to also use the "--size" and "--count" options. Commands that use a Op
Updated all commands that use a "--format" / "-f" options to use the new OptionGroupFormat. Updated OptionGroupFormat to be able to also use the "--size" and "--count" options. Commands that use a OptionGroupFormat instance can choose which of the options they want by initializing OptionGroupFormat accordingly. Clients can either get only the "--format", "--format" + "--size", or "--format" + "--size" + "--count". This is in preparation for upcoming chnages where there are alternate ways (GDB format specification) to set a format.
llvm-svn: 142911
show more ...
|
| #
c10312ce |
| 24-Oct-2011 |
Jim Ingham <[email protected]> |
Add a "-a" option to "image list" to show the image at a given address.
llvm-svn: 142833
|
| #
81c22f61 |
| 19-Oct-2011 |
Greg Clayton <[email protected]> |
Moved lldb::user_id_t values to be 64 bit. This was going to be needed for process IDs, and thread IDs, but was mainly needed for for the UserID's for Types so that DWARF with debug map can work flaw
Moved lldb::user_id_t values to be 64 bit. This was going to be needed for process IDs, and thread IDs, but was mainly needed for for the UserID's for Types so that DWARF with debug map can work flawlessly. With DWARF in .o files the type ID was the DIE offset in the DWARF for the .o file which is not unique across all .o files, so now the SymbolFileDWARFDebugMap class will make the .o file index part (the high 32 bits) of the unique type identifier so it can uniquely identify the types.
llvm-svn: 142534
show more ...
|
|
Revision tags: llvmorg-3.0.0-rc1 |
|
| #
20568dd9 |
| 13-Oct-2011 |
Greg Clayton <[email protected]> |
Fixed a case where we might end up trying to parse a type in the DWARF parser for a method whose class isn't currently in the process of completing itself. Currently, methods of a class, must be pars
Fixed a case where we might end up trying to parse a type in the DWARF parser for a method whose class isn't currently in the process of completing itself. Currently, methods of a class, must be parsed when the class type that contains the method is asked to complete itself through the clang::ExternalASTSource virtual functions. Now we "do the right thing" by checking if the class is being defined, and if so we parse it, else we tell the class to complete itself so everything happens correctly.
llvm-svn: 141908
show more ...
|
| #
2a14f17a |
| 13-Oct-2011 |
Greg Clayton <[email protected]> |
Revert the change to "target variable" that was causing test suite failures.
llvm-svn: 141879
|
| #
4f76b237 |
| 13-Oct-2011 |
Greg Clayton <[email protected]> |
Always use the full variable name when dumping globals since they might be in namespaces.
llvm-svn: 141845
|
| #
b6d70ebc |
| 12-Oct-2011 |
Sean Callanan <[email protected]> |
Added ClangNamespaceDecl * parameters to several core Module functions that the expression parser will soon be using.
llvm-svn: 141766
|
| #
cf0e4f0d |
| 07-Oct-2011 |
Greg Clayton <[email protected]> |
Re-organized the contents of RangeMap.h to be more concise and also allow for a Range, RangeArray, RangeData (range + data), or a RangeDataArray. We have many range implementations in LLDB and I will
Re-organized the contents of RangeMap.h to be more concise and also allow for a Range, RangeArray, RangeData (range + data), or a RangeDataArray. We have many range implementations in LLDB and I will be converting over to using the classes in RangeMap.h so we can have one set of code that does ranges and searching of ranges.
Fixed up DWARFDebugAranges to use the new range classes.
Fixed the enumeration parsing to take a lldb_private::Error to avoid a lot of duplicated code. Now when an invalid enumeration is supplied, an error will be returned and that error will contain a list of the valid enumeration values.
llvm-svn: 141382
show more ...
|
| #
9a5a9340 |
| 05-Oct-2011 |
Greg Clayton <[email protected]> |
"target variable" will now display the current frame's compile unit globals and statics when no arguments are given.
llvm-svn: 141222
|
| #
1ed54f50 |
| 01-Oct-2011 |
Greg Clayton <[email protected]> |
Cleaned up the the code that figures out the inlined stack frames given a symbol context that represents an inlined function. This function has been renamed internally to:
bool SymbolContext::GetPa
Cleaned up the the code that figures out the inlined stack frames given a symbol context that represents an inlined function. This function has been renamed internally to:
bool SymbolContext::GetParentOfInlinedScope (const Address &curr_frame_pc, SymbolContext &next_frame_sc, Address &next_frame_pc) const; And externally to:
SBSymbolContext SBSymbolContext::GetParentOfInlinedScope (const SBAddress &curr_frame_pc, SBAddress &parent_frame_addr) const;
The correct blocks are now correctly calculated.
Switched the stack backtracing engine (in StackFrameList) and the address context printing over to using the internal SymbolContext::GetParentOfInlinedScope(...) so all inlined callstacks will match exactly.
llvm-svn: 140910
show more ...
|
| #
cac9c5f9 |
| 24-Sep-2011 |
Greg Clayton <[email protected]> |
Added to the public API to allow symbolication: - New SBSection objects that are object file sections which can be accessed through the SBModule classes. You can get the number of sections, get a
Added to the public API to allow symbolication: - New SBSection objects that are object file sections which can be accessed through the SBModule classes. You can get the number of sections, get a section at index, and find a section by name. - SBSections can contain subsections (first find "__TEXT" on darwin, then us the resulting SBSection to find "__text" sub section). - Set load addresses for a SBSection in the SBTarget interface - Set the load addresses of all SBSection in a SBModule in the SBTarget interface - Add a new module the an existing target in the SBTarget interface - Get a SBSection from a SBAddress object
This should get us a lot closer to being able to symbolicate using LLDB through the public API.
llvm-svn: 140437
show more ...
|
| #
effcd2aa |
| 23-Sep-2011 |
Jason Molenda <[email protected]> |
in CommandObjectTargetStopHookList::Execute, if we don't have a target, return before we try to dereference the target later in the function. Currently,
% lldb -x (lldb) target stop-hook list
crash
in CommandObjectTargetStopHookList::Execute, if we don't have a target, return before we try to dereference the target later in the function. Currently,
% lldb -x (lldb) target stop-hook list
crashes because of this.
llvm-svn: 140417
show more ...
|
| #
7f85299c |
| 23-Sep-2011 |
Jason Molenda <[email protected]> |
LookupAddressInModule: Remove a couple of the extra newlines output at the end of 'image lookup' / 'image lookup -v'.
llvm-svn: 140357
|
| #
c14ee32d |
| 22-Sep-2011 |
Greg Clayton <[email protected]> |
Converted the lldb_private::Process over to use the intrusive shared pointers.
Changed the ExecutionContext over to use shared pointers for the target, process, thread and frame since these objects
Converted the lldb_private::Process over to use the intrusive shared pointers.
Changed the ExecutionContext over to use shared pointers for the target, process, thread and frame since these objects can easily go away at any time and any object that was holding onto an ExecutionContext was running the risk of using a bad object.
Now that the shared pointers for target, process, thread and frame are just a single pointer (they all use the instrusive shared pointers) the execution context is much safer and still the same size.
Made the shared pointers in the the ExecutionContext class protected and made accessors for all of the various ways to get at the pointers, references, and shared pointers.
llvm-svn: 140298
show more ...
|
| #
7e589a60 |
| 20-Sep-2011 |
Jason Molenda <[email protected]> |
Change Error::SetErrorStringWithFormat() prototype to use an __attribute__ format so the compiler knows that this method takes printf style formatter arguments and checks that it's being used correct
Change Error::SetErrorStringWithFormat() prototype to use an __attribute__ format so the compiler knows that this method takes printf style formatter arguments and checks that it's being used correctly. Fix a couple dozen incorrect SetErrorStringWithFormat() calls throughout the sources.
llvm-svn: 140115
show more ...
|
| #
a2eee184 |
| 17-Sep-2011 |
Greg Clayton <[email protected]> |
Removed the function:
ModuleSP Module::GetSP();
Since we are now using intrusive ref counts, we can easily turn any pointer to a module into a shared pointer just by assigning it.
llvm-svn: 13
Removed the function:
ModuleSP Module::GetSP();
Since we are now using intrusive ref counts, we can easily turn any pointer to a module into a shared pointer just by assigning it.
llvm-svn: 139984
show more ...
|
| #
81ab3f5d |
| 22-Aug-2011 |
Johnny Chen <[email protected]> |
Fix the 'target variable' help syntax to output one or more <variable-name>'s. Add a simple test case for that.
llvm-svn: 138281
|
| #
379447a7 |
| 15-Aug-2011 |
Enrico Granata <[email protected]> |
Refactoring of ValueObject::DumpValueObject and 'frame variable', 'target variable' commands to use an Options object instead of passing an ever-increasing number of arguments to the DumpValueObject(
Refactoring of ValueObject::DumpValueObject and 'frame variable', 'target variable' commands to use an Options object instead of passing an ever-increasing number of arguments to the DumpValueObject() method, with the ultimate aim of making that call private implementation
llvm-svn: 137622
show more ...
|
| #
61a80ba6 |
| 12-Aug-2011 |
Enrico Granata <[email protected]> |
Giving a warning to the user the first time children are truncated by the new cap setting
llvm-svn: 137462
|