From 692952dfd06083ca6eb669217474c3087f48c099 Mon Sep 17 00:00:00 2001 From: Vyacheslav Egorov Date: Tue, 15 Jan 2019 16:09:46 +0100 Subject: [PATCH] Pass operator_new_alignment value through gn script into GN args. (flutter/engine#7031) Background: Some allocators (tcmalloc) don't provide alignment guarantees that match clang's default expectations, which causes crashes when using clang compiled binary with such allocators. For example clang can produce movaps instructions to initialize newly allocated object - which would crash if result of ::operator new() is not 16 bytes aligned. --- DEPS | 2 +- engine/src/flutter/tools/gn | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/DEPS b/DEPS index ec64fb91f0..bb79404107 100644 --- a/DEPS +++ b/DEPS @@ -116,7 +116,7 @@ allowed_hosts = [ ] deps = { - 'src': 'https://github.com/flutter/buildroot.git' + '@' + '67befc4acace09d636db2f1f23e47719fa7e8795', + 'src': 'https://github.com/flutter/buildroot.git' + '@' + '4a37279db248051cd25bbc93526c3001bdb8d785', # Fuchsia compatibility # diff --git a/engine/src/flutter/tools/gn b/engine/src/flutter/tools/gn index 7bc0fafca8..93d6de9489 100755 --- a/engine/src/flutter/tools/gn +++ b/engine/src/flutter/tools/gn @@ -93,6 +93,9 @@ def to_gn_args(args): gn_args['embedder_for_target'] = args.embedder_for_target + if args.operator_new_alignment is not None: + gn_args['operator_new_alignment'] = args.operator_new_alignment + enable_lto = args.lto if args.unoptimized: # There is no point in enabling LTO in unoptimized builds. @@ -252,6 +255,7 @@ def parse_args(args): parser.add_argument('--target-toolchain', type=str) parser.add_argument('--target-triple', type=str) parser.add_argument('--toolchain-prefix', type=str) + parser.add_argument('--operator-new-alignment', dest='operator_new_alignment', type=str, default=None) parser.add_argument('--enable-vulkan', action='store_true', default=False)