summaryrefslogtreecommitdiffstats
path: root/build/unix/elfhack/inject
diff options
context:
space:
mode:
Diffstat (limited to 'build/unix/elfhack/inject')
-rw-r--r--build/unix/elfhack/inject/copy_source.py10
-rw-r--r--build/unix/elfhack/inject/moz.build56
2 files changed, 66 insertions, 0 deletions
diff --git a/build/unix/elfhack/inject/copy_source.py b/build/unix/elfhack/inject/copy_source.py
new file mode 100644
index 0000000000..02b4f6237e
--- /dev/null
+++ b/build/unix/elfhack/inject/copy_source.py
@@ -0,0 +1,10 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=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/.
+
+
+def copy(out_file, in_path):
+ with open(in_path, "r") as fh:
+ out_file.write(fh.read())
diff --git a/build/unix/elfhack/inject/moz.build b/build/unix/elfhack/inject/moz.build
new file mode 100644
index 0000000000..92f48e6c0a
--- /dev/null
+++ b/build/unix/elfhack/inject/moz.build
@@ -0,0 +1,56 @@
+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
+# vim: set filetype=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/.
+
+# dummy library name to avoid skipping building the source here, which
+# we only need the object for.
+Library("elfhack_inject")
+
+DIST_INSTALL = False
+
+stem = CONFIG["TARGET_CPU"]
+if CONFIG["RELRHACK"] and CONFIG["OS_TARGET"] == "Android":
+ stem += "-android"
+
+gen_src = "%s.c" % stem
+GeneratedFile(
+ gen_src, script="copy_source.py", entry_point="copy", inputs=["../inject.c"]
+)
+
+SOURCES += [
+ "!%s" % gen_src,
+]
+
+if CONFIG["RELRHACK"]:
+ DEFINES["RELRHACK"] = True
+ LOCAL_INCLUDES += [".."]
+
+NO_PGO = True
+
+for v in ("OS_CPPFLAGS", "OS_CFLAGS", "DEBUG", "CLANG_PLUGIN", "OPTIMIZE", "FRAMEPTR"):
+ flags = []
+ idx = 0
+ for flag in COMPILE_FLAGS[v]:
+ if flag == "-isystem":
+ flags.append("".join(COMPILE_FLAGS[v][idx : idx + 2]))
+ elif (
+ flag.startswith(("-g", "-m", "-I", "-isystem", "--sysroot="))
+ or flag == "-fPIC"
+ ):
+ flags.append(flag)
+ idx += 1
+ COMPILE_FLAGS[v] = flags
+
+COMPILE_FLAGS["OS_CFLAGS"] += [
+ "-O2",
+ "-fno-stack-protector",
+ "-fno-lto",
+ # The injected code runs early enough that it supporting unwinding is useless.
+ # Moreover, elfhack doesn't inject the eh_frame section anyways.
+ "-fno-asynchronous-unwind-tables",
+]
+
+AllowCompilerWarnings()
+NoVisibilityFlags()