1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/include/llvm/MC
Ulrich Weigand b664c03f18 [PowerPC] Revert r185476 and fix up TLS variant kinds
In the commit message to r185476 I wrote:

>The PowerPC-specific modifiers VK_PPC_TLSGD and VK_PPC_TLSLD
>correspond exactly to the generic modifiers VK_TLSGD and VK_TLSLD.
>This causes some confusion with the asm parser, since VK_PPC_TLSGD
>is output as @tlsgd, which is then read back in as VK_TLSGD.
>
>To avoid this confusion, this patch removes the PowerPC-specific
>modifiers and uses the generic modifiers throughout.  (The only
>drawback is that the generic modifiers are printed in upper case
>while the usual convention on PowerPC is to use lower-case modifiers.
>But this is just a cosmetic issue.)

This was unfortunately incorrect, there is is fact another,
serious drawback to using the default VK_TLSLD/VK_TLSGD
variant kinds: using these causes ELFObjectWriter::RelocNeedsGOT
to return true, which in turn causes the ELFObjectWriter to emit
an undefined reference to _GLOBAL_OFFSET_TABLE_.

This is a problem on powerpc64, because it uses the TOC instead
of the GOT, and the linker does not provide _GLOBAL_OFFSET_TABLE_,
so the symbol remains undefined.  This means shared libraries
using TLS built with the integrated assembler are currently
broken.

While the whole RelocNeedsGOT / _GLOBAL_OFFSET_TABLE_ situation
probably ought to be properly fixed at some point, for now I'm
simply reverting the r185476 commit.  Now this in turn exposes
the breakage of handling @tlsgd/@tlsld in the asm parser that
this check-in was originally intended to fix.

To avoid this regression, I'm also adding a different fix for
this problem: while common code now parses @tlsgd as VK_TLSGD,
a special hack in the asm parser translates this code to the
platform-specific VK_PPC_TLSGD that the back-end now expects.
While this is not really pretty, it's self-contained and
shouldn't hurt anything else for now.  One the underlying
problem is fixed, this hack can be reverted again.

llvm-svn: 185945
2013-07-09 16:41:09 +00:00
..
MCParser Whitespace. 2013-06-02 19:51:54 +00:00
MachineLocation.h Remove the MachineMove class. 2013-05-13 01:16:13 +00:00
MCAsmBackend.h Renamed MCInstFragment to MCRelaxableFragment and added some comments. 2013-01-08 00:22:56 +00:00
MCAsmInfo.h Remove address spaces from MC. 2013-07-02 15:49:13 +00:00
MCAsmInfoCOFF.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MCAsmInfoDarwin.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MCAsmLayout.h [MC] Bundle alignment: Invalidate relaxed fragments 2013-02-05 17:55:27 +00:00
MCAssembler.h Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
MCAtom.h MC: Disassembled CFG reconstruction. 2013-05-24 01:07:04 +00:00
MCCodeEmitter.h Add more reset methods to make all objects that the backend may use for outputting code have a reset, some are not used but were declared for completeness 2012-12-14 18:52:11 +00:00
MCCodeGenInfo.h Fix typo in comment. 2012-02-17 16:39:47 +00:00
MCContext.h MC: Implement COFF .linkonce directive 2013-07-06 12:13:10 +00:00
MCDirectives.h Refactor data-in-code annotations. 2012-05-18 19:12:01 +00:00
MCDisassembler.h Follow up of the introduction of MCSymbolizer. 2013-05-24 22:51:52 +00:00
MCDwarf.h [MC/DWARF] Support .debug_frame / .debug_line code alignment factors 2013-06-12 14:46:54 +00:00
MCELF.h ELF symbol table field st_other support, 2013-02-19 21:57:35 +00:00
MCELFObjectWriter.h Cleanup relocation sorting for ELF. 2013-05-15 18:22:01 +00:00
MCELFStreamer.h Remove address spaces from MC. 2013-07-02 15:49:13 +00:00
MCELFSymbolFlags.h sets bit 0 of the function address of thumb function in .symtab 2011-05-16 16:17:21 +00:00
MCExpr.h [PowerPC] Revert r185476 and fix up TLS variant kinds 2013-07-09 16:41:09 +00:00
MCExternalSymbolizer.h Add MCSymbolizer for symbolic/annotated disassembly. 2013-05-24 00:39:57 +00:00
MCFixedLenDisassembler.h Fix include guards so they exactly match file names. 2013-01-10 00:45:19 +00:00
MCFixup.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
MCFixupKindInfo.h Tidy up. Trailing whitespace. 2012-05-11 01:39:13 +00:00
MCFunction.h MC: Disassembled CFG reconstruction. 2013-05-24 01:07:04 +00:00
MCInst.h Simplify the MCInst operator iterator declaration. 2013-04-15 17:40:45 +00:00
MCInstBuilder.h Decouple MCInstBuilder from the streamer per Eli's request. 2012-11-26 18:05:52 +00:00
MCInstPrinter.h Try to unbreak the build on hosts that don't transitively pull in a definition for int64_t. 2012-12-05 18:31:11 +00:00
MCInstrAnalysis.h MC: Disassembled CFG reconstruction. 2013-05-24 01:07:04 +00:00
MCInstrDesc.h Resort the #include lines in include/... and lib/... with the 2013-01-02 10:22:59 +00:00
MCInstrInfo.h Revert r152202: "Use uint16_t to store InstrNameIndices in MCInstrInfo." 2012-03-15 18:05:57 +00:00
MCInstrItineraries.h Machine Model: Add MicroOpBufferSize and resource BufferSize. 2013-06-15 04:49:57 +00:00
MCLabel.h Fix Doxygen issues: 2012-09-14 14:57:36 +00:00
MCMachObjectWriter.h [MC/Mach-O] Add support for linker options in Mach-O files. 2013-01-18 01:26:07 +00:00
MCMachOSymbolFlags.h MC/Mach-O/Thumb: Set the thumb bit in the symbol table. 2010-12-29 14:14:06 +00:00
MCModule.h Remove use of asymmetric std::lower_bound comparator. 2013-07-04 23:20:12 +00:00
MCObjectDisassembler.h MC: Disassembled CFG reconstruction. 2013-05-24 01:07:04 +00:00
MCObjectFileInfo.h Track the compact unwind encoding for when we are unable to generate compact unwind information. 2013-04-10 21:42:06 +00:00
MCObjectStreamer.h Remove address spaces from MC. 2013-07-02 15:49:13 +00:00
MCObjectSymbolizer.h MCObjectSymbolizer: Switch from IntervalMap to sorted vector, following r182625. 2013-05-30 18:18:36 +00:00
MCObjectWriter.h Fix unnecessary removal of const through cast machinery 2013-02-11 01:16:51 +00:00
MCRegisterInfo.h Make SubRegIndex size mandatory, following r183020. 2013-05-31 23:45:26 +00:00
MCRelocationInfo.h Add MCSymbolizer for symbolic/annotated disassembly. 2013-05-24 00:39:57 +00:00
MCSchedule.h Machine Model: Add MicroOpBufferSize and resource BufferSize. 2013-06-15 04:49:57 +00:00
MCSection.h Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
MCSectionCOFF.h MC: Implement COFF .linkonce directive 2013-07-06 12:13:10 +00:00
MCSectionELF.h Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
MCSectionMachO.h Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
MCStreamer.h Remove address spaces from MC. 2013-07-02 15:49:13 +00:00
MCSubtargetInfo.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MCSymbol.h Fix Doxygen issues: 2012-09-14 14:57:36 +00:00
MCSymbolizer.h Add MCSymbolizer for symbolic/annotated disassembly. 2013-05-24 00:39:57 +00:00
MCTargetAsmParser.h [ms-inline asm] Add a new AsmRewriteKind, AOK_Delete. To be used in a future 2013-04-11 22:00:03 +00:00
MCValue.h Sort the #include lines for the include/... tree with the script. 2012-12-03 17:02:12 +00:00
MCWin64EH.h Add a parameter to the Win64 EH section getters to get a section with a 2011-05-27 19:09:24 +00:00
MCWinCOFFObjectWriter.h MC: Support COFF image-relative MCSymbolRefs 2013-04-10 23:28:17 +00:00
SectionKind.h
SubtargetFeature.h Update documentation. 2013-04-08 18:52:58 +00:00