Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 16 May 2017 19:47:19 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r318372 - in vendor/compiler-rt/dist: . cmake include/xray lib/asan lib/asan/tests lib/builtins lib/builtins/arm lib/esan lib/lsan lib/msan lib/msan/tests lib/sanitizer_common lib/sanit...
Message-ID:  <201705161947.v4GJlJaB097039@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Tue May 16 19:47:19 2017
New Revision: 318372
URL: https://svnweb.freebsd.org/changeset/base/318372

Log:
  Vendor import of compiler-rt trunk r303197:
  https://llvm.org/svn/llvm-project/compiler-rt/trunk@303197

Added:
  vendor/compiler-rt/dist/lib/scudo/scudo_allocator_combined.h   (contents, props changed)
  vendor/compiler-rt/dist/lib/scudo/scudo_crc32.h   (contents, props changed)
  vendor/compiler-rt/dist/test/asan/TestCases/Linux/sanbox_read_proc_self_maps_test.cc   (contents, props changed)
  vendor/compiler-rt/dist/test/asan/TestCases/Posix/strndup_oob_test.cc   (contents, props changed)
  vendor/compiler-rt/dist/test/msan/pr32842.c   (contents, props changed)
  vendor/compiler-rt/dist/test/msan/strndup.cc   (contents, props changed)
  vendor/compiler-rt/dist/test/xray/TestCases/Linux/custom-event-logging.cc   (contents, props changed)
Modified:
  vendor/compiler-rt/dist/CMakeLists.txt
  vendor/compiler-rt/dist/cmake/config-ix.cmake
  vendor/compiler-rt/dist/include/xray/xray_interface.h
  vendor/compiler-rt/dist/lib/asan/asan_allocator.h
  vendor/compiler-rt/dist/lib/asan/asan_flags.cc
  vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc
  vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt
  vendor/compiler-rt/dist/lib/builtins/adddf3.c
  vendor/compiler-rt/dist/lib/builtins/addsf3.c
  vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
  vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
  vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c
  vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c
  vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c
  vendor/compiler-rt/dist/lib/builtins/ashldi3.c
  vendor/compiler-rt/dist/lib/builtins/ashrdi3.c
  vendor/compiler-rt/dist/lib/builtins/assembly.h
  vendor/compiler-rt/dist/lib/builtins/comparedf2.c
  vendor/compiler-rt/dist/lib/builtins/comparesf2.c
  vendor/compiler-rt/dist/lib/builtins/divdf3.c
  vendor/compiler-rt/dist/lib/builtins/divsf3.c
  vendor/compiler-rt/dist/lib/builtins/divsi3.c
  vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c
  vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c
  vendor/compiler-rt/dist/lib/builtins/fixdfdi.c
  vendor/compiler-rt/dist/lib/builtins/fixdfsi.c
  vendor/compiler-rt/dist/lib/builtins/fixsfdi.c
  vendor/compiler-rt/dist/lib/builtins/fixsfsi.c
  vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c
  vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c
  vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c
  vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c
  vendor/compiler-rt/dist/lib/builtins/floatdidf.c
  vendor/compiler-rt/dist/lib/builtins/floatdisf.c
  vendor/compiler-rt/dist/lib/builtins/floatsidf.c
  vendor/compiler-rt/dist/lib/builtins/floatsisf.c
  vendor/compiler-rt/dist/lib/builtins/floatundidf.c
  vendor/compiler-rt/dist/lib/builtins/floatundisf.c
  vendor/compiler-rt/dist/lib/builtins/floatunsidf.c
  vendor/compiler-rt/dist/lib/builtins/floatunsisf.c
  vendor/compiler-rt/dist/lib/builtins/int_lib.h
  vendor/compiler-rt/dist/lib/builtins/lshrdi3.c
  vendor/compiler-rt/dist/lib/builtins/muldf3.c
  vendor/compiler-rt/dist/lib/builtins/muldi3.c
  vendor/compiler-rt/dist/lib/builtins/mulsf3.c
  vendor/compiler-rt/dist/lib/builtins/negdf2.c
  vendor/compiler-rt/dist/lib/builtins/negsf2.c
  vendor/compiler-rt/dist/lib/builtins/subdf3.c
  vendor/compiler-rt/dist/lib/builtins/subsf3.c
  vendor/compiler-rt/dist/lib/builtins/truncdfhf2.c
  vendor/compiler-rt/dist/lib/builtins/truncdfsf2.c
  vendor/compiler-rt/dist/lib/builtins/truncsfhf2.c
  vendor/compiler-rt/dist/lib/builtins/udivsi3.c
  vendor/compiler-rt/dist/lib/esan/esan_interceptors.cpp
  vendor/compiler-rt/dist/lib/lsan/lsan_allocator.h
  vendor/compiler-rt/dist/lib/lsan/lsan_common_linux.cc
  vendor/compiler-rt/dist/lib/lsan/lsan_common_mac.cc
  vendor/compiler-rt/dist/lib/msan/msan_allocator.cc
  vendor/compiler-rt/dist/lib/msan/msan_interceptors.cc
  vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_internal.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_allocator_primary32.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common_interceptors.inc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_flags.inc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_interceptors.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_linux.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_procmaps_mac.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_stoptheworld_mac.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_allocator_test.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/sanitizer_test_utils.h
  vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp
  vendor/compiler-rt/dist/lib/scudo/scudo_allocator.h
  vendor/compiler-rt/dist/lib/scudo/scudo_allocator_secondary.h
  vendor/compiler-rt/dist/lib/scudo/scudo_crc32.cpp
  vendor/compiler-rt/dist/lib/scudo/scudo_utils.h
  vendor/compiler-rt/dist/lib/tsan/check_analyze.sh
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_rtl.h
  vendor/compiler-rt/dist/lib/xray/xray_AArch64.cc
  vendor/compiler-rt/dist/lib/xray/xray_arm.cc
  vendor/compiler-rt/dist/lib/xray/xray_fdr_log_records.h
  vendor/compiler-rt/dist/lib/xray/xray_fdr_logging.cc
  vendor/compiler-rt/dist/lib/xray/xray_fdr_logging_impl.h
  vendor/compiler-rt/dist/lib/xray/xray_interface.cc
  vendor/compiler-rt/dist/lib/xray/xray_interface_internal.h
  vendor/compiler-rt/dist/lib/xray/xray_mips.cc
  vendor/compiler-rt/dist/lib/xray/xray_mips64.cc
  vendor/compiler-rt/dist/lib/xray/xray_powerpc64.cc
  vendor/compiler-rt/dist/lib/xray/xray_trampoline_powerpc64_asm.S
  vendor/compiler-rt/dist/lib/xray/xray_trampoline_x86_64.S
  vendor/compiler-rt/dist/lib/xray/xray_x86_64.cc
  vendor/compiler-rt/dist/test/asan/CMakeLists.txt
  vendor/compiler-rt/dist/test/asan/lit.cfg
  vendor/compiler-rt/dist/test/dfsan/custom.cc
  vendor/compiler-rt/dist/test/lsan/TestCases/link_turned_off.cc
  vendor/compiler-rt/dist/test/lsan/TestCases/recoverable_leak_check.cc
  vendor/compiler-rt/dist/test/lsan/lit.common.cfg
  vendor/compiler-rt/dist/test/msan/chained_origin_memcpy.cc
  vendor/compiler-rt/dist/test/msan/wcsncpy.cc
  vendor/compiler-rt/dist/test/safestack/canary.c
  vendor/compiler-rt/dist/test/sanitizer_common/TestCases/Linux/getpwnam_r_invalid_user.cc
  vendor/compiler-rt/dist/test/sanitizer_common/TestCases/sanitizer_coverage_no_prune.cc
  vendor/compiler-rt/dist/test/ubsan/TestCases/Misc/missing_return.cpp
  vendor/compiler-rt/dist/test/ubsan/TestCases/TypeCheck/misaligned.cpp
  vendor/compiler-rt/dist/test/ubsan/lit.common.cfg
  vendor/compiler-rt/dist/test/xray/TestCases/Linux/coverage-sample.cc
  vendor/compiler-rt/dist/test/xray/TestCases/Linux/func-id-utils.cc

Modified: vendor/compiler-rt/dist/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/CMakeLists.txt	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/CMakeLists.txt	Tue May 16 19:47:19 2017	(r318372)
@@ -31,6 +31,9 @@ mark_as_advanced(COMPILER_RT_BUILD_SANIT
 option(COMPILER_RT_BUILD_XRAY "Build xray" ON)
 mark_as_advanced(COMPILER_RT_BUILD_XRAY)
 
+set(COMPILER_RT_BAREMETAL_BUILD OFF CACHE BOOLEAN
+  "Build for a bare-metal target.")
+
 if (COMPILER_RT_STANDALONE_BUILD)
   load_llvm_config()
 
@@ -239,14 +242,24 @@ set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_
 if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
   set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
 else()
-  set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
+  set(COMPILER_RT_LIBCXX_PATH ${LLVM_MAIN_SRC_DIR}/../libcxx)
+  if(EXISTS ${COMPILER_RT_LIBCXX_PATH}/)
+    set(COMPILER_RT_HAS_LIBCXX_SOURCES TRUE)
+  else()
+    set(COMPILER_RT_HAS_LIBCXX_SOURCES FALSE)
+  endif()
 endif()
 
 set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/tools/lld)
 if(EXISTS ${COMPILER_RT_LLD_PATH}/ AND LLVM_TOOL_LLD_BUILD)
   set(COMPILER_RT_HAS_LLD TRUE)
 else()
-  set(COMPILER_RT_HAS_LLD FALSE)
+  set(COMPILER_RT_LLD_PATH ${LLVM_MAIN_SRC_DIR}/../lld)
+  if(EXISTS ${COMPILER_RT_LLD_PATH}/)
+    set(COMPILER_RT_HAS_LLD TRUE)
+  else()
+    set(COMPILER_RT_HAS_LLD FALSE)
+  endif()
 endif()
 pythonize_bool(COMPILER_RT_HAS_LLD)
 

Modified: vendor/compiler-rt/dist/cmake/config-ix.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/config-ix.cmake	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/cmake/config-ix.cmake	Tue May 16 19:47:19 2017	(r318372)
@@ -476,7 +476,7 @@ else()
 endif()
 
 if (COMPILER_RT_HAS_SANITIZER_COMMON AND LSAN_SUPPORTED_ARCH AND
-    OS_NAME MATCHES "Linux|FreeBSD")
+    OS_NAME MATCHES "Darwin|Linux|FreeBSD")
   set(COMPILER_RT_HAS_LSAN TRUE)
 else()
   set(COMPILER_RT_HAS_LSAN FALSE)

Modified: vendor/compiler-rt/dist/include/xray/xray_interface.h
==============================================================================
--- vendor/compiler-rt/dist/include/xray/xray_interface.h	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/include/xray/xray_interface.h	Tue May 16 19:47:19 2017	(r318372)
@@ -1,4 +1,4 @@
-//===-- xray_interface.h ----------------------------------------*- C++ -*-===//
+//===- xray_interface.h -----------------------------------------*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -11,11 +11,12 @@
 //
 // APIs for controlling XRay functionality explicitly.
 //===----------------------------------------------------------------------===//
+
 #ifndef XRAY_XRAY_INTERFACE_H
 #define XRAY_XRAY_INTERFACE_H
 
+#include <cstddef>
 #include <cstdint>
-#include <stddef.h>
 
 extern "C" {
 
@@ -25,6 +26,7 @@ enum XRayEntryType {
   EXIT = 1,
   TAIL = 2,
   LOG_ARGS_ENTRY = 3,
+  CUSTOM_EVENT = 4,
 };
 
 /// Provide a function to invoke for when instrumentation points are hit. This
@@ -64,6 +66,9 @@ extern int __xray_set_handler_arg1(void 
 /// Returns 1 on success, 0 on error.
 extern int __xray_remove_handler_arg1();
 
+/// Provide a function to invoke when XRay encounters a custom event.
+extern int __xray_set_customevent_handler(void (*entry)(void*, std::size_t));
+
 enum XRayPatchingStatus {
   NOT_INITIALIZED = 0,
   SUCCESS = 1,
@@ -96,6 +101,6 @@ extern uintptr_t __xray_function_address
 /// encounter errors (when there are no instrumented functions, etc.).
 extern size_t __xray_max_function_id();
 
-}
+} // end extern "C"
 
-#endif
+#endif // XRAY_XRAY_INTERFACE_H

Modified: vendor/compiler-rt/dist/lib/asan/asan_allocator.h
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_allocator.h	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/asan/asan_allocator.h	Tue May 16 19:47:19 2017	(r318372)
@@ -161,10 +161,17 @@ typedef FlatByteMap<kNumRegions> ByteMap
 typedef TwoLevelByteMap<(kNumRegions >> 12), 1 << 12> ByteMap;
 # endif
 typedef CompactSizeClassMap SizeClassMap;
-typedef SizeClassAllocator32<0, SANITIZER_MMAP_RANGE_SIZE, 16,
-  SizeClassMap, kRegionSizeLog,
-  ByteMap,
-  AsanMapUnmapCallback> PrimaryAllocator;
+struct AP32 {
+  static const uptr kSpaceBeg = 0;
+  static const u64 kSpaceSize = SANITIZER_MMAP_RANGE_SIZE;
+  static const uptr kMetadataSize = 16;
+  typedef __asan::SizeClassMap SizeClassMap;
+  static const uptr kRegionSizeLog = __asan::kRegionSizeLog;
+  typedef __asan::ByteMap ByteMap;
+  typedef AsanMapUnmapCallback MapUnmapCallback;
+  static const uptr kFlags = 0;
+};
+typedef SizeClassAllocator32<AP32> PrimaryAllocator;
 #endif  // SANITIZER_CAN_USE_ALLOCATOR64
 
 static const uptr kNumberOfSizeClasses = SizeClassMap::kNumClasses;

Modified: vendor/compiler-rt/dist/lib/asan/asan_flags.cc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Tue May 16 19:47:19 2017	(r318372)
@@ -194,6 +194,10 @@ void InitializeFlags() {
     Report("WARNING: strchr* interceptors are enabled even though "
            "replace_str=0. Use intercept_strchr=0 to disable them.");
   }
+  if (!f->replace_str && common_flags()->intercept_strndup) {
+    Report("WARNING: strndup* interceptors are enabled even though "
+           "replace_str=0. Use intercept_strndup=0 to disable them.");
+  }
 }
 
 }  // namespace __asan

Modified: vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/asan/tests/asan_str_test.cc	Tue May 16 19:47:19 2017	(r318372)
@@ -154,6 +154,27 @@ TEST(AddressSanitizer, MAYBE_StrDupOOBTe
   free(str);
 }
 
+#if SANITIZER_TEST_HAS_STRNDUP
+TEST(AddressSanitizer, MAYBE_StrNDupOOBTest) {
+  size_t size = Ident(42);
+  char *str = MallocAndMemsetString(size);
+  char *new_str;
+  // Normal strndup calls.
+  str[size - 1] = '\0';
+  new_str = strndup(str, size - 13);
+  free(new_str);
+  new_str = strndup(str + size - 1, 13);
+  free(new_str);
+  // Argument points to not allocated memory.
+  EXPECT_DEATH(Ident(strndup(str - 1, 13)), LeftOOBReadMessage(1));
+  EXPECT_DEATH(Ident(strndup(str + size, 13)), RightOOBReadMessage(0));
+  // Overwrite the terminating '\0' and hit unallocated memory.
+  str[size - 1] = 'z';
+  EXPECT_DEATH(Ident(strndup(str, size + 13)), RightOOBReadMessage(0));
+  free(str);
+}
+#endif // SANITIZER_TEST_HAS_STRNDUP
+
 TEST(AddressSanitizer, StrCpyOOBTest) {
   size_t to_size = Ident(30);
   size_t from_size = Ident(6);  // less than to_size

Modified: vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/CMakeLists.txt	Tue May 16 19:47:19 2017	(r318372)
@@ -66,7 +66,6 @@ set(GENERIC_SOURCES
   divti3.c
   divtf3.c
   divxc3.c
-  enable_execute_stack.c
   eprintf.c
   extendsfdf2.c
   extendhfsf2.c
@@ -191,6 +190,12 @@ option(COMPILER_RT_EXCLUDE_ATOMIC_BUILTI
   "Skip the atomic builtin (this may be needed if system headers are unavailable)"
   Off)
 
+if(NOT COMPILER_RT_BAREMETAL_BUILD)
+  set(GENERIC_SOURCES
+    ${GENERIC_SOURCES}
+    enable_execute_stack.c)
+endif()
+
 if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN)
   set(GENERIC_SOURCES
     ${GENERIC_SOURCES}
@@ -478,11 +483,18 @@ else ()
 
   foreach (arch ${BUILTIN_SUPPORTED_ARCH})
     if (CAN_TARGET_${arch})
+      # NOTE: some architectures (e.g. i386) have multiple names.  Ensure that
+      # we catch them all.
+      set(_arch ${arch})
+      if("${arch}" STREQUAL "i686")
+        set(_arch "i386|i686")
+      endif()
+
       # Filter out generic versions of routines that are re-implemented in
       # architecture specific manner.  This prevents multiple definitions of the
       # same symbols, making the symbol selection non-deterministic.
       foreach (_file ${${arch}_SOURCES})
-        if (${_file} MATCHES ${arch}/*)
+        if (${_file} MATCHES ${_arch}/*)
           get_filename_component(_name ${_file} NAME)
           string(REPLACE ".S" ".c" _cname "${_name}")
           list(REMOVE_ITEM ${arch}_SOURCES ${_cname})

Modified: vendor/compiler-rt/dist/lib/builtins/adddf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/adddf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/adddf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -15,8 +15,13 @@
 #define DOUBLE_PRECISION
 #include "fp_add_impl.inc"
 
-ARM_EABI_FNALIAS(dadd, adddf3)
-
 COMPILER_RT_ABI double __adddf3(double a, double b){
     return __addXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_dadd(double a, double b) {
+  return __adddf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/addsf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/addsf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/addsf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -15,8 +15,13 @@
 #define SINGLE_PRECISION
 #include "fp_add_impl.inc"
 
-ARM_EABI_FNALIAS(fadd, addsf3)
-
 COMPILER_RT_ABI float __addsf3(float a, float b) {
     return __addXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_fadd(float a, float b) {
+  return __addsf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cdcmpeq_check_nan.c	Tue May 16 19:47:19 2017	(r318372)
@@ -8,9 +8,9 @@
 //===----------------------------------------------------------------------===//
 
 #include <stdint.h>
+#include "../int_lib.h"
 
-__attribute__((pcs("aapcs")))
-__attribute__((visibility("hidden")))
+AEABI_RTABI __attribute__((visibility("hidden")))
 int __aeabi_cdcmpeq_check_nan(double a, double b) {
     return __builtin_isnan(a) || __builtin_isnan(b);
 }

Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_cfcmpeq_check_nan.c	Tue May 16 19:47:19 2017	(r318372)
@@ -8,9 +8,9 @@
 //===----------------------------------------------------------------------===//
 
 #include <stdint.h>
+#include "../int_lib.h"
 
-__attribute__((pcs("aapcs")))
-__attribute__((visibility("hidden")))
+AEABI_RTABI __attribute__((visibility("hidden")))
 int __aeabi_cfcmpeq_check_nan(float a, float b) {
     return __builtin_isnan(a) || __builtin_isnan(b);
 }

Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_div0.c	Tue May 16 19:47:19 2017	(r318372)
@@ -26,16 +26,18 @@
  * line.
  */
 
+#include "../int_lib.h"
+
 /* provide an unused declaration to pacify pendantic compilation */
 extern unsigned char declaration;
 
 #if defined(__ARM_EABI__)
-int __attribute__((weak)) __attribute__((visibility("hidden")))
+AEABI_RTABI int __attribute__((weak)) __attribute__((visibility("hidden")))
 __aeabi_idiv0(int return_value) {
   return return_value;
 }
 
-long long __attribute__((weak)) __attribute__((visibility("hidden")))
+AEABI_RTABI long long __attribute__((weak)) __attribute__((visibility("hidden")))
 __aeabi_ldiv0(long long return_value) {
   return return_value;
 }

Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_drsub.c	Tue May 16 19:47:19 2017	(r318372)
@@ -10,10 +10,10 @@
 #define DOUBLE_PRECISION
 #include "../fp_lib.h"
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_dsub(fp_t, fp_t);
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_drsub(fp_t a, fp_t b) {
     return __aeabi_dsub(b, a);
 }

Modified: vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/arm/aeabi_frsub.c	Tue May 16 19:47:19 2017	(r318372)
@@ -10,10 +10,10 @@
 #define SINGLE_PRECISION
 #include "../fp_lib.h"
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_fsub(fp_t, fp_t);
 
-COMPILER_RT_ABI fp_t
+AEABI_RTABI fp_t
 __aeabi_frsub(fp_t a, fp_t b) {
     return __aeabi_fsub(b, a);
 }

Modified: vendor/compiler-rt/dist/lib/builtins/ashldi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/ashldi3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/ashldi3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(llsl, ashldi3)
-
 COMPILER_RT_ABI di_int
 __ashldi3(di_int a, si_int b)
 {
@@ -41,3 +39,10 @@ __ashldi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_llsl(di_int a, si_int b) {
+  return __ashldi3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/ashrdi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/ashrdi3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/ashrdi3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(lasr, ashrdi3)
-
 COMPILER_RT_ABI di_int
 __ashrdi3(di_int a, si_int b)
 {
@@ -42,3 +40,10 @@ __ashrdi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_lasr(di_int a, si_int b) {
+  return __ashrdi3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/assembly.h
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/assembly.h	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/assembly.h	Tue May 16 19:47:19 2017	(r318372)
@@ -44,7 +44,8 @@
 #endif
 #define CONST_SECTION .section .rodata
 
-#if defined(__GNU__) || defined(__ANDROID__) || defined(__FreeBSD__)
+#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \
+    defined(__linux__)
 #define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits
 #else
 #define NO_EXEC_STACK_DIRECTIVE

Modified: vendor/compiler-rt/dist/lib/builtins/comparedf2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/comparedf2.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/comparedf2.c	Tue May 16 19:47:19 2017	(r318372)
@@ -113,8 +113,6 @@ __gedf2(fp_t a, fp_t b) {
     }
 }
 
-ARM_EABI_FNALIAS(dcmpun, unorddf2)
-
 COMPILER_RT_ABI int
 __unorddf2(fp_t a, fp_t b) {
     const rep_t aAbs = toRep(a) & absMask;
@@ -144,3 +142,9 @@ __gtdf2(fp_t a, fp_t b) {
     return __gedf2(a, b);
 }
 
+#if defined(__ARM_EABI__)
+AEABI_RTABI int __aeabi_dcmpun(fp_t a, fp_t b) {
+  return __unorddf2(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/comparesf2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/comparesf2.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/comparesf2.c	Tue May 16 19:47:19 2017	(r318372)
@@ -113,8 +113,6 @@ __gesf2(fp_t a, fp_t b) {
     }
 }
 
-ARM_EABI_FNALIAS(fcmpun, unordsf2)
-
 COMPILER_RT_ABI int
 __unordsf2(fp_t a, fp_t b) {
     const rep_t aAbs = toRep(a) & absMask;
@@ -143,3 +141,10 @@ COMPILER_RT_ABI enum GE_RESULT
 __gtsf2(fp_t a, fp_t b) {
     return __gesf2(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI int __aeabi_fcmpun(fp_t a, fp_t b) {
+  return __unordsf2(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/divdf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/divdf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/divdf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -19,8 +19,6 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(ddiv, divdf3)
-
 COMPILER_RT_ABI fp_t
 __divdf3(fp_t a, fp_t b) {
     
@@ -183,3 +181,10 @@ __divdf3(fp_t a, fp_t b) {
         return result;
     }
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ddiv(fp_t a, fp_t b) {
+  return __divdf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/divsf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/divsf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/divsf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -19,8 +19,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(fdiv, divsf3)
-
 COMPILER_RT_ABI fp_t
 __divsf3(fp_t a, fp_t b) {
     
@@ -167,3 +165,10 @@ __divsf3(fp_t a, fp_t b) {
         return fromRep(absResult | quotientSign);
     }
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fdiv(fp_t a, fp_t b) {
+  return __divsf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/divsi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/divsi3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/divsi3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -16,8 +16,6 @@
 
 /* Returns: a / b */
 
-ARM_EABI_FNALIAS(idiv, divsi3)
-
 COMPILER_RT_ABI si_int
 __divsi3(si_int a, si_int b)
 {
@@ -35,3 +33,10 @@ __divsi3(si_int a, si_int b)
      */
     return ((su_int)a/(su_int)b ^ s_a) - s_a;    /* negate if s_a == -1 */
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_idiv(si_int a, si_int b) {
+  return __divsi3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/extendhfsf2.c	Tue May 16 19:47:19 2017	(r318372)
@@ -12,8 +12,6 @@
 #define DST_SINGLE
 #include "fp_extend_impl.inc"
 
-ARM_EABI_FNALIAS(h2f, extendhfsf2)
-
 // Use a forwarding definition and noinline to implement a poor man's alias,
 // as there isn't a good cross-platform way of defining one.
 COMPILER_RT_ABI NOINLINE float __extendhfsf2(uint16_t a) {
@@ -23,3 +21,10 @@ COMPILER_RT_ABI NOINLINE float __extendh
 COMPILER_RT_ABI float __gnu_h2f_ieee(uint16_t a) {
     return __extendhfsf2(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_h2f(uint16_t a) {
+  return __extendhfsf2(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/extendsfdf2.c	Tue May 16 19:47:19 2017	(r318372)
@@ -12,8 +12,13 @@
 #define DST_DOUBLE
 #include "fp_extend_impl.inc"
 
-ARM_EABI_FNALIAS(f2d, extendsfdf2)
-
 COMPILER_RT_ABI double __extendsfdf2(float a) {
     return __extendXfYf2__(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_f2d(float a) {
+  return __extendsfdf2(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixdfdi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixdfdi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixdfdi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -10,7 +10,6 @@
 
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
-ARM_EABI_FNALIAS(d2lz, fixdfdi)
 
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
@@ -44,3 +43,15 @@ __fixdfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int
+#if defined(__SOFT_FP__)
+__aeabi_d2lz(fp_t a) {
+#else
+__aeabi_d2lz(double a) {
+#endif
+  return __fixdfdi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixdfsi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixdfsi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixdfsi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -14,9 +14,14 @@ typedef si_int fixint_t;
 typedef su_int fixuint_t;
 #include "fp_fixint_impl.inc"
 
-ARM_EABI_FNALIAS(d2iz, fixdfsi)
-
 COMPILER_RT_ABI si_int
 __fixdfsi(fp_t a) {
     return __fixint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_d2iz(fp_t a) {
+  return __fixdfsi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixsfdi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixsfdi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixsfdi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -11,8 +11,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(f2lz, fixsfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -45,3 +43,15 @@ __fixsfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int
+#if defined(__SOFT_FP__)
+__aeabi_f2lz(fp_t a) {
+#else
+__aeabi_f2lz(float a) {
+#endif
+  return __fixsfdi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixsfsi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixsfsi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixsfsi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -14,9 +14,14 @@ typedef si_int fixint_t;
 typedef su_int fixuint_t;
 #include "fp_fixint_impl.inc"
 
-ARM_EABI_FNALIAS(f2iz, fixsfsi)
-
 COMPILER_RT_ABI si_int
 __fixsfsi(fp_t a) {
     return __fixint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI si_int __aeabi_f2iz(fp_t a) {
+  return __fixsfsi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixunsdfdi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -11,8 +11,6 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(d2ulz, fixunsdfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -42,3 +40,15 @@ __fixunsdfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI du_int
+#if defined(__SOFT_FP__)
+__aeabi_d2ulz(fp_t a) {
+#else
+__aeabi_d2ulz(double a) {
+#endif
+  return __fixunsdfdi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixunsdfsi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -13,9 +13,14 @@
 typedef su_int fixuint_t;
 #include "fp_fixuint_impl.inc"
 
-ARM_EABI_FNALIAS(d2uiz, fixunsdfsi)
-
 COMPILER_RT_ABI su_int
 __fixunsdfsi(fp_t a) {
     return __fixuint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI su_int __aeabi_d2uiz(fp_t a) {
+  return __fixunsdfsi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixunssfdi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -11,8 +11,6 @@
 #define SINGLE_PRECISION
 #include "fp_lib.h"
 
-ARM_EABI_FNALIAS(f2ulz, fixunssfdi)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; can set the invalid
  * flag as a side-effect of computation.
@@ -43,3 +41,15 @@ __fixunssfdi(fp_t a) {
 }
 
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI du_int
+#if defined(__SOFT_FP__)
+__aeabi_f2ulz(fp_t a) {
+#else
+__aeabi_f2ulz(float a) {
+#endif
+  return __fixunssfdi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/fixunssfsi.c	Tue May 16 19:47:19 2017	(r318372)
@@ -17,9 +17,14 @@
 typedef su_int fixuint_t;
 #include "fp_fixuint_impl.inc"
 
-ARM_EABI_FNALIAS(f2uiz, fixunssfsi)
-
 COMPILER_RT_ABI su_int
 __fixunssfsi(fp_t a) {
     return __fixuint(a);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI su_int __aeabi_f2uiz(fp_t a) {
+  return __fixunssfsi(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatdidf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatdidf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -22,8 +22,6 @@
 
 /* seee eeee eeee mmmm mmmm mmmm mmmm mmmm | mmmm mmmm mmmm mmmm mmmm mmmm mmmm mmmm */
 
-ARM_EABI_FNALIAS(l2d, floatdidf)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; we'll set the inexact flag
  * as a side-effect of this computation.
@@ -105,3 +103,10 @@ __floatdidf(di_int a)
     return fb.f;
 }
 #endif
+
+#if defined(__AEABI__)
+AEABI_RTABI double __aeabi_l2d(di_int a) {
+  return __floatdidf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatdisf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatdisf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatdisf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(l2f, floatdisf)
-
 COMPILER_RT_ABI float
 __floatdisf(di_int a)
 {
@@ -78,3 +76,10 @@ __floatdisf(di_int a)
            ((su_int)a & 0x007FFFFF);   /* mantissa */
     return fb.f;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_l2f(di_int a) {
+  return __floatdisf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatsidf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatsidf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatsidf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(i2d, floatsidf)
-
 COMPILER_RT_ABI fp_t
 __floatsidf(int a) {
     
@@ -51,3 +49,10 @@ __floatsidf(int a) {
     // Insert the sign bit and return
     return fromRep(result | sign);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_i2d(int a) {
+  return __floatsidf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatsisf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatsisf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatsisf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(i2f, floatsisf)
-
 COMPILER_RT_ABI fp_t
 __floatsisf(int a) {
     
@@ -57,3 +55,10 @@ __floatsisf(int a) {
     // Insert the sign bit and return
     return fromRep(result | sign);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_i2f(int a) {
+  return __floatsisf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatundidf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatundidf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatundidf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ul2d, floatundidf)
-
 #ifndef __SOFT_FP__
 /* Support for systems that have hardware floating-point; we'll set the inexact flag
  * as a side-effect of this computation.
@@ -104,3 +102,10 @@ __floatundidf(du_int a)
     return fb.f;
 }
 #endif
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI double __aeabi_ul2d(du_int a) {
+  return __floatundidf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatundisf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatundisf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatundisf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -22,8 +22,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ul2f, floatundisf)
-
 COMPILER_RT_ABI float
 __floatundisf(du_int a)
 {
@@ -75,3 +73,10 @@ __floatundisf(du_int a)
            ((su_int)a & 0x007FFFFF);  /* mantissa */
     return fb.f;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI float __aeabi_ul2f(du_int a) {
+  return __floatundisf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatunsidf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatunsidf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatunsidf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ui2d, floatunsidf)
-
 COMPILER_RT_ABI fp_t
 __floatunsidf(unsigned int a) {
     
@@ -40,3 +38,10 @@ __floatunsidf(unsigned int a) {
     result += (rep_t)(exponent + exponentBias) << significandBits;
     return fromRep(result);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ui2d(unsigned int a) {
+  return __floatunsidf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/floatunsisf.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/floatunsisf.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/floatunsisf.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 #include "int_lib.h"
 
-ARM_EABI_FNALIAS(ui2f, floatunsisf)
-
 COMPILER_RT_ABI fp_t
 __floatunsisf(unsigned int a) {
     
@@ -48,3 +46,10 @@ __floatunsisf(unsigned int a) {
     result += (rep_t)(exponent + exponentBias) << significandBits;
     return fromRep(result);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_ui2f(unsigned int a) {
+  return __floatunsisf(a);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/int_lib.h
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/int_lib.h	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/int_lib.h	Tue May 16 19:47:19 2017	(r318372)
@@ -30,18 +30,17 @@
 /* ABI macro definitions */
 
 #if __ARM_EABI__
-# define ARM_EABI_FNALIAS(aeabi_name, name)         \
-  void __aeabi_##aeabi_name() __attribute__((alias("__" #name)));
 # ifdef COMPILER_RT_ARMHF_TARGET
 #   define COMPILER_RT_ABI
 # else
-#   define COMPILER_RT_ABI __attribute__((pcs("aapcs")))
+#   define COMPILER_RT_ABI __attribute__((__pcs__("aapcs")))
 # endif
 #else
-# define ARM_EABI_FNALIAS(aeabi_name, name)
 # define COMPILER_RT_ABI
 #endif
 
+#define AEABI_RTABI __attribute__((__pcs__("aapcs")))
+
 #ifdef _MSC_VER
 #define ALWAYS_INLINE __forceinline
 #define NOINLINE __declspec(noinline)

Modified: vendor/compiler-rt/dist/lib/builtins/lshrdi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/lshrdi3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/lshrdi3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -18,8 +18,6 @@
 
 /* Precondition:  0 <= b < bits_in_dword */
 
-ARM_EABI_FNALIAS(llsr, lshrdi3)
-
 COMPILER_RT_ABI di_int
 __lshrdi3(di_int a, si_int b)
 {
@@ -41,3 +39,10 @@ __lshrdi3(di_int a, si_int b)
     }
     return result.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_llsr(di_int a, si_int b) {
+  return __lshrdi3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/muldf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/muldf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/muldf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -15,8 +15,13 @@
 #define DOUBLE_PRECISION
 #include "fp_mul_impl.inc"
 
-ARM_EABI_FNALIAS(dmul, muldf3)
-
 COMPILER_RT_ABI fp_t __muldf3(fp_t a, fp_t b) {
     return __mulXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_dmul(fp_t a, fp_t b) {
+  return __muldf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/muldi3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/muldi3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/muldi3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -40,8 +40,6 @@ __muldsi3(su_int a, su_int b)
 
 /* Returns: a * b */
 
-ARM_EABI_FNALIAS(lmul, muldi3)
-
 COMPILER_RT_ABI di_int
 __muldi3(di_int a, di_int b)
 {
@@ -54,3 +52,10 @@ __muldi3(di_int a, di_int b)
     r.s.high += x.s.high * y.s.low + x.s.low * y.s.high;
     return r.all;
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI di_int __aeabi_lmul(di_int a, di_int b) {
+  return __muldi3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/mulsf3.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/mulsf3.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/mulsf3.c	Tue May 16 19:47:19 2017	(r318372)
@@ -15,8 +15,13 @@
 #define SINGLE_PRECISION
 #include "fp_mul_impl.inc"
 
-ARM_EABI_FNALIAS(fmul, mulsf3)
-
 COMPILER_RT_ABI fp_t __mulsf3(fp_t a, fp_t b) {
     return __mulXf3__(a, b);
 }
+
+#if defined(__ARM_EABI__)
+AEABI_RTABI fp_t __aeabi_fmul(fp_t a, fp_t b) {
+  return __mulsf3(a, b);
+}
+#endif
+

Modified: vendor/compiler-rt/dist/lib/builtins/negdf2.c
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/negdf2.c	Tue May 16 19:47:16 2017	(r318371)
+++ vendor/compiler-rt/dist/lib/builtins/negdf2.c	Tue May 16 19:47:19 2017	(r318372)
@@ -14,9 +14,14 @@
 #define DOUBLE_PRECISION
 #include "fp_lib.h"
 

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201705161947.v4GJlJaB097039>