Upgrade WPILib and upgraded compilers to C++17

I haven't touched the CTRE libraries yet, although they may need to be
upgraded as well.

Note that this change makes it so that you need either Ubuntu 18.04 or
later or debian buster or later in order to build the code (you may be
able to build code for the roborio on older operating systems, but
running the tests will not work normally).

Change-Id: I0cfa37fe37f830edde6d305e1f50414c369098e4
diff --git a/tools/cpp/BUILD b/tools/cpp/BUILD
index c2c285d..c0d0b38 100644
--- a/tools/cpp/BUILD
+++ b/tools/cpp/BUILD
@@ -54,56 +54,56 @@
 )
 
 filegroup(
-    name = "clang_3p6_all_files",
+    name = "clang_6p0_all_files",
     srcs = [
         ":flags_compiler_inputs",
-        "//tools/cpp/clang_3p6:as",
-        "//tools/cpp/clang_3p6:tool-wrappers",
-        "@clang_3p6_repo//:compiler_pieces",
+        "//tools/cpp/clang_6p0:as",
+        "//tools/cpp/clang_6p0:tool-wrappers",
+        "@clang_6p0_repo//:compiler_pieces",
     ],
 )
 
 filegroup(
-    name = "clang_3p6_linker_files",
+    name = "clang_6p0_linker_files",
     srcs = [
-        "//tools/cpp/clang_3p6:ar",
-        "//tools/cpp/clang_3p6:clang",
-        "//tools/cpp/clang_3p6:clang-symlinks",
-        "//tools/cpp/clang_3p6:ld",
-        "@clang_3p6_repo//:compiler_pieces",
+        "//tools/cpp/clang_6p0:ar",
+        "//tools/cpp/clang_6p0:clang",
+        "//tools/cpp/clang_6p0:clang-symlinks",
+        "//tools/cpp/clang_6p0:ld",
+        "@clang_6p0_repo//:compiler_pieces",
     ],
 )
 
 filegroup(
-    name = "clang_3p6_strip_files",
+    name = "clang_6p0_strip_files",
     srcs = [
-        "//tools/cpp/clang_3p6:strip",
-        "@clang_3p6_repo//:compiler_pieces",
+        "//tools/cpp/clang_6p0:strip",
+        "@clang_6p0_repo//:compiler_pieces",
     ],
 )
 
 filegroup(
-    name = "clang_3p6_compiler_files",
+    name = "clang_6p0_compiler_files",
     srcs = [
         "flags_compiler_inputs",
-        "//tools/cpp/clang_3p6:clang",
-        "//tools/cpp/clang_3p6:ld",
-        "@clang_3p6_repo//:compiler_components",
-        "@clang_3p6_repo//:compiler_pieces",
+        "//tools/cpp/clang_6p0:clang",
+        "//tools/cpp/clang_6p0:ld",
+        "@clang_6p0_repo//:compiler_components",
+        "@clang_6p0_repo//:compiler_pieces",
     ],
 )
 
 cc_toolchain(
     name = "cc-compiler-k8",
-    all_files = ":clang_3p6_all_files",
-    compiler_files = ":clang_3p6_compiler_files",
+    all_files = ":clang_6p0_all_files",
+    compiler_files = ":clang_6p0_compiler_files",
     cpu = "k8",
     dwp_files = ":empty",
     dynamic_runtime_libs = [":empty"],
-    linker_files = ":clang_3p6_linker_files",
-    objcopy_files = "//tools/cpp/clang_3p6:objcopy",
+    linker_files = ":clang_6p0_linker_files",
+    objcopy_files = "//tools/cpp/clang_6p0:objcopy",
     static_runtime_libs = [":empty"],
-    strip_files = ":clang_3p6_strip_files",
+    strip_files = ":clang_6p0_strip_files",
     supports_param_files = 1,
     toolchain_identifier = "k8_linux",
 )
@@ -165,36 +165,36 @@
 filegroup(
     name = "linaro-gcc-files",
     srcs = [
-        ":clang_3p6_all_files",
+        ":clang_6p0_all_files",
         "//tools/cpp/linaro_linux_gcc:clang-symlinks",
         "//tools/cpp/linaro_linux_gcc:tool-wrappers",
-        "@linaro_linux_gcc_4_9_repo//:compiler_pieces",
+        "@linaro_linux_gcc_repo//:compiler_pieces",
     ],
 )
 
 filegroup(
     name = "linaro_linux_linker_files",
     srcs = [
-        ":clang_3p6_linker_files",
+        ":clang_6p0_linker_files",
         "//tools/cpp/linaro_linux_gcc:ar",
         "//tools/cpp/linaro_linux_gcc:clang",
         "//tools/cpp/linaro_linux_gcc:clang-ld",
         "//tools/cpp/linaro_linux_gcc:clang-symlinks",
         "//tools/cpp/linaro_linux_gcc:gcc",
         "//tools/cpp/linaro_linux_gcc:ld",
-        "@linaro_linux_gcc_4_9_repo//:compiler_pieces",
+        "@linaro_linux_gcc_repo//:compiler_pieces",
     ],
 )
 
 filegroup(
     name = "linaro_linux_compiler_files",
     srcs = [
-        ":clang_3p6_compiler_files",
+        ":clang_6p0_compiler_files",
         "//tools/cpp/linaro_linux_gcc:as",
         "//tools/cpp/linaro_linux_gcc:clang",
         "//tools/cpp/linaro_linux_gcc:gcc",
         "//tools/cpp/linaro_linux_gcc:ld",
-        "@linaro_linux_gcc_4_9_repo//:compiler_pieces",
+        "@linaro_linux_gcc_repo//:compiler_pieces",
     ],
 )
 
@@ -202,7 +202,7 @@
     name = "linaro_linux_strip_files",
     srcs = [
         "//tools/cpp/linaro_linux_gcc:strip",
-        "@linaro_linux_gcc_4_9_repo//:compiler_pieces",
+        "@linaro_linux_gcc_repo//:compiler_pieces",
     ],
 )
 
diff --git a/tools/cpp/CROSSTOOL b/tools/cpp/CROSSTOOL
index 128954a..21b3349 100644
--- a/tools/cpp/CROSSTOOL
+++ b/tools/cpp/CROSSTOOL
@@ -105,59 +105,65 @@
   abi_libc_version: "local"
   tool_path {
     name: "ar"
-    path: "clang_3p6/x86_64-linux-gnu-ar"
+    path: "clang_6p0/x86_64-linux-gnu-ar"
   }
   tool_path {
     name: "compat-ld"
-    path: "clang_3p6/x86_64-linux-gnu-ld"
+    path: "clang_6p0/x86_64-linux-gnu-ld"
   }
   tool_path {
     name: "cpp"
-    path: "clang_3p6/x86_64-linux-gnu-cpp"
+    path: "clang_6p0/x86_64-linux-gnu-cpp"
   }
   tool_path {
     name: "dwp"
-    path: "clang_3p6/x86_64-linux-gnu-dwp"
+    path: "clang_6p0/x86_64-linux-gnu-dwp"
   }
   tool_path {
     name: "gcc"
-    path: "clang_3p6/x86_64-linux-gnu-clang-3.6"
+    path: "clang_6p0/x86_64-linux-gnu-clang-6.0"
   }
   tool_path {
     name: "gcov"
-    path: "clang_3p6/x86_64-linux-gnu-gcov"
+    path: "clang_6p0/x86_64-linux-gnu-gcov"
   }
   tool_path {
     name: "ld"
-    path: "clang_3p6/x86_64-linux-gnu-ld"
+    path: "clang_6p0/x86_64-linux-gnu-ld"
   }
   tool_path {
     name: "nm"
-    path: "clang_3p6/x86_64-linux-gnu-nm"
+    path: "clang_6p0/x86_64-linux-gnu-nm"
   }
   tool_path {
     name: "objcopy"
-    path: "clang_3p6/x86_64-linux-gnu-objcopy"
+    path: "clang_6p0/x86_64-linux-gnu-objcopy"
   }
   tool_path {
     name: "objdump"
-    path: "clang_3p6/x86_64-linux-gnu-objdump"
+    path: "clang_6p0/x86_64-linux-gnu-objdump"
   }
   tool_path {
     name: "strip"
-    path: "clang_3p6/x86_64-linux-gnu-strip"
+    path: "clang_6p0/x86_64-linux-gnu-strip"
   }
   supports_gold_linker: false
   supports_thin_archives: false
   needsPic: true
-  compiler_flag: "--sysroot=external/clang_3p6_repo/"
+  compiler_flag: "--sysroot=external/clang_6p0_repo/"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/include"
+  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/include/x86_64-linux-gnu"
+  compiler_flag: "external/clang_6p0_repo/usr/lib/llvm-6.0/lib/clang/6.0.0/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/lib/llvm-3.6/lib/clang/3.6.2/include"
+  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu/c++/7.4.0"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0/backward"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include"
   compiler_flag: "-D__STDC_FORMAT_MACROS"
   compiler_flag: "-D__STDC_CONSTANT_MACROS"
   compiler_flag: "-D__STDC_LIMIT_MACROS"
@@ -185,22 +191,18 @@
   compiler_flag: "-pipe"
   compiler_flag: "-ggdb3"
   cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/c++/4.9"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/x86_64-linux-gnu/c++/4.9"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/c++/4.9/backward"
+  cxx_flag: "external/clang_6p0_repo/usr/include"
   linker_flag: "-nodefaultlibs"
-  linker_flag: "--sysroot=external/clang_3p6_repo/"
+  linker_flag: "--sysroot=external/clang_6p0_repo/"
   linker_flag: "-lstdc++"
   linker_flag: "-lc"
   linker_flag: "-lgcc"
   linker_flag: "-lgcc_s"
-  linker_flag: "-Bexternal/clang_3p6_repo/usr/bin/"
-  linker_flag: "-Ltools/cpp/clang_3p6/clang_more_libs"
-  linker_flag: "-Lexternal/clang_3p6/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_3p6/usr/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_3p6/usr/lib/gcc/x86_64-linux-gnu"
+  linker_flag: "-Bexternal/clang_6p0_repo/usr/bin/"
+  linker_flag: "-Ltools/cpp/clang_6p0/clang_more_libs"
+  linker_flag: "-Lexternal/clang_6p0_repo/lib/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu"
   linker_flag: "-no-canonical-prefixes"
   linker_flag: "-fuse-ld=gold"
   linker_flag: "-Wl,-z,relro,-z,now"
@@ -222,20 +224,21 @@
   linking_mode_flags {
     mode: DYNAMIC
   }
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/include/c++/4.9"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/include/x86_64-linux-gnu/c++/4.9"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/include/c++/4.9/backward"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/local/include"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/lib/llvm-3.6/lib/clang/3.6.2/include"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/include/x86_64-linux-gnu"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/include"
-  cxx_builtin_include_directory: "%package(@clang_3p6_repo//usr)%/lib/clang/3.6.2/include"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu/c++/7.4.0"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0/backward"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/local/include"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/lib/llvm-6.0/lib/clang/6.0.0/include"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu"
   builtin_sysroot: ""
   unfiltered_cxx_flag: "-no-canonical-prefixes"
   unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
   unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
+  unfiltered_cxx_flag: "-Wno-varargs"
+  unfiltered_cxx_flag: "-Wno-null-pointer-arithmetic"
+  unfiltered_cxx_flag: "-Wno-mismatched-new-delete"
   supports_normalizing_ar: false
   supports_start_end_lib: false
   supports_interface_shared_objects: false
@@ -305,7 +308,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
       }
     }
     flag_set {
@@ -553,10 +556,10 @@
   linking_mode_flags {
     mode: DYNAMIC
   }
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/arm-frc2020-linux-gnueabi)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/backward)%"
   builtin_sysroot: ""
   unfiltered_cxx_flag: "-no-canonical-prefixes"
   unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
@@ -581,12 +584,12 @@
       action: "lto-backend"
       action: "clif-match"
       flag_group {
-        flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi"
+        flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi"
         flag: "-nostdinc"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include-fixed"
       }
     }
     flag_set {
@@ -606,11 +609,11 @@
       action: "c++-module-codegen"
       flag_group {
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/arm-frc2020-linux-gnueabi"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/backward"
       }
     }
     flag_set {
@@ -625,7 +628,7 @@
       action: "clif-match"
       flag_group {
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include"
         flag: "-mfpu=neon"
         flag: "-D__STDC_FORMAT_MACROS"
         flag: "-D__STDC_CONSTANT_MACROS"
@@ -837,7 +840,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
         flag: "-fno-sized-deallocation"
       }
     }
@@ -874,7 +877,7 @@
   target_cpu: "armhf-debian"
   target_libc: "glibc_2.19"
   compiler: "clang"
-  abi_version: "clang_3.6"
+  abi_version: "clang_6.0"
   abi_libc_version: "glibc_2.19"
   tool_path {
     name: "ar"
@@ -925,18 +928,26 @@
   needsPic: true
   compiler_flag: "-target"
   compiler_flag: "armv7a-arm-linux-gnueabif"
-  compiler_flag: "--sysroot=external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc"
+  compiler_flag: "--sysroot=external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc"
   compiler_flag: "-mfloat-abi=hard"
   compiler_flag: "-mfpu=vfpv3-d16"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "/usr/lib/clang/3.6/include"
+  compiler_flag: "/usr/lib/clang/6.0/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/lib/gcc/arm-linux-gnueabihf/4.9.3/include"
+  compiler_flag: "external/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/usr/include"
+  compiler_flag: "external/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/include/c++/7.4.1/arm-linux-gnueabihf"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/include/c++/7.4.1"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/include/c++/7.4.1/arm-linux-gnueabihf"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/include/c++/7.4.1"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/usr/include"
   compiler_flag: "-D__STDC_FORMAT_MACROS"
   compiler_flag: "-D__STDC_CONSTANT_MACROS"
   compiler_flag: "-D__STDC_LIMIT_MACROS"
@@ -961,23 +972,17 @@
   compiler_flag: "-fno-omit-frame-pointer"
   compiler_flag: "-pipe"
   compiler_flag: "-ggdb3"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/include/c++/4.9.3/arm-linux-gnueabihf"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/include/c++/4.9.3"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/include/c++/4.9.3/arm-linux-gnueabihf"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/include/c++/4.9.3"
   linker_flag: "-target"
   linker_flag: "armv7a-arm-linux-gnueabif"
-  linker_flag: "--sysroot=external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc"
+  linker_flag: "--sysroot=external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc"
   linker_flag: "-lstdc++"
   linker_flag: "-Ltools/cpp/linaro_linux_gcc/clang_more_libs"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/lib"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/lib"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/usr/lib"
-  linker_flag: "-Bexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/bin"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/usr/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1"
+  linker_flag: "-Bexternal/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1"
+  linker_flag: "-Bexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/bin"
   linker_flag: "-Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3"
   linker_flag: "-no-canonical-prefixes"
   linker_flag: "-Wl,-z,relro,-z,now"
@@ -998,20 +1003,23 @@
   linking_mode_flags {
     mode: DYNAMIC
   }
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/usr/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/usr/lib/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//include)%/c++/4.9.3"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/include)%/c++/4.9.3"
-  cxx_builtin_include_directory: "/usr/lib/clang/3.6/include"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/usr/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/usr/lib/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//include)%/c++/7.4.1"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//lib/gcc/arm-linux-gnueabihf/7.4.1/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/include)%/c++/7.4.1"
+  cxx_builtin_include_directory: "/usr/lib/clang/6.0/include"
   builtin_sysroot: ""
   unfiltered_cxx_flag: "-no-canonical-prefixes"
   unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+  unfiltered_cxx_flag: "-Wno-mismatched-new-delete"
+  unfiltered_cxx_flag: "-Wno-null-pointer-arithmetic"
+  unfiltered_cxx_flag: "-Wno-varargs"
   unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
@@ -1084,7 +1092,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
       }
     }
     flag_set {
@@ -1283,7 +1291,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "--std=gnu++1y"
+        flag: "--std=gnu++1z"
         flag: "-fno-exceptions"
         flag: "-fno-rtti"
       }
@@ -1486,7 +1494,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "--std=gnu++1y"
+        flag: "--std=gnu++1z"
         flag: "-fno-exceptions"
         flag: "-fno-rtti"
       }
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
index 09e37a4..21341e9 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ar
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-ar \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-ar" \
+exec -a arm-frc2020-linux-gnueabi-ar \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-ar" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
index df82796..9235820 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-as
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-as \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-as" \
+exec -a arm-frc2020-linux-gnueabi-as \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-as" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
index 00e88d6..09926da 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-cpp
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-cpp \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-cpp" \
+exec -a arm-frc2020-linux-gnueabi-cpp \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-cpp" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
index 9201bbe..23579ba 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-dwp
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-dwp \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-dwp" \
+exec -a arm-frc2020-linux-gnueabi-dwp \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-dwp" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
index 33bf997..3669d2e 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcc
@@ -4,5 +4,5 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-gcc" \
+exec "${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-gcc" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
index 2f0a64e..291cf01 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-gcov
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-gcov \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-gcov" \
+exec -a arm-frc2020-linux-gnueabi-gcov \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-gcov" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
index 862fb3c..79ee223 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-ld
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-ld \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-ld" \
+exec -a arm-frc2020-linux-gnueabi-ld \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-ld" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
index 1436464..b6295b7 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-nm
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-nm \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-nm" \
+exec -a arm-frc2020-linux-gnueabi-nm \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-nm" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
index fec13a6..f53cfc3 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objcopy
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-objcopy \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-objcopy" \
+exec -a arm-frc2020-linux-gnueabi-objcopy \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-objcopy" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
index d305185..2543956 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-objdump
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-objdump \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-objdump" \
+exec -a arm-frc2020-linux-gnueabi-objdump \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-objdump" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
index 3de77a6..cc1e77a 100755
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi-strip
@@ -4,6 +4,6 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/arm_frc_gnueabi_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-exec -a arm-frc2019-linux-gnueabi-strip \
-	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2019-linux-gnueabi-strip" \
+exec -a arm-frc2020-linux-gnueabi-strip \
+	"${BAZEL_OUTPUT_ROOT}external/arm_frc_linux_gnueabi_repo/bin/arm-frc2020-linux-gnueabi-strip" \
 	"$@"
diff --git a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
index 51b17a7..c83bdf5 100644
--- a/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
+++ b/tools/cpp/arm-frc-linux-gnueabi/arm-frc-linux-gnueabi.BUILD
@@ -1,6 +1,6 @@
 package(default_visibility = ["//visibility:public"])
 
-prefix = "arm-frc2019-linux-gnueabi"
+prefix = "arm-frc2020-linux-gnueabi"
 
 filegroup(
     name = "gcc",
@@ -65,9 +65,9 @@
         "usr/lib/**",
         "lib/**",
         "bin/**",
-        "**"
+        "**",
     ]] + [
-        "libexec/gcc/" + prefix + "/6.3.0/**",
+        "libexec/gcc/" + prefix + "/7.3.0/**",
         "bin/**",
     ]),
 )
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-ar b/tools/cpp/clang_3p6/x86_64-linux-gnu-ar
deleted file mode 100755
index b8ba259..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-ar
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a ar \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/ar \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-as b/tools/cpp/clang_3p6/x86_64-linux-gnu-as
deleted file mode 100755
index 461f584..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-as
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a as \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/as \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-clang-3.6 b/tools/cpp/clang_3p6/x86_64-linux-gnu-clang-3.6
deleted file mode 100755
index 369bf41..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-clang-3.6
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-# TODO(Brian): Figure out why it segfaults with this enabled, and re-enable it.
-#LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/clang-3.6 \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-cpp b/tools/cpp/clang_3p6/x86_64-linux-gnu-cpp
deleted file mode 100755
index 5bc6499..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-cpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a cpp \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/cpp \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-gcc b/tools/cpp/clang_3p6/x86_64-linux-gnu-gcc
deleted file mode 100755
index 1d0e502..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-gcc
+++ /dev/null
@@ -1,10 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/gcc/x86_64-linux-gnu/4.9:$PATH" \
-  exec \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/gcc \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-gcov b/tools/cpp/clang_3p6/x86_64-linux-gnu-gcov
deleted file mode 100755
index 58b621c..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-gcov
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a gcov \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/gcov \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-ld b/tools/cpp/clang_3p6/x86_64-linux-gnu-ld
deleted file mode 100755
index 9f59f2e..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-ld
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a ld \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/ld \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-nm b/tools/cpp/clang_3p6/x86_64-linux-gnu-nm
deleted file mode 100755
index f0b12c8..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-nm
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a nm \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/nm \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-objcopy b/tools/cpp/clang_3p6/x86_64-linux-gnu-objcopy
deleted file mode 100755
index 55b6b3d..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-objcopy
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a objcopy \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/objcopy \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-objdump b/tools/cpp/clang_3p6/x86_64-linux-gnu-objdump
deleted file mode 100755
index 194ffe9..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-objdump
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a objdump \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/objdump \
-  "$@"
diff --git a/tools/cpp/clang_3p6/x86_64-linux-gnu-strip b/tools/cpp/clang_3p6/x86_64-linux-gnu-strip
deleted file mode 100755
index c53f8dd..0000000
--- a/tools/cpp/clang_3p6/x86_64-linux-gnu-strip
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/bash --norc
-
-LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib/x86_64-linux-gnu"
-LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/lib"
-export LD_LIBRARY_PATH
-
-exec -a strip \
-  ${BAZEL_OUTPUT_ROOT}external/clang_3p6_repo/usr/bin/strip \
-  "$@"
diff --git a/tools/cpp/clang_3p6/BUILD b/tools/cpp/clang_6p0/BUILD
similarity index 76%
rename from tools/cpp/clang_3p6/BUILD
rename to tools/cpp/clang_6p0/BUILD
index 23504d7..7777859 100644
--- a/tools/cpp/clang_3p6/BUILD
+++ b/tools/cpp/clang_6p0/BUILD
@@ -4,7 +4,7 @@
     name = "ar",
     srcs = [
         "x86_64-linux-gnu-ar",
-        "@clang_3p6_repo//:ar",
+        "@clang_6p0_repo//:ar",
     ],
 )
 
@@ -12,7 +12,7 @@
     name = "ld",
     srcs = [
         "x86_64-linux-gnu-ld",
-        "@clang_3p6_repo//:ld",
+        "@clang_6p0_repo//:ld",
     ],
 )
 
@@ -20,7 +20,7 @@
     name = "nm",
     srcs = [
         "x86_64-linux-gnu-nm",
-        "@clang_3p6_repo//:nm",
+        "@clang_6p0_repo//:nm",
     ],
 )
 
@@ -28,7 +28,7 @@
     name = "objcopy",
     srcs = [
         "x86_64-linux-gnu-objcopy",
-        "@clang_3p6_repo//:objcopy",
+        "@clang_6p0_repo//:objcopy",
     ],
 )
 
@@ -36,7 +36,7 @@
     name = "objdump",
     srcs = [
         "x86_64-linux-gnu-objdump",
-        "@clang_3p6_repo//:objdump",
+        "@clang_6p0_repo//:objdump",
     ],
 )
 
@@ -44,7 +44,7 @@
     name = "strip",
     srcs = [
         "x86_64-linux-gnu-strip",
-        "@clang_3p6_repo//:strip",
+        "@clang_6p0_repo//:strip",
     ],
 )
 
@@ -52,15 +52,15 @@
     name = "as",
     srcs = [
         "x86_64-linux-gnu-as",
-        "@clang_3p6_repo//:as",
+        "@clang_6p0_repo//:as",
     ],
 )
 
 filegroup(
     name = "clang",
     srcs = [
-        "x86_64-linux-gnu-clang-3.6",
-        "@clang_3p6_repo//:clang",
+        "x86_64-linux-gnu-clang-6.0",
+        "@clang_6p0_repo//:clang",
     ],
 )
 
diff --git a/tools/cpp/clang_3p6/clang_3p6.BUILD b/tools/cpp/clang_6p0/clang_6p0.BUILD
similarity index 95%
rename from tools/cpp/clang_3p6/clang_3p6.BUILD
rename to tools/cpp/clang_6p0/clang_6p0.BUILD
index 648a511..e70f8a9 100644
--- a/tools/cpp/clang_3p6/clang_3p6.BUILD
+++ b/tools/cpp/clang_6p0/clang_6p0.BUILD
@@ -3,7 +3,7 @@
 filegroup(
     name = "clang-format",
     srcs = [
-        "usr/bin/clang-3.6",
+        "usr/bin/clang-6.0",
         ":compiler_pieces",
     ],
 )
@@ -11,7 +11,7 @@
 filegroup(
     name = "clang",
     srcs = [
-        "usr/bin/clang-3.6",
+        "usr/bin/clang-6.0",
     ],
 )
 
diff --git a/tools/cpp/clang_3p6/clang_more_libs/libc.so b/tools/cpp/clang_6p0/clang_more_libs/libc.so
similarity index 100%
rename from tools/cpp/clang_3p6/clang_more_libs/libc.so
rename to tools/cpp/clang_6p0/clang_more_libs/libc.so
diff --git a/tools/cpp/clang_3p6/clang_more_libs/libpthread.so b/tools/cpp/clang_6p0/clang_more_libs/libpthread.so
similarity index 100%
rename from tools/cpp/clang_3p6/clang_more_libs/libpthread.so
rename to tools/cpp/clang_6p0/clang_more_libs/libpthread.so
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-ar b/tools/cpp/clang_6p0/x86_64-linux-gnu-ar
new file mode 100755
index 0000000..869dd16
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-ar
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a ar \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/ar \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-as b/tools/cpp/clang_6p0/x86_64-linux-gnu-as
new file mode 100755
index 0000000..5f55a68
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-as
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a as \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/as \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0 b/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0
new file mode 100755
index 0000000..a652027
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0
@@ -0,0 +1,11 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+# TODO(Brian): Figure out why it segfaults with this enabled, and re-enable it.
+#LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/clang-6.0 \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp b/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp
new file mode 100755
index 0000000..d0e1d86
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-cpp
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a cpp \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/cpp \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc
new file mode 100755
index 0000000..0f822e4
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcc
@@ -0,0 +1,10 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu/4.9:$PATH" \
+  exec \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/gcc \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov
new file mode 100755
index 0000000..37195e5
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-gcov
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a gcov \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/gcov \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-ld b/tools/cpp/clang_6p0/x86_64-linux-gnu-ld
new file mode 100755
index 0000000..95e302f
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-ld
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a ld \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/ld \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-nm b/tools/cpp/clang_6p0/x86_64-linux-gnu-nm
new file mode 100755
index 0000000..4368330
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-nm
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a nm \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/nm \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy b/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy
new file mode 100755
index 0000000..d33835b
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-objcopy
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a objcopy \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/objcopy \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump b/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump
new file mode 100755
index 0000000..29e9e37
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-objdump
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a objdump \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/objdump \
+  "$@"
diff --git a/tools/cpp/clang_6p0/x86_64-linux-gnu-strip b/tools/cpp/clang_6p0/x86_64-linux-gnu-strip
new file mode 100755
index 0000000..34b412a
--- /dev/null
+++ b/tools/cpp/clang_6p0/x86_64-linux-gnu-strip
@@ -0,0 +1,9 @@
+#!/bin/bash --norc
+
+LD_LIBRARY_PATH="${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/lib"
+export LD_LIBRARY_PATH
+
+exec -a strip \
+  ${BAZEL_OUTPUT_ROOT}external/clang_6p0_repo/usr/bin/strip \
+  "$@"
diff --git a/tools/cpp/cortex_m4f_crosstool.pb b/tools/cpp/cortex_m4f_crosstool.pb
index 867e8b0..68114e6 100644
--- a/tools/cpp/cortex_m4f_crosstool.pb
+++ b/tools/cpp/cortex_m4f_crosstool.pb
@@ -84,7 +84,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "--std=gnu++1y"
+        flag: "--std=gnu++1z"
         flag: "-fno-exceptions"
         flag: "-fno-rtti"
       }
diff --git a/tools/cpp/linaro_linux_gcc/BUILD b/tools/cpp/linaro_linux_gcc/BUILD
index 4800436..b5ea5a5 100644
--- a/tools/cpp/linaro_linux_gcc/BUILD
+++ b/tools/cpp/linaro_linux_gcc/BUILD
@@ -12,7 +12,7 @@
     name = "gcc",
     srcs = [
         "arm-linux-gnueabihf-gcc",
-        "@linaro_linux_gcc_4_9_repo//:gcc",
+        "@linaro_linux_gcc_repo//:gcc",
     ],
 )
 
@@ -20,7 +20,7 @@
     name = "ar",
     srcs = [
         "arm-linux-gnueabihf-ar",
-        "@linaro_linux_gcc_4_9_repo//:ar",
+        "@linaro_linux_gcc_repo//:ar",
     ],
 )
 
@@ -28,7 +28,7 @@
     name = "ld",
     srcs = [
         "arm-linux-gnueabihf-ld",
-        "@linaro_linux_gcc_4_9_repo//:ld",
+        "@linaro_linux_gcc_repo//:ld",
     ],
 )
 
@@ -36,7 +36,7 @@
     name = "nm",
     srcs = [
         "arm-linux-gnueabihf-nm",
-        "@linaro_linux_gcc_4_9_repo//:nm",
+        "@linaro_linux_gcc_repo//:nm",
     ],
 )
 
@@ -44,7 +44,7 @@
     name = "objcopy",
     srcs = [
         "arm-linux-gnueabihf-objcopy",
-        "@linaro_linux_gcc_4_9_repo//:objcopy",
+        "@linaro_linux_gcc_repo//:objcopy",
     ],
 )
 
@@ -52,7 +52,7 @@
     name = "objdump",
     srcs = [
         "arm-linux-gnueabihf-objdump",
-        "@linaro_linux_gcc_4_9_repo//:objdump",
+        "@linaro_linux_gcc_repo//:objdump",
     ],
 )
 
@@ -60,7 +60,7 @@
     name = "strip",
     srcs = [
         "arm-linux-gnueabihf-strip",
-        "@linaro_linux_gcc_4_9_repo//:strip",
+        "@linaro_linux_gcc_repo//:strip",
     ],
 )
 
@@ -68,7 +68,7 @@
     name = "as",
     srcs = [
         "arm-linux-gnueabihf-as",
-        "@linaro_linux_gcc_4_9_repo//:as",
+        "@linaro_linux_gcc_repo//:as",
     ],
 )
 
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ar b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ar
index abdb214..7641296 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ar
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ar
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-ar \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-ar \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-ar \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-as b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-as
index 6a749b4..91ccdfb 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-as
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-as
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-as \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-as \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-as \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-cpp b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-cpp
index 7d97f51..d9a0513 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-cpp
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-cpp
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-cpp \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-cpp \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-cpp \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcc b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcc
index 71dd060..820f94c 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcc
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcc
@@ -4,7 +4,7 @@
 LD_LIBRARY_PATH+=":${BAZEL_OUTPUT_ROOT}external/linaro_49_deps/lib/x86_64-linux-gnu"
 export LD_LIBRARY_PATH
 
-PATH="${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/libexec/gcc/arm-linux-gnueabihf/4.9.3:$PATH" \
+PATH="${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/libexec/gcc/arm-linux-gnueabihf/7.4.1:$PATH" \
 	exec \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-gcc \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-gcc \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcov b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcov
index 5e179c4..adda433 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcov
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-gcov
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-gcov \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-gcov \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-gcov \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ld b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ld
index b4b9fb2..ef83660 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ld
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-ld
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-ld \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-ld \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-ld \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-nm b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-nm
index 514dc67..9f5eddc 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-nm
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-nm
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-nm \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-nm \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-nm \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objcopy b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objcopy
index d435e92..1d359a0 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objcopy
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objcopy
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-objcopy \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-objcopy \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-objcopy \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objdump b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objdump
index 260d9c0..14a960b 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objdump
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-objdump
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-objdump \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-objdump \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-objdump \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-strip b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-strip
index 2942227..a7389f3 100755
--- a/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-strip
+++ b/tools/cpp/linaro_linux_gcc/arm-linux-gnueabihf-strip
@@ -5,5 +5,5 @@
 export LD_LIBRARY_PATH
 
 exec -a arm-linux-gnueabihf-strip \
-	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_4_9_repo/bin/arm-linux-gnueabihf-strip \
+	${BAZEL_OUTPUT_ROOT}external/linaro_linux_gcc_repo/bin/arm-linux-gnueabihf-strip \
 	"$@"
diff --git a/tools/cpp/linaro_linux_gcc/clang_bin/clang b/tools/cpp/linaro_linux_gcc/clang_bin/clang
index 99f6067..dcde513 100755
--- a/tools/cpp/linaro_linux_gcc/clang_bin/clang
+++ b/tools/cpp/linaro_linux_gcc/clang_bin/clang
@@ -1,4 +1,4 @@
 #!/bin/bash --norc
 
 exec -a "$0" \
-  "tools/cpp/clang_3p6/x86_64-linux-gnu-clang-3.6" "$@"
+  "tools/cpp/clang_6p0/x86_64-linux-gnu-clang-6.0" "$@"
diff --git a/tools/cpp/static_crosstool.pb b/tools/cpp/static_crosstool.pb
index 6914825..3435ece 100644
--- a/tools/cpp/static_crosstool.pb
+++ b/tools/cpp/static_crosstool.pb
@@ -38,6 +38,7 @@
 }
 
 toolchain {
+  toolchain_identifier: "stub_armeabi-v7a"
   abi_version: "armeabi-v7a"
   abi_libc_version: "armeabi-v7a"
   builtin_sysroot: ""
@@ -54,7 +55,6 @@
   target_libc: "armeabi-v7a"
   target_cpu: "armeabi-v7a"
   target_system_name: "armeabi-v7a"
-  toolchain_identifier: "stub_armeabi-v7a"
 
   tool_path { name: "ar" path: "/bin/false" }
   tool_path { name: "compat-ld" path: "/bin/false" }
@@ -90,63 +90,63 @@
   toolchain_identifier: "k8_linux"
 
   # These paths are relative to //tools/cpp.
-  tool_path { name: "ar" path: "clang_3p6/x86_64-linux-gnu-ar" }
-  tool_path { name: "compat-ld" path: "clang_3p6/x86_64-linux-gnu-ld" }
-  tool_path { name: "cpp" path: "clang_3p6/x86_64-linux-gnu-cpp" }
-  tool_path { name: "dwp" path: "clang_3p6/x86_64-linux-gnu-dwp" }
-  tool_path { name: "gcc" path: "clang_3p6/x86_64-linux-gnu-clang-3.6" }
-  tool_path { name: "gcov" path: "clang_3p6/x86_64-linux-gnu-gcov" }
+  tool_path { name: "ar" path: "clang_6p0/x86_64-linux-gnu-ar" }
+  tool_path { name: "compat-ld" path: "clang_6p0/x86_64-linux-gnu-ld" }
+  tool_path { name: "cpp" path: "clang_6p0/x86_64-linux-gnu-cpp" }
+  tool_path { name: "dwp" path: "clang_6p0/x86_64-linux-gnu-dwp" }
+  tool_path { name: "gcc" path: "clang_6p0/x86_64-linux-gnu-clang-6.0" }
+  tool_path { name: "gcov" path: "clang_6p0/x86_64-linux-gnu-gcov" }
   # C(++) compiles invoke the compiler (as that is the one knowing where
   # to find libraries), but we provide LD so other rules can invoke the linker.
-  tool_path { name: "ld" path: "clang_3p6/x86_64-linux-gnu-ld" }
-  tool_path { name: "nm" path: "clang_3p6/x86_64-linux-gnu-nm" }
-  tool_path { name: "objcopy" path: "clang_3p6/x86_64-linux-gnu-objcopy" }
+  tool_path { name: "ld" path: "clang_6p0/x86_64-linux-gnu-ld" }
+  tool_path { name: "nm" path: "clang_6p0/x86_64-linux-gnu-nm" }
+  tool_path { name: "objcopy" path: "clang_6p0/x86_64-linux-gnu-objcopy" }
   objcopy_embed_flag: "-I"
   objcopy_embed_flag: "binary"
-  tool_path { name: "objdump" path: "clang_3p6/x86_64-linux-gnu-objdump" }
-  tool_path { name: "strip" path: "clang_3p6/x86_64-linux-gnu-strip" }
+  tool_path { name: "objdump" path: "clang_6p0/x86_64-linux-gnu-objdump" }
+  tool_path { name: "strip" path: "clang_6p0/x86_64-linux-gnu-strip" }
   linking_mode_flags { mode: DYNAMIC }
 
-  compiler_flag: "--sysroot=external/clang_3p6_repo/"
+  compiler_flag: "--sysroot=external/clang_6p0_repo/"
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/include",
+  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu",
   compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/include/x86_64-linux-gnu",
-  compiler_flag: "-isystem"
-  compiler_flag: "external/clang_3p6_repo/usr/lib/llvm-3.6/lib/clang/3.6.2/include",
+  compiler_flag: "external/clang_6p0_repo/usr/lib/llvm-6.0/lib/clang/6.0.0/include",
 
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/c++/4.9"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/x86_64-linux-gnu/c++/4.9"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/clang_3p6_repo/usr/include/c++/4.9/backward"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include/x86_64-linux-gnu/c++/7.4.0"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include/c++/7.4.0/backward"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/clang_6p0_repo/usr/include"
 
   # TODO(bazel-team): In theory, the path here ought to exactly match the path
   # used by gcc. That works because bazel currently doesn't track files at
   # absolute locations and has no remote execution, yet. However, this will need
   # to be fixed, maybe with auto-detection?
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/include/c++/4.9'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/include/x86_64-linux-gnu/c++/4.9'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/include/c++/4.9/backward'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/local/include'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/lib/llvm-3.6/lib/clang/3.6.2/include'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/include/x86_64-linux-gnu'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/include'
-  cxx_builtin_include_directory: '%package(@clang_3p6_repo//usr)%/lib/clang/3.6.2/include'
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu/c++/7.4.0"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/c++/7.4.0/backward"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/local/include"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/lib/llvm-6.0/lib/clang/6.0.0/include"
+  cxx_builtin_include_directory: "%package(@clang_6p0_repo//usr)%/include/x86_64-linux-gnu"
+  cxx_flag: "-isystem"
+  cxx_flag: "external/clang_6p0_repo/usr/include"
 
   linker_flag: "-nodefaultlibs"
-  linker_flag: "--sysroot=external/clang_3p6_repo/"
+  linker_flag: "--sysroot=external/clang_6p0_repo/"
   linker_flag: "-lstdc++"
   linker_flag: "-lc"
   linker_flag: "-lgcc"
   linker_flag: "-lgcc_s"
-  linker_flag: "-Bexternal/clang_3p6_repo/usr/bin/"
-  linker_flag: "-Ltools/cpp/clang_3p6/clang_more_libs"
-  linker_flag: "-Lexternal/clang_3p6/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_3p6/usr/lib/x86_64-linux-gnu"
-  linker_flag: "-Lexternal/clang_3p6/usr/lib/gcc/x86_64-linux-gnu"
+  linker_flag: "-Bexternal/clang_6p0_repo/usr/bin/"
+  linker_flag: "-Ltools/cpp/clang_6p0/clang_more_libs"
+  linker_flag: "-Lexternal/clang_6p0_repo/lib/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/x86_64-linux-gnu"
+  linker_flag: "-Lexternal/clang_6p0_repo/usr/lib/gcc/x86_64-linux-gnu"
 
   feature {
     name: "opt"
@@ -215,7 +215,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
       }
     }
     flag_set {
@@ -256,6 +256,17 @@
   unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIME__=\"redacted\""
 
+  # C++17 libraries that tend to cause issues in some libraries that we include.
+  unfiltered_cxx_flag: "-Wno-varargs"
+  unfiltered_cxx_flag: "-Wno-null-pointer-arithmetic"
+  # The mismatched-new-delete seems to be a bit overly strict currently
+  # and errors on:
+  # char *p = new char;
+  # delete p;
+  # p = new char[100];
+  # delete[] p;
+  unfiltered_cxx_flag: "-Wno-mismatched-new-delete"
+
   # Security hardening on by default.
   # Conservative choice; -D_FORTIFY_SOURCE=2 may be unsafe in some cases.
   # We need to undef it before redefining it as some distributions now have
@@ -539,12 +550,12 @@
       action: "lto-backend"
       action: "clif-match"
       flag_group {
-        flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi"
+        flag: "--sysroot=external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi"
         flag: "-nostdinc"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include-fixed"
       }
     }
 
@@ -566,11 +577,11 @@
       action: "c++-module-codegen"
       flag_group {
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/arm-frc2020-linux-gnueabi"
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/backward"
       }
     }
 
@@ -586,7 +597,7 @@
       action: "clif-match"
       flag_group {
         flag: "-isystem"
-        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2019-linux-gnueabi/usr/include"
+        flag: "external/arm_frc_linux_gnueabi_repo/arm-frc2020-linux-gnueabi/usr/include"
 
         flag: "-mfpu=neon"
 
@@ -623,6 +634,7 @@
         flag: "-Wformat=2"
         flag: "-Werror"
         flag: "-Wunused-local-typedefs"
+        flag: "-Wno-cast-align"
 
         # Keep stack frames for debugging, even in opt mode.
         flag: "-fno-omit-frame-pointer"
@@ -674,10 +686,10 @@
   # absolute locations and has no remote execution, yet. However, this will need
   # to be fixed, maybe with auto-detection?
 
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/lib/gcc/arm-frc2019-linux-gnueabi/6.3.0/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/arm-frc2019-linux-gnueabi)%"
-  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2019-linux-gnueabi/usr/include/c++/6.3.0/backward)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/lib/gcc/arm-frc2020-linux-gnueabi/7.3.0/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/arm-frc2020-linux-gnueabi)%"
+  cxx_builtin_include_directory: "%package(@arm_frc_linux_gnueabi_repo//arm-frc2020-linux-gnueabi/usr/include/c++/7.3.0/backward)%"
 
   linker_flag: "-lstdc++"
   linker_flag: "-Ltools/cpp/arm-frc-linux-gnueabi/libs"
@@ -845,7 +857,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
         flag: "-fno-sized-deallocation"
       }
     }
@@ -904,7 +916,7 @@
 }
 
 toolchain {
-  abi_version: "clang_3.6"
+  abi_version: "clang_6.0"
   abi_libc_version: "glibc_2.19"
   builtin_sysroot: ""
   compiler: "clang"
@@ -941,49 +953,51 @@
 
   compiler_flag: "-target"
   compiler_flag: "armv7a-arm-linux-gnueabif"
-  compiler_flag: "--sysroot=external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc"
+  compiler_flag: "--sysroot=external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc"
   compiler_flag: "-mfloat-abi=hard"
   compiler_flag: "-mfpu=vfpv3-d16"
 
   compiler_flag: "-nostdinc"
   compiler_flag: "-isystem"
-  compiler_flag: "/usr/lib/clang/3.6/include"
+  compiler_flag: "/usr/lib/clang/6.0/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/lib/gcc/arm-linux-gnueabihf/4.9.3/include"
+  compiler_flag: "external/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1/include"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/usr/include"
+  compiler_flag: "external/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed"
   compiler_flag: "-isystem"
-  compiler_flag: "external/linaro_linux_gcc_4_9_repo/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/include/c++/4.9.3/arm-linux-gnueabihf"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/include/c++/4.9.3"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/include/c++/4.9.3/arm-linux-gnueabihf"
-  cxx_flag: "-isystem"
-  cxx_flag: "external/linaro_linux_gcc_4_9_repo/include/c++/4.9.3"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/include/c++/7.4.1/arm-linux-gnueabihf"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/include/c++/7.4.1"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/include/c++/7.4.1/arm-linux-gnueabihf"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/include/c++/7.4.1"
+  compiler_flag: "-isystem"
+  compiler_flag: "external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/usr/include"
 
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/usr/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/usr/lib/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//include)%/c++/4.9.3"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//lib/gcc/arm-linux-gnueabihf/4.9.3/include-fixed)%"
-  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_4_9_repo//arm-linux-gnueabihf/include)%/c++/4.9.3"
-  cxx_builtin_include_directory: '/usr/lib/clang/3.6/include'
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/usr/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/usr/lib/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//include)%/c++/7.4.1"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/libc/lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//lib/gcc/arm-linux-gnueabihf/7.4.1/include)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//lib/gcc/arm-linux-gnueabihf/7.4.1/include-fixed)%"
+  cxx_builtin_include_directory: "%package(@linaro_linux_gcc_repo//arm-linux-gnueabihf/include)%/c++/7.4.1"
+  cxx_builtin_include_directory: '/usr/lib/clang/6.0/include'
 
   linker_flag: "-target"
   linker_flag: "armv7a-arm-linux-gnueabif"
-  linker_flag: "--sysroot=external/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc"
+  linker_flag: "--sysroot=external/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc"
   linker_flag: "-lstdc++"
   linker_flag: "-Ltools/cpp/linaro_linux_gcc/clang_more_libs"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/lib"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/lib"
-  linker_flag: "-Lexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/libc/usr/lib"
-  linker_flag: "-Bexternal/linaro_linux_gcc_4_9_repo/arm-linux-gnueabihf/bin"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/libc/usr/lib"
+  linker_flag: "-Lexternal/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1"
+  linker_flag: "-Bexternal/linaro_linux_gcc_repo/lib/gcc/arm-linux-gnueabihf/7.4.1"
+  linker_flag: "-Bexternal/linaro_linux_gcc_repo/arm-linux-gnueabihf/bin"
   linker_flag: "-Wl,--dynamic-linker=/lib/ld-linux-armhf.so.3"
 
   feature {
@@ -1053,7 +1067,7 @@
       action: "c++-header-preprocessing"
       action: "c++-module-compile"
       flag_group {
-        flag: "-std=gnu++1y"
+        flag: "-std=gnu++1z"
       }
     }
     flag_set {
@@ -1088,6 +1102,9 @@
   # Make C++ compilation deterministic. Use linkstamping instead of these
   # compiler symbols.
   unfiltered_cxx_flag: "-Wno-builtin-macro-redefined"
+  unfiltered_cxx_flag: "-Wno-mismatched-new-delete"
+  unfiltered_cxx_flag: "-Wno-null-pointer-arithmetic"
+  unfiltered_cxx_flag: "-Wno-varargs"
   unfiltered_cxx_flag: "-D__DATE__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIMESTAMP__=\"redacted\""
   unfiltered_cxx_flag: "-D__TIME__=\"redacted\""