1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/test/MC/Mips
Daniel Sanders cd4dc5cad8 [mips] Correct the ordering of HI/LO pairs in the relocation table.
Summary:
There seems to have been a misunderstanding as to the meaning of 'offset' in
the rules laid down by our ABI. The previous code believed that 'offset' meant
the offset within the section that the relocation is applied to. However, it
should have meant the offset from the symbol used in the relocation expression.

This patch adds two fields to ELFRelocationEntry and uses them to correct the
order of relocations for MIPS. These fields contain:
* The original symbol before shouldRelocateWithSymbol() is considered. This
  ensures that R_MIPS_GOT16 is able to correctly distinguish between local and
  external symbols, allowing us to tell whether %got() requires a matching
  %lo() or not (local symbols require one, external symbols don't). It also
  prevents confusing cases where the fuzzy matching rules cause things like
  %hi(foo)/%lo(foo+3) and %hi(bar)/%lo(bar+1) to swap their %lo()'s.
* The original offset before shouldRelocateWithSymbol() is considered. The
  existing Addend field is always zero when the object uses in place addends
  (because it's already moved it to the encoding) but MIPS needs to use the
  original offset to ensure that the linker correctly calculates the carry-in
  bit for %hi() and %got().

IAS ensures that unmatchable %hi()/%got() relocations are placed at the end of
the table to ensure that the linker rejects the table (we're unable to report
such errors directly). The alternatives to this risk accidental matching
against inappropriate relocations which may silently compute incorrect values
due to an incorrect carry bit between the %lo() and %hi()/%got().

Reviewers: sdardis

Subscribers: dsanders, sdardis, rafael, llvm-commits

Differential Revision: http://reviews.llvm.org/D19718

llvm-svn: 268733
2016-05-06 13:49:25 +00:00
..
cnmips [mips] Range check simm10 2016-03-24 13:26:59 +00:00
dsp [mips] Range check uimm16 and fix several bugs this revealed. 2016-02-01 15:13:31 +00:00
dspr2 [mips][microMIPS][DSP] Implement PACKRL.PH, PICK.PH, PICK.QB, SHILO, SHILOV and WRDSP instructions 2015-12-18 08:59:37 +00:00
eva [mips][microMIPS] Fix offsets for LLE, LWE, SBE, SCE and SHE instructions 2016-04-29 08:36:54 +00:00
micromips [mips][microMIPS] Add CodeGen support for microMIPSr6 ROTR and ROTRV and add tests for LL, SC, SYSCALL, ROTR, ROTRV, LWM32, SWM32 and MOVEP instructions 2016-05-04 12:02:12 +00:00
micromips32r6 [mips][microMIPS] Add CodeGen support for microMIPSr6 ROTR and ROTRV and add tests for LL, SC, SYSCALL, ROTR, ROTRV, LWM32, SWM32 and MOVEP instructions 2016-05-04 12:02:12 +00:00
micromips64r6 [mips][microMIPS] Add CodeGen support for MUL* and DMUL* instructions 2016-05-06 08:24:14 +00:00
micromips-dsp [mips][microMIPS][DSP] Implement PACKRL.PH, PICK.PH, PICK.QB, SHILO, SHILOV and WRDSP instructions 2015-12-18 08:59:37 +00:00
micromips-dspr2 [mips][microMIPS][DSP] Implement PACKRL.PH, PICK.PH, PICK.QB, SHILO, SHILOV and WRDSP instructions 2015-12-18 08:59:37 +00:00
mips1 [mips] Range check simm16 2016-03-31 14:34:00 +00:00
mips2 [mips] Range check simm9 and fix a bug this revealed. 2016-03-31 13:15:23 +00:00
mips3 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips4 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips5 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips32 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips32r2 [mips] Trivial corrections to range checked immediates. 2016-04-11 15:20:40 +00:00
mips32r3 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips32r5 [mips][microMIPS] Revert commit r266861. 2016-04-22 16:53:15 +00:00
mips32r6 [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
mips64 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips64r2 [mips] Range check uimm16_64 2016-03-14 12:44:44 +00:00
mips64r3 [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips64r5 [mips][microMIPS] Revert commit r266861. 2016-04-22 16:53:15 +00:00
mips64r6 [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
msa [mips] Split mem_msa into range checked mem_simm10 and mem_simm10_lsl[123] 2016-03-31 14:12:01 +00:00
asciiz-directive-bad.s
asciiz-directive.s
branch-pseudos-bad.s [mips] Add support for branch-likely pseudo-instructions 2015-09-15 15:06:26 +00:00
branch-pseudos.s [mips] Add support for branch-likely pseudo-instructions 2015-09-15 15:06:26 +00:00
cfi-advance-loc.s
cfi.s
cpload-bad.s
cpload.s
cprestore-bad.s [mips] Add assembler support for the .cprestore directive. 2015-09-17 16:08:39 +00:00
cprestore-noreorder.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
cprestore-reorder.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
cprestore-warning-unused.s [mips] Add assembler support for the .cprestore directive. 2015-09-17 16:08:39 +00:00
cpsetup-bad.s
cpsetup.s Revert r265817 2016-04-08 18:15:37 +00:00
directive-ent.s [mips] .ent and .end should also set the type and size of the symbol respectively. 2015-11-23 16:08:03 +00:00
do_switch1.s
do_switch2.s
do_switch3.s
double-expand.s [mips][ias] Move createCpRestoreMemOp to MipsTargetStreamer. NFC. 2016-04-29 16:16:49 +00:00
eh-frame.s
elf_basic.s Use ELFOSABI_NONE instead of ELFOSABI_LINUX. 2015-09-24 20:57:24 +00:00
elf_eflags_abicalls.s
elf_eflags_micromips.s
elf_eflags_mips16.s
elf_eflags_nan2008.s
elf_eflags_nanlegacy.s
elf_eflags_noreorder.s
elf_eflags_pic0.s
elf_eflags_pic2.s
elf_eflags.s
elf_reginfo.s
elf_st_other.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
elf-bigendian.ll
elf-gprel-32-64.s
elf-N64.s
elf-relsym.s
elf-tls.s
expansion-jal-sym-pic.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
expr1.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
got-rel-expr.s Revert r265817 2016-04-08 18:15:37 +00:00
hex-immediates.s Revert r265817 2016-04-08 18:15:37 +00:00
higher-highest-addressing.s Revert r265817 2016-04-08 18:15:37 +00:00
hilo-addressing.s Revert r265817 2016-04-08 18:15:37 +00:00
insn-directive.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
instalias-imm-expanding.s [mips] Range check simm32 and fold MIPS16's imm32 into simm32. 2016-04-04 15:32:49 +00:00
instr-analysis.s Revert r265817 2016-04-08 18:15:37 +00:00
lit.local.cfg
llvm-mc-fixup-endianness.s
macro-abs.s [mips] Absolute value macro expansion 2016-01-29 16:18:34 +00:00
macro-bcc-imm-bad.s [mips][ias] Implement macro expansion when bcc has an immediate where a register belongs. 2015-10-12 14:24:05 +00:00
macro-bcc-imm.s [mips][ias] Implement macro expansion when bcc has an immediate where a register belongs. 2015-10-12 14:24:05 +00:00
macro-ddiv-bad.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-ddiv.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-ddivu-bad.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-ddivu.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-div-bad.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-div.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-divu-bad.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-divu.s [mips] Added support for the div, divu, ddiv and ddivu macros which use traps and breaks in the integrated assembler. 2015-09-03 12:31:22 +00:00
macro-dla-32bit.s [mips] Allowed dla instructions on 32-bit architectures. 2016-01-21 15:11:01 +00:00
macro-dla.s [mips] Changed the way symbols are handled in dla and la instructions to allow simple expressions. 2015-10-05 13:19:29 +00:00
macro-dli.s [mips] [IAS] Add support for the DLA pseudo-instruction and fix problems with DLI 2015-08-17 10:11:55 +00:00
macro-la-bad.s [mips] [IAS] Add support for the DLA pseudo-instruction and fix problems with DLI 2015-08-17 10:11:55 +00:00
macro-la.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
macro-li-bad.s
macro-li.s
micromips-16-bit-instructions.s
micromips-alias.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-alu-instructions.s
micromips-bad-branches.s
micromips-branch-fixup.s
micromips-branch-instructions.s
micromips-control-instructions.s [mips][microMIPS] Implement PAUSE, RDHWR, RDPGPR, SDBBP, SSNOP, SYNC, SYNCI and WAIT instructions 2015-10-28 11:04:29 +00:00
micromips-diagnostic-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
micromips-el-fixup-data.s Revert r265817 2016-04-08 18:15:37 +00:00
micromips-expansions.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
micromips-fpu-instructions.s
micromips-func-addr.s [LLVM] Remove unwanted --check-prefix=CHECK from unit tests. NFC. 2016-04-19 23:51:52 +00:00
micromips-invalid.s [mips] Range check simm7. 2016-03-22 14:40:00 +00:00
micromips-jump26.s
micromips-jump-instructions.s
micromips-label-test-sections.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-label-test.s [llvm-readobj] Decode st_other symbol's flags 2016-03-24 16:10:37 +00:00
micromips-loadstore-instructions.s [mips][microMIPS] Implement PREFX, LHUE, LBE, LBUE, LHE, LWE, SBE, SHE and SWE instructions 2015-09-16 09:14:35 +00:00
micromips-loadstore-unaligned.s
micromips-movcond-instructions.s
micromips-multiply-instructions.s
micromips-pc16-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
micromips-relocations.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
micromips-shift-instructions.s [mips][microMIPS] Add CodeGen support for SLL16, SRL16, SLL, SLLV, SRA, SRAV, SRL and SRLV instructions 2016-04-27 11:02:23 +00:00
micromips-tailr.s
micromips-trap-instructions.s
mips64-alu-instructions.s [mips][ias] Range check uimm5 operands and fix several bugs this revealed. 2015-11-26 16:35:41 +00:00
mips64-expansions.s [mips] Make symbols an acceptable branch target when expanding compare-to-immediate-and-branch macros. 2016-02-29 11:24:49 +00:00
mips64-instructions.s
mips64-register-names-n32-n64.s
mips64-register-names-o32.s
mips64eb-fixups.s
mips64extins.ll Revert r265817 2016-04-08 18:15:37 +00:00
mips64shift.ll Revert r265817 2016-04-08 18:15:37 +00:00
mips_abi_flags_xx_set.s
mips_abi_flags_xx.s
mips_directives_bad.s
mips_directives.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
mips_gprel16.s Revert r265817 2016-04-08 18:15:37 +00:00
mips-abi-bad.s
mips-alu-instructions.s [mips] Remap move as or. 2015-08-11 08:56:25 +00:00
mips-bad-branches.s
mips-control-instructions.s [mips] Range check uimm20 and fixed a bug this revealed. 2016-02-29 16:06:38 +00:00
mips-cop0-reginfo.s [LLVM] Remove unwanted --check-prefix=CHECK from unit tests. NFC. 2016-04-19 23:51:52 +00:00
mips-coprocessor-encodings.s
mips-data-directives.s [mips] Implemented the .hword directive. 2016-02-15 16:11:51 +00:00
mips-diagnostic-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
mips-expansions-bad.s [mips][ias] Implement ulh macro. 2015-10-15 14:52:58 +00:00
mips-expansions.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
mips-fpu-instructions.s
mips-hwr-register-names.s
mips-jump-delay-slots.s
mips-jump-instructions.s
mips-memory-instructions.s
mips-noat.s
mips-pc16-fixup.s [Assembler] Make fatal assembler errors non-fatal 2015-11-17 10:00:43 +00:00
mips-pdr-bad.s
mips-pdr.s [mips] Removed the SHF_ALLOC flag and the SHT_REL flag from the .pdr section. 2016-02-17 11:15:16 +00:00
mips-reginfo-fp32.s
mips-reginfo-fp64.s
mips-register-names-invalid.s
mips-register-names-o32.s
module-directive-bad.s
module-hardfloat.s
module-softfloat.s
multi-64bit-func.ll
nabi-regs.s
nacl-mask.s Revert r265817 2016-04-08 18:15:37 +00:00
nooddspreg-cmdarg.s
nooddspreg-error.s
nooddspreg.s
octeon-instructions.s
oddspreg.s
pr11877.s
r-mips-got-disp.s
reloc-directive-bad.s Implement .reloc (constant offset only) with support for R_MIPS_NONE and R_MIPS_32. 2015-11-12 13:33:00 +00:00
reloc-directive-negative.s [MC, COFF] Add .reloc support for WinCOFF 2016-01-19 23:05:27 +00:00
reloc-directive.s Implement .reloc (constant offset only) with support for R_MIPS_NONE and R_MIPS_32. 2015-11-12 13:33:00 +00:00
relocation.s [mips] Use MipsMCExpr instead of MCSymbolRefExpr for all relocations. 2016-05-03 13:35:44 +00:00
rotations32-bad.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
rotations32.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
rotations64.s [mips] Add tests for ROL and ROR macros expansion 2015-11-19 15:04:31 +00:00
section-size.s [mips][ias] Only round section sizes when explicitly requested. 2016-05-04 13:21:06 +00:00
set-arch.s [mips] add assembler support for .set arch=octeon 2016-04-12 15:28:16 +00:00
set-at-directive-explicit-at.s
set-at-directive.s
set-at-noat-bad-syntax.s
set-defined-symbol.s
set-mips0-directive.s
set-mips16-directive.s
set-mips-directives-bad.s
set-mips-directives.s
set-nodsp.s
set-nomacro-micromips.s
set-nomacro.s [mips][ias] Implement ulh macro. 2015-10-15 14:52:58 +00:00
set-oddspreg-nooddspreg-error.s
set-oddspreg-nooddspreg.s
set-push-pop-directives-bad.s Fix Mips Parser error reporting 2016-05-05 14:15:46 +00:00
set-push-pop-directives.s
set-softfloat-hardfloat-bad.s
set-softfloat-hardfloat.s
sext_64_32.ll
sort-relocation-table.s [mips] Correct the ordering of HI/LO pairs in the relocation table. 2016-05-06 13:49:25 +00:00
sym-expr.s
sym-offset.ll
target-soft-float.s
unaligned-nops.s
update-module-level-options.s
user-macro-argument-separation.s [MC] Fixed parsing of macro arguments where expressions with spaces are present. 2016-02-11 13:48:49 +00:00
xgot.s