mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 04:30:12 +00:00
0a70f9b3b9
Given bar = foo + 4 .long bar MC would eat the 4. GNU as includes it in the relocation. The rule seems to be that a variable that defines a symbol is used in the relocation and one that does not define a symbol is evaluated and the result included in the relocation. Fixing this unfortunately required some other changes: * Since the variable is now evaluated, it would prevent the ELF writer from noticing the weakref marker the elf streamer uses. This patch then replaces that with a VariantKind in MCSymbolRefExpr. * Using VariantKind then requires us to look past other VariantKind to see .weakref bar,foo call bar@PLT doing this also fixes zed = foo +2 call zed@PLT so that is a good thing. * Looking past VariantKind means that the relocation selection has to use the fixup instead of the target. This is a reboot of the previous fixes for MC. I will watch the sanitizer buildbot and wait for a build before adding back the previous fixes. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204294 91177308-0d34-0410-b5e6-96231b3b80d8 |
||
---|---|---|
.. | ||
CMakeLists.txt | ||
LLVMBuild.txt | ||
Makefile | ||
X86AsmBackend.cpp | ||
X86BaseInfo.h | ||
X86ELFObjectWriter.cpp | ||
X86ELFRelocationInfo.cpp | ||
X86FixupKinds.h | ||
X86MachObjectWriter.cpp | ||
X86MachORelocationInfo.cpp | ||
X86MCAsmInfo.cpp | ||
X86MCAsmInfo.h | ||
X86MCCodeEmitter.cpp | ||
X86MCTargetDesc.cpp | ||
X86MCTargetDesc.h | ||
X86WinCOFFObjectWriter.cpp |