aboutsummaryrefslogtreecommitdiff
path: root/test/elf/Mips/rel-pc21-s2.test
blob: 44d840e94c32cf9e4b4f0840cd73ea2ee97d9957 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Check handling of R_MIPS_PC21_S2 relocation.

# RUN: yaml2obj -format=elf %s > %t.o
# RUN: lld -flavor gnu -target mipsel -e T0 -o %t.exe %t.o
# RUN: llvm-objdump -s -t %t.exe | FileCheck %s

# CHECK: Contents of section .text:
# CHECK-NEXT: 400110 01000000 00000000 00000000
#                    ^ V
#                    A = -1 << 2 = -4 =>
#                    V = (T1 - 4 - T0) >> 2 =>
#                    V => 4 >> 2 = 1

# CHECK: SYMBOL TABLE:
# CHECK: 00400110 g  F .text  00000008 T0
# CHECK: 00400118 g  F .text  00000004 T1

FileHeader:
  Class:   ELFCLASS32
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_MIPS
  Flags:   [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R6]

Sections:
- Name:         .text
  Type:         SHT_PROGBITS
  Content:      "ffff1f000000000000000000"
#                                ^ T1
#                ^ T0 A := 0x1fffff
  AddressAlign: 16
  Flags:        [ SHF_ALLOC, SHF_EXECINSTR ]

- Name:         .rel.text
  Type:         SHT_REL
  Info:         .text
  AddressAlign: 4
  Relocations:
    - Offset: 0
      Symbol: T1
      Type:   R_MIPS_PC21_S2

Symbols:
  Global:
    - Name:    T0
      Section: .text
      Type:    STT_FUNC
      Value:   0
      Size:    8
    - Name:    T1
      Section: .text
      Type:    STT_FUNC
      Value:   8
      Size:    4