Skip to content

Commit 1593c41

Browse files
committed
Add ADD64rm_NF.
1 parent a5001d2 commit 1593c41

File tree

2 files changed

+40
-35
lines changed

2 files changed

+40
-35
lines changed

llvm/lib/Target/X86/MCTargetDesc/X86MCCodeEmitter.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -672,6 +672,7 @@ void X86MCCodeEmitter::emitMemModRMByte(
672672
return Kind == REX2 ? X86::reloc_riprel_4byte_relax_rex2
673673
: Kind == REX ? X86::reloc_riprel_4byte_relax_rex
674674
: X86::reloc_riprel_4byte_relax;
675+
case X86::ADD64rm_NF:
675676
case X86::ADD64rm_ND:
676677
case X86::ADD64mr_ND:
677678
case X86::ADD64mr_NF_ND:

llvm/test/MC/ELF/relocation.s

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,13 @@ bar:
2222
movq foo@GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
2323
addq foo@GOTTPOFF(%rip), %r31 # R_X86_64_CODE_4_GOTTPOFF
2424
# NDD
25-
addq %r8, foo@GOTTPOFF(%rip), %r16
26-
addq foo@GOTTPOFF(%rip), %rax, %r12
27-
{nf} addq %r8, foo@GOTTPOFF(%rip), %r16
28-
{nf} addq foo@GOTTPOFF(%rip), %rax, %r12
25+
addq %r8, foo@GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
26+
addq foo@GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
27+
# NDD + NF
28+
{nf} addq %r8, foo@GOTTPOFF(%rip), %r16 # R_X86_64_CODE_6_GOTTPOFF
29+
{nf} addq foo@GOTTPOFF(%rip), %rax, %r12 # R_X86_64_CODE_6_GOTTPOFF
30+
# NF
31+
{nf} addq foo@GOTTPOFF(%rip), %r12 # R_X86_64_CODE_6_GOTTPOFF
2932

3033
leaq foo@TLSGD(%rip), %rax # R_X86_64_TLSGD
3134
leaq foo@TPOFF(%rax), %rax # R_X86_64_TPOFF32
@@ -91,37 +94,38 @@ weak_sym:
9194
// CHECK-NEXT: 0x51 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFA
9295
// CHECK-NEXT: 0x5B R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFA
9396
// CHECK-NEXT: 0x65 R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFA
94-
// CHECK-NEXT: 0x6C R_X86_64_TLSGD foo 0xFFFFFFFFFFFFFFFC
95-
// CHECK-NEXT: 0x73 R_X86_64_TPOFF32 foo 0x0
96-
// CHECK-NEXT: 0x7A R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC
97-
// CHECK-NEXT: 0x81 R_X86_64_DTPOFF32 foo 0x0
98-
// CHECK-NEXT: 0x87 R_X86_64_GOT64 foo 0x0
99-
// CHECK-NEXT: 0x91 R_X86_64_GOTOFF64 foo 0x0
100-
// CHECK-NEXT: 0x9A R_X86_64_32S .text 0x0
101-
// CHECK-NEXT: 0xA1 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
102-
// CHECK-NEXT: 0xA8 R_X86_64_PC32 foo 0xA8
103-
// CHECK-NEXT: 0xAF R_X86_64_32S .text 0x0
104-
// CHECK-NEXT: 0xB3 R_X86_64_DTPOFF64 foo 0x0
105-
// CHECK-NEXT: 0xBD R_X86_64_TPOFF64 baz 0x0
106-
// CHECK-NEXT: 0xC5 R_X86_64_PC16 foo 0xC5
107-
// CHECK-NEXT: 0xC7 R_X86_64_PC8 foo 0xC7
108-
// CHECK-NEXT: 0xC9 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
109-
// CHECK-NEXT: 0xD0 R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
110-
// CHECK-NEXT: 0xD7 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
111-
// CHECK-NEXT: 0xDE R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
112-
// CHECK-NEXT: 0xE3 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
113-
// CHECK-NEXT: 0xE9 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
114-
// CHECK-NEXT: 0xF1 R_X86_64_SIZE64 blah 0x0
115-
// CHECK-NEXT: 0xF9 R_X86_64_SIZE64 blah 0x20
116-
// CHECK-NEXT: 0x101 R_X86_64_SIZE64 blah 0xFFFFFFFFFFFFFFE0
117-
// CHECK-NEXT: 0x10C R_X86_64_SIZE32 blah 0x0
118-
// CHECK-NEXT: 0x113 R_X86_64_SIZE32 blah 0x20
119-
// CHECK-NEXT: 0x11A R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0
120-
// CHECK-NEXT: 0x11E R_X86_64_GOTPCREL foo 0x0
121-
// CHECK-NEXT: 0x122 R_X86_64_PLT32 foo 0x0
122-
// CHECK-NEXT: 0x136 R_X86_64_32 .text 0x136
123-
// CHECK-NEXT: 0x13B R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
124-
// CHECK-NEXT: 0x13D R_X86_64_PC32 pr23272 0x0
97+
// CHECK-NEXT: 0x6F R_X86_64_CODE_6_GOTTPOFF foo 0xFFFFFFFFFFFFFFFA
98+
// CHECK-NEXT: 0x76 R_X86_64_TLSGD foo 0xFFFFFFFFFFFFFFFC
99+
// CHECK-NEXT: 0x7D R_X86_64_TPOFF32 foo 0x0
100+
// CHECK-NEXT: 0x84 R_X86_64_TLSLD foo 0xFFFFFFFFFFFFFFFC
101+
// CHECK-NEXT: 0x8B R_X86_64_DTPOFF32 foo 0x0
102+
// CHECK-NEXT: 0x91 R_X86_64_GOT64 foo 0x0
103+
// CHECK-NEXT: 0x9B R_X86_64_GOTOFF64 foo 0x0
104+
// CHECK-NEXT: 0xA4 R_X86_64_32S .text 0x0
105+
// CHECK-NEXT: 0xAB R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFC
106+
// CHECK-NEXT: 0xB2 R_X86_64_PC32 foo 0xB2
107+
// CHECK-NEXT: 0xB9 R_X86_64_32S .text 0x0
108+
// CHECK-NEXT: 0xBD R_X86_64_DTPOFF64 foo 0x0
109+
// CHECK-NEXT: 0xC7 R_X86_64_TPOFF64 baz 0x0
110+
// CHECK-NEXT: 0xCF R_X86_64_PC16 foo 0xCF
111+
// CHECK-NEXT: 0xD1 R_X86_64_PC8 foo 0xD1
112+
// CHECK-NEXT: 0xD3 R_X86_64_PLT32 foo 0xFFFFFFFFFFFFFFFC
113+
// CHECK-NEXT: 0xDA R_X86_64_PC32 foo 0xFFFFFFFFFFFFFFFB
114+
// CHECK-NEXT: 0xE1 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x3
115+
// CHECK-NEXT: 0xE8 R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0xFFFFFFFFFFFFFFFC
116+
// CHECK-NEXT: 0xED R_X86_64_GOTPC32 _GLOBAL_OFFSET_TABLE_ 0x1
117+
// CHECK-NEXT: 0xF3 R_X86_64_GOTPC64 _GLOBAL_OFFSET_TABLE_ 0x2
118+
// CHECK-NEXT: 0xFB R_X86_64_SIZE64 blah 0x0
119+
// CHECK-NEXT: 0x103 R_X86_64_SIZE64 blah 0x20
120+
// CHECK-NEXT: 0x10B R_X86_64_SIZE64 blah 0xFFFFFFFFFFFFFFE0
121+
// CHECK-NEXT: 0x116 R_X86_64_SIZE32 blah 0x0
122+
// CHECK-NEXT: 0x11D R_X86_64_SIZE32 blah 0x20
123+
// CHECK-NEXT: 0x124 R_X86_64_SIZE32 blah 0xFFFFFFFFFFFFFFE0
124+
// CHECK-NEXT: 0x128 R_X86_64_GOTPCREL foo 0x0
125+
// CHECK-NEXT: 0x12C R_X86_64_PLT32 foo 0x0
126+
// CHECK-NEXT: 0x140 R_X86_64_32 .text 0x140
127+
// CHECK-NEXT: 0x145 R_X86_64_PC16 pr23771 0xFFFFFFFFFFFFFFFE
128+
// CHECK-NEXT: 0x147 R_X86_64_PC32 pr23272 0x0
125129
// CHECK-NEXT: ]
126130
// CHECK-NEXT: }
127131

0 commit comments

Comments
 (0)