[pkg-d-commits] [ldc] 61/74: Add first version of ld linker driver as ArgsBuilder specialization
Matthias Klumpp
mak at moszumanska.debian.org
Thu Jul 13 20:54:19 UTC 2017
This is an automated email from the git hooks/post-receive script.
mak pushed a commit to annotated tag v1.3.0-beta2
in repository ldc.
commit ede23642efbf730c63688466c415cec39dffa5bb
Author: Martin <noone at nowhere.com>
Date: Sat May 27 03:30:25 2017 +0200
Add first version of ld linker driver as ArgsBuilder specialization
---
driver/linker-gcc.cpp | 39 ++++++++++++++++++++++++++++++++++-----
1 file changed, 34 insertions(+), 5 deletions(-)
diff --git a/driver/linker-gcc.cpp b/driver/linker-gcc.cpp
index db0b648..f465740 100644
--- a/driver/linker-gcc.cpp
+++ b/driver/linker-gcc.cpp
@@ -35,14 +35,16 @@ class ArgsBuilder {
public:
std::vector<std::string> args;
+ virtual ~ArgsBuilder() = default;
+
void build(llvm::StringRef outputPath,
llvm::cl::boolOrDefault fullyStaticFlag);
private:
- void addSanitizers();
- void addUserSwitches();
+ virtual void addSanitizers();
+ virtual void addUserSwitches();
void addDefaultLibs();
- void addArch();
+ virtual void addArch();
#if LDC_LLVM_VER >= 309
void addLTOGoldPluginFlags();
@@ -50,11 +52,11 @@ private:
void addLTOLinkFlags();
#endif
- void addLdFlag(const llvm::Twine &flag) {
+ virtual void addLdFlag(const llvm::Twine &flag) {
args.push_back(("-Wl," + flag).str());
}
- void addLdFlag(const llvm::Twine &flag1, const llvm::Twine &flag2) {
+ virtual void addLdFlag(const llvm::Twine &flag1, const llvm::Twine &flag2) {
args.push_back(("-Wl," + flag1 + "," + flag2).str());
}
};
@@ -387,6 +389,33 @@ void ArgsBuilder::addArch() {
}
}
+//////////////////////////////////////////////////////////////////////////////
+// (Yet unused) specialization for plain ld.
+
+class LdArgsBuilder : public ArgsBuilder {
+ void addSanitizers() override {}
+
+ void addUserSwitches() override {
+ if (!opts::ccSwitches.empty()) {
+ warning(Loc(), "Ignoring -Xcc options");
+ }
+
+ args.insert(args.end(), opts::linkerSwitches.begin(),
+ opts::linkerSwitches.end());
+ }
+
+ void addArch() override {}
+
+ void addLdFlag(const llvm::Twine &flag) override {
+ args.push_back(flag.str());
+ }
+
+ void addLdFlag(const llvm::Twine &flag1, const llvm::Twine &flag2) override {
+ args.push_back(flag1.str());
+ args.push_back(flag2.str());
+ }
+};
+
} // anonymous namespace
//////////////////////////////////////////////////////////////////////////////
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-d/ldc.git
More information about the pkg-d-commits
mailing list