Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(709)

Unified Diff: tools/ld_bfd/ld

Issue 7992013: Merge 100031 - Modify the build recipe for nacl_helper_bootstrap to invoke the linker explicitly ... (Closed) Base URL: svn://svn.chromium.org/chrome/branches/874/src/
Patch Set: Created 9 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/nacl/nacl_fork_delegate_linux.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/ld_bfd/ld
===================================================================
--- tools/ld_bfd/ld (revision 102300)
+++ tools/ld_bfd/ld (working copy)
@@ -5,39 +5,45 @@
"""Wrapper for invoking the BFD loader
-A simple script to invoke the bfd loader instead of gold, removing
-threading command line options that the bfd loader doesn't support.
-Because this script is invoked from gcc via the -B flag, it needs
-to be in a file named "ld".
+A simple script to invoke the bfd loader instead of gold.
+This script is in a filename "ld" so it can be invoked from gcc
+via the -B flag.
"""
-
+# TODO(bradchen): Delete this script when Gold supports linker scripts properly.
import os
import subprocess
import sys
-# TODO(bradchen): Delete this script when Gold supports -Ttext properly.
-# It should be fixed by this patch:
-# http://sourceware.org/ml/binutils/2011-07/msg00206.html
+def PathTo(fname):
+ if fname[0] == os.pathsep:
+ return fname
+ for p in os.environ["PATH"].split(os.pathsep):
+ fpath = os.path.join(p, fname)
+ if os.path.exists(fpath):
+ return fpath
+ return fname
+
+def FindLDBFD():
+ cxx = os.getenv("CXX")
+ if not cxx:
+ cxx = "gcc"
+ popen = subprocess.Popen(cxx + " -print-prog-name=ld",
+ shell=True,
+ stdout=subprocess.PIPE,
+ stdin=subprocess.PIPE)
+ (ld, error) = popen.communicate()
+ if popen.wait() != 0:
+ print "Could not find ld:" + error
+ return "ld"
+ ld = ld.strip()
+ ld_bfd = PathTo(ld + ".bfd")
+ if os.access(ld_bfd, os.X_OK):
+ return ld_bfd
+ return ld
+
def main():
- LD_BFD = "/usr/bin/ld.bfd"
- if not (os.path.exists(LD_BFD) and os.access(LD_BFD, os.X_OK)):
- # Can't find the BFD loader, so invoke the unmodified argv
- args = sys.argv
- args[0] = "ld"
- print "ld_bfd/ld: using ld"
- sys.exit(subprocess.call(args))
- # found the BFD loader, so use it
- args = list()
- args.append("/usr/bin/ld.bfd")
- for arg in sys.argv[1:]:
- if arg == "-Wl,--threads" or arg == "--threads":
- continue
- if arg == "-Wl,--thread-count=4" or arg == "--thread-count=4":
- continue
- if arg == "--icf=none":
- continue
- args.append(arg)
- print("ld_bfd/ld: exec ", args)
+ args = [FindLDBFD()] + sys.argv[1:]
+ print("tools/ld_bfd/ld: exec " + ' '.join(args))
sys.exit(subprocess.call(args))
if __name__ == "__main__":
« no previous file with comments | « chrome/nacl/nacl_fork_delegate_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698