File 0016-Fix-building-with-PGO-when-using-GCC.patch of Package MozillaFirefox

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Thomas Deutschmann <whissi@gentoo.org>
Date: Thu, 2 Jul 2020 18:05:03 +0200
Subject: [PATCH] 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 e3964da982c4a526d029a41b5c63cc7f93b2b140..dc5d8f4dfb3b0d50d88915ac105c348fe4229e01 100644
--- a/build/moz.configure/lto-pgo.configure
+++ b/build/moz.configure/lto-pgo.configure
@@ -142,11 +142,12 @@ def pgo_flags(
     orderfile,
 ):
     if compiler.type == "gcc":
+        profile_use = "-fprofile-use"
         return namespace(
             gen_cflags=["-fprofile-generate"],
             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 6017810c873f6be5a5d133dc9386f7cd8879e81b..a149eab582acb9233952d65843bd6e12bd1265be 100755
--- a/build/pgo/profileserver.py
+++ b/build/pgo/profileserver.py
@@ -11,7 +11,7 @@ import subprocess
 import sys
 
 import mozcrash
-from mozbuild.base import BinaryNotFoundException, MozbuildObject
+from mozbuild.base import BinaryNotFoundException, BuildEnvironmentNotFoundException, MozbuildObject
 from mozfile import TemporaryDirectory
 from mozhttpd import MozHttpd
 from mozprofile import FirefoxProfile, Preferences
@@ -97,9 +97,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
@@ -229,6 +242,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")
openSUSE Build Service is sponsored by