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

Unified Diff: src/IceTargetLoweringX8632.cpp

Issue 874353006: Write out global initializers and data rel directly to ELF file. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: review #1 Created 5 years, 11 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
Index: src/IceTargetLoweringX8632.cpp
diff --git a/src/IceTargetLoweringX8632.cpp b/src/IceTargetLoweringX8632.cpp
index 2836865e1e3cb39891a8b6383fb10d303b9236df..588725039f61b73b9df60cd52b39c674c751ad30 100644
--- a/src/IceTargetLoweringX8632.cpp
+++ b/src/IceTargetLoweringX8632.cpp
@@ -4564,21 +4564,15 @@ TargetGlobalX8632::TargetGlobalX8632(GlobalContext *Ctx)
: TargetGlobalLowering(Ctx) {}
void TargetGlobalX8632::lowerInit(const VariableDeclaration &Var) const {
- // TODO(jvoung): handle this without text.
- if (Ctx->getFlags().UseELFWriter)
- return;
-
- Ostream &Str = Ctx->getStrEmit();
-
- const VariableDeclaration::InitializerListType &Initializers =
- Var.getInitializers();
-
// If external and not initialized, this must be a cross test.
// Don't generate a declaration for such cases.
bool IsExternal = Var.isExternal() || Ctx->getFlags().DisableInternal;
if (IsExternal && !Var.hasInitializer())
return;
+ Ostream &Str = Ctx->getStrEmit();
+ const VariableDeclaration::InitializerListType &Initializers =
+ Var.getInitializers();
bool HasNonzeroInitializer = Var.hasNonzeroInitializer();
bool IsConstant = Var.getIsConstant();
uint32_t Align = Var.getAlignment();
@@ -4645,6 +4639,12 @@ void TargetGlobalX8632::lowerInit(const VariableDeclaration &Var) const {
Str << "\t.size\t" << MangledName << ", " << Size << "\n";
}
+void
+TargetGlobalX8632::lowerInitELF(const VariableDeclarationList &Vars) const {
+ ELFObjectWriter *Writer = Ctx->getObjectWriter();
+ Writer->writeDataSection(Vars, llvm::ELF::R_386_32);
+}
+
template <typename T> struct PoolTypeConverter {};
template <> struct PoolTypeConverter<float> {

Powered by Google App Engine
This is Rietveld 408576698