www-client/firefox: Fix pgo/lto builds

Closes: https://bugs.gentoo.org/709440
Closes: https://bugs.gentoo.org/706772
Closes: https://bugs.gentoo.org/709594
Package-Manager: Portage-2.3.88, Repoman-2.3.20
Signed-off-by: Jory Pratt <anarchy@gentoo.org>
This commit is contained in:
Jory Pratt
2020-02-14 07:09:14 -06:00
parent a93ebf5027
commit 2f2ceab0a7
3 changed files with 53 additions and 26 deletions

View File

@@ -1,26 +0,0 @@
# HG changeset patch
# Parent 79ae951dc72ba16a2451c4cde7298aa986376b0c
Fix lto builds of sandbox on linux
diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build
--- a/security/sandbox/linux/moz.build
+++ b/security/sandbox/linux/moz.build
@@ -95,17 +95,17 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc')
CXXFLAGS += ['-Wno-shadow']
SOURCES['../chromium/sandbox/linux/services/syscall_wrappers.cc'].flags += [
'-Wno-empty-body',
]
# gcc lto likes to put the top level asm in syscall.cc in a different partition
# from the function using it which breaks the build. Work around that by
# forcing there to be only one partition.
-for f in CONFIG['OS_CXXFLAGS']:
+for f in CONFIG['MOZ_LTO_CFLAGS']:
if f.startswith('-flto') and CONFIG['CC_TYPE'] != 'clang':
LDFLAGS += ['--param', 'lto-partitions=1']
DEFINES['NS_NO_XPCOM'] = True
DisableStlWrapping()
LOCAL_INCLUDES += ['/security/sandbox/linux']
LOCAL_INCLUDES += ['/security/sandbox/chromium-shim']

View File

@@ -0,0 +1,51 @@
From c193eba68325c07bbf13eb3995842545b7d23695 Mon Sep 17 00:00:00 2001
From:
Date: Thu, 13 Feb 2020 20:29:09 -0600
Subject: [PATCH] Fix pgo/lto builds
---
build/moz.configure/lto-pgo.configure | 4 ++--
security/sandbox/linux/moz.build | 5 ++---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure
index 394c1d8911..1f26a6e565 100644
--- a/build/moz.configure/lto-pgo.configure
+++ b/build/moz.configure/lto-pgo.configure
@@ -70,7 +70,7 @@ set_config('PGO_PROFILE_PATH', pgo_profile_path)
def pgo_flags(compiler, target, profdata):
if compiler.type == 'gcc':
return namespace(
- gen_cflags=['-fprofile-generate'],
+ gen_cflags=['-fprofile-generate', '-DMOZ_PROFILE_INSTRUMENTATION'],
gen_ldflags=['-fprofile-generate'],
use_cflags=['-fprofile-use', '-fprofile-correction',
'-Wcoverage-mismatch'],
@@ -91,7 +91,7 @@ def pgo_flags(compiler, target, profdata):
gen_ldflags = ['-fprofile-generate']
return namespace(
- gen_cflags=[prefix + '-fprofile-generate'],
+ gen_cflags=[prefix + '-fprofile-generate', '-DMOZ_PROFILE_INSTRUMENTATION'],
gen_ldflags=gen_ldflags,
use_cflags=[prefix + '-fprofile-use=%s' % profdata,
# Some error messages about mismatched profile data
diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build
index aae85843e9..e300260fa0 100644
--- a/security/sandbox/linux/moz.build
+++ b/security/sandbox/linux/moz.build
@@ -100,9 +100,8 @@ if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
# gcc lto likes to put the top level asm in syscall.cc in a different partition
# from the function using it which breaks the build. Work around that by
# forcing there to be only one partition.
-for f in CONFIG['OS_CXXFLAGS']:
- if f.startswith('-flto') and CONFIG['CC_TYPE'] != 'clang':
- LDFLAGS += ['--param', 'lto-partitions=1']
+if CONFIG['CC_TYPE'] != 'clang':
+ LDFLAGS += ['--param', 'lto-partitions=1']
DEFINES['NS_NO_XPCOM'] = True
DisableStlWrapping()
--
2.25.0

View File

@@ -257,6 +257,8 @@ src_prepare() {
use !wayland && rm -f "${WORKDIR}/firefox/2019_mozilla-bug1539471.patch"
eapply "${WORKDIR}/firefox"
eapply "${FILESDIR}/${PN}-73.0_fix_lto_pgo_builds.patch"
# Allow user to apply any additional patches without modifing ebuild
eapply_user