diff options
Diffstat (limited to 'include/llvm')
-rw-r--r-- | include/llvm/CodeGen/LinkAllAsmWriterComponents.h | 2 | ||||
-rw-r--r-- | include/llvm/Config/llvm-platform-config.h | 135 | ||||
-rw-r--r-- | include/llvm/MC/MCAssembler.h | 16 | ||||
-rw-r--r-- | include/llvm/MC/MCSection.h | 3 | ||||
-rw-r--r-- | include/llvm/Object/ELF.h | 2 | ||||
-rw-r--r-- | include/llvm/Support/DataTypes.h | 213 | ||||
-rw-r--r-- | include/llvm/Target/TargetOptions.h | 53 |
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. |