llvm-6502/test/MC/ELF
Rafael Espindola 0a70f9b3b9 Look through variables when computing relocations.
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
2014-03-20 02:12:01 +00:00
..
abs.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
alias-reloc.s Don't hide the first ELF symbol. 2013-06-05 20:33:54 +00:00
alias.s Make the test harder by using a non-zero offset. 2014-03-19 00:26:58 +00:00
align-bss.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-nops.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-size.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align-text.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
align.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
bad-expr.s Forgot to add testcase for r198590 2014-01-21 20:39:11 +00:00
bad-relocation.s MC asm parser: allow ?'s in symbol names, and handle @'s in names in MS asm 2013-10-18 20:46:28 +00:00
bad-section.s
basic-elf-32.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
basic-elf-64.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
bracket-exprs.s split this test into arch specific pieces, so the ARM 2011-02-25 19:06:35 +00:00
bracket.s Restore r125595 (reverted in r126336) with modifications: 2011-02-24 21:59:22 +00:00
bss-large.ll Added the test missed from r185080. 2013-07-01 09:02:33 +00:00
bss.ll
call-abs.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-adjust-cfa-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-advance-loc2.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa-register.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-def-cfa.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-escape.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-reg.s PR13754: llvm-mc/x86 crashes on .cfi directives without the % prefix for registers. 2012-09-07 14:51:35 +00:00
cfi-register.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-rel-offset2.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-rel-offset.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-remember.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-restore.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-same-value.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-sections.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-signal-frame.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
cfi-undefined.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi-window-save.s Implements parsing and emitting of .cfi_window_save in MC. 2013-09-26 14:49:40 +00:00
cfi-zero-addr-delta.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
cfi.s MC: Add support for .cfi_startproc simple 2014-01-27 17:20:25 +00:00
comdat-dup-group-name.s MC: Support multiple sections with the same name in the same comdat group 2013-10-22 23:41:52 +00:00
comdat-reloc.s Put ELF COMDAT relocations into the relevant COMDAT group. 2013-07-10 20:58:17 +00:00
comdat.s MC: Add support for '?' flags in .section directives 2013-09-15 19:24:16 +00:00
common2.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
common.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
comp-dir.s Check for $PWD in llvm::sys::current_path. 2013-08-10 00:50:57 +00:00
debug-line2.s [MC/DWARF] Generate multiple .debug_line entries for adjacent .loc directives 2013-06-19 21:27:27 +00:00
debug-line.s Emit DWARF line entries for all data in the instruction stream. 2013-10-20 02:16:18 +00:00
debug-loc.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
diff2.s
diff.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
discriminator.s Support DWARF discriminators in object streamer. 2014-02-14 19:27:53 +00:00
dot-symbol-assignment.s Add support for assigning to . in AsmParser. 2014-02-17 20:48:32 +00:00
elf_directive_previous.s
elf_directive_section.s
empty-dwarf-lines.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
empty.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
entsize.ll Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
entsize.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
fde.s Give this test an explicit triple. 2012-08-12 08:21:27 +00:00
file-double.s Move the STT_FILE symbols out of the normal symbol table processing for 2013-10-29 01:06:17 +00:00
file.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
gen-dwarf.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
global-offset.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
got.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
ident.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
ifunc-reloc.s Force emit a relocation for @gnu_indirect_function symbols so that the indirect 2014-01-08 18:50:32 +00:00
invalid-symver.s
lcomm.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
leb128.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
lit.local.cfg [tests] Cleanup initialization of test suffixes. 2013-08-16 00:37:11 +00:00
local-reloc.s Fix broken CHECK lines 2014-02-16 07:31:05 +00:00
many-section.s In the ObjectFile interface, replace isInternal(), isAbsolute(), isGlobal(), and isWeak(), with a bitset of flags. 2012-02-28 23:47:53 +00:00
many-sections-2.s Implements low-level object file format specific output for COFF and 2013-04-03 18:31:38 +00:00
merge.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
n_bytes.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
no-fixup.s Rewrite a test to check actual output rather than intermediate implementation 2013-03-01 20:54:00 +00:00
noexec.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
norelocation.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
org.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
pic-diff.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
plt.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
pr9292.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
relax-all-flag.s Add a test for explicitly exercising the mc-relax-all flag. 2012-12-10 20:36:01 +00:00
relax-arith.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
relax-crash.s
relax.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
relocation-386.s [x86] Support R_386_PC8, R_386_PC16 and R_X86_64_PC8 2014-01-08 12:58:40 +00:00
relocation-pc.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
relocation.s Look through variables when computing relocations. 2014-03-20 02:12:01 +00:00
rename.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
section-quoting.s Be nice to Xcore and the XMOS assembler and avoid quoting section names 2011-03-04 20:03:14 +00:00
section.s ELF: Parse types in directives like binutils gas 2013-09-21 05:25:12 +00:00
set.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
sleb.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
subsection.s Add support for subsections to the ELF assembler. Fixes PR8717. 2013-04-17 21:18:16 +00:00
symbol-names.s MC asm parser: allow ?'s in symbol names, and handle @'s in names in MS asm 2013-10-18 20:46:28 +00:00
symref.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
tls-i386.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
tls.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
type.s In the ELFWriter when writing aliased (.set) symbols dont blindly 2014-01-07 20:17:03 +00:00
uleb.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
undef2.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
undef.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
version.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
weak-relocation.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
weak.s Correct word hyphenations 2013-12-05 05:44:44 +00:00
weakref-plt.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
weakref-reloc.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00
weakref.s Don't hide the first ELF symbol. 2013-06-05 20:33:54 +00:00
x86_64-reloc-sizetest.s Change how we iterate over relocations on ELF. 2013-05-30 03:05:14 +00:00
zero.s Replace coff-/elf-dump with llvm-readobj 2013-04-12 04:06:46 +00:00