annotate lld/test/COFF/gfids-relocations64.s @ 192:d7606dcf6fce

Added tag llvm10 for changeset 0572611fdcc8
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 14 Dec 2020 18:01:34 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 # REQUIRES: x86
anatofuz
parents:
diff changeset
2 # RUN: llvm-mc -triple x86_64-pc-win32 %s -filetype=obj -o %t.obj
anatofuz
parents:
diff changeset
3 # RUN: lld-link %t.obj -guard:cf -out:%t.exe -entry:main
anatofuz
parents:
diff changeset
4 # RUN: llvm-readobj --coff-load-config %t.exe | FileCheck %s --check-prefix=CHECK
anatofuz
parents:
diff changeset
5
anatofuz
parents:
diff changeset
6 # f, g, and main go in the table.
anatofuz
parents:
diff changeset
7 # Including g isn't strictly necessary since it's not an indirect call target,
anatofuz
parents:
diff changeset
8 # however the linker can't know that because relative relocations are used both
anatofuz
parents:
diff changeset
9 # for direct calls and for getting the absolute address of a function.
anatofuz
parents:
diff changeset
10 # (use /lldmap:map.txt to check their addresses).
anatofuz
parents:
diff changeset
11 #
anatofuz
parents:
diff changeset
12 # CHECK: GuardFidTable [
anatofuz
parents:
diff changeset
13 # CHECK-NEXT: 0x140001000
anatofuz
parents:
diff changeset
14 # CHECK-NEXT: 0x140001010
anatofuz
parents:
diff changeset
15 # CHECK-NEXT: 0x140001030
anatofuz
parents:
diff changeset
16 # CHECK-NEXT: ]
anatofuz
parents:
diff changeset
17
anatofuz
parents:
diff changeset
18 .def f;
anatofuz
parents:
diff changeset
19 .scl 3;
anatofuz
parents:
diff changeset
20 .type 32;
anatofuz
parents:
diff changeset
21 .endef
anatofuz
parents:
diff changeset
22 .section .text,"xr",one_only,f
anatofuz
parents:
diff changeset
23 .p2align 4
anatofuz
parents:
diff changeset
24 f: movl $1, %eax
anatofuz
parents:
diff changeset
25 ret
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27
anatofuz
parents:
diff changeset
28 .def g;
anatofuz
parents:
diff changeset
29 .scl 3;
anatofuz
parents:
diff changeset
30 .type 32;
anatofuz
parents:
diff changeset
31 .endef
anatofuz
parents:
diff changeset
32 .section .text,"xr",one_only,g
anatofuz
parents:
diff changeset
33 .p2align 4
anatofuz
parents:
diff changeset
34 g: movl $2, %eax
anatofuz
parents:
diff changeset
35 ret
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37
anatofuz
parents:
diff changeset
38 .def label;
anatofuz
parents:
diff changeset
39 .scl 6; # StorageClass: Label
anatofuz
parents:
diff changeset
40 .type 0; # Type: Not a function.
anatofuz
parents:
diff changeset
41 .endef
anatofuz
parents:
diff changeset
42 .section .text,"xr",one_only,label
anatofuz
parents:
diff changeset
43 .p2align 4
anatofuz
parents:
diff changeset
44 label: ret
anatofuz
parents:
diff changeset
45
anatofuz
parents:
diff changeset
46
anatofuz
parents:
diff changeset
47 .data
anatofuz
parents:
diff changeset
48 .globl fp
anatofuz
parents:
diff changeset
49 .p2align 4
anatofuz
parents:
diff changeset
50 fp: .quad f # DIR32 relocation to function
anatofuz
parents:
diff changeset
51 .quad label # DIR32 relocation to label
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53
anatofuz
parents:
diff changeset
54 .def main;
anatofuz
parents:
diff changeset
55 .scl 2;
anatofuz
parents:
diff changeset
56 .type 32;
anatofuz
parents:
diff changeset
57 .endef
anatofuz
parents:
diff changeset
58 .section .text,"xr",one_only,main
anatofuz
parents:
diff changeset
59 .globl main
anatofuz
parents:
diff changeset
60 .p2align 4
anatofuz
parents:
diff changeset
61 main: call *fp # DIR32 relocation to data
anatofuz
parents:
diff changeset
62 call g # REL32 relocation to function
anatofuz
parents:
diff changeset
63 ret
anatofuz
parents:
diff changeset
64
anatofuz
parents:
diff changeset
65
anatofuz
parents:
diff changeset
66 # Load configuration directory entry (winnt.h _IMAGE_LOAD_CONFIG_DIRECTORY64).
anatofuz
parents:
diff changeset
67 # The linker will define the __guard_* symbols.
anatofuz
parents:
diff changeset
68 .section .rdata,"dr"
anatofuz
parents:
diff changeset
69 .globl _load_config_used
anatofuz
parents:
diff changeset
70 _load_config_used:
anatofuz
parents:
diff changeset
71 .long 256
anatofuz
parents:
diff changeset
72 .fill 124, 1, 0
anatofuz
parents:
diff changeset
73 .quad __guard_fids_table
anatofuz
parents:
diff changeset
74 .quad __guard_fids_count
anatofuz
parents:
diff changeset
75 .long __guard_flags
anatofuz
parents:
diff changeset
76 .fill 128, 1, 0