Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  cargo-linker   Sprache: HTML

 

#!/usr/bin/env python3

# If you want to use a custom linker with Cargo, Cargo requires that you
# specify it in Cargo.toml or via the matching environment variable.
# Passing extra options to the linker is possible with Cargo via
# RUSTFLAGS='-C link-args', but testing showed that doing this reliably
# was difficult.
#
# Our solution to these problems is to use this wrapper script.  We pass
# in the LD and the LDFLAGS to use via environment variables.
#
# * MOZ_CARGO_WRAP_LD is equivalent to CC on Unix-y platforms, and CC
#   frequently has additional arguments in addition to the compiler
#   itself.
#
# * MOZ_CARGO_WRAP_LDFLAGS contains space-separated arguments to pass,
#   and not quoting it ensures that each of those arguments is passed
#   as a separate argument to the actual LD.
#
# * In rare cases, we also need MOZ_CARGO_WRAP_LD_CXX, which is the
#   equivalent of CXX, when linking C++ code. Usually, this should
#   simply work by the use of CC and -lstdc++ (added by cc-rs).
#   However, in the case of sanitizer runtimes, there is a separate
#   runtime for C and C++ and linking C++ code with the C runtime can
#   fail if the requested feature is in the C++ runtime only (bug 1747298).

import os
import sys

# This is not necessarily run with a virtualenv python, so add
# the necessary directory for the mozshellutil module.
base_dir = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
sys.path.insert(0, os.path.join(base_dir, "testing", "mozbase", "mozshellutil"))
from mozshellutil import split


SANITIZERS = {
    "asan": "address",
    "hwasan": "hwaddress",
    "lsan": "leak",
    "msan": "memory",
    "tsan": "thread",
}

use_clang_sanitizer = os.environ.get("MOZ_CLANG_NEWER_THAN_RUSTC_LLVM")
wrap_ld = os.environ["MOZ_CARGO_WRAP_LD"]
args = []
for arg in sys.argv[1:]:
    if arg in ["-lc++", "-lstdc++"]:
        wrap_ld = os.environ["MOZ_CARGO_WRAP_LD_CXX"]
    elif use_clang_sanitizer and arg.endswith("san.a"):
        # When clang is newer than rustc's LLVM, we replace rust's sanitizer
        # runtimes with clang's.
        filename = os.path.basename(arg)
        prefix, dot, suffix = filename[:-2].rpartition(".")
        if (
            prefix.startswith("librustc-")
            and prefix.endswith("_rt") and dot == "."
        ):
            args.append(f"-fsanitize={SANITIZERS[suffix]}")
            continue
    args.append(arg)
args.extend(split(os.environ["MOZ_CARGO_WRAP_LDFLAGS"]))

wrap_ld = split(wrap_ld)
if sys.platform == "win32":
    # For some reason, os.execvp doesn't handle arguments properly on Windows.
    import subprocess
    sys.exit(subprocess.run(wrap_ld + args).returncode)

os.execvp(wrap_ld[0], wrap_ld + args)

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet am  2026-09-27) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=1126438
#Domains=1897691