aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm')
-rw-r--r--include/llvm/CodeGen/LinkAllAsmWriterComponents.h2
-rw-r--r--include/llvm/Config/llvm-platform-config.h135
-rw-r--r--include/llvm/MC/MCAssembler.h16
-rw-r--r--include/llvm/MC/MCSection.h3
-rw-r--r--include/llvm/Object/ELF.h2
-rw-r--r--include/llvm/Support/DataTypes.h213
-rw-r--r--include/llvm/Target/TargetOptions.h53
7 files changed, 420 insertions, 4 deletions
diff --git a/include/llvm/CodeGen/LinkAllAsmWriterComponents.h b/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
index c3046da..722b0de 100644
--- a/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
+++ b/include/llvm/CodeGen/LinkAllAsmWriterComponents.h
@@ -18,6 +18,7 @@
#include "llvm/CodeGen/GCs.h"
#include <cstdlib>
+#ifndef ANDROID_TARGET_BUILD
namespace {
struct ForceAsmWriterLinking {
ForceAsmWriterLinking() {
@@ -34,5 +35,6 @@ namespace {
}
} ForceAsmWriterLinking; // Force link by creating a global definition.
}
+#endif
#endif // LLVM_CODEGEN_LINKALLASMWRITERCOMPONENTS_H
diff --git a/include/llvm/Config/llvm-platform-config.h b/include/llvm/Config/llvm-platform-config.h
new file mode 100644
index 0000000..9d47ffd
--- /dev/null
+++ b/include/llvm/Config/llvm-platform-config.h
@@ -0,0 +1,135 @@
+#ifndef LLVM_NATIVE_CONFIG_H
+
+/*===-- llvm/config/llvm-native-config.h --------------------------*- C -*-===*/
+/* */
+/* The LLVM Compiler Infrastructure */
+/* */
+/* This file is distributed under the University of Illinois Open Source */
+/* License. See LICENSE.TXT for details. */
+/* */
+/*===----------------------------------------------------------------------===*/
+
+#if defined(__i386__) || defined(__x86_64__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH X86
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "i686-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
+
+
+#elif defined(__arm__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH ARM
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "arm-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeARMAsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeARMAsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeARMDisassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeARMTarget
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeARMTargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeARMTargetMC
+
+
+#elif defined(__mips__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH Mips
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "mipsel-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeMipsAsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeMipsAsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeMipsDisassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeMipsTarget
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeMipsTargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeMipsTargetMC
+
+
+#else
+
+#error "Unknown native architecture"
+
+#endif
+
+
+
+#if defined(_WIN32) || defined(_WIN64)
+
+/* Define if this is Unixish platform */
+/* #undef LLVM_ON_UNIX */
+
+/* Define if this is Win32ish platform */
+#define LLVM_ON_WIN32 1
+
+/* Define to 1 if you have the <windows.h> header file. */
+#define HAVE_WINDOWS_H 1
+
+/* Define to 1 if you have the `psapi' library (-lpsapi). */
+#define HAVE_LIBPSAPI 1
+
+/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
+#define HAVE_LIBIMAGEHLP 1
+
+/* Type of 1st arg on ELM Callback */
+#define WIN32_ELMCB_PCSTR PSTR
+
+
+#else /* Linux, Mac OS X, ... Unixish platform */
+
+/* Define if this is Unixish platform */
+#define LLVM_ON_UNIX 1
+
+/* Define if this is Win32ish platform */
+/* #undef LLVM_ON_WIN32 */
+
+/* Type of 1st arg on ELM Callback */
+/* #undef WIN32_ELMCB_PCSTR */
+
+#endif
+
+#endif // LLVM_NATIVE_CONFIG_H
diff --git a/include/llvm/MC/MCAssembler.h b/include/llvm/MC/MCAssembler.h
index 8735a55..0cf2b1d 100644
--- a/include/llvm/MC/MCAssembler.h
+++ b/include/llvm/MC/MCAssembler.h
@@ -22,6 +22,10 @@
#include <algorithm>
#include <vector> // FIXME: Shouldn't be needed.
+namespace mcld {
+class Layout;
+}
+
namespace llvm {
class raw_ostream;
class MCAsmLayout;
@@ -40,6 +44,7 @@ class MCAsmBackend;
class MCFragment : public ilist_node<MCFragment> {
friend class MCAsmLayout;
+ friend class mcld::Layout;
MCFragment(const MCFragment&) LLVM_DELETED_FUNCTION;
void operator=(const MCFragment&) LLVM_DELETED_FUNCTION;
@@ -54,7 +59,10 @@ public:
FT_Org,
FT_Dwarf,
FT_DwarfFrame,
- FT_LEB
+ FT_LEB,
+ FT_Region,
+ FT_Reloc,
+ FT_Target
};
private:
@@ -838,7 +846,7 @@ private:
MCCodeEmitter &Emitter;
- MCObjectWriter &Writer;
+ MCObjectWriter *Writer;
raw_ostream &OS;
@@ -995,7 +1003,9 @@ public:
MCCodeEmitter &getEmitter() const { return Emitter; }
- MCObjectWriter &getWriter() const { return Writer; }
+ MCObjectWriter &getWriter() const { return *Writer; }
+
+ void setWriter(MCObjectWriter &ObjectWriter);
/// Finish - Do final processing and write the object to the output stream.
/// \p Writer is used for custom object writer (as the MCJIT does),
diff --git a/include/llvm/MC/MCSection.h b/include/llvm/MC/MCSection.h
index de2678a..944bfcb 100644
--- a/include/llvm/MC/MCSection.h
+++ b/include/llvm/MC/MCSection.h
@@ -31,7 +31,8 @@ namespace llvm {
enum SectionVariant {
SV_COFF = 0,
SV_ELF,
- SV_MachO
+ SV_MachO,
+ SV_LDContext
};
private:
diff --git a/include/llvm/Object/ELF.h b/include/llvm/Object/ELF.h
index a6774c1..6c000bb 100644
--- a/include/llvm/Object/ELF.h
+++ b/include/llvm/Object/ELF.h
@@ -33,6 +33,8 @@
#include <limits>
#include <utility>
+#include <ctype.h>
+
namespace llvm {
namespace object {
diff --git a/include/llvm/Support/DataTypes.h b/include/llvm/Support/DataTypes.h
new file mode 100644
index 0000000..a4a65b8
--- /dev/null
+++ b/include/llvm/Support/DataTypes.h
@@ -0,0 +1,213 @@
+/* include/llvm/Support/DataTypes.h. Generated from DataTypes.h.in by configure. */
+/*===-- include/Support/DataTypes.h - Define fixed size types -----*- C -*-===*\
+|* *|
+|* The LLVM Compiler Infrastructure *|
+|* *|
+|* This file is distributed under the University of Illinois Open Source *|
+|* License. See LICENSE.TXT for details. *|
+|* *|
+|*===----------------------------------------------------------------------===*|
+|* *|
+|* This file contains definitions to figure out the size of _HOST_ data types.*|
+|* This file is important because different host OS's define different macros,*|
+|* which makes portability tough. This file exports the following *|
+|* definitions: *|
+|* *|
+|* [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
+|* [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values. *|
+|* *|
+|* No library is required when using these functions. *|
+|* *|
+|*===----------------------------------------------------------------------===*/
+
+/* Please leave this file C-compatible. */
+
+/* Please keep this file in sync with DataTypes.h.cmake */
+
+#ifndef SUPPORT_DATATYPES_H
+#define SUPPORT_DATATYPES_H
+
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UINT64_T 1
+/* #undef HAVE_U_INT64_T */
+
+#ifdef __cplusplus
+#include <cmath>
+#else
+#include <math.h>
+#endif
+
+#ifndef _MSC_VER
+
+/* Note that this header's correct operation depends on __STDC_LIMIT_MACROS
+ being defined. We would define it here, but in order to prevent Bad Things
+ happening when system headers or C++ STL headers include stdint.h before we
+ define it here, we define it on the g++ command line (in Makefile.rules). */
+#if !defined(__STDC_LIMIT_MACROS)
+# error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h"
+#endif
+
+#if !defined(__STDC_CONSTANT_MACROS)
+# error "Must #define __STDC_CONSTANT_MACROS before " \
+ "#including Support/DataTypes.h"
+#endif
+
+/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#ifdef _AIX
+#include "llvm/Support/AIXDataTypesFix.h"
+#endif
+
+/* Handle incorrect definition of uint64_t as u_int64_t */
+#ifndef HAVE_UINT64_T
+#ifdef HAVE_U_INT64_T
+typedef u_int64_t uint64_t;
+#else
+# error "Don't have a definition for uint64_t on this platform"
+#endif
+#endif
+
+#ifdef _OpenBSD_
+#define INT8_MAX 127
+#define INT8_MIN -128
+#define UINT8_MAX 255
+#define INT16_MAX 32767
+#define INT16_MIN -32768
+#define UINT16_MAX 65535
+#define INT32_MAX 2147483647
+#define INT32_MIN -2147483648
+#define UINT32_MAX 4294967295U
+#endif
+
+#else /* _MSC_VER */
+/* Visual C++ doesn't provide standard integer headers, but it does provide
+ built-in data types. */
+#include <stdlib.h>
+#include <stddef.h>
+#include <sys/types.h>
+#ifdef __cplusplus
+#include <cmath>
+#else
+#include <math.h>
+#endif
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef short int16_t;
+typedef unsigned short uint16_t;
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed int ssize_t;
+#ifndef INT8_MAX
+# define INT8_MAX 127
+#endif
+#ifndef INT8_MIN
+# define INT8_MIN -128
+#endif
+#ifndef UINT8_MAX
+# define UINT8_MAX 255
+#endif
+#ifndef INT16_MAX
+# define INT16_MAX 32767
+#endif
+#ifndef INT16_MIN
+# define INT16_MIN -32768
+#endif
+#ifndef UINT16_MAX
+# define UINT16_MAX 65535
+#endif
+#ifndef INT32_MAX
+# define INT32_MAX 2147483647
+#endif
+#ifndef INT32_MIN
+/* MSC treats -2147483648 as -(2147483648U). */
+# define INT32_MIN (-INT32_MAX - 1)
+#endif
+#ifndef UINT32_MAX
+# define UINT32_MAX 4294967295U
+#endif
+/* Certain compatibility updates to VC++ introduce the `cstdint'
+ * header, which defines the INT*_C macros. On default installs they
+ * are absent. */
+#ifndef INT8_C
+# define INT8_C(C) C##i8
+#endif
+#ifndef UINT8_C
+# define UINT8_C(C) C##ui8
+#endif
+#ifndef INT16_C
+# define INT16_C(C) C##i16
+#endif
+#ifndef UINT16_C
+# define UINT16_C(C) C##ui16
+#endif
+#ifndef INT32_C
+# define INT32_C(C) C##i32
+#endif
+#ifndef UINT32_C
+# define UINT32_C(C) C##ui32
+#endif
+#ifndef INT64_C
+# define INT64_C(C) C##i64
+#endif
+#ifndef UINT64_C
+# define UINT64_C(C) C##ui64
+#endif
+
+#ifndef PRId64
+# define PRId64 "I64d"
+#endif
+#ifndef PRIi64
+# define PRIi64 "I64i"
+#endif
+#ifndef PRIo64
+# define PRIo64 "I64o"
+#endif
+#ifndef PRIu64
+# define PRIu64 "I64u"
+#endif
+#ifndef PRIx64
+# define PRIx64 "I64x"
+#endif
+#ifndef PRIX64
+# define PRIX64 "I64X"
+#endif
+
+#endif /* _MSC_VER */
+
+/* Set defaults for constants which we cannot find. */
+#if !defined(INT64_MAX)
+# define INT64_MAX 9223372036854775807LL
+#endif
+#if !defined(INT64_MIN)
+# define INT64_MIN ((-INT64_MAX)-1)
+#endif
+#if !defined(UINT64_MAX)
+# define UINT64_MAX 0xffffffffffffffffULL
+#endif
+
+#if __GNUC__ > 3
+#define END_WITH_NULL __attribute__((sentinel))
+#else
+#define END_WITH_NULL
+#endif
+
+#ifndef HUGE_VALF
+#define HUGE_VALF (float)HUGE_VAL
+#endif
+
+#endif /* SUPPORT_DATATYPES_H */
diff --git a/include/llvm/Target/TargetOptions.h b/include/llvm/Target/TargetOptions.h
index d9c8651..e77be0e 100644
--- a/include/llvm/Target/TargetOptions.h
+++ b/include/llvm/Target/TargetOptions.h
@@ -54,6 +54,59 @@ namespace llvm {
FloatABIType(FloatABI::Default), AllowFPOpFusion(FPOpFusion::Standard)
{}
+ TargetOptions(const TargetOptions& rhs)
+ : PrintMachineCode(rhs.PrintMachineCode),
+ NoFramePointerElim(rhs.NoFramePointerElim),
+ LessPreciseFPMADOption(rhs.LessPreciseFPMADOption),
+ UnsafeFPMath(rhs.UnsafeFPMath),
+ NoInfsFPMath(rhs.NoInfsFPMath),
+ NoNaNsFPMath(rhs.NoNaNsFPMath),
+ HonorSignDependentRoundingFPMathOption(rhs.HonorSignDependentRoundingFPMathOption),
+ UseSoftFloat(rhs.UseSoftFloat),
+ NoZerosInBSS(rhs.NoZerosInBSS),
+ JITEmitDebugInfo(rhs.JITEmitDebugInfo),
+ JITEmitDebugInfoToDisk(rhs.JITEmitDebugInfoToDisk),
+ GuaranteedTailCallOpt(rhs.GuaranteedTailCallOpt),
+ DisableTailCalls(rhs.DisableTailCalls),
+ StackAlignmentOverride(rhs.StackAlignmentOverride),
+ EnableFastISel(rhs.EnableFastISel),
+ PositionIndependentExecutable(rhs.PositionIndependentExecutable),
+ EnableSegmentedStacks(rhs.EnableSegmentedStacks),
+ UseInitArray(rhs.UseInitArray),
+ TrapFuncName(rhs.TrapFuncName),
+ FloatABIType(rhs.FloatABIType),
+ AllowFPOpFusion(rhs.AllowFPOpFusion)
+ {}
+
+ TargetOptions& operator =(const TargetOptions& rhs)
+ {
+ if (&rhs == this)
+ return *this;
+
+ PrintMachineCode = rhs.PrintMachineCode;
+ NoFramePointerElim = rhs.NoFramePointerElim;
+ LessPreciseFPMADOption = rhs.LessPreciseFPMADOption;
+ UnsafeFPMath = rhs.UnsafeFPMath;
+ NoInfsFPMath = rhs.NoInfsFPMath;
+ NoNaNsFPMath = rhs.NoNaNsFPMath;
+ HonorSignDependentRoundingFPMathOption = rhs.HonorSignDependentRoundingFPMathOption;
+ UseSoftFloat = rhs.UseSoftFloat;
+ NoZerosInBSS = rhs.NoZerosInBSS;
+ JITEmitDebugInfo = rhs.JITEmitDebugInfo;
+ JITEmitDebugInfoToDisk = rhs.JITEmitDebugInfoToDisk;
+ GuaranteedTailCallOpt = rhs.GuaranteedTailCallOpt;
+ DisableTailCalls = rhs.DisableTailCalls;
+ StackAlignmentOverride = rhs.StackAlignmentOverride;
+ EnableFastISel = rhs.EnableFastISel;
+ PositionIndependentExecutable = rhs.PositionIndependentExecutable;
+ EnableSegmentedStacks = rhs.EnableSegmentedStacks;
+ UseInitArray = rhs.UseInitArray;
+ TrapFuncName = rhs.TrapFuncName;
+ FloatABIType = rhs.FloatABIType;
+ AllowFPOpFusion = rhs.AllowFPOpFusion;
+ return *this;
+ }
+
/// PrintMachineCode - This flag is enabled when the -print-machineinstrs
/// option is specified on the command line, and should enable debugging
/// output from the code generator.