summaryrefslogtreecommitdiffstats
path: root/security/generate_mapfile.py
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /security/generate_mapfile.py
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'security/generate_mapfile.py')
-rw-r--r--security/generate_mapfile.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/security/generate_mapfile.py b/security/generate_mapfile.py
new file mode 100644
index 0000000000..244f499f74
--- /dev/null
+++ b/security/generate_mapfile.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# This script processes NSS .def files according to the rules defined in
+# a comment at the top of each one. The files are used to define the
+# exports from NSS shared libraries, with -DEFFILE on Windows, a linker
+# script on Linux, or with -exported_symbols_list on OS X.
+#
+# The NSS build system processes them using a series of sed replacements,
+# but the Mozilla build system is already running a Python script to generate
+# the file so it's simpler to just do the replacement in Python.
+#
+# One difference between the NSS build system and Mozilla's is that
+# Mozilla's supports building on Linux for Windows using MinGW. MinGW
+# expects all lines containing ;+ removed and all ;- tokens removed.
+
+import buildconfig
+
+
+def main(output, input):
+ is_darwin = buildconfig.substs["OS_ARCH"] == "Darwin"
+ is_mingw = "WINNT" == buildconfig.substs["OS_ARCH"] and buildconfig.substs.get(
+ "GCC_USE_GNU_LD"
+ )
+
+ with open(input, "r", encoding="utf-8") as f:
+ for line in f:
+ line = line.rstrip()
+ # On everything except MinGW, remove all lines containing ';-'
+ if not is_mingw and ";-" in line:
+ continue
+ # On OS X, remove all lines containing ';+'
+ if is_darwin and ";+" in line:
+ continue
+ # Remove the string ' DATA '.
+ line = line.replace(" DATA ", "")
+ # Remove the string ';+'
+ if not is_mingw:
+ line = line.replace(";+", "")
+ # Remove the string ';;'
+ line = line.replace(";;", "")
+ # If a ';' is present, remove everything after it,
+ # and on OS X, remove it as well.
+ i = line.find(";")
+ if i != -1:
+ if is_darwin or is_mingw:
+ line = line[:i]
+ else:
+ line = line[: i + 1]
+ # On OS X, symbols get an underscore in front.
+ if line and is_darwin:
+ output.write("_")
+ output.write(line)
+ output.write("\n")