| Index: build/config/compiler/BUILD.gn
 | 
| diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
 | 
| index 42dc584116663456fa212ae6c3b7d4d4ce4704db..c2171549fea963a3ecdfb6f1286e04a20295bb5b 100644
 | 
| --- a/build/config/compiler/BUILD.gn
 | 
| +++ b/build/config/compiler/BUILD.gn
 | 
| @@ -165,7 +165,7 @@ config("compiler") {
 | 
|      defines += [ "CR_CLANG_REVISION=" +
 | 
|                   exec_script("//tools/clang/scripts/posix-print-revision.py",
 | 
|                               [],
 | 
| -                             "value") ]
 | 
| +                             "trim string") ]
 | 
|    }
 | 
|  
 | 
|    # Mac-specific compiler flags setup.
 | 
| @@ -194,16 +194,11 @@ config("compiler") {
 | 
|      cflags_objcc = [ "-fobjc-call-cxx-cdtors" ]
 | 
|  
 | 
|      cflags_c += [ "-std=c99" ]
 | 
| -    cflags_cc += [ "-std=gnu++11" ]
 | 
|  
 | 
|      ldflags += common_mac_flags
 | 
|    } else if (is_posix) {
 | 
|      # Non-Mac Posix compiler flags setup.
 | 
|      # -----------------------------------
 | 
| -    if (gcc_version >= 48) {
 | 
| -      cflags_cc += [ "-std=gnu++11" ]
 | 
| -    }
 | 
| -
 | 
|      if (enable_profiling && !is_debug) {
 | 
|        # The GYP build spams this define into every compilation unit, as we do
 | 
|        # here, but it only appears to be used in base and a couple other places.
 | 
| @@ -246,98 +241,93 @@ config("compiler") {
 | 
|          ]
 | 
|        }
 | 
|      } else if (current_cpu == "arm") {
 | 
| -      # Don't set the compiler flags for the WebView build. These will come
 | 
| -      # from the Android build system.
 | 
| -      if (!is_android_webview_build) {
 | 
| +      cflags += [
 | 
| +        "-march=$arm_arch",
 | 
| +        "-mfloat-abi=$arm_float_abi",
 | 
| +      ]
 | 
| +      if (arm_tune != "") {
 | 
| +        cflags += [ "-mtune=$arm_tune" ]
 | 
| +      }
 | 
| +      if (arm_use_thumb) {
 | 
| +        cflags += [ "-mthumb" ]
 | 
| +        if (is_android && !is_clang) {  # Clang doesn't support this option.
 | 
| +          cflags += [ "-mthumb-interwork" ]
 | 
| +        }
 | 
| +      }
 | 
| +      if (!is_clang) {
 | 
| +        # Clang doesn't support these flags.
 | 
|          cflags += [
 | 
| -          "-march=$arm_arch",
 | 
| -          "-mfloat-abi=$arm_float_abi",
 | 
| +          # The tree-sra optimization (scalar replacement for
 | 
| +          # aggregates enabling subsequent optimizations) leads to
 | 
| +          # invalid code generation when using the Android NDK's
 | 
| +          # compiler (r5-r7). This can be verified using
 | 
| +          # webkit_unit_tests' WTF.Checked_int8_t test.
 | 
| +          "-fno-tree-sra",
 | 
| +
 | 
| +          # The following option is disabled to improve binary
 | 
| +          # size and performance in gcc 4.9.
 | 
| +          "-fno-caller-saves",
 | 
|          ]
 | 
| -        if (arm_tune != "") {
 | 
| -          cflags += [ "-mtune=$arm_tune" ]
 | 
| -        }
 | 
| -        if (arm_use_thumb) {
 | 
| -          cflags += [ "-mthumb" ]
 | 
| -          if (is_android && !is_clang) {  # Clang doesn't support this option.
 | 
| -            cflags += [ "-mthumb-interwork" ]
 | 
| -          }
 | 
| -        }
 | 
| -        if (!is_clang) {
 | 
| -          # Clang doesn't support these flags.
 | 
| -          cflags += [
 | 
| -            # The tree-sra optimization (scalar replacement for
 | 
| -            # aggregates enabling subsequent optimizations) leads to
 | 
| -            # invalid code generation when using the Android NDK's
 | 
| -            # compiler (r5-r7). This can be verified using
 | 
| -            # webkit_unit_tests' WTF.Checked_int8_t test.
 | 
| -            "-fno-tree-sra",
 | 
| -
 | 
| -            # The following option is disabled to improve binary
 | 
| -            # size and performance in gcc 4.9.
 | 
| -            "-fno-caller-saves",
 | 
| -          ]
 | 
| -        }
 | 
|        }
 | 
|      } else if (current_cpu == "mipsel") {
 | 
| -      # Don't set the compiler flags for the WebView build. These will come
 | 
| -      # from the Android build system.
 | 
| -      if (!is_android_webview_build) {
 | 
| -        if (mips_arch_variant == "r6") {
 | 
| -          cflags += [
 | 
| +      if (mips_arch_variant == "r6") {
 | 
| +        cflags += [
 | 
| +          "-mips32r6",
 | 
| +          "-Wa,-mips32r6",
 | 
| +        ]
 | 
| +        if (is_android) {
 | 
| +          ldflags += [
 | 
|              "-mips32r6",
 | 
| -            "-Wa,-mips32r6",
 | 
| -          ]
 | 
| -          if (is_android) {
 | 
| -            ldflags += [
 | 
| -              "-mips32r6",
 | 
| -              "-Wl,-melf32ltsmip",
 | 
| -            ]
 | 
| -          }
 | 
| -        } else if (mips_arch_variant == "r2") {
 | 
| -          cflags += [
 | 
| -            "-mips32r2",
 | 
| -            "-Wa,-mips32r2",
 | 
| -          ]
 | 
| -          if (mips_float_abi == "hard" && mips_fpu_mode != "") {
 | 
| -            cflags += [ "-m$mips_fpu_mode" ]
 | 
| -          }
 | 
| -        } else if (mips_arch_variant == "r1") {
 | 
| -          cflags += [
 | 
| -            "-mips32",
 | 
| -            "-Wa,-mips32",
 | 
| +            "-Wl,-melf32ltsmip",
 | 
|            ]
 | 
|          }
 | 
| -
 | 
| -        if (mips_dsp_rev == 1) {
 | 
| -          cflags += [ "-mdsp" ]
 | 
| -        } else if (mips_dsp_rev == 2) {
 | 
| -          cflags += [ "-mdspr2" ]
 | 
| +      } else if (mips_arch_variant == "r2") {
 | 
| +        cflags += [
 | 
| +          "-mips32r2",
 | 
| +          "-Wa,-mips32r2",
 | 
| +        ]
 | 
| +        if (mips_float_abi == "hard" && mips_fpu_mode != "") {
 | 
| +          cflags += [ "-m$mips_fpu_mode" ]
 | 
|          }
 | 
| +      } else if (mips_arch_variant == "r1") {
 | 
| +        cflags += [
 | 
| +          "-mips32",
 | 
| +          "-Wa,-mips32",
 | 
| +        ]
 | 
| +      }
 | 
|  
 | 
| -        cflags += [ "-m${mips_float_abi}-float" ]
 | 
| +      if (mips_dsp_rev == 1) {
 | 
| +        cflags += [ "-mdsp" ]
 | 
| +      } else if (mips_dsp_rev == 2) {
 | 
| +        cflags += [ "-mdspr2" ]
 | 
|        }
 | 
| +
 | 
| +      cflags += [ "-m${mips_float_abi}-float" ]
 | 
|      } else if (current_cpu == "mips64el") {
 | 
| -      # Don't set the compiler flags for the WebView build. These will come
 | 
| -      # from the Android build system.
 | 
| -      if (!is_android_webview_build) {
 | 
| -        if (mips_arch_variant == "r6") {
 | 
| -          cflags += [
 | 
| -            "-mips64r6",
 | 
| -            "-Wa,-mips64r6",
 | 
| -          ]
 | 
| -          ldflags += [ "-mips64r6" ]
 | 
| -        } else if (mips_arch_variant == "r2") {
 | 
| -          cflags += [
 | 
| -            "-mips64r2",
 | 
| -            "-Wa,-mips64r2",
 | 
| -          ]
 | 
| -          ldflags += [ "-mips64r2" ]
 | 
| -        }
 | 
| +      if (mips_arch_variant == "r6") {
 | 
| +        cflags += [
 | 
| +          "-mips64r6",
 | 
| +          "-Wa,-mips64r6",
 | 
| +        ]
 | 
| +        ldflags += [ "-mips64r6" ]
 | 
| +      } else if (mips_arch_variant == "r2") {
 | 
| +        cflags += [
 | 
| +          "-mips64r2",
 | 
| +          "-Wa,-mips64r2",
 | 
| +        ]
 | 
| +        ldflags += [ "-mips64r2" ]
 | 
|        }
 | 
|      }
 | 
|  
 | 
|      defines += [ "_FILE_OFFSET_BITS=64" ]
 | 
|  
 | 
| +    if (!is_android) {
 | 
| +      defines += [
 | 
| +        "_LARGEFILE_SOURCE",
 | 
| +        "_LARGEFILE64_SOURCE",
 | 
| +      ]
 | 
| +    }
 | 
| +
 | 
|      # Omit unwind support in official builds to save space. We can use breakpad
 | 
|      # for these builds.
 | 
|      if (is_chrome_branded && is_official_build) {
 | 
| @@ -418,7 +408,18 @@ config("compiler") {
 | 
|    # ------------------------------------
 | 
|    if (is_clang) {
 | 
|      cflags += [ "-fcolor-diagnostics" ]
 | 
| +  }
 | 
| +
 | 
| +  # C++11 compiler flags setup.
 | 
| +  # ---------------------------
 | 
| +  if (is_linux || is_android || is_nacl) {
 | 
| +    # gnu++11 instead of c++11 is needed because some code uses typeof() (a
 | 
| +    # GNU extension).
 | 
| +    # TODO(thakis): Eventually switch this to c++11 instead,
 | 
| +    # http://crbug.com/427584
 | 
|      cflags_cc += [ "-std=gnu++11" ]
 | 
| +  } else if (!is_win) {
 | 
| +    cflags_cc += [ "-std=c++11" ]
 | 
|    }
 | 
|  
 | 
|    # Android-specific flags setup.
 | 
| @@ -433,15 +434,6 @@ config("compiler") {
 | 
|        # Clang doesn't support these flags.
 | 
|        cflags += [ "-finline-limit=64" ]
 | 
|      }
 | 
| -    if (is_android_webview_build) {
 | 
| -      # Android predefines this as 1; undefine it here so Chromium can redefine
 | 
| -      # it later to be 2 for chromium code and unset for third party code. This
 | 
| -      # works because cflags are added before defines.
 | 
| -      # TODO(brettw) the above comment seems incorrect. We specify defines
 | 
| -      # before cflags on our compiler command lines.
 | 
| -      cflags += [ "-U_FORTIFY_SOURCE" ]
 | 
| -    }
 | 
| -
 | 
|      if (is_asan) {
 | 
|        # Android build relies on -Wl,--gc-sections removing unreachable code.
 | 
|        # ASan instrumentation for globals inhibits this and results in a library
 | 
| @@ -451,11 +443,10 @@ config("compiler") {
 | 
|      }
 | 
|  
 | 
|      defines += [ "ANDROID" ]
 | 
| -    if (!is_android_webview_build) {
 | 
| -      # The NDK has these things, but doesn't define the constants
 | 
| -      # to say that it does. Define them here instead.
 | 
| -      defines += [ "HAVE_SYS_UIO_H" ]
 | 
| -    }
 | 
| +
 | 
| +    # The NDK has these things, but doesn't define the constants
 | 
| +    # to say that it does. Define them here instead.
 | 
| +    defines += [ "HAVE_SYS_UIO_H" ]
 | 
|  
 | 
|      # Use gold for Android for most CPU architectures.
 | 
|      if (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm") {
 | 
| @@ -500,7 +491,7 @@ config("compiler") {
 | 
|  }
 | 
|  
 | 
|  config("compiler_arm_fpu") {
 | 
| -  if (current_cpu == "arm" && !is_android_webview_build) {
 | 
| +  if (current_cpu == "arm") {
 | 
|      cflags = [ "-mfpu=$arm_fpu" ]
 | 
|    }
 | 
|  }
 | 
| @@ -573,7 +564,7 @@ config("runtime_library") {
 | 
|  
 | 
|      # TODO(jdduke) Re-enable on mips after resolving linking
 | 
|      # issues with libc++ (crbug.com/456380).
 | 
| -    if (cpu_arch != "mipsel" && cpu_arch != "mips64el") {
 | 
| +    if (current_cpu != "mipsel" && current_cpu != "mips64el") {
 | 
|        ldflags += [ "-Wl,--warn-shared-textrel" ]
 | 
|      }
 | 
|      ldflags += [ "-nostdlib" ]
 | 
| @@ -684,20 +675,6 @@ config("no_chromium_code") {
 | 
|        "-Wno-deprecated",
 | 
|      ]
 | 
|    }
 | 
| -
 | 
| -  if (is_android_webview_build) {
 | 
| -    # There is a class of warning which:
 | 
| -    #  1) Android always enables and also treats as errors
 | 
| -    #  2) Chromium ignores in third party code
 | 
| -    # So we re-enable those warnings when building Android.
 | 
| -    cflags += [
 | 
| -      "-Wno-address",
 | 
| -      "-Wno-format-security",
 | 
| -      "-Wno-return-type",
 | 
| -      "-Wno-sequence-point",
 | 
| -    ]
 | 
| -    cflags_cc += [ "-Wno-non-virtual-dtor" ]
 | 
| -  }
 | 
|  }
 | 
|  
 | 
|  # rtti ------------------------------------------------------------------------
 | 
| @@ -983,7 +960,7 @@ if (is_win) {
 | 
|  
 | 
|      # TODO(jdduke) Re-enable on mips after resolving linking
 | 
|      # issues with libc++ (crbug.com/456380).
 | 
| -    if (cpu_arch != "mipsel" && cpu_arch != "mips64el") {
 | 
| +    if (current_cpu != "mipsel" && current_cpu != "mips64el") {
 | 
|        common_optimize_on_ldflags += [
 | 
|          # Warn in case of text relocations.
 | 
|          "-Wl,--warn-shared-textrel",
 | 
| 
 |