aboutsummaryrefslogtreecommitdiff
path: root/scripts/rustc_linker.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rustc_linker.py')
-rwxr-xr-xscripts/rustc_linker.py29
1 files changed, 21 insertions, 8 deletions
diff --git a/scripts/rustc_linker.py b/scripts/rustc_linker.py
index 3f60708e2..c9c4a1515 100755
--- a/scripts/rustc_linker.py
+++ b/scripts/rustc_linker.py
@@ -31,27 +31,40 @@ replacementVersionScript = None
argparser = argparse.ArgumentParser()
argparser.add_argument('--android-clang-bin', required=True)
args = argparser.parse_known_args()
-clang_args = [args[0].android_clang_bin] + args[1]
+old_clang_args = [args[0].android_clang_bin] + args[1]
+new_clang_args = list()
-for i, arg in enumerate(clang_args):
+# Add/remove args
+for i, arg in enumerate(old_clang_args):
+ # Record and remove the custom android-version-script arg
if arg.startswith('-Wl,--android-version-script='):
replacementVersionScript = arg.split("=")[1]
- del clang_args[i]
- break
+ continue
+ # Remove object files rustc emits for Windows target
+ # We provide these as an rlib.
+ if arg == "rsend.o":
+ continue
+ if arg == "rsbegin.o":
+ continue
+
+ # Keep the arg
+ new_clang_args.append(old_clang_args[i])
+
+# Modify args
if replacementVersionScript:
versionScriptFound = False
- for i, arg in enumerate(clang_args):
+ for i, arg in enumerate(new_clang_args):
if arg.startswith('-Wl,--version-script='):
- clang_args[i] ='-Wl,--version-script=' + replacementVersionScript
+ new_clang_args[i] ='-Wl,--version-script=' + replacementVersionScript
versionScriptFound = True
break
if not versionScriptFound:
# If rustc did not emit a version script, just append the arg
- clang_args.append('-Wl,--version-script=' + replacementVersionScript)
+ new_clang_args.append('-Wl,--version-script=' + replacementVersionScript)
try:
- subprocess.run(clang_args, encoding='utf-8', check=True)
+ subprocess.run(new_clang_args, encoding='utf-8', check=True)
except subprocess.CalledProcessError as e:
sys.exit(-1)