Update lldb for clang/llvm 3.4 import
This commit largely restores the lldb source to the upstream r196259 snapshot with the addition of threaded inferior support and a few bug fixes. Specific upstream lldb revisions restored include: SVN git 181387 779e6ac 181703 7bef4e2 182099 b31044e 182650 f2dcf35 182683 0d91b80 183862 15c1774 183929 99447a6 184177 0b2934b 184948 4dc3761 184954 007e7bc 186990 eebd175 Sponsored by: DARPA, AFRL
This commit is contained in:
parent
b7d6c6b5e1
commit
adacc0725e
@ -18,7 +18,6 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
// Other libraries and framework includes
|
// Other libraries and framework includes
|
||||||
#include "llvm/ADT/StringRef.h"
|
|
||||||
#include "llvm/IR/Module.h"
|
#include "llvm/IR/Module.h"
|
||||||
|
|
||||||
// Project includes
|
// Project includes
|
||||||
@ -288,7 +287,8 @@ class IRExecutionUnit : public IRMemoryMap
|
|||||||
/// Allocated space.
|
/// Allocated space.
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
|
virtual uint8_t *allocateCodeSection(uintptr_t Size, unsigned Alignment,
|
||||||
unsigned SectionID);
|
unsigned SectionID,
|
||||||
|
llvm::StringRef SectionName);
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
/// Allocate space for data, and add it to the m_spaceBlocks map
|
/// Allocate space for data, and add it to the m_spaceBlocks map
|
||||||
@ -309,7 +309,9 @@ class IRExecutionUnit : public IRMemoryMap
|
|||||||
/// Allocated space.
|
/// Allocated space.
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
|
virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
|
||||||
unsigned SectionID, bool IsReadOnly);
|
unsigned SectionID,
|
||||||
|
llvm::StringRef SectionName,
|
||||||
|
bool IsReadOnly);
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
/// Allocate space for a global variable, and add it to the
|
/// Allocate space for a global variable, and add it to the
|
||||||
@ -337,45 +339,19 @@ class IRExecutionUnit : public IRMemoryMap
|
|||||||
/// @return
|
/// @return
|
||||||
/// True in case of failure, false in case of success.
|
/// True in case of failure, false in case of success.
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
bool applyPermissions(std::string *ErrMsg) { return false; }
|
virtual bool finalizeMemory(std::string *ErrMsg) {
|
||||||
|
// TODO: Ensure that the instruction cache is flushed because
|
||||||
|
// relocations are updated by dy-load. See:
|
||||||
|
// sys::Memory::InvalidateInstructionCache
|
||||||
|
// llvm::SectionMemoryManager
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
/// Passthrough interface stub
|
/// Passthrough interface stub
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
virtual void deallocateFunctionBody(void *Body);
|
virtual void deallocateFunctionBody(void *Body);
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
/// Passthrough interface stub
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
virtual uint8_t* startExceptionTable(const llvm::Function* F,
|
|
||||||
uintptr_t &ActualSize);
|
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
/// Complete the exception table for a function, and add it to the
|
|
||||||
/// m_exception_tables map
|
|
||||||
///
|
|
||||||
/// @param[in] F
|
|
||||||
/// The function whose exception table is being written.
|
|
||||||
///
|
|
||||||
/// @param[in] TableStart
|
|
||||||
/// The first byte of the exception table.
|
|
||||||
///
|
|
||||||
/// @param[in] TableEnd
|
|
||||||
/// The last byte of the exception table.
|
|
||||||
///
|
|
||||||
/// @param[in] FrameRegister
|
|
||||||
/// I don't know what this does, but it's passed through.
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
virtual void endExceptionTable(const llvm::Function *F,
|
|
||||||
uint8_t *TableStart,
|
|
||||||
uint8_t *TableEnd,
|
|
||||||
uint8_t* FrameRegister);
|
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
/// Passthrough interface stub
|
|
||||||
//------------------------------------------------------------------
|
|
||||||
virtual void deallocateExceptionTable(void *ET);
|
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
/// Passthrough interface stub
|
/// Passthrough interface stub
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
@ -416,7 +392,7 @@ class IRExecutionUnit : public IRMemoryMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
virtual void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {
|
virtual void registerEHFrames(uint8_t *Addr, uint64_t LoadAddr, size_t Size) {
|
||||||
return m_default_mm_ap->registerEHFrames(llvm::StringRef((const char *)Addr, Size));
|
return m_default_mm_ap->registerEHFrames(Addr, LoadAddr, Size);
|
||||||
}
|
}
|
||||||
|
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
|
@ -158,60 +158,60 @@ ArchSpec::AutoComplete (const char *name, StringList &matches)
|
|||||||
#define SUBTYPE_MASK 0x00FFFFFFu
|
#define SUBTYPE_MASK 0x00FFFFFFu
|
||||||
static const ArchDefinitionEntry g_macho_arch_entries[] =
|
static const ArchDefinitionEntry g_macho_arch_entries[] =
|
||||||
{
|
{
|
||||||
{ ArchSpec::eCore_arm_generic , llvm::MachO::CPUTypeARM , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
{ ArchSpec::eCore_arm_generic , llvm::MachO::CPU_TYPE_ARM , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
||||||
{ ArchSpec::eCore_arm_generic , llvm::MachO::CPUTypeARM , 0 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_generic , llvm::MachO::CPU_TYPE_ARM , 0 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv4 , llvm::MachO::CPUTypeARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv4 , llvm::MachO::CPU_TYPE_ARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv4t , llvm::MachO::CPUTypeARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv4t , llvm::MachO::CPU_TYPE_ARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv6 , llvm::MachO::CPUTypeARM , 6 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv6 , llvm::MachO::CPU_TYPE_ARM , 6 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv6m , llvm::MachO::CPUTypeARM , 14 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv6m , llvm::MachO::CPU_TYPE_ARM , 14 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv5 , llvm::MachO::CPUTypeARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv5 , llvm::MachO::CPU_TYPE_ARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv5e , llvm::MachO::CPUTypeARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv5e , llvm::MachO::CPU_TYPE_ARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv5t , llvm::MachO::CPUTypeARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv5t , llvm::MachO::CPU_TYPE_ARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_xscale , llvm::MachO::CPUTypeARM , 8 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_xscale , llvm::MachO::CPU_TYPE_ARM , 8 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7 , llvm::MachO::CPUTypeARM , 9 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7 , llvm::MachO::CPU_TYPE_ARM , 9 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7f , llvm::MachO::CPUTypeARM , 10 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7f , llvm::MachO::CPU_TYPE_ARM , 10 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7s , llvm::MachO::CPUTypeARM , 11 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7s , llvm::MachO::CPU_TYPE_ARM , 11 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7k , llvm::MachO::CPUTypeARM , 12 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7k , llvm::MachO::CPU_TYPE_ARM , 12 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7m , llvm::MachO::CPUTypeARM , 15 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7m , llvm::MachO::CPU_TYPE_ARM , 15 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_arm_armv7em , llvm::MachO::CPUTypeARM , 16 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_arm_armv7em , llvm::MachO::CPU_TYPE_ARM , 16 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumb , llvm::MachO::CPUTypeARM , 0 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumb , llvm::MachO::CPU_TYPE_ARM , 0 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv4t , llvm::MachO::CPUTypeARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv4t , llvm::MachO::CPU_TYPE_ARM , 5 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv5 , llvm::MachO::CPUTypeARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv5 , llvm::MachO::CPU_TYPE_ARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv5e , llvm::MachO::CPUTypeARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv5e , llvm::MachO::CPU_TYPE_ARM , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv6 , llvm::MachO::CPUTypeARM , 6 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv6 , llvm::MachO::CPU_TYPE_ARM , 6 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv6m , llvm::MachO::CPUTypeARM , 14 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv6m , llvm::MachO::CPU_TYPE_ARM , 14 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7 , llvm::MachO::CPUTypeARM , 9 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7 , llvm::MachO::CPU_TYPE_ARM , 9 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7f , llvm::MachO::CPUTypeARM , 10 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7f , llvm::MachO::CPU_TYPE_ARM , 10 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7s , llvm::MachO::CPUTypeARM , 11 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7s , llvm::MachO::CPU_TYPE_ARM , 11 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7k , llvm::MachO::CPUTypeARM , 12 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7k , llvm::MachO::CPU_TYPE_ARM , 12 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7m , llvm::MachO::CPUTypeARM , 15 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7m , llvm::MachO::CPU_TYPE_ARM , 15 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_thumbv7em , llvm::MachO::CPUTypeARM , 16 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_thumbv7em , llvm::MachO::CPU_TYPE_ARM , 16 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_generic , llvm::MachO::CPUTypePowerPC , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
{ ArchSpec::eCore_ppc_generic , llvm::MachO::CPU_TYPE_POWERPC , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
||||||
{ ArchSpec::eCore_ppc_generic , llvm::MachO::CPUTypePowerPC , 0 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_generic , llvm::MachO::CPU_TYPE_POWERPC , 0 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc601 , llvm::MachO::CPUTypePowerPC , 1 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc601 , llvm::MachO::CPU_TYPE_POWERPC , 1 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc602 , llvm::MachO::CPUTypePowerPC , 2 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc602 , llvm::MachO::CPU_TYPE_POWERPC , 2 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc603 , llvm::MachO::CPUTypePowerPC , 3 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc603 , llvm::MachO::CPU_TYPE_POWERPC , 3 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc603e , llvm::MachO::CPUTypePowerPC , 4 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc603e , llvm::MachO::CPU_TYPE_POWERPC , 4 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc603ev , llvm::MachO::CPUTypePowerPC , 5 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc603ev , llvm::MachO::CPU_TYPE_POWERPC , 5 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc604 , llvm::MachO::CPUTypePowerPC , 6 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc604 , llvm::MachO::CPU_TYPE_POWERPC , 6 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc604e , llvm::MachO::CPUTypePowerPC , 7 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc604e , llvm::MachO::CPU_TYPE_POWERPC , 7 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc620 , llvm::MachO::CPUTypePowerPC , 8 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc620 , llvm::MachO::CPU_TYPE_POWERPC , 8 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc750 , llvm::MachO::CPUTypePowerPC , 9 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc750 , llvm::MachO::CPU_TYPE_POWERPC , 9 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc7400 , llvm::MachO::CPUTypePowerPC , 10 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc7400 , llvm::MachO::CPU_TYPE_POWERPC , 10 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc7450 , llvm::MachO::CPUTypePowerPC , 11 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc7450 , llvm::MachO::CPU_TYPE_POWERPC , 11 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc_ppc970 , llvm::MachO::CPUTypePowerPC , 100 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc_ppc970 , llvm::MachO::CPU_TYPE_POWERPC , 100 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc64_generic , llvm::MachO::CPUTypePowerPC64 , 0 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc64_generic , llvm::MachO::CPU_TYPE_POWERPC64 , 0 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_ppc64_ppc970_64 , llvm::MachO::CPUTypePowerPC64 , 100 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_ppc64_ppc970_64 , llvm::MachO::CPU_TYPE_POWERPC64 , 100 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_32_i386 , llvm::MachO::CPUTypeI386 , 3 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_x86_32_i386 , llvm::MachO::CPU_TYPE_I386 , 3 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_32_i486 , llvm::MachO::CPUTypeI386 , 4 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_x86_32_i486 , llvm::MachO::CPU_TYPE_I386 , 4 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_32_i486sx , llvm::MachO::CPUTypeI386 , 0x84 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_x86_32_i486sx , llvm::MachO::CPU_TYPE_I386 , 0x84 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_32_i386 , llvm::MachO::CPUTypeI386 , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
{ ArchSpec::eCore_x86_32_i386 , llvm::MachO::CPU_TYPE_I386 , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
||||||
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPUTypeX86_64 , 3 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPU_TYPE_X86_64 , 3 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPUTypeX86_64 , 4 , UINT32_MAX , SUBTYPE_MASK },
|
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPU_TYPE_X86_64 , 4 , UINT32_MAX , SUBTYPE_MASK },
|
||||||
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPUTypeX86_64 , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
{ ArchSpec::eCore_x86_64_x86_64 , llvm::MachO::CPU_TYPE_X86_64 , CPU_ANY, UINT32_MAX , UINT32_MAX },
|
||||||
// Catch any unknown mach architectures so we can always use the object and symbol mach-o files
|
// Catch any unknown mach architectures so we can always use the object and symbol mach-o files
|
||||||
{ ArchSpec::eCore_uknownMach32 , 0 , 0 , 0xFF000000u, 0x00000000u },
|
{ ArchSpec::eCore_uknownMach32 , 0 , 0 , 0xFF000000u, 0x00000000u },
|
||||||
{ ArchSpec::eCore_uknownMach64 , llvm::MachO::CPUArchABI64 , 0 , 0xFF000000u, 0x00000000u }
|
{ ArchSpec::eCore_uknownMach64 , llvm::MachO::CPU_ARCH_ABI64 , 0 , 0xFF000000u, 0x00000000u }
|
||||||
};
|
};
|
||||||
static const ArchDefinition g_macho_arch_def = {
|
static const ArchDefinition g_macho_arch_def = {
|
||||||
eArchTypeMachO,
|
eArchTypeMachO,
|
||||||
|
@ -52,7 +52,7 @@
|
|||||||
#include "llvm/ADT/StringRef.h"
|
#include "llvm/ADT/StringRef.h"
|
||||||
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
#include "llvm/ExecutionEngine/ExecutionEngine.h"
|
||||||
#include "llvm/Support/Debug.h"
|
#include "llvm/Support/Debug.h"
|
||||||
#include "llvm/Support/PathV1.h"
|
#include "llvm/Support/FileSystem.h"
|
||||||
#include "llvm/Support/TargetSelect.h"
|
#include "llvm/Support/TargetSelect.h"
|
||||||
|
|
||||||
#if defined (USE_STANDARD_JIT)
|
#if defined (USE_STANDARD_JIT)
|
||||||
@ -77,19 +77,16 @@ using namespace lldb_private;
|
|||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
std::string GetBuiltinIncludePath(const char *Argv0) {
|
std::string GetBuiltinIncludePath(const char *Argv0) {
|
||||||
llvm::sys::Path P =
|
SmallString<128> P(llvm::sys::fs::getMainExecutable(
|
||||||
llvm::sys::Path::GetMainExecutable(Argv0,
|
Argv0, (void *)(intptr_t) GetBuiltinIncludePath));
|
||||||
(void*)(intptr_t) GetBuiltinIncludePath);
|
|
||||||
|
|
||||||
if (!P.isEmpty()) {
|
if (!P.empty()) {
|
||||||
P.eraseComponent(); // Remove /clang from foo/bin/clang
|
llvm::sys::path::remove_filename(P); // Remove /clang from foo/bin/clang
|
||||||
P.eraseComponent(); // Remove /bin from foo/bin
|
llvm::sys::path::remove_filename(P); // Remove /bin from foo/bin
|
||||||
|
|
||||||
// Get foo/lib/clang/<version>/include
|
// Get foo/lib/clang/<version>/include
|
||||||
P.appendComponent("lib");
|
llvm::sys::path::append(P, "lib", "clang", CLANG_VERSION_STRING,
|
||||||
P.appendComponent("clang");
|
"include");
|
||||||
P.appendComponent(CLANG_VERSION_STRING);
|
|
||||||
P.appendComponent("include");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return P.str();
|
return P.str();
|
||||||
|
@ -490,11 +490,12 @@ IRExecutionUnit::MemoryManager::allocateSpace(intptr_t Size, unsigned Alignment)
|
|||||||
uint8_t *
|
uint8_t *
|
||||||
IRExecutionUnit::MemoryManager::allocateCodeSection(uintptr_t Size,
|
IRExecutionUnit::MemoryManager::allocateCodeSection(uintptr_t Size,
|
||||||
unsigned Alignment,
|
unsigned Alignment,
|
||||||
unsigned SectionID)
|
unsigned SectionID,
|
||||||
|
llvm::StringRef SectionName)
|
||||||
{
|
{
|
||||||
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
|
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
|
||||||
|
|
||||||
uint8_t *return_value = m_default_mm_ap->allocateCodeSection(Size, Alignment, SectionID);
|
uint8_t *return_value = m_default_mm_ap->allocateCodeSection(Size, Alignment, SectionID, SectionName);
|
||||||
|
|
||||||
m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
|
m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
|
||||||
lldb::ePermissionsReadable | lldb::ePermissionsExecutable,
|
lldb::ePermissionsReadable | lldb::ePermissionsExecutable,
|
||||||
@ -515,11 +516,12 @@ uint8_t *
|
|||||||
IRExecutionUnit::MemoryManager::allocateDataSection(uintptr_t Size,
|
IRExecutionUnit::MemoryManager::allocateDataSection(uintptr_t Size,
|
||||||
unsigned Alignment,
|
unsigned Alignment,
|
||||||
unsigned SectionID,
|
unsigned SectionID,
|
||||||
|
llvm::StringRef SectionName,
|
||||||
bool IsReadOnly)
|
bool IsReadOnly)
|
||||||
{
|
{
|
||||||
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
|
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_EXPRESSIONS));
|
||||||
|
|
||||||
uint8_t *return_value = m_default_mm_ap->allocateDataSection(Size, Alignment, SectionID, IsReadOnly);
|
uint8_t *return_value = m_default_mm_ap->allocateDataSection(Size, Alignment, SectionID, SectionName, IsReadOnly);
|
||||||
|
|
||||||
m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
|
m_parent.m_records.push_back(AllocationRecord((uintptr_t)return_value,
|
||||||
lldb::ePermissionsReadable | lldb::ePermissionsWritable,
|
lldb::ePermissionsReadable | lldb::ePermissionsWritable,
|
||||||
@ -563,28 +565,6 @@ IRExecutionUnit::MemoryManager::deallocateFunctionBody(void *Body)
|
|||||||
m_default_mm_ap->deallocateFunctionBody(Body);
|
m_default_mm_ap->deallocateFunctionBody(Body);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t*
|
|
||||||
IRExecutionUnit::MemoryManager::startExceptionTable(const llvm::Function* F,
|
|
||||||
uintptr_t &ActualSize)
|
|
||||||
{
|
|
||||||
return m_default_mm_ap->startExceptionTable(F, ActualSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IRExecutionUnit::MemoryManager::endExceptionTable(const llvm::Function *F,
|
|
||||||
uint8_t *TableStart,
|
|
||||||
uint8_t *TableEnd,
|
|
||||||
uint8_t* FrameRegister)
|
|
||||||
{
|
|
||||||
m_default_mm_ap->endExceptionTable(F, TableStart, TableEnd, FrameRegister);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
IRExecutionUnit::MemoryManager::deallocateExceptionTable(void *ET)
|
|
||||||
{
|
|
||||||
m_default_mm_ap->deallocateExceptionTable (ET);
|
|
||||||
}
|
|
||||||
|
|
||||||
lldb::addr_t
|
lldb::addr_t
|
||||||
IRExecutionUnit::GetRemoteAddressForLocal (lldb::addr_t local_address)
|
IRExecutionUnit::GetRemoteAddressForLocal (lldb::addr_t local_address)
|
||||||
{
|
{
|
||||||
|
@ -357,6 +357,20 @@ IRForTarget::ResolveFunctionPointers(llvm::Module &llvm_module)
|
|||||||
if (value_ptr)
|
if (value_ptr)
|
||||||
*value_ptr = value;
|
*value_ptr = value;
|
||||||
|
|
||||||
|
// If we are replacing a function with the nobuiltin attribute, it may
|
||||||
|
// be called with the builtin attribute on call sites. Remove any such
|
||||||
|
// attributes since it's illegal to have a builtin call to something
|
||||||
|
// other than a nobuiltin function.
|
||||||
|
if (fun->hasFnAttribute(llvm::Attribute::NoBuiltin)) {
|
||||||
|
llvm::Attribute builtin = llvm::Attribute::get(fun->getContext(), llvm::Attribute::Builtin);
|
||||||
|
|
||||||
|
for (auto u = fun->use_begin(), e = fun->use_end(); u != e; ++u) {
|
||||||
|
if (auto call = dyn_cast<CallInst>(*u)) {
|
||||||
|
call->removeAttribute(AttributeSet::FunctionIndex, builtin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun->replaceAllUsesWith(value);
|
fun->replaceAllUsesWith(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -570,9 +570,8 @@ FileSpec::ResolveExecutableLocation ()
|
|||||||
if (file_cstr)
|
if (file_cstr)
|
||||||
{
|
{
|
||||||
const std::string file_str (file_cstr);
|
const std::string file_str (file_cstr);
|
||||||
llvm::sys::Path path = llvm::sys::Program::FindProgramByName (file_str);
|
std::string path = llvm::sys::FindProgramByName (file_str);
|
||||||
const std::string &path_str = path.str();
|
llvm::StringRef dir_ref = llvm::sys::path::parent_path(path);
|
||||||
llvm::StringRef dir_ref = llvm::sys::path::parent_path(path_str);
|
|
||||||
//llvm::StringRef dir_ref = path.getDirname();
|
//llvm::StringRef dir_ref = path.getDirname();
|
||||||
if (! dir_ref.empty())
|
if (! dir_ref.empty())
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include "DisassemblerLLVMC.h"
|
#include "DisassemblerLLVMC.h"
|
||||||
|
|
||||||
#include "llvm-c/Disassembler.h"
|
#include "llvm-c/Disassembler.h"
|
||||||
|
#include "llvm/ADT/OwningPtr.h"
|
||||||
#include "llvm/MC/MCAsmInfo.h"
|
#include "llvm/MC/MCAsmInfo.h"
|
||||||
#include "llvm/MC/MCContext.h"
|
#include "llvm/MC/MCContext.h"
|
||||||
#include "llvm/MC/MCDisassembler.h"
|
#include "llvm/MC/MCDisassembler.h"
|
||||||
@ -17,6 +18,7 @@
|
|||||||
#include "llvm/MC/MCInstPrinter.h"
|
#include "llvm/MC/MCInstPrinter.h"
|
||||||
#include "llvm/MC/MCInstrInfo.h"
|
#include "llvm/MC/MCInstrInfo.h"
|
||||||
#include "llvm/MC/MCRegisterInfo.h"
|
#include "llvm/MC/MCRegisterInfo.h"
|
||||||
|
#include "llvm/MC/MCRelocationInfo.h"
|
||||||
#include "llvm/MC/MCSubtargetInfo.h"
|
#include "llvm/MC/MCSubtargetInfo.h"
|
||||||
#include "llvm/Support/ErrorHandling.h"
|
#include "llvm/Support/ErrorHandling.h"
|
||||||
#include "llvm/Support/MemoryObject.h"
|
#include "llvm/Support/MemoryObject.h"
|
||||||
@ -430,7 +432,7 @@ DisassemblerLLVMC::LLVMCDisassembler::LLVMCDisassembler (const char *triple, uns
|
|||||||
m_subtarget_info_ap.reset(curr_target->createMCSubtargetInfo(triple, "",
|
m_subtarget_info_ap.reset(curr_target->createMCSubtargetInfo(triple, "",
|
||||||
features_str));
|
features_str));
|
||||||
|
|
||||||
m_asm_info_ap.reset(curr_target->createMCAsmInfo(triple));
|
m_asm_info_ap.reset(curr_target->createMCAsmInfo(*curr_target->createMCRegInfo(triple), triple));
|
||||||
|
|
||||||
if (m_instr_info_ap.get() == NULL || m_reg_info_ap.get() == NULL || m_subtarget_info_ap.get() == NULL || m_asm_info_ap.get() == NULL)
|
if (m_instr_info_ap.get() == NULL || m_reg_info_ap.get() == NULL || m_subtarget_info_ap.get() == NULL || m_asm_info_ap.get() == NULL)
|
||||||
{
|
{
|
||||||
@ -438,15 +440,22 @@ DisassemblerLLVMC::LLVMCDisassembler::LLVMCDisassembler (const char *triple, uns
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_context_ap.reset(new llvm::MCContext(*m_asm_info_ap.get(), *(m_reg_info_ap.get()), 0));
|
m_context_ap.reset(new llvm::MCContext(m_asm_info_ap.get(), m_reg_info_ap.get(), 0));
|
||||||
|
|
||||||
m_disasm_ap.reset(curr_target->createMCDisassembler(*m_subtarget_info_ap.get()));
|
m_disasm_ap.reset(curr_target->createMCDisassembler(*m_subtarget_info_ap.get()));
|
||||||
if (m_disasm_ap.get())
|
if (m_disasm_ap.get() && m_context_ap.get())
|
||||||
{
|
{
|
||||||
|
llvm::OwningPtr<llvm::MCRelocationInfo> RelInfo(curr_target->createMCRelocationInfo(triple, *m_context_ap.get()));
|
||||||
|
if (!RelInfo)
|
||||||
|
{
|
||||||
|
m_is_valid = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
m_disasm_ap->setupForSymbolicDisassembly(NULL,
|
m_disasm_ap->setupForSymbolicDisassembly(NULL,
|
||||||
DisassemblerLLVMC::SymbolLookupCallback,
|
DisassemblerLLVMC::SymbolLookupCallback,
|
||||||
(void *) &owner,
|
(void *) &owner,
|
||||||
m_context_ap.get());
|
m_context_ap.get(),
|
||||||
|
RelInfo);
|
||||||
|
|
||||||
unsigned asm_printer_variant;
|
unsigned asm_printer_variant;
|
||||||
if (flavor == ~0U)
|
if (flavor == ~0U)
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "Utility/ARM_DWARF_Registers.h"
|
#include "Utility/ARM_DWARF_Registers.h"
|
||||||
|
|
||||||
#include "llvm/Support/MathExtras.h" // for SignExtend32 template function
|
#include "llvm/Support/MathExtras.h" // for SignExtend32 template function
|
||||||
// and CountTrailingZeros_32 function
|
// and countTrailingZeros function
|
||||||
|
|
||||||
using namespace lldb;
|
using namespace lldb;
|
||||||
using namespace lldb_private;
|
using namespace lldb_private;
|
||||||
@ -47,7 +47,7 @@ using namespace lldb_private;
|
|||||||
static uint32_t
|
static uint32_t
|
||||||
CountITSize (uint32_t ITMask) {
|
CountITSize (uint32_t ITMask) {
|
||||||
// First count the trailing zeros of the IT mask.
|
// First count the trailing zeros of the IT mask.
|
||||||
uint32_t TZ = llvm::CountTrailingZeros_32(ITMask);
|
uint32_t TZ = llvm::countTrailingZeros(ITMask);
|
||||||
if (TZ > 3)
|
if (TZ > 3)
|
||||||
{
|
{
|
||||||
#ifdef LLDB_CONFIGURATION_DEBUG
|
#ifdef LLDB_CONFIGURATION_DEBUG
|
||||||
|
@ -1476,6 +1476,9 @@ ClangASTType::GetTypeClass () const
|
|||||||
case clang::Type::Decltype: break;
|
case clang::Type::Decltype: break;
|
||||||
case clang::Type::TemplateSpecialization: break;
|
case clang::Type::TemplateSpecialization: break;
|
||||||
case clang::Type::Atomic: break;
|
case clang::Type::Atomic: break;
|
||||||
|
|
||||||
|
// pointer type decayed from an array or function type.
|
||||||
|
case clang::Type::Decayed: break;
|
||||||
}
|
}
|
||||||
// We don't know hot to display this type...
|
// We don't know hot to display this type...
|
||||||
return lldb::eTypeClassOther;
|
return lldb::eTypeClassOther;
|
||||||
@ -1912,6 +1915,9 @@ ClangASTType::GetEncoding (uint64_t &count) const
|
|||||||
case clang::Type::Decltype:
|
case clang::Type::Decltype:
|
||||||
case clang::Type::TemplateSpecialization:
|
case clang::Type::TemplateSpecialization:
|
||||||
case clang::Type::Atomic:
|
case clang::Type::Atomic:
|
||||||
|
|
||||||
|
// pointer type decayed from an array or function type.
|
||||||
|
case clang::Type::Decayed:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
count = 0;
|
count = 0;
|
||||||
@ -2041,6 +2047,10 @@ ClangASTType::GetFormat () const
|
|||||||
case clang::Type::TemplateSpecialization:
|
case clang::Type::TemplateSpecialization:
|
||||||
case clang::Type::Atomic:
|
case clang::Type::Atomic:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
// pointer type decayed from an array or function type.
|
||||||
|
case clang::Type::Decayed:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// We don't know hot to display this type...
|
// We don't know hot to display this type...
|
||||||
return lldb::eFormatBytes;
|
return lldb::eFormatBytes;
|
||||||
@ -5227,6 +5237,9 @@ ClangASTType::GetDeclContextForType () const
|
|||||||
case clang::Type::InjectedClassName: break;
|
case clang::Type::InjectedClassName: break;
|
||||||
case clang::Type::DependentName: break;
|
case clang::Type::DependentName: break;
|
||||||
case clang::Type::Atomic: break;
|
case clang::Type::Atomic: break;
|
||||||
|
|
||||||
|
// pointer type decayed from an array or function type.
|
||||||
|
case clang::Type::Decayed: break;
|
||||||
}
|
}
|
||||||
// No DeclContext in this type...
|
// No DeclContext in this type...
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -77,6 +77,7 @@ LIBDEPS=\
|
|||||||
clangbasic \
|
clangbasic \
|
||||||
clanglex \
|
clanglex \
|
||||||
\
|
\
|
||||||
|
llvmoption \
|
||||||
llvmarmasmparser \
|
llvmarmasmparser \
|
||||||
llvmarmcodegen \
|
llvmarmcodegen \
|
||||||
llvminstrumentation \
|
llvminstrumentation \
|
||||||
|
Loading…
Reference in New Issue
Block a user