| Index: build/common.gypi
 | 
| diff --git a/build/common.gypi b/build/common.gypi
 | 
| index c5a8facb9e1122e7fce09a5cdfaca06c486d7047..a4062488aeb1a10bd828b3844bb49e5d0722888d 100644
 | 
| --- a/build/common.gypi
 | 
| +++ b/build/common.gypi
 | 
| @@ -173,6 +173,7 @@
 | 
|  
 | 
|          # The system root for cross-compiles. Default: none.
 | 
|          'sysroot%': '',
 | 
| +        'use_sysroot%': 0,
 | 
|          'chroot_cmd%': '',
 | 
|  
 | 
|          # The system libdir used for this ABI.
 | 
| @@ -416,9 +417,6 @@
 | 
|        # See https://code.google.com/p/sawbuck/wiki/SyzyASanHowTo
 | 
|        'syzyasan%': 0,
 | 
|  
 | 
| -      # Enable crash reporting via Kasko.
 | 
| -      'kasko%': 0,
 | 
| -
 | 
|        # Enable building with LSan (Clang's -fsanitize=leak option).
 | 
|        # -fsanitize=leak only works with clang, but lsan=1 implies clang=1
 | 
|        # See https://sites.google.com/a/chromium.org/dev/developers/testing/leaksanitizer
 | 
| @@ -941,7 +939,7 @@
 | 
|            'sysroot%': '<!(cd <(DEPTH) && pwd -P)/chrome/installer/linux/debian_wheezy_arm-sysroot',
 | 
|          }], # OS=="linux" and target_arch=="arm" and chromeos==0
 | 
|  
 | 
| -        ['OS=="linux" and branding=="Chrome" and buildtype=="Official" and chromeos==0', {
 | 
| +        ['OS=="linux" and ((branding=="Chrome" and buildtype=="Official" and chromeos==0) or use_sysroot==1)' , {
 | 
|            'conditions': [
 | 
|              ['target_arch=="x64"', {
 | 
|                'sysroot%': '<!(cd <(DEPTH) && pwd -P)/chrome/installer/linux/debian_wheezy_amd64-sysroot',
 | 
| @@ -1011,6 +1009,15 @@
 | 
|          }, {
 | 
|            'sas_dll_path%': '<(DEPTH)/third_party/platformsdk_win7/files/redist/x86',
 | 
|          }],
 | 
| +
 | 
| +        # Enable crash reporting via Kasko.
 | 
| +        ['OS=="win" and target_arch=="ia32"', {
 | 
| +          # TODO(erikwright): This should be disabled after a single ship on Canary channel.
 | 
| +          'kasko%': 1,
 | 
| +        }, {
 | 
| +          'kasko%': 0,
 | 
| +        }],
 | 
| +
 | 
|        ],
 | 
|  
 | 
|        # Setting this to '0' will cause V8's startup snapshot to be
 | 
| @@ -1688,7 +1695,7 @@
 | 
|            'android_ndk_absolute_root%': '<(android_ndk_absolute_root)',
 | 
|            'android_sdk_root%': '<(android_sdk_root)',
 | 
|            'android_sdk_version%': '<(android_sdk_version)',
 | 
| -          'android_stlport_root': '<(android_ndk_root)/sources/cxx-stl/stlport',
 | 
| +          'android_libcpp_root': '<(android_ndk_root)/sources/cxx-stl/llvm-libc++',
 | 
|            'host_os%': '<(host_os)',
 | 
|  
 | 
|            'android_sdk%': '<(android_sdk_root)/platforms/android-<(android_sdk_version)',
 | 
| @@ -1764,9 +1771,9 @@
 | 
|          'android_sdk%': '<(android_sdk)',
 | 
|          'android_sdk_jar%': '<(android_sdk)/android.jar',
 | 
|  
 | 
| -        'android_stlport_root': '<(android_stlport_root)',
 | 
| -        'android_stlport_include': '<(android_stlport_root)/stlport',
 | 
| -        'android_stlport_libs_dir': '<(android_stlport_root)/libs/<(android_app_abi)',
 | 
| +        'android_libcpp_root': '<(android_libcpp_root)',
 | 
| +        'android_libcpp_include': '<(android_libcpp_root)/libcxx/include',
 | 
| +        'android_libcpp_libs_dir': '<(android_libcpp_root)/libs/<(android_app_abi)',
 | 
|          'host_os%': '<(host_os)',
 | 
|  
 | 
|          # Location of the "objcopy" binary, used by both gyp and scripts.
 | 
| @@ -1929,9 +1936,14 @@
 | 
|            },{
 | 
|              'winsdk_arch%': '<(target_arch)',
 | 
|            }],
 | 
| -          ['component=="shared_library"', {
 | 
| +          ['component=="shared_library" or MSVS_VERSION == "2015"', {
 | 
| +            # TODO(scottmg): The allocator shimming doesn't work on the 2015 CRT
 | 
| +            # and we are hoping to be able to remove it if an additional feature
 | 
| +            # lands in the 2015 CRT API. For now, don't shim and revisit once
 | 
| +            # VS2015 is RTM: http://crbug.com/481611.
 | 
|              'win_use_allocator_shim%': 0,
 | 
| -          },{
 | 
| +          }],
 | 
| +          ['component=="static_library"', {
 | 
|              # Turn on multiple dll by default on Windows when in static_library.
 | 
|              'chrome_multiple_dll%': 1,
 | 
|            }],
 | 
| @@ -2168,17 +2180,23 @@
 | 
|                  ],
 | 
|                },
 | 
|                'clang_dynlib_flags%': '-Xclang -load -Xclang <(clang_lib_path) ',
 | 
| +              'clang_plugin_args%': '',
 | 
|              }, { # OS == "win"
 | 
|                # On Windows, the plugin is built directly into clang, so there's
 | 
|                # no need to load it dynamically.
 | 
|                'clang_dynlib_flags%': '',
 | 
| +
 | 
| +              # Don't error on plugin warnings on Windows until pre-existing warnings
 | 
| +              # are cleaned up.  https://crbug.com/467287
 | 
| +              'clang_plugin_args%': '-Xclang -plugin-arg-find-bad-constructs -Xclang warn-only',
 | 
|              }]
 | 
|            ],
 | 
|          },
 | 
|          # If you change these, also change build/config/clang/BUILD.gn.
 | 
|          'clang_chrome_plugins_flags%':
 | 
|            '<(clang_dynlib_flags)'
 | 
| -          '-Xclang -add-plugin -Xclang find-bad-constructs',
 | 
| +          '-Xclang -add-plugin -Xclang find-bad-constructs '
 | 
| +          '<(clang_plugin_args)',
 | 
|        }],
 | 
|        ['asan==1 or msan==1 or lsan==1 or tsan==1', {
 | 
|          'clang%': 1,
 | 
| @@ -4085,9 +4103,6 @@
 | 
|                      'cflags!': [
 | 
|                         '-fstack-protector',  # stack protector is always enabled on arm64.
 | 
|                      ],
 | 
| -                    'ldflags': [
 | 
| -                      '-fuse-ld=gold',
 | 
| -                    ],
 | 
|                    }],
 | 
|                  ],
 | 
|                }],
 | 
| @@ -4630,9 +4645,9 @@
 | 
|            # Figure this out early since it needs symbols from libgcc.a, so it
 | 
|            # has to be before that in the set of libraries.
 | 
|            ['component=="shared_library"', {
 | 
| -              'android_stlport_library': 'stlport_shared',
 | 
| +              'android_libcpp_library': 'c++_shared',
 | 
|            }, {
 | 
| -              'android_stlport_library': 'stlport_static',
 | 
| +              'android_libcpp_library': 'c++_static',
 | 
|            }],
 | 
|          ],
 | 
|  
 | 
| @@ -4712,17 +4727,17 @@
 | 
|                '-finline-limit=64',
 | 
|                '<@(release_extra_cflags)',
 | 
|                '--sysroot=<(android_ndk_sysroot)',
 | 
| -              # NOTE: The stlport header include paths below are specified in
 | 
| +              # NOTE: The libc++ header include paths below are specified in
 | 
|                # cflags rather than include_dirs because they need to come
 | 
|                # after include_dirs.
 | 
|                # The include ordering here is important; change with caution.
 | 
| -              '-isystem<(android_stlport_include)',
 | 
| +              '-isystem<(android_libcpp_include)',
 | 
| +              '-isystem<(android_ndk_root)/sources/cxx-stl/llvm-libc++abi/libcxxabi/include',
 | 
| +              '-isystem<(android_ndk_root)/sources/android/support/include',
 | 
|              ],
 | 
|              'defines': [
 | 
|                'ANDROID',
 | 
|                '__GNU_SOURCE=1',  # Necessary for clone()
 | 
| -              'USE_STLPORT=1',
 | 
| -              '_STLP_USE_PTR_SPECIALIZATIONS=1',
 | 
|                'CHROME_BUILD_ID="<(chrome_build_id)"',
 | 
|                # The NDK has these things, but doesn't define the constants
 | 
|                # to say that it does. Define them here instead.
 | 
| @@ -4735,11 +4750,11 @@
 | 
|                '-Wl,--no-undefined',
 | 
|                '--sysroot=<(android_ndk_sysroot)',
 | 
|                '-nostdlib',
 | 
| -              '-L<(android_stlport_libs_dir)',
 | 
| -              # Don't allow visible symbols from libgcc or stlport to be
 | 
| +              '-L<(android_libcpp_libs_dir)',
 | 
| +              # Don't allow visible symbols from libgcc or libc++ to be
 | 
|                # re-exported.
 | 
|                '-Wl,--exclude-libs=libgcc.a',
 | 
| -              '-Wl,--exclude-libs=libstlport_static.a',
 | 
| +              '-Wl,--exclude-libs=libc++_static.a',
 | 
|                # Don't allow visible symbols from libraries that contain
 | 
|                # assembly code with symbols that aren't hidden properly.
 | 
|                # http://crbug.com/448386
 | 
| @@ -4752,7 +4767,8 @@
 | 
|                '-Wl,--exclude-libs=libvpx.a',
 | 
|              ],
 | 
|              'libraries': [
 | 
| -              '-l<(android_stlport_library)',
 | 
| +              '-l<(android_libcpp_library)',
 | 
| +              '-latomic',
 | 
|                # Manually link the libgcc.a that the cross compiler uses.
 | 
|                '<!(<(android_toolchain)/*-gcc -print-libgcc-file-name)',
 | 
|                '-lc',
 | 
| @@ -4772,6 +4788,11 @@
 | 
|                  ],
 | 
|                }],
 | 
|                ['clang==1', {
 | 
| +                'libraries!': [
 | 
| +                  # Clang with libc++ does not require an explicit atomic
 | 
| +                  # library reference.
 | 
| +                  '-latomic',
 | 
| +                ],
 | 
|                  'cflags': [
 | 
|                    # Work around incompatibilities between bionic and clang
 | 
|                    # headers.
 | 
| @@ -5119,6 +5140,22 @@
 | 
|              }],
 | 
|            ],
 | 
|          },
 | 
| +        'configurations': {
 | 
| +          'Release_Base': {
 | 
| +            'conditions': [
 | 
| +              ['branding=="Chrome" and buildtype=="Official"', {
 | 
| +                'xcode_settings': {
 | 
| +                  'OTHER_CFLAGS': [
 | 
| +                    # The Google Chrome Framework dSYM generated by dsymutil has
 | 
| +                    # grown larger than 4GB, which dsymutil can't handle. Reduce
 | 
| +                    # the amount of debug symbols.
 | 
| +                    '-fno-standalone-debug',  # See http://crbug.com/479841
 | 
| +                  ]
 | 
| +                },
 | 
| +              }],
 | 
| +            ],
 | 
| +          },  # configuration "Release"
 | 
| +        },  # configurations
 | 
|          'xcode_settings': {
 | 
|            'GCC_DYNAMIC_NO_PIC': 'NO',               # No -mdynamic-no-pic
 | 
|                                                      # (Equivalent to -fPIC)
 | 
| @@ -5136,16 +5173,6 @@
 | 
|              # specified or not.
 | 
|              '-fno-strict-aliasing',  # See http://crbug.com/32204.
 | 
|            ],
 | 
| -          'conditions': [
 | 
| -            ['branding=="Chrome" and buildtype=="Official"', {
 | 
| -              'OTHER_CFLAGS': [
 | 
| -                # The Google Chrome Framework dSYM generated by dsymutil has
 | 
| -                # grown larger than 4GB, which dsymutil can't handle. Reduce
 | 
| -                # the amount of debug symbols.
 | 
| -                '-gline-tables-only',  # See http://crbug.com/479841
 | 
| -              ]
 | 
| -            }],
 | 
| -          ],
 | 
|          },
 | 
|          'target_conditions': [
 | 
|            ['_type=="executable"', {
 | 
| @@ -5769,13 +5796,20 @@
 | 
|                      'AdditionalOptions': [
 | 
|                        '-fsanitize-coverage=<(sanitizer_coverage)',
 | 
|                      ],
 | 
| -                    'defines': [
 | 
| -                      'SANITIZER_COVERAGE',
 | 
| -                    ],
 | 
|                    },
 | 
|                  }],
 | 
|                ],
 | 
|              },
 | 
| +            'conditions': [
 | 
| +              ['sanitizer_coverage!=0', {
 | 
| +                # TODO(asan/win): Move this down into the general
 | 
| +                # win-target_defaults section once the 64-bit asan runtime
 | 
| +                # exists.  See crbug.com/345874.
 | 
| +                'defines': [
 | 
| +                  'SANITIZER_COVERAGE',
 | 
| +                ],
 | 
| +              }],
 | 
| +            ],
 | 
|            },
 | 
|            'x64_Base': {
 | 
|              'msvs_settings': {
 | 
| 
 |