forked from ports/contrib
85 lines
3.2 KiB
Diff
85 lines
3.2 KiB
Diff
From 98e1e605c8fdf7b021d6f1888ce6baed5c1097b5 Mon Sep 17 00:00:00 2001
|
|
From: Thomas Deutschmann <whissi@gentoo.org>
|
|
Date: Thu, 2 Jul 2020 18:05:03 +0200
|
|
Subject: [PATCH 22/30] Fix building with PGO when using GCC
|
|
|
|
Signed-off-by: Thomas Deutschmann <whissi@gentoo.org>
|
|
---
|
|
build/moz.configure/lto-pgo.configure | 5 +++--
|
|
build/pgo/profileserver.py | 26 ++++++++++++++++++++++----
|
|
2 files changed, 25 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/build/moz.configure/lto-pgo.configure b/build/moz.configure/lto-pgo.configure
|
|
index 567ccf0ba4..c6470ef829 100644
|
|
--- a/build/moz.configure/lto-pgo.configure
|
|
+++ b/build/moz.configure/lto-pgo.configure
|
|
@@ -83,11 +83,12 @@ set_config("PGO_PROFILE_PATH", pgo_profile_path)
|
|
@imports("multiprocessing")
|
|
def pgo_flags(compiler, profdata, target_is_windows):
|
|
if compiler.type == "gcc":
|
|
+ profile_use = "-fprofile-use"
|
|
return namespace(
|
|
gen_cflags=["-fprofile-generate", "-DMOZ_PROFILE_INSTRUMENTATION"],
|
|
gen_ldflags=["-fprofile-generate"],
|
|
- use_cflags=["-fprofile-use", "-fprofile-correction", "-Wcoverage-mismatch"],
|
|
- use_ldflags=["-fprofile-use"],
|
|
+ use_cflags=[profile_use, "-fprofile-correction", "-Wcoverage-mismatch"],
|
|
+ use_ldflags=[profile_use],
|
|
)
|
|
|
|
if compiler.type in ("clang-cl", "clang"):
|
|
diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py
|
|
index 7f3de106ab..89289a7756 100755
|
|
--- a/build/pgo/profileserver.py
|
|
+++ b/build/pgo/profileserver.py
|
|
@@ -11,7 +11,7 @@ import glob
|
|
import subprocess
|
|
|
|
import mozcrash
|
|
-from mozbuild.base import MozbuildObject, BinaryNotFoundException
|
|
+from mozbuild.base import MozbuildObject, BinaryNotFoundException, BuildEnvironmentNotFoundException
|
|
from mozfile import TemporaryDirectory
|
|
from mozhttpd import MozHttpd
|
|
from mozprofile import FirefoxProfile, Preferences
|
|
@@ -87,9 +87,22 @@ if __name__ == "__main__":
|
|
locations = ServerLocations()
|
|
locations.add_host(host="127.0.0.1", port=PORT, options="primary,privileged")
|
|
|
|
- old_profraw_files = glob.glob("*.profraw")
|
|
- for f in old_profraw_files:
|
|
- os.remove(f)
|
|
+ using_gcc = False
|
|
+ try:
|
|
+ if build.config_environment.substs.get("CC_TYPE") == "gcc":
|
|
+ using_gcc = True
|
|
+ except BuildEnvironmentNotFoundException:
|
|
+ pass
|
|
+
|
|
+ if using_gcc:
|
|
+ for dirpath, _, filenames in os.walk("."):
|
|
+ for f in filenames:
|
|
+ if f.endswith(".gcda"):
|
|
+ os.remove(os.path.join(dirpath, f))
|
|
+ else:
|
|
+ old_profraw_files = glob.glob("*.profraw")
|
|
+ for f in old_profraw_files:
|
|
+ os.remove(f)
|
|
|
|
with TemporaryDirectory() as profilePath:
|
|
# TODO: refactor this into mozprofile
|
|
@@ -212,6 +225,11 @@ if __name__ == "__main__":
|
|
print("Firefox exited successfully, but produced a crashreport")
|
|
sys.exit(1)
|
|
|
|
+ if using_gcc:
|
|
+ print("Copying profile data...")
|
|
+ os.system("pwd");
|
|
+ os.system('tar cf profdata.tar.gz `find . -name "*.gcda"`; cd ..; tar xf instrumented/profdata.tar.gz;');
|
|
+
|
|
llvm_profdata = env.get("LLVM_PROFDATA")
|
|
if llvm_profdata:
|
|
profraw_files = glob.glob("*.profraw")
|
|
--
|
|
2.34.1
|
|
|