| Index: build/config/compiler/BUILD.gn
|
| diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
|
| index 778a27a380d10ce20a5530e98368d93c8fecc3a4..5bc242f631f51073eb275e8bf9a7a5b21da498e5 100644
|
| --- a/build/config/compiler/BUILD.gn
|
| +++ b/build/config/compiler/BUILD.gn
|
| @@ -114,6 +114,9 @@ config("compiler") {
|
| # so we do so here. Normal function visibility is controlled by
|
| # //build/config/gcc:symbol_visibility_hidden.
|
| "-fvisibility-inlines-hidden",
|
| +
|
| + # We need the frame pointer for CPU and heap profiling.
|
| + "-fno-omit-frame-pointer",
|
| ]
|
| cflags_cc += common_flags
|
| cflags_objcc += common_flags
|
| @@ -128,7 +131,6 @@ config("compiler") {
|
| # MemorySanitizer
|
| if (using_sanitizer) {
|
| cflags += [
|
| - "-fno-omit-frame-pointer",
|
| "-gline-tables-only",
|
| ]
|
| }
|
| @@ -202,7 +204,7 @@ config("compiler") {
|
| # ----------------------------------
|
| if (is_mac) {
|
| # These flags are shared between the C compiler and linker.
|
| - common_mac_flags = []
|
| + common_mac_flags = [ "-fno-exceptions" ]
|
|
|
| # CPU architecture.
|
| if (current_cpu == "x64") {
|
| @@ -243,16 +245,21 @@ config("compiler") {
|
| cflags += [
|
| "-m64",
|
| "-march=x86-64",
|
| + "-msse2",
|
| ]
|
| ldflags += [ "-m64" ]
|
| } else if (current_cpu == "x86") {
|
| - cflags += [ "-m32" ]
|
| + cflags += [
|
| + "-m32",
|
| + "-msse2",
|
| + "-mfpmath=sse",
|
| + ]
|
| ldflags += [ "-m32" ]
|
| if (is_clang) {
|
| cflags += [
|
| # Else building libyuv gives clang's register allocator issues,
|
| # see llvm.org/PR15798 / crbug.com/233709
|
| - "-momit-leaf-frame-pointer",
|
| + "-mno-omit-leaf-frame-pointer",
|
|
|
| # Align the stack on 16-byte boundaries, http://crbug.com/418554.
|
| "-mstack-alignment=16",
|
| @@ -290,6 +297,15 @@ config("compiler") {
|
| ]
|
| }
|
| } else if (current_cpu == "mipsel") {
|
| + # We have to explicitly request exceptions to get good heap profiles from
|
| + # tcmalloc.
|
| + if (is_debug || is_release) {
|
| + cflags += [
|
| + "-fexceptions",
|
| + "-funwind-tables"
|
| + ]
|
| + }
|
| +
|
| if (mips_arch_variant == "r6") {
|
| cflags += [
|
| "-mips32r6",
|
| @@ -339,7 +355,9 @@ config("compiler") {
|
| }
|
| }
|
|
|
| - cflags += [ "-funwind-tables" ]
|
| + if (current_cpu != "mipsel") {
|
| + cflags += [ "-fno-exceptions" ]
|
| + }
|
| }
|
|
|
| # Linux/Android common flags setup.
|
| @@ -897,7 +915,11 @@ config("no_optimize") {
|
| ]
|
| ldflags = common_optimize_on_ldflags
|
| } else {
|
| - cflags = [ "-O1" ]
|
| + cflags = [
|
| + "-O1",
|
| + "-fdata-sections",
|
| + "-ffunction-sections",
|
| + ]
|
| }
|
| }
|
|
|
|
|