summaryrefslogtreecommitdiff
path: root/lldb/include
AgeCommit message (Collapse)Author
2015-07-03Improve DWARF CFI CIE parsing and remove duplicated codeTamas Berghammer
Previously we handled only a few opcode DWARF CFI opcode when we were parsing the CIE. With this change we use mostly the same code what we use for parsing the PDE which cover more opcode. Differential revision: http://reviews.llvm.org/D10866
2015-07-01When I introduced hard-coded formatters, I made them non-cacheableEnrico Granata
This is because - in theory - the formatter could match on not just the type, but also other properties of a ValueObject, so a per-type caching would not be a good thing On the other hand, that is not always true - sometimes the matching truly is per-type So, introduce a non-cacheable attribute on formatters that decides whether a formatter should or should not be cached. That way, the few formatters that don't want themselves cached can do so, but most formatters (including most hard-coded ones) can cache themselves just fine
2015-07-01Rename ClangUserExpression members to avoid confusion with language.Dawn Perchik
The new names clarify that the members have to do with the execution context and not the language. For example, m_cplusplus was renamed to m_in_cplusplus_method.
2015-06-30[LLDB][MIPS] Getting correct flags for MIPSMohit K. Bhakkad
Patch by Nitesh Jain Reviewers: clayborg, ovyalov, emaste. Subscribers: jaydeep, bhushan, dsanders, mohit.bhakkad, sagar, labath, tberghammer, lldb-commits. Differential Revision: http://reviews.llvm.org/D10685
2015-06-29Rewrite FileSpec::EnumerateDirectory to avoid code duplication.Chaoren Lin
Reviewers: clayborg Reviewed By: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10811
2015-06-29Fix buildbot failures for:Greg Clayton
http://lab.llvm.org:8011/builders/lldb-x86-win7-msvc/builds/6152 http://lab.llvm.org:8011/builders/lldb-x86-windows-msvc/builds/7422
2015-06-29Avoid a recursive function call that could run LLDB out of file descriptors ↵Greg Clayton
in FileSystem::DeleteDirectory(...). Fixes include: - use FileSystem::Unlink() instead of a direct call to ::unlink(...) when deleting files when iterating through the current directory - save directories from current directory in a list and iterate through those _after_ the current directory has been iterated - Use new FileSpec::ForEachItemInDirectory() instead of manually iterating across directories with opendir()/readdir()/closedir() We should switch all code over to using FileSpec::ForEachItemInDirectory(...) in the near future and get rid of FileSpec::EnumerateDirectory(). This is a follow up patch to: http://reviews.llvm.org/D10787
2015-06-29[linux] Use cmake to detect support process_vm_readv (bug #23918)Pavel Labath
Summary: Some old linux versions do not have process_vm_readv function defined. Even older versions do not have even the __NR_process_vm_readv syscall number. We use cmake to detect these situations and fallback appropriately: in the first case, we can issue the syscall manually, while it the latter case, we need to drop fast memory read support completely. Test Plan: linux test suite passes Reviewers: ovyalov, Eugene.Zelenko Subscribers: tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10727
2015-06-27timegm in LibcGlue needs to be extern, not static.Chaoren Lin
Reviewers: vharron Reviewed By: vharron Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10778
2015-06-25Resubmitting 240466 after fixing the linux test suite failures.Greg Clayton
A few extras were fixed - Symbol::GetAddress() now returns an Address object, not a reference. There were places where people were accessing the address of a symbol when the symbol's value wasn't an address symbol. On MacOSX, undefined symbols have a value zero and some places where using the symbol's address and getting an absolute address of zero (since an Address object with no section and an m_offset whose value isn't LLDB_INVALID_ADDRESS is considered an absolute address). So fixing this required some changes to make sure people were getting what they expected. - Since some places want to access the address as a reference, I added a few new functions to symbol: Address &Symbol::GetAddressRef(); const Address &Symbol::GetAddressRef() const; Linux test suite passes just fine now. <rdar://problem/21494354>
2015-06-25Add const qualifier to Mangled::GuessLanguageDawn Perchik
2015-06-25Rename Mangled::GetLanguage to Mangled::GuessLanguageDawn Perchik
The language can not be definitively determined from the mangling, so this new name helps clarify that fact. This addresses the concerns raised in http://reviews.llvm.org/rL226962. Reviewed by: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10723
2015-06-25Add const versions of SBFrame::GetFunctionName and SBFrame::IsInlined.Oleksiy Vyalov
http://reviews.llvm.org/D10711
2015-06-24Revert rL240435: "Mark SBFrame::GetFunctionName and SBFrame::IsInlined as ↵Oleksiy Vyalov
const.".
2015-06-24Proper handling of QNonStop packet response.Ewan Crawford
Turn non-stop mode off if reply to QNonStop packet isn't an OK.
2015-06-24Improve instruction emulation based stack unwinding on ARMTamas Berghammer
* Add and fix the emulation of several instruction. * Disable frame pointer usage on Android. * Specify return address register for the unwind plan instead of explict tracking the value of RA. * Replace prologue detection heuristics (unreliable in several cases) with a logic to follow the branch instructions and restore the CFI value based on them. The target address for a branch should have the same CFI as the source address (if they are in the same function). * Handle symbols in ELF files where the symbol size is not specified with calcualting their size based on the next symbol (already done in MachO files). * Fix architecture in FuncUnwinders with filling up the inforamtion missing from the object file with the architecture of the target. * Add code to read register wehn the value is set to "IsSame" as it meanse the value of a register in the parent frame is the same as the value in the current frame. Differential revision: http://reviews.llvm.org/D10447
2015-06-23Implement the "qSymbol" packet in order to be able to read queue information ↵Greg Clayton
in debugserver and return the info in the stop reply packets. A "qSymbol::" is sent when shared libraries have been loaded by hooking into the Process::ModulesDidLoad() function from within ProcessGDBRemote. This function was made virtual so that the ProcessGDBRemote version is called, which then first calls the Process::ModulesDidLoad(), and then it queries for any symbol lookups that the remote GDB server might want to do. This allows debugserver to request the "dispatch_queue_offsets" symbol so that it can read the queue name, queue kind and queue serial number and include this data as part of the stop reply packet. Previously each thread would have to do 3 memory reads in order to read the queue name. This is part of reducing the number of packets that are sent between LLDB and the remote GDB server. <rdar://problem/21494354>
2015-06-23Fix the handling of the run lock in cases where you needed to runJim Ingham
a hand-called function from the private state thread. The problem was that on the way out of the private state thread, we try to drop the run lock. That is appropriate for the main private state thread, but not the secondary private state thread. Only the thread that spawned them can know whether this is an appropriate thing to do or not. <rdar://problem/21375352>
2015-06-23Add support for displaying the language in the frame-format string.Dawn Perchik
Enable ${language} to be specified in the frame-format string to see the current frame's compile unit language in "frame info". Test Plan: debug a C++ program, run to main, and run the lldb commands: settings set frame-format "frame lang=${language}\n" frame info you should see: frame lang=c++ test case added in: ./dotest.py --executable lldb -f SettingsCommandTestCase.test_set_frame_format Reviewers: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10561
2015-06-23Mark SBFrame::GetFunctionName and SBFrame::IsInlined as const.Oleksiy Vyalov
2015-06-23[LLDB][MIPS] MIPS32 branch emulation and single-steppingJaydeep Patil
SUMMARY: This patch implements 1. Emulation of MIPS32 branch instructions 2. Enable single-stepping for MIPS32 instructions 3. Correction in emulation of MIPS64 branch instructions with delay slot 4. Adjust breakpoint address when breakpoint is hit in a forbidden slot of compact branch instruction Reviewers: clayborg Subscribers: mohit.bhakkad, sagar, bhushan, lldb-commits, emaste, nitesh.jain Differential Revision: http://reviews.llvm.org/D10596
2015-06-23Revert "Reduced packet counts to the remote GDB server where possible."Chaoren Lin
This reverts commit 0cc0745ea9c68d7fdcadc9904cee3f13c96dae60. Due to breakage on Linux build bot: http://lab.llvm.org:8011/builders/lldb-x86_64-ubuntu-14.04-cmake/builds/3436
2015-06-22Reduced packet counts to the remote GDB server where possible.Greg Clayton
We have been working on reducing the packet count that is sent between LLDB and the debugserver on MacOSX and iOS. Our approach to this was to reduce the packets required when debugging multiple threads. We currently make one qThreadStopInfoXXXX call (where XXXX is the thread ID in hex) per thread except the thread that stopped with a stop reply packet. In order to implement multiple thread infos in a single reply, we need to use structured data, which means JSON. The new jThreadsInfo packet will attempt to retrieve all thread infos in a single packet. The data is very similar to the stop reply packets, but packaged in JSON and uses JSON arrays where applicable. The JSON output looks like: [ { "tid":1580681, "metype":6, "medata":[2,0], "reason":"exception", "qaddr":140735118423168, "registers": { "0":"8000000000000000", "1":"0000000000000000", "2":"20fabf5fff7f0000", "3":"e8f8bf5fff7f0000", "4":"0100000000000000", "5":"d8f8bf5fff7f0000", "6":"b0f8bf5fff7f0000", "7":"20f4bf5fff7f0000", "8":"8000000000000000", "9":"61a8db78a61500db", "10":"3200000000000000", "11":"4602000000000000", "12":"0000000000000000", "13":"0000000000000000", "14":"0000000000000000", "15":"0000000000000000", "16":"960b000001000000", "17":"0202000000000000", "18":"2b00000000000000", "19":"0000000000000000", "20":"0000000000000000"}, "memory":[ {"address":140734799804592,"bytes":"c8f8bf5fff7f0000c9a59e8cff7f0000"}, {"address":140734799804616,"bytes":"00000000000000000100000000000000"} ] } ] It contains an array of dicitionaries with all of the key value pairs that are normally in the stop reply packet. Including the expedited registers. Notice that is also contains expedited memory in the "memory" key. Any values in this memory will get included in a new L1 cache in lldb_private::Process where if a memory read request is made and that memory request fits into one of the L1 memory cache blocks, it will use that memory data. If a memory request fails in the L1 cache, it will fall back to the L2 cache which is the same block sized caching we were using before these changes. This allows a process to expedite memory that you are likely to use and it reduces packet count. On MacOSX with debugserver, we expedite the frame pointer backchain for a thread (up to 256 entries) by reading 2 pointers worth of bytes at the frame pointer (for the previous FP and PC), and follow the backchain. Most backtraces on MacOSX and iOS now don't require us to read any memory! We will try these packets out and if successful, we should port these to lldb-server in the near future. <rdar://problem/21494354>
2015-06-18Fetch object file load address if it isn't specified by the linkerTamas Berghammer
Differential revision: http://reviews.llvm.org/D10490
2015-06-18Fix misplaced commentPavel Labath
2015-06-18Fix a variety of typos.Bruce Mitchener
No functional change.
2015-06-17Fix enum LanguageType values and language string table lookups.Dawn Perchik
Summary: * Fix enum LanguageType values so that they can be used as indexes into array language_names and g_languages as assumed by LanguageRuntime::GetNameForLanguageType, Language::SetLanguageFromCString and Language::AsCString. * Add DWARFCompileUnit::LanguageTypeFromDWARF to convert from DWARF DW_LANG_* values to enum LanguageType values. Reviewed By: clayborg, abidh Differential Revision: http://reviews.llvm.org/D10484
2015-06-17[NativeProcessLinux] Use fast memory reads, if the system supports itPavel Labath
Summary: Memory reads using the ptrace API need to be executed on a designated thread and in 4-byte increments. The process_vm_read syscall has no such requirements and it is about 50 times faster. This patch makes lldb-server use the faster API if the target kernel supports it. Kernel support for this feature is determined at runtime. Using process_vm_writev in the same manner is more complicated since this syscall (unlike ptrace) respects page protection settings and so it cannot be used to set a breakpoint, since code pages are typically read-only. However, memory writes are not currently a performance bottleneck as they happen much more rarely. Test Plan: all tests continue to pass Reviewers: ovyalov, vharron Subscribers: tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10488
2015-06-17Revert r239873 - I actually want to think some more about thisEnrico Granata
2015-06-17Fix an issue where the oneliner printing of variables would ignore custom ↵Enrico Granata
formatting Because vector types use their formats in special ways (i.e. children get generated based on them), this change by itself would cause a regression in printing vector types with some custom formats Work around that issue by special casing vector types out of this format-passdown mode. I believe there is a more general feature to be designed in this space, but until I see more cases of interest, I am going to leave this as a special case Fixes rdar://20810062
2015-06-16Add a ThreadSafe adapter over llvm::DenseSetEnrico Granata
2015-06-09Rename `FileSpec::IsRelativeToCurrentWorkingDirectory` to `IsRelative`.Chaoren Lin
Summary: `IsRelativeToCurrentWorkingDirectory` was misleading, because relative paths are sometimes appended to other directories, not just the cwd. Plus, the new name is shorter. Also added `IsAbsolute` for completeness. Reviewers: clayborg, ovyalov Reviewed By: ovyalov Subscribers: tberghammer, lldb-commits Differential Revision: http://reviews.llvm.org/D10262
2015-06-08Revert "Introduce a TypeSystem interface to support adding non-clang languages."Pavel Labath
This seems to break expression evaluation on the linux build.
2015-06-08Introduce a TypeSystem interface to support adding non-clang languages.Pavel Labath
Reviewers: clayborg Reviewed By: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D8712 Original Author: Ryan Brown <ribrdb@google.com>
2015-06-05Improve OSType initialization in elf object file's arch_specEd Maste
Setting the OSType in the ArchSpec triple is needed to correctly setup up the register context plugin. ArchSpec::SetArchitecture, for Mach-O only, sets the OSType. For ELF it was left to the ObjectFileELF to fill in the missing OSType. This change moves the ObjectFileELF logic into ArchSpec. A new optional 'os' parameter has been added to SetArchitecture. For ELF, this value is the from the ELF header.e_ident[EI_OSABI]. The default value is 0 or ELFOSABI_NONE. The real work of determining the OSType was done by the ObjectFileELF helper function GetOsFromOSABI. This logic has been moved SetArchitecture. GetOsFromOSABI has been commented as being deprectated. It is left in to support asserts. For ELF the vendor value returned from SetArchitecture should be UnknownVendor. An unneeded resetting in ObjectFileELF has been removed and replaced with an assert. This fixes a problem reading a core file on FreeBSD/ARM because the spec triple was arm-unknown-unknown. Patch by Tom Rix. Differential Revision: http://reviews.llvm.org/D9292
2015-06-05Delegate path operations to FileSpec.Chaoren Lin
Summary: - Added PrependPathComponent utility functions to FileSpec. - Delegate path operations in ParseCompileUnit to FileSpec. - Delegate path operations in ParseSupportFiles to FileSpec. Reviewers: clayborg, vharron, ovyalov Reviewed By: ovyalov Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10253
2015-06-04Fix doxygen warnings.Bruce Mitchener
Summary: Building the doxygen target presented some warnings which are now addressed by this patch. Test Plan: Ran doxygen build target and these warnings were no longer present. Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10181
2015-06-03Fix a bug where trying to Dump() a ValueObject would use the ↵Enrico Granata
static/non-synthetic version of the value even if the ValueObject one actually called Dump() on turned out to be dynamic and/or synthetic This was of course overridable by using DumpValueObjectOptions, but the default should be saner and the previous behavior made for a few fun investigations.... rdar://problem/21065149
2015-06-03[MIPS][lldb-server] Add 32-bit register context and read/write FP registers ↵Sagar Thakur
on mips64 - Added support for read/write FP registers in FR1 mode. - Added 32 bit register context for mips32. Reviewers: clayborg, tberghammer, jaydeep Subscribers: emaste, nitesh.jain, bhushan, mohit.bhakkad, lldb-commits Differential Revision: http://reviews.llvm.org/D10029
2015-06-02Fix LLDB so that it can correctly track down dependent shared libraries that ↵Greg Clayton
use @rpath. <rdar://problem/8371885>
2015-06-02Fix up some comments to be more explicit. Remove some long-commented out code.Jim Ingham
2015-05-29Working directory FileSpec should use remote path syntax to display correctly.Chaoren Lin
Summary: Depends on D9728. Reviewers: ovyalov, zturner, clayborg Reviewed By: clayborg Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D9806
2015-05-29Refactor many file functions to use FileSpec over strings.Chaoren Lin
Summary: This should solve the issue of sending denormalized paths over gdb-remote if we stick to GetPath(false) in GDBRemoteCommunicationClient, and let the server handle any denormalization. Reviewers: ovyalov, zturner, vharron, clayborg Reviewed By: clayborg Subscribers: tberghammer, emaste, lldb-commits Differential Revision: http://reviews.llvm.org/D9728
2015-05-29Implement snprintf for MSVC with correct return value.Chaoren Lin
Reviewers: zturner Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D10048
2015-05-29Report inferior SIGSEGV as a signal instead of an exception on linuxPavel Labath
Summary: Previously, we reported inferior receiving SIGSEGV (or SIGILL, SIGFPE, SIGBUS) as an "exception" to LLDB, presumably to match OSX behaviour. Beside the fact that we were basically lying to the user, this was also causing problems with inferiors which handle SIGSEGV by themselves, since LLDB was unable to reinject this signal back into the inferior. This commit changes LLGS to report SIGSEGV as a signal. This has necessitated some changes in the test-suite, which had previously used eStopReasonException to locate threads that crashed. Now it uses platform-specific logic, which in the case of linux searches for eStopReasonSignaled with signal=SIGSEGV. I have also added the ability to set the description of StopInfoUnixSignal using the description field of the gdb-remote packet. The linux stub uses this to display additional information about the segfault (invalid address, address access protected, etc.). Test Plan: All tests pass on linux and osx. Reviewers: ovyalov, clayborg, emaste Subscribers: emaste, lldb-commits Differential Revision: http://reviews.llvm.org/D10057
2015-05-29Change ProcessEventData over to use a std::weak_ptr to a process intead of a ↵Greg Clayton
std::shared_ptr. Anyone consuming events for a process should have the process around long enough to grab the event and anyone that holds onto an event for too long won't keep the process around.
2015-05-28Resubmitting r238459 and r238460 with fix for Linux.Chaoren Lin
2015-05-28Revert "Move inlined cxa_demangle.cpp to a separate file."Ying Chen
This reverts commit 8cb47a2140f3e93a34597fc9f11c8cd96130076d.
2015-05-28Revert "Allow both MSVC and Itanium mangling schemes."Ying Chen
Cause build break. This reverts commit 6d986061393f2863fec739e04412281148acc1f3.
2015-05-28If we see an external function in the symbols, makeSean Callanan
it an extern "C" function instead of a C++ function so that Clang doesn't emit a mangled function reference. Also removed the hack in ClangExpressionDeclMap that works around this.