From: Chris Lattner Date: Mon, 10 Aug 2009 17:58:51 +0000 (+0000) Subject: Fix a weird ppc64-specific link error during an llvm-gcc build: X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=e1e8a82986e12f9cf841004c78ff051df9df11d8;p=oota-llvm.git Fix a weird ppc64-specific link error during an llvm-gcc build: ld: bad offset (0x00000091) for lo14 instruction pic-base fix-up in ___popcountdi2 from libgcc/./_popcountsi2_s.o The problem is that the non lazy symbol pointers need to be 8 byte aligned on ppc64 and .section doesn't have an implicit alignment like ".non_lazy_symbol_pointer" does. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78572 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp index 73c9c03854b..e13cb66b7ac 100644 --- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp +++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp @@ -1063,6 +1063,8 @@ bool PPCDarwinAsmPrinter::doFinalization(Module &M) { if (!GVStubs.empty()) { // Switch with ".non_lazy_symbol_pointer" directive. SwitchToSection(TLOFMacho.getNonLazySymbolPointerSection()); + EmitAlignment(isPPC64 ? 3 : 2); + for (StringMap::iterator I = GVStubs.begin(), E = GVStubs.end(); I != E; ++I) { O << I->second << ":\n";