summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/ObjectFile
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix LLDB so that it can correctly track down dependent shared libraries that ↵Greg Clayton2015-06-021-7/+62
| | | | | | | | use @rpath. <rdar://problem/8371885> llvm-svn: 238886
* Fix THUMB function detection when function name is not prefixed.Aidan Dodds2015-05-281-11/+18
| | | | | | Differential Revision: http://reviews.llvm.org/D10062 llvm-svn: 238433
* Fix parsing of the plt section for android-armTamas Berghammer2015-05-081-6/+52
| | | | | | | | | | | | | | | | The ELF data contains two different errors in some ELF files on android. * The link field of the symbol table don't point to the plt section or to the dynsym section even when it is present in the ELF files. * The size of the plt entries aren't specified in the section header of the plt section. This CL adds some workarounds for these two issue with finding the sections by name if the link field is empty and by using a heuristic to calculate the size and offset of the plt entries. Differential revision: http://reviews.llvm.org/D9560 llvm-svn: 236818
* [LLDB][MIPS] Add MIPS32 and MIPS64 core revisionsMohit K. Bhakkad2015-04-231-7/+12
| | | | | | | | | | | | | | | Patch by Jaydeep Patil Added MIPS32 and MIPS64 core revisions. This would be followed by register context and emulate-instruction for MIPS32. DYLDRendezvous.cpp: On Linux link map struct does not contain extra load offset field. Reviewers: clayborg Subscribers: bhushan, mohit.bhakkad, sagar, lldb-commits. Differential Revision: http://reviews.llvm.org/D9190 llvm-svn: 235574
* Remove usages of host architecture within ELF object file for unknown parts ↵Oleksiy Vyalov2015-04-181-32/+0
| | | | | | | | of ArchSpec. http://reviews.llvm.org/D9078 llvm-svn: 235255
* Fix mapping symbol handling on arm 32/64Tamas Berghammer2015-04-171-25/+31
| | | | | | | | | | | | The debug info section contains some $d mapping symbol what is overlapping with code sections in other sections of the object file causing problem in the address class detection. This CL ignores these symboles from the address class map as the debug info sections don't use this map. Differential revision: http://reviews.llvm.org/D9050 llvm-svn: 235171
* Fix thumb symbol value fixup in ObjectFileELFTamas Berghammer2015-04-161-1/+1
| | | | llvm-svn: 235098
* Ignore mapping symbols on aarch64Tamas Berghammer2015-04-072-50/+82
| | | | | | | | | | | ELF symbol tables on aarch64 may contains some mapping symbols. They provide information about the underlying data but interfere with symbol look-up of lldb. They are already ignored on arm32. With this CL they will be ignored on aarch64 also. Differential revision: http://reviews.llvm.org/D8776 llvm-svn: 234307
* Handle LC_ENCRYPTION_64 in addition to LC_ENCRYPTION load commands inJason Molenda2015-04-021-1/+3
| | | | | | | Mach-O files. <rdar://problem/20113673> llvm-svn: 233893
* Move lldb-log.cpp to core/Logging.cppZachary Turner2015-03-182-2/+0
| | | | | | | | | So that we don't have to update every single #include in the entire codebase to #include this new header (which used to get included by lldb-private-log.h, we automatically #include "Logging.h" from within "Log.h". llvm-svn: 232653
* Parse .note.android.ident header from elf filesTamas Berghammer2015-03-181-1/+15
| | | | | | | | | | | In android a .note.android.ident section header is added to the elf files to provide information for the debuggers that it is an android specific module. This CL add logic to parse it out from the elf files and set the module specification based on it. Differential revision: http://reviews.llvm.org/D8377 llvm-svn: 232625
* [MIPS] - Register Context for MIPS64Mohit K. Bhakkad2015-03-171-0/+26
| | | | | | | | | | | | | | | | Patch by Jaydeep Patil Summery: 1. Add MIPS variants by parsing e_flags of the ELF 2. Create RegisterInfoInterface and RegisterContext for MIPS64 and MIPS64EL Reviewers: clayborg Subscribers: tberghammer, bhushan, mohit.bhakkad, sagar Differential Revision: http://reviews.llvm.org/D8166 llvm-svn: 232467
* Remove "virtual" and add "override" to all functions that are overridden to ↵Greg Clayton2015-03-121-42/+42
| | | | | | quiet warnings. llvm-svn: 231990
* Add Utility/ModuleCache class and integrate it with PlatformGDBRemoteServer ↵Oleksiy Vyalov2015-03-102-3/+3
| | | | | | | | - in order to allow modules caching from remote targets. http://reviews.llvm.org/D8037 llvm-svn: 231734
* Use the unified section list when generating a symbol tablePavel Labath2015-03-041-1/+1
| | | | | | | | | | | | | | | | | | | | | Summary: Symbol table generation code was failing to take into account the debug symbols because the object file was looking only into its own section list when doing the generation, even though the debug symbols from another object file were correctly detected and loaded by the SymbolVendor. This changes the code to use the unified section list, which fixes this problem. Test Plan: I do not intend do submit this yet since it causes (or more like, exposes) the issue in D7884, but I wanted to put this out here, so that anyone who wants to take a look at it can do so. (And I also wanted to know if this is the right approach to the problem :). Reviewers: clayborg, zturner Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D7913 llvm-svn: 231229
* Correctly resolve symbol names containing linker annotationsPavel Labath2015-03-042-6/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary: Symbols in ELF files can be versioned, but LLDB currently does not understand these. This problem becomes apparent once one loads glibc with debug info. Here (in the .symtab section) the versions are embedded in the name (name@VERSION), which causes issues when evaluating expressions referencing memcpy for example (current glibc contains memcpy@@GLIBC_2.14 and memcpy@GLIBC_2.2.5). This problem was not evident without debug symbols as the .dynsym section stores the bare names and the actual versions are present in a separate section (.gnu.version_d), which LLDB ignores. This resulted in two definitions of memcpy in the symbol table. This patch adds support for storing annotated names to the Symbol class. If Symbol.m_contains_linker_annotations is true then this symbol is annotated. Unannotated name can be obtained by calling StripLinkerAnnotations on the corresponding ObjectFile. ObjectFileELF implements this to strip @VERSION suffixes when requested. Symtab uses this function to add the bare name as well as the annotated name to the name lookup table. To preserve the size of the Symbol class, I had to steal one bit from the m_type field. Test Plan: This fixes TestExprHelpExamples.py when run with a glibc with debug symbols. Writing an environment agnostic test case would require building a custom shared library with symbol versions and testing symbol resolution against that, which is somewhat challenging. Reviewers: clayborg, jingham Subscribers: lldb-commits Differential Revision: http://reviews.llvm.org/D8036 llvm-svn: 231228
* Further reduce the header footprint of Process.hZachary Turner2015-03-031-0/+1
| | | | | | | No functional change here, only deletes unnecessary headers and moves one function's body from the .h file to the .cpp. llvm-svn: 231145
* Fix a crasher where we might have a N_UNDF symbol with no name and this ↵Greg Clayton2015-03-031-0/+2
| | | | | | | | could cause ObjectFileMachO::ParseSymtab() to crash. <rdar://problem/19989491> llvm-svn: 231048
* MacOSX symbol table change to combine the N_GSYM debug map entry with the ↵Greg Clayton2015-02-251-28/+74
| | | | | | "_OBJC_CLASS_$_", "_OBJC_METACLASS_$_", and "_OBJC_IVAR_$_" non debug symbols. This allows the symbol that represents the object file to contain the eSymbolTypeObjCClass and eSymbolTypeObjCMetaClass and will help us to be able to efficiently lookup the real definition of an objective C class without loading all .o files linearly to find the .o file that contains the true definition. llvm-svn: 230509
* Avoid crashing by not mmap'ing files on network mounted file systems.Greg Clayton2015-02-233-13/+13
| | | | | | | | | | | | | | | | | | | | This is implemented by making a new FileSystem function: bool FileSystem::IsLocal(const FileSpec &spec) Then using this in a new function: DataBufferSP FileSpec::MemoryMapFileContentsIfLocal(off_t file_offset, size_t file_size) const; This function only mmaps data if the file is a local file since that means we can reliably page in data. We were experiencing crashes where people would use debug info files on network mounted file systems and that mount would go away and cause the next access to a page that wasn't paged in to crash LLDB. We now avoid this by just copying the data into a heap buffer and keeping a permanent copy to avoid the crash. Updated all previous users of FileSpec::MemoryMapFileContentsIfLocal() in ObjectFile subclasses over to use the new FileSpec::MemoryMapFileContentsIfLocal() function. <rdar://problem/19470249> llvm-svn: 230283
* Exit early from DumpELFProgramHeaders if parse failsEd Maste2015-02-231-15/+15
| | | | | | | This matches the way DumpELFSectionHeaders is implemented and is recommended by the LLVM coding conventions. llvm-svn: 230228
* Make sure things build for iOS after recent changes.Greg Clayton2015-02-201-7/+9
| | | | llvm-svn: 230076
* Correctly handle N_INDR nlist entries and don't rely on the trie information ↵Greg Clayton2015-02-141-20/+108
| | | | | | | | in order to reproduce them since this dyld trie info can be missing. <rdar://problem/19749670> llvm-svn: 229201
* Don't wait for the dynamic loader to set a module as a dynamic link editor, ↵Greg Clayton2015-02-052-1/+10
| | | | | | | | | | figure it out through the ObjectFile. Background: dyld binaries often have extra symbols in their symbol table like "malloc" and "free" for the early bringup of dyld and we often don't want to set breakpoints in dynamic linker binaries. We also don't want to call the "malloc" or "free" function in dyld when a user writes an expression like "(void *)malloc(123)" so we need to avoid doing name lookups in dyld. We mark Modules as being dynamic link editors and this helps do correct lookups for breakpoints by name and function lookups. <rdar://problem/19716267> llvm-svn: 228261
* Fix it so we always get major, minor and update from the version in ↵Greg Clayton2015-02-041-12/+4
| | | | | | | | ObjectFileMachO::GetMinimumOSVersion(...) and ObjectFileMachO::GetSDKVersion(...). <rdar://problem/19697053> llvm-svn: 228092
* Don't stomp the triple when loading a PECOFF target.Zachary Turner2015-01-221-1/+8
| | | | | | | | | | | | | | | | | | | | | When you create a target, it tries to look for the platform's list of supported architectures for a match. The match it finds can contain specific triples, like i386-pc-windows-msvc. Later, we overwrite this value with the most generic triple that can apply to any platform with COFF support, causing some of the fields of the triple to get overwritten. This patch changes the behavior to only merge in values from the COFF triple if the fields of the matching triple were unknown/unspecified to begin with. This fixes load address resolution on Windows, since it enables the DynamicLoaderWindows to be used instead of DynamicLoaderStatic. Reviewed by: Greg Clayton Differential Revision: http://reviews.llvm.org/D7120 llvm-svn: 226849
* [LLDB][MIPS] Adding SoftwareBreakpointTrapOpcode and RelocationJumpSlotType ↵Mohit K. Bhakkad2015-01-081-0/+3
| | | | | | | | | | | | | | | | for MIPS Patch by Bhushan Attarde Reviewers: clayborg Reviewed By: clayborg Subscribers: petarj, dsanders, mohit.bhakkad, lldb-commits Differential Revision: http://reviews.llvm.org/D6861 llvm-svn: 225436
* The lldb unwinder can now use the unwind information from the compact-unwind Jason Molenda2014-12-081-4/+17
| | | | | | | | | | | | | | | | | | section for x86_64 and i386 targets on Darwin systems. Currently only the compact unwind encoding for normal frame-using functions is supported but it will be easy handle frameless functions when I have a bit more free time to test it. The LSDA and personality routines for functions are also retrieved correctly for functions from the compact unwind section. This new code is very fresh -- it passes the lldb testsuite and I've done by-hand inspection of many functions and am getting correct behavior for all of them. There may need to be some bug fixing over the next couple weeks as I exercise and test it further. But I think it's fine right now so I'm committing it. <rdar://problem/13220837> llvm-svn: 223625
* Enable armv7 core file writing for Mach-O binaries. Jason Molenda2014-11-121-3/+4
| | | | | | | The problems with the dyld all image infos struct seems to be specific to arm64. llvm-svn: 221760
* Sketch out the armv7 and arm64 core file writing support inJason Molenda2014-11-121-7/+169
| | | | | | | | | | | | | | | ObjectFileMachO. It's close but we seem to be missing some of the memory region segments - not exactly sure how that's happening. The register context writing into the LC_THREAD load commands is working correctly though. Slightly reordered the arm64 definitions in ArchSpec.cpp so when we look for an arm64 core file definiton we're getting a cpu subtype of CPU_ANY which we can't put in the mach header of a core file. Make the first definition we find by linear search have the currently correct '1' cpu subtype. llvm-svn: 221743
* Add support for 32-bit core file dumping. Add support for i386 process core ↵Jason Molenda2014-11-111-20/+120
| | | | | | file dumping. llvm-svn: 221683
* First cut of PowerPC(64) support in LLDB.Justin Hibbits2014-10-312-0/+7
| | | | | | | | | | | | | | | | | | | | | | | Summary: This adds preliminary support for PowerPC/PowerPC64, for FreeBSD. There are some issues still: * Breakpoints don't work well on powerpc64. * Shared libraries don't yet get loaded for a 32-bit process on powerpc64 host. * Backtraces don't work. This is due to PowerPC ABI using a backchain pointer in memory, instead of a dedicated frame pointer register for the backchain. * Breakpoints on functions without debug info may not work correctly for 32-bit powerpc. Reviewers: emaste, tfiala, jingham, clayborg Reviewed By: clayborg Subscribers: emaste, lldb-commits Differential Revision: http://reviews.llvm.org/D5988 llvm-svn: 220944
* Remove unused variable.Jason Molenda2014-10-161-3/+1
| | | | | | clang static analyzer fixit. llvm-svn: 219904
* Improve the handling of kalimba ELF file section type recognition.Matthew Gardiner2014-10-151-8/+15
| | | | | | | | Recognise the SHT_NOBITS property in kalimba ELF, and determine this to be of type zerofilled. Subsequently recognise this type to represent bytes on the target's DATA address space, and therefore be sized accordingly. llvm-svn: 219782
* Very minimal support 24-bit kalimbas. Vanilla "memory read" for data sectionsMatthew Gardiner2014-09-291-3/+43
| | | | | | | | | | | works, as do breakpoints, run and pause, display zeroth frame. See http://reviews.llvm.org/D5503 for a fuller description of the changes in this commit. llvm-svn: 218596
* Fixed an issue where the last N load commands in the mach-o core file would ↵Greg Clayton2014-09-161-0/+1
| | | | | | | | | | not be read in where N was the number of LC_THREAD load commands. I now properly increment the ncmds for each LC_THREAD and now core files are saved correctly. <rdar://problem/18312703> llvm-svn: 217905
* ELF: store the thumbness of a function in symbol flags.Todd Fiala2014-09-152-2/+56
| | | | | | | | | | | | This allows us to fixup the address of the symbol as soon as we parse it so that lldb is not confused thinking there are two different symbols in the binary (one with the thumb bit, one without). Also, differentiating between THUMB and ARM symbols allows the debugger to place the right type of breakpoint. Change by Stephane Sezer. llvm-svn: 217841
* Handle ARM ELF symbols properly: skip $t* and $a* symbols in ObjectFileELF.Todd Fiala2014-09-151-0/+26
| | | | | | | | | | | | | | | ELF objects contain marker symbols to differentiate between ARM and THUMB functions. Instead of storing them internally and having garbage show up when symbols are searched for by the user, we can just skip them and not store them at all, as we never actually need them. Change by Stephane Sezer. Tested: Ubuntu 14.04 x86_64 MacOSX 10.9.4 x86_64 llvm-svn: 217782
* Fix up lldb build for llvm r217172.Todd Fiala2014-09-041-3/+3
| | | | | | Changes reference to 4th element in version_min_command from reserved to sdk. llvm-svn: 217185
* lldb - ELF: add ARM64 relocation jump slot handling in ELFHeader.Todd Fiala2014-08-291-0/+3
| | | | | | | | See http://reviews.llvm.org/D4579 for more details. Change by Paul Osmialowski. llvm-svn: 216739
* Add support for kalimba architecture variants 3, 4 and 5.Matthew Gardiner2014-08-271-2/+36
| | | | | | | | Add entries to core_definitions and elf_arch_entries for those variants. Select the subtype for the variant by parsing the e_flags field of the elf header. llvm-svn: 216541
* When adding a dSYM to an existing ObjectFile, we can have a situationJason Molenda2014-08-221-0/+12
| | | | | | | | | | | | | | | | | | with binaries in the dyld shared cache (esp on iOS) where the file address for the executable binary (maybe from memory, maybe from an expanded copy of the dyld shared cache) is different from the file address in the dSYM. In that case, ObjectFileMachO replaces the file addresses from the original binary with the dSYM file addresses (usually 0-based) -- lldb doesn't have a notion of two file addresses for a given module so they need to agree. There was a cache of file addresses over in the Symtab so I added a method to the Module and the objects within to clear any file address caches if they exist, and added an implementation in the Symtab module to do that. <rdar://problem/16929569> llvm-svn: 216258
* Move Host::GetArchitecture to HostInfo::GetArchitecture.Zachary Turner2014-08-201-4/+3
| | | | | | | | As a side effect, this patch also eliminates all of the preprocessor conditionals previously used to implement GetArchitecture(). llvm-svn: 216074
* Move some Host logic into HostInfo class.Zachary Turner2014-08-191-4/+6
| | | | | | | | | | | | | | | | | | This patch creates a HostInfo class, a static class used to answer basic queries about the host platform. As part of this change, some functionality is moved from Host to HostInfo, and relevant fixups are performed in the rest of the codebase. This is part of a larger effort to isolate more code in the Host layer into platform-specific groups, to make it easier to make platform specific changes for a particular Host without breaking other hosts. Reviewed by: Greg Clayton Differential Revision: http://reviews.llvm.org/D4963 llvm-svn: 215992
* Silence a warning saying "typedef requires a name" from clang.Greg Clayton2014-07-291-1/+1
| | | | llvm-svn: 214247
* Remove unused variable that was causing a warning.Greg Clayton2014-07-291-1/+0
| | | | llvm-svn: 214230
* When constructing an ArchSpec from a MachO cpu type and subtype, don't set ↵Greg Clayton2014-07-291-2/+6
| | | | | | | | the OS for x86_64 and x86 in case the binary ends up being for macosx or ios. <rdar://problem/17819272> llvm-svn: 214188
* Fix supported architectures on PlatformWindows.Zachary Turner2014-07-282-1/+30
| | | | | | | | | | i386, i486, i486sx, and i686 are all indistinguishable as far as PE/COFF files are concerned. This patch adds support for all of these architectures to PlatformWindows. Differential Revision: http://reviews.llvm.org/D4658 llvm-svn: 214092
* ObjectFileMachO: Silence signed/unsigned comparison warningDavid Majnemer2014-07-241-2/+1
| | | | | | | | | | | | | | | | | | | | File::SeekFromStart returns an off_t representing the position of the file after seeking. This return value is always going to be one of two values: the input or -1 in the case of failure. ObjectFileMachO compares an expression of type off_t from the return of File::SeekFromStart(segment.fileoff) and compares it for equality with segment.fileoff. The type of segment_command_64::fileoff is unsigned while off_t is signed, comparing them emits a diagnostic under GCC. Instead, we can just compare SeekFromSTart with -1 to see if we successfully seeked. Differential Revision: http://reviews.llvm.org/D4634 llvm-svn: 213822
* Plugins: silence a few more signed comparision warningsSaleem Abdulrasool2014-07-231-1/+2
| | | | | | Address a few signed-compare warnings that were triggered on GCC 4.8.2. llvm-svn: 213716
OpenPOWER on IntegriCloud