diff options
author | dim <dim@FreeBSD.org> | 2014-11-26 23:57:12 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2014-11-26 23:57:12 +0000 |
commit | 226a2bb6bfbe23e6d7982d86aacac4e7231b17e3 (patch) | |
tree | f33a81d626f8a53491483073c25996af4bd0c57a /contrib/llvm/patches | |
parent | 753d443c1dc50e80af49211cd19d9b4098dca502 (diff) | |
download | FreeBSD-src-226a2bb6bfbe23e6d7982d86aacac4e7231b17e3.zip FreeBSD-src-226a2bb6bfbe23e6d7982d86aacac4e7231b17e3.tar.gz |
Add patch files for r275152, r275153 and r275154.
Diffstat (limited to 'contrib/llvm/patches')
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: |