summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/patches
diff options
context:
space:
mode:
authordim <dim@FreeBSD.org>2014-11-26 23:57:12 +0000
committerdim <dim@FreeBSD.org>2014-11-26 23:57:12 +0000
commit226a2bb6bfbe23e6d7982d86aacac4e7231b17e3 (patch)
treef33a81d626f8a53491483073c25996af4bd0c57a /contrib/llvm/patches
parent753d443c1dc50e80af49211cd19d9b4098dca502 (diff)
downloadFreeBSD-src-226a2bb6bfbe23e6d7982d86aacac4e7231b17e3.zip
FreeBSD-src-226a2bb6bfbe23e6d7982d86aacac4e7231b17e3.tar.gz
Add patch files for r275152, r275153 and r275154.
Diffstat (limited to 'contrib/llvm/patches')
-rw-r--r--contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff137
-rw-r--r--contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff32
-rw-r--r--contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff251
3 files changed, 420 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff b/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff
new file mode 100644
index 0000000..c297076
--- /dev/null
+++ b/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff
@@ -0,0 +1,137 @@
+Pull in r215352 from upstream llvm trunk (by Tim Northover):
+
+ AArch64: add support for dynamic-loader relocations
+
+ LLD needs them, and it's good to be able to print them properly when
+ our object dumpers encounter them.
+
+ Patch by Daniel Stewart.
+
+This is needed for supporting the upgrade to a newer LLDB snapshot.
+
+Introduced here: http://svnweb.freebsd.org/changeset/base/275152
+
+Index: test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64
+===================================================================
+Cannot display: file marked as a binary type.
+svn:mime-type = application/x-object
+Index: test/tools/llvm-readobj/Inputs/relocs.py
+===================================================================
+--- test/tools/llvm-readobj/Inputs/relocs.py (revision 14)
++++ test/tools/llvm-readobj/Inputs/relocs.py (revision 15)
+@@ -617,6 +617,8 @@ class Relocs_Elf_AArch64(Enum):
+ R_AARCH64_LDST32_ABS_LO12_NC = 0x11d
+ R_AARCH64_LDST64_ABS_LO12_NC = 0x11e
+ R_AARCH64_LDST128_ABS_LO12_NC = 0x12b
++ R_AARCH64_GOTREL64 = 0x133
++ R_AARCH64_GOTREL32 = 0x134
+ R_AARCH64_ADR_GOT_PAGE = 0x137
+ R_AARCH64_LD64_GOT_LO12_NC = 0x138
+ R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b
+@@ -660,6 +662,15 @@ class Relocs_Elf_AArch64(Enum):
+ R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233
+ R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234
+ R_AARCH64_TLSDESC_CALL = 0x239
++ R_AARCH64_COPY = 0x400
++ R_AARCH64_GLOB_DAT = 0x401
++ R_AARCH64_JUMP_SLOT = 0x402
++ R_AARCH64_RELATIVE = 0x403
++ R_AARCH64_TLS_DTPREL64 = 0x404
++ R_AARCH64_TLS_DTPMOD64 = 0x405
++ R_AARCH64_TLS_TPREL64 = 0x406
++ R_AARCH64_TLSDESC = 0x407
++ R_AARCH64_IRELATIVE = 0x408
+
+ class Relocs_Elf_ARM(Enum):
+ R_ARM_NONE = 0x00
+Index: test/tools/llvm-readobj/reloc-types.test
+===================================================================
+--- test/tools/llvm-readobj/reloc-types.test (revision 14)
++++ test/tools/llvm-readobj/reloc-types.test (revision 15)
+@@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (2
+ ELF-AARCH64: Type: R_AARCH64_LDST32_ABS_LO12_NC (285)
+ ELF-AARCH64: Type: R_AARCH64_LDST64_ABS_LO12_NC (286)
+ ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299)
++ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307)
++ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308)
+ ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311)
+ ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312)
+ ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523)
+@@ -222,6 +224,15 @@ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562
+ ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD64_LO12_NC (563)
+ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD_LO12_NC (564)
+ ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569)
++ELF-AARCH64: Type: R_AARCH64_COPY (1024)
++ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025)
++ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026)
++ELF-AARCH64: Type: R_AARCH64_RELATIVE (1027)
++ELF-AARCH64: Type: R_AARCH64_TLS_DTPREL64 (1028)
++ELF-AARCH64: Type: R_AARCH64_TLS_DTPMOD64 (1029)
++ELF-AARCH64: Type: R_AARCH64_TLS_TPREL64 (1030)
++ELF-AARCH64: Type: R_AARCH64_TLSDESC (1031)
++ELF-AARCH64: Type: R_AARCH64_IRELATIVE (1032)
+
+ ELF-ARM: Type: R_ARM_NONE (0)
+ ELF-ARM: Type: R_ARM_PC24 (1)
+Index: include/llvm/Support/ELF.h
+===================================================================
+--- include/llvm/Support/ELF.h (revision 14)
++++ include/llvm/Support/ELF.h (revision 15)
+@@ -653,6 +653,9 @@ enum {
+
+ R_AARCH64_LDST128_ABS_LO12_NC = 0x12b,
+
++ R_AARCH64_GOTREL64 = 0x133,
++ R_AARCH64_GOTREL32 = 0x134,
++
+ R_AARCH64_ADR_GOT_PAGE = 0x137,
+ R_AARCH64_LD64_GOT_LO12_NC = 0x138,
+
+@@ -700,7 +703,17 @@ enum {
+ R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233,
+ R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234,
+
+- R_AARCH64_TLSDESC_CALL = 0x239
++ R_AARCH64_TLSDESC_CALL = 0x239,
++
++ R_AARCH64_COPY = 0x400,
++ R_AARCH64_GLOB_DAT = 0x401,
++ R_AARCH64_JUMP_SLOT = 0x402,
++ R_AARCH64_RELATIVE = 0x403,
++ R_AARCH64_TLS_DTPREL64 = 0x404,
++ R_AARCH64_TLS_DTPMOD64 = 0x405,
++ R_AARCH64_TLS_TPREL64 = 0x406,
++ R_AARCH64_TLSDESC = 0x407,
++ R_AARCH64_IRELATIVE = 0x408
+ };
+
+ // ARM Specific e_flags
+Index: lib/Object/ELF.cpp
+===================================================================
+--- lib/Object/ELF.cpp (revision 14)
++++ lib/Object/ELF.cpp (revision 15)
+@@ -223,6 +223,8 @@ StringRef getELFRelocationTypeName(uint32_t Machin
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST32_ABS_LO12_NC);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST64_ABS_LO12_NC);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST128_ABS_LO12_NC);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL64);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL32);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_GOT_PAGE);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD64_GOT_LO12_NC);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G2);
+@@ -266,6 +268,15 @@ StringRef getELFRelocationTypeName(uint32_t Machin
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_LD64_LO12_NC);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADD_LO12_NC);
+ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_CALL);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_COPY);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GLOB_DAT);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_JUMP_SLOT);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_RELATIVE);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPREL64);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPMOD64);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_TPREL64);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC);
++ LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_IRELATIVE);
+ default:
+ break;
+ }
diff --git a/contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff b/contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff
new file mode 100644
index 0000000..7b68af4
--- /dev/null
+++ b/contrib/llvm/patches/patch-15-llvm-r216571-dynamiclib-usability.diff
@@ -0,0 +1,32 @@
+Pull in r216571 from upstream llvm trunk (by Zachary Turner):
+
+ Fix some semantic usability issues with DynamicLibrary.
+
+ This patch allows invalid DynamicLibrary instances to be
+ constructed, and fixes the const-correctness of the isValid()
+ method.
+
+ No functional change.
+
+This is needed for supporting the upgrade to a newer LLDB snapshot.
+
+Introduced here: http://svnweb.freebsd.org/changeset/base/275153
+
+Index: include/llvm/Support/DynamicLibrary.h
+===================================================================
+--- include/llvm/Support/DynamicLibrary.h (revision 15)
++++ include/llvm/Support/DynamicLibrary.h (revision 16)
+@@ -43,10 +43,11 @@ namespace sys {
+ // Opaque data used to interface with OS-specific dynamic library handling.
+ void *Data;
+
++ public:
+ explicit DynamicLibrary(void *data = &Invalid) : Data(data) {}
+- public:
++
+ /// Returns true if the object refers to a valid library.
+- bool isValid() { return Data != &Invalid; }
++ bool isValid() const { return Data != &Invalid; }
+
+ /// Searches through the library for the symbol \p symbolName. If it is
+ /// found, the address of that symbol is returned. If not, NULL is returned.
diff --git a/contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff b/contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff
new file mode 100644
index 0000000..dfb53ce
--- /dev/null
+++ b/contrib/llvm/patches/patch-16-clang-r221900-freebsd-aarch64.diff
@@ -0,0 +1,251 @@
+Pull in r221900 from upstream clang trunk (by Ed Maste):
+
+ Hook up FreeBSD AArch64 support
+
+ Patch from Andrew Turner.
+
+Introduced here: http://svnweb.freebsd.org/changeset/base/275154
+
+Index: tools/clang/test/Driver/freebsd.c
+===================================================================
+--- tools/clang/test/Driver/freebsd.c (revision 16)
++++ tools/clang/test/Driver/freebsd.c (revision 17)
+@@ -1,4 +1,12 @@
+ // RUN: %clang -no-canonical-prefixes \
++// RUN: -target aarch64-pc-freebsd11 %s \
++// RUN: --sysroot=%S/Inputs/basic_freebsd64_tree -### 2>&1 \
++// RUN: | FileCheck --check-prefix=CHECK-ARM64 %s
++// CHECK-ARM64: "-cc1" "-triple" "aarch64-pc-freebsd11"
++// CHECK-ARM64: ld{{.*}}" "--sysroot=[[SYSROOT:[^"]+]]"
++// CHECK-ARM64: "--eh-frame-hdr" "-dynamic-linker" "{{.*}}ld-elf{{.*}}" "-o" "a.out" "{{.*}}crt1.o" "{{.*}}crti.o" "{{.*}}crtbegin.o" "-L[[SYSROOT]]/usr/lib" "{{.*}}.o" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "-lc" "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed" "{{.*}}crtend.o" "{{.*}}crtn.o"
++//
++// RUN: %clang -no-canonical-prefixes \
+ // RUN: -target powerpc-pc-freebsd8 %s \
+ // RUN: --sysroot=%S/Inputs/basic_freebsd_tree -### 2>&1 \
+ // RUN: | FileCheck --check-prefix=CHECK-PPC %s
+Index: tools/clang/test/Preprocessor/init.c
+===================================================================
+--- tools/clang/test/Preprocessor/init.c (revision 16)
++++ tools/clang/test/Preprocessor/init.c (revision 17)
+@@ -802,6 +802,199 @@
+ // AARCH64-NETBSD:#define __WINT_TYPE__ int
+ // AARCH64-NETBSD:#define __WINT_WIDTH__ 32
+ // AARCH64-NETBSD:#define __aarch64__ 1
++//
++// RUN: %clang_cc1 -E -dM -ffreestanding -triple=aarch64-freebsd11 < /dev/null | FileCheck -check-prefix AARCH64-FREEBSD %s
++//
++// AARCH64-FREEBSD:#define _LP64 1
++// AARCH64-FREEBSD-NOT:#define __AARCH64EB__ 1
++// AARCH64-FREEBSD:#define __AARCH64EL__ 1
++// AARCH64-FREEBSD-NOT:#define __AARCH_BIG_ENDIAN 1
++// AARCH64-FREEBSD:#define __ARM_64BIT_STATE 1
++// AARCH64-FREEBSD:#define __ARM_ARCH 8
++// AARCH64-FREEBSD:#define __ARM_ARCH_ISA_A64 1
++// AARCH64-FREEBSD-NOT:#define __ARM_BIG_ENDIAN 1
++// AARCH64-FREEBSD:#define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__
++// AARCH64-FREEBSD:#define __CHAR16_TYPE__ unsigned short
++// AARCH64-FREEBSD:#define __CHAR32_TYPE__ unsigned int
++// AARCH64-FREEBSD:#define __CHAR_BIT__ 8
++// AARCH64-FREEBSD:#define __DBL_DENORM_MIN__ 4.9406564584124654e-324
++// AARCH64-FREEBSD:#define __DBL_DIG__ 15
++// AARCH64-FREEBSD:#define __DBL_EPSILON__ 2.2204460492503131e-16
++// AARCH64-FREEBSD:#define __DBL_HAS_DENORM__ 1
++// AARCH64-FREEBSD:#define __DBL_HAS_INFINITY__ 1
++// AARCH64-FREEBSD:#define __DBL_HAS_QUIET_NAN__ 1
++// AARCH64-FREEBSD:#define __DBL_MANT_DIG__ 53
++// AARCH64-FREEBSD:#define __DBL_MAX_10_EXP__ 308
++// AARCH64-FREEBSD:#define __DBL_MAX_EXP__ 1024
++// AARCH64-FREEBSD:#define __DBL_MAX__ 1.7976931348623157e+308
++// AARCH64-FREEBSD:#define __DBL_MIN_10_EXP__ (-307)
++// AARCH64-FREEBSD:#define __DBL_MIN_EXP__ (-1021)
++// AARCH64-FREEBSD:#define __DBL_MIN__ 2.2250738585072014e-308
++// AARCH64-FREEBSD:#define __DECIMAL_DIG__ 36
++// AARCH64-FREEBSD:#define __ELF__ 1
++// AARCH64-FREEBSD:#define __FLT_DENORM_MIN__ 1.40129846e-45F
++// AARCH64-FREEBSD:#define __FLT_DIG__ 6
++// AARCH64-FREEBSD:#define __FLT_EPSILON__ 1.19209290e-7F
++// AARCH64-FREEBSD:#define __FLT_EVAL_METHOD__ 0
++// AARCH64-FREEBSD:#define __FLT_HAS_DENORM__ 1
++// AARCH64-FREEBSD:#define __FLT_HAS_INFINITY__ 1
++// AARCH64-FREEBSD:#define __FLT_HAS_QUIET_NAN__ 1
++// AARCH64-FREEBSD:#define __FLT_MANT_DIG__ 24
++// AARCH64-FREEBSD:#define __FLT_MAX_10_EXP__ 38
++// AARCH64-FREEBSD:#define __FLT_MAX_EXP__ 128
++// AARCH64-FREEBSD:#define __FLT_MAX__ 3.40282347e+38F
++// AARCH64-FREEBSD:#define __FLT_MIN_10_EXP__ (-37)
++// AARCH64-FREEBSD:#define __FLT_MIN_EXP__ (-125)
++// AARCH64-FREEBSD:#define __FLT_MIN__ 1.17549435e-38F
++// AARCH64-FREEBSD:#define __FLT_RADIX__ 2
++// AARCH64-FREEBSD:#define __FreeBSD__ 11
++// AARCH64-FREEBSD:#define __INT16_C_SUFFIX__ {{$}}
++// AARCH64-FREEBSD:#define __INT16_FMTd__ "hd"
++// AARCH64-FREEBSD:#define __INT16_FMTi__ "hi"
++// AARCH64-FREEBSD:#define __INT16_MAX__ 32767
++// AARCH64-FREEBSD:#define __INT16_TYPE__ short
++// AARCH64-FREEBSD:#define __INT32_C_SUFFIX__ {{$}}
++// AARCH64-FREEBSD:#define __INT32_FMTd__ "d"
++// AARCH64-FREEBSD:#define __INT32_FMTi__ "i"
++// AARCH64-FREEBSD:#define __INT32_MAX__ 2147483647
++// AARCH64-FREEBSD:#define __INT32_TYPE__ int
++// AARCH64-FREEBSD:#define __INT64_C_SUFFIX__ L
++// AARCH64-FREEBSD:#define __INT64_FMTd__ "ld"
++// AARCH64-FREEBSD:#define __INT64_FMTi__ "li"
++// AARCH64-FREEBSD:#define __INT64_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __INT64_TYPE__ long int
++// AARCH64-FREEBSD:#define __INT8_C_SUFFIX__ {{$}}
++// AARCH64-FREEBSD:#define __INT8_FMTd__ "hhd"
++// AARCH64-FREEBSD:#define __INT8_FMTi__ "hhi"
++// AARCH64-FREEBSD:#define __INT8_MAX__ 127
++// AARCH64-FREEBSD:#define __INT8_TYPE__ signed char
++// AARCH64-FREEBSD:#define __INTMAX_C_SUFFIX__ L
++// AARCH64-FREEBSD:#define __INTMAX_FMTd__ "ld"
++// AARCH64-FREEBSD:#define __INTMAX_FMTi__ "li"
++// AARCH64-FREEBSD:#define __INTMAX_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __INTMAX_TYPE__ long int
++// AARCH64-FREEBSD:#define __INTMAX_WIDTH__ 64
++// AARCH64-FREEBSD:#define __INTPTR_FMTd__ "ld"
++// AARCH64-FREEBSD:#define __INTPTR_FMTi__ "li"
++// AARCH64-FREEBSD:#define __INTPTR_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __INTPTR_TYPE__ long int
++// AARCH64-FREEBSD:#define __INTPTR_WIDTH__ 64
++// AARCH64-FREEBSD:#define __INT_FAST16_FMTd__ "hd"
++// AARCH64-FREEBSD:#define __INT_FAST16_FMTi__ "hi"
++// AARCH64-FREEBSD:#define __INT_FAST16_MAX__ 32767
++// AARCH64-FREEBSD:#define __INT_FAST16_TYPE__ short
++// AARCH64-FREEBSD:#define __INT_FAST32_FMTd__ "d"
++// AARCH64-FREEBSD:#define __INT_FAST32_FMTi__ "i"
++// AARCH64-FREEBSD:#define __INT_FAST32_MAX__ 2147483647
++// AARCH64-FREEBSD:#define __INT_FAST32_TYPE__ int
++// AARCH64-FREEBSD:#define __INT_FAST64_FMTd__ "ld"
++// AARCH64-FREEBSD:#define __INT_FAST64_FMTi__ "li"
++// AARCH64-FREEBSD:#define __INT_FAST64_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __INT_FAST64_TYPE__ long int
++// AARCH64-FREEBSD:#define __INT_FAST8_FMTd__ "hhd"
++// AARCH64-FREEBSD:#define __INT_FAST8_FMTi__ "hhi"
++// AARCH64-FREEBSD:#define __INT_FAST8_MAX__ 127
++// AARCH64-FREEBSD:#define __INT_FAST8_TYPE__ signed char
++// AARCH64-FREEBSD:#define __INT_LEAST16_FMTd__ "hd"
++// AARCH64-FREEBSD:#define __INT_LEAST16_FMTi__ "hi"
++// AARCH64-FREEBSD:#define __INT_LEAST16_MAX__ 32767
++// AARCH64-FREEBSD:#define __INT_LEAST16_TYPE__ short
++// AARCH64-FREEBSD:#define __INT_LEAST32_FMTd__ "d"
++// AARCH64-FREEBSD:#define __INT_LEAST32_FMTi__ "i"
++// AARCH64-FREEBSD:#define __INT_LEAST32_MAX__ 2147483647
++// AARCH64-FREEBSD:#define __INT_LEAST32_TYPE__ int
++// AARCH64-FREEBSD:#define __INT_LEAST64_FMTd__ "ld"
++// AARCH64-FREEBSD:#define __INT_LEAST64_FMTi__ "li"
++// AARCH64-FREEBSD:#define __INT_LEAST64_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __INT_LEAST64_TYPE__ long int
++// AARCH64-FREEBSD:#define __INT_LEAST8_FMTd__ "hhd"
++// AARCH64-FREEBSD:#define __INT_LEAST8_FMTi__ "hhi"
++// AARCH64-FREEBSD:#define __INT_LEAST8_MAX__ 127
++// AARCH64-FREEBSD:#define __INT_LEAST8_TYPE__ signed char
++// AARCH64-FREEBSD:#define __INT_MAX__ 2147483647
++// AARCH64-FREEBSD:#define __LDBL_DENORM_MIN__ 6.47517511943802511092443895822764655e-4966L
++// AARCH64-FREEBSD:#define __LDBL_DIG__ 33
++// AARCH64-FREEBSD:#define __LDBL_EPSILON__ 1.92592994438723585305597794258492732e-34L
++// AARCH64-FREEBSD:#define __LDBL_HAS_DENORM__ 1
++// AARCH64-FREEBSD:#define __LDBL_HAS_INFINITY__ 1
++// AARCH64-FREEBSD:#define __LDBL_HAS_QUIET_NAN__ 1
++// AARCH64-FREEBSD:#define __LDBL_MANT_DIG__ 113
++// AARCH64-FREEBSD:#define __LDBL_MAX_10_EXP__ 4932
++// AARCH64-FREEBSD:#define __LDBL_MAX_EXP__ 16384
++// AARCH64-FREEBSD:#define __LDBL_MAX__ 1.18973149535723176508575932662800702e+4932L
++// AARCH64-FREEBSD:#define __LDBL_MIN_10_EXP__ (-4931)
++// AARCH64-FREEBSD:#define __LDBL_MIN_EXP__ (-16381)
++// AARCH64-FREEBSD:#define __LDBL_MIN__ 3.36210314311209350626267781732175260e-4932L
++// AARCH64-FREEBSD:#define __LITTLE_ENDIAN__ 1
++// AARCH64-FREEBSD:#define __LONG_LONG_MAX__ 9223372036854775807LL
++// AARCH64-FREEBSD:#define __LONG_MAX__ 9223372036854775807L
++// AARCH64-FREEBSD:#define __LP64__ 1
++// AARCH64-FREEBSD:#define __POINTER_WIDTH__ 64
++// AARCH64-FREEBSD:#define __PTRDIFF_TYPE__ long int
++// AARCH64-FREEBSD:#define __PTRDIFF_WIDTH__ 64
++// AARCH64-FREEBSD:#define __SCHAR_MAX__ 127
++// AARCH64-FREEBSD:#define __SHRT_MAX__ 32767
++// AARCH64-FREEBSD:#define __SIG_ATOMIC_MAX__ 2147483647
++// AARCH64-FREEBSD:#define __SIG_ATOMIC_WIDTH__ 32
++// AARCH64-FREEBSD:#define __SIZEOF_DOUBLE__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_FLOAT__ 4
++// AARCH64-FREEBSD:#define __SIZEOF_INT128__ 16
++// AARCH64-FREEBSD:#define __SIZEOF_INT__ 4
++// AARCH64-FREEBSD:#define __SIZEOF_LONG_DOUBLE__ 16
++// AARCH64-FREEBSD:#define __SIZEOF_LONG_LONG__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_LONG__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_POINTER__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_PTRDIFF_T__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_SHORT__ 2
++// AARCH64-FREEBSD:#define __SIZEOF_SIZE_T__ 8
++// AARCH64-FREEBSD:#define __SIZEOF_WCHAR_T__ 4
++// AARCH64-FREEBSD:#define __SIZEOF_WINT_T__ 4
++// AARCH64-FREEBSD:#define __SIZE_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __SIZE_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __SIZE_WIDTH__ 64
++// AARCH64-FREEBSD:#define __UINT16_C_SUFFIX__ {{$}}
++// AARCH64-FREEBSD:#define __UINT16_MAX__ 65535
++// AARCH64-FREEBSD:#define __UINT16_TYPE__ unsigned short
++// AARCH64-FREEBSD:#define __UINT32_C_SUFFIX__ U
++// AARCH64-FREEBSD:#define __UINT32_MAX__ 4294967295U
++// AARCH64-FREEBSD:#define __UINT32_TYPE__ unsigned int
++// AARCH64-FREEBSD:#define __UINT64_C_SUFFIX__ UL
++// AARCH64-FREEBSD:#define __UINT64_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __UINT64_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __UINT8_C_SUFFIX__ {{$}}
++// AARCH64-FREEBSD:#define __UINT8_MAX__ 255
++// AARCH64-FREEBSD:#define __UINT8_TYPE__ unsigned char
++// AARCH64-FREEBSD:#define __UINTMAX_C_SUFFIX__ UL
++// AARCH64-FREEBSD:#define __UINTMAX_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __UINTMAX_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __UINTMAX_WIDTH__ 64
++// AARCH64-FREEBSD:#define __UINTPTR_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __UINTPTR_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __UINTPTR_WIDTH__ 64
++// AARCH64-FREEBSD:#define __UINT_FAST16_MAX__ 65535
++// AARCH64-FREEBSD:#define __UINT_FAST16_TYPE__ unsigned short
++// AARCH64-FREEBSD:#define __UINT_FAST32_MAX__ 4294967295U
++// AARCH64-FREEBSD:#define __UINT_FAST32_TYPE__ unsigned int
++// AARCH64-FREEBSD:#define __UINT_FAST64_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __UINT_FAST64_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __UINT_FAST8_MAX__ 255
++// AARCH64-FREEBSD:#define __UINT_FAST8_TYPE__ unsigned char
++// AARCH64-FREEBSD:#define __UINT_LEAST16_MAX__ 65535
++// AARCH64-FREEBSD:#define __UINT_LEAST16_TYPE__ unsigned short
++// AARCH64-FREEBSD:#define __UINT_LEAST32_MAX__ 4294967295U
++// AARCH64-FREEBSD:#define __UINT_LEAST32_TYPE__ unsigned int
++// AARCH64-FREEBSD:#define __UINT_LEAST64_MAX__ 18446744073709551615UL
++// AARCH64-FREEBSD:#define __UINT_LEAST64_TYPE__ long unsigned int
++// AARCH64-FREEBSD:#define __UINT_LEAST8_MAX__ 255
++// AARCH64-FREEBSD:#define __UINT_LEAST8_TYPE__ unsigned char
++// AARCH64-FREEBSD:#define __USER_LABEL_PREFIX__
++// AARCH64-FREEBSD:#define __WCHAR_MAX__ 4294967295U
++// AARCH64-FREEBSD:#define __WCHAR_TYPE__ unsigned int
++// AARCH64-FREEBSD:#define __WCHAR_UNSIGNED__ 1
++// AARCH64-FREEBSD:#define __WCHAR_WIDTH__ 32
++// AARCH64-FREEBSD:#define __WINT_TYPE__ int
++// AARCH64-FREEBSD:#define __WINT_WIDTH__ 32
++// AARCH64-FREEBSD:#define __aarch64__ 1
+
+ // RUN: %clang_cc1 -E -dM -ffreestanding -triple=arm-none-none < /dev/null | FileCheck -check-prefix ARM %s
+ //
+Index: tools/clang/lib/Basic/Targets.cpp
+===================================================================
+--- tools/clang/lib/Basic/Targets.cpp (revision 16)
++++ tools/clang/lib/Basic/Targets.cpp (revision 17)
+@@ -6036,6 +6036,8 @@ static TargetInfo *AllocateTarget(const llvm::Trip
+ return new DarwinAArch64TargetInfo(Triple);
+
+ switch (os) {
++ case llvm::Triple::FreeBSD:
++ return new FreeBSDTargetInfo<AArch64leTargetInfo>(Triple);
+ case llvm::Triple::Linux:
+ return new LinuxTargetInfo<AArch64leTargetInfo>(Triple);
+ case llvm::Triple::NetBSD:
+@@ -6047,6 +6049,8 @@ static TargetInfo *AllocateTarget(const llvm::Trip
+ case llvm::Triple::aarch64_be:
+ case llvm::Triple::arm64_be:
+ switch (os) {
++ case llvm::Triple::FreeBSD:
++ return new FreeBSDTargetInfo<AArch64beTargetInfo>(Triple);
+ case llvm::Triple::Linux:
+ return new LinuxTargetInfo<AArch64beTargetInfo>(Triple);
+ case llvm::Triple::NetBSD:
OpenPOWER on IntegriCloud