From c0c4b7d6cb8e6cc20a16b373dcabbdedbafbd6ae Mon Sep 17 00:00:00 2001 From: Joakim Date: Wed, 21 Jun 2017 08:53:36 +0530 Subject: [PATCH] Switch Android onto the sectionELF style of module registry, following upstream, but leave out the dso_registry stuff that's unused on Android. --- gen/modules.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gen/modules.cpp b/gen/modules.cpp index a3428cd9a06..c9af86690f8 100644 --- a/gen/modules.cpp +++ b/gen/modules.cpp @@ -120,8 +120,7 @@ RegistryStyle getModuleRegistryStyle() { return RegistryStyle::sectionDarwin; } - if ((t->isOSLinux() && t->getEnvironment() != llvm::Triple::Android) || - t->isOSFreeBSD() || + if (t->isOSLinux() || t->isOSFreeBSD() || #if LDC_LLVM_VER > 305 t->isOSNetBSD() || t->isOSOpenBSD() || t->isOSDragonFly() #else @@ -376,7 +375,10 @@ void emitModuleRefToSection(RegistryStyle style, std::string moduleMangle, : "__minfo"); gIR->usedArray.push_back(thismref); - if (!isFirst) { + // Android doesn't need register_dso and friends- see rt.sections_android- + // so bail out here. + if (!isFirst || + global.params.targetTriple->getEnvironment() == llvm::Triple::Android) { // Nothing left to do. return; }