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

Unified Diff: lib/Transforms/NaCl/ConvertToPSO.cpp

Issue 1829793002: PNaCl Dynamic Linking: Storing dependencies from command line in PLL. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-llvm.git@master
Patch Set: Created 4 years, 9 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/Transforms/NaCl/ConvertToPSO.cpp
diff --git a/lib/Transforms/NaCl/ConvertToPSO.cpp b/lib/Transforms/NaCl/ConvertToPSO.cpp
index a9663087341d548e4f4e9c81e14a00b291d17d5a..1291a9988d7a45c4b21db51b3ed1008ce53aa91d 100644
--- a/lib/Transforms/NaCl/ConvertToPSO.cpp
+++ b/lib/Transforms/NaCl/ConvertToPSO.cpp
@@ -62,6 +62,13 @@ namespace {
// increment TOOLCHAIN_FEATURE_VERSION instead.
const int PSOFormatVersion = 2;
+ // Command line arguments consist of a list of PLL dependencies.
+ static cl::list<std::string>
+ LibraryDependencies("deps",
Mark Seaborn 2016/03/29 15:29:39 Remember that this is an option for the 'opt' tool
Sean Klein 2016/03/29 17:58:29 Done.
+ cl::CommaSeparated,
+ cl::desc("The dependencies of the PLL being built"),
+ cl::value_desc("PLL to list as dependency"));
+
// This is a ModulePass because it inherently operates on a whole module.
class ConvertToPSO : public ModulePass {
public:
@@ -651,6 +658,18 @@ bool ConvertToPSO::runOnModule(Module &M) {
M, StringTableArray->getType(), true, GlobalValue::InternalLinkage,
StringTableArray, "string_table");
+ // Set up string of PLL dependencies.
+ SmallString<1024> DependenciesList;
+ for (unsigned i = 0; i != LibraryDependencies.size(); ++i) {
Mark Seaborn 2016/03/29 15:29:39 You can use "for (... : LibrariesDependencies)"
Sean Klein 2016/03/29 17:58:29 Done.
+ DependenciesList.append(LibraryDependencies[i]);
+ DependenciesList.push_back(0);
+ }
+ Constant *DependenciesListArray = ConstantDataArray::getString(
+ C, StringRef(DependenciesList.data(), DependenciesList.size()), false);
+ Constant *DependenciesListVar = new GlobalVariable(
+ M, DependenciesListArray->getType(), true, GlobalValue::InternalLinkage,
+ DependenciesListArray, "dependencies_list");
+
SmallVector<Constant *, 32> PsoRoot = {
ConstantInt::get(IntPtrType, PSOFormatVersion),
@@ -676,6 +695,10 @@ bool ConvertToPSO::runOnModule(Module &M) {
ConstantInt::get(IntPtrType, MaskWords - 1),
ConstantInt::get(IntPtrType, Shift2),
createDataArray(M, "bloom_filter", &BloomFilter),
+
+ // Dependencies List
Mark Seaborn 2016/03/29 15:40:06 When you rebase, this should go at the end, after
Sean Klein 2016/03/29 17:58:29 Do you mean that I should place these fields after
Mark Seaborn 2016/03/29 18:50:44 Yes, that would be better in the sense that it avo
+ ConstantInt::get(IntPtrType, LibraryDependencies.size()),
+ DependenciesListVar,
};
for (auto FieldVal : PsoRootTlsFields)
PsoRoot.push_back(FieldVal);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698