2 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-pc-linux
%s
-o
%t.o
3 // RUN
: ld.lld
%t.o
-shared
-o
%t.so
4 // RUN
: llvm-readelf
-S
%t.so | FileCheck
%s
-check-prefix
=SECTION
5 // RUN
: llvm-objdump
--no-print-imm-hex
-d
%t.so | FileCheck
%s
7 // SECTION
: .dynamic DYNAMIC 0000000000002290
8 // SECTION
: .got.plt PROGBITS 0000000000003300 000300 000018
10 // The assembly is generated by
11 // gcc
-O2
-S
-mcmodel
=medium
-fPIC
a.c
12 // This computes the pc-relative address
(runtime address
) of _DYNAMIC.
14 // extern long _DYNAMIC
[] __attribute__
((visibility
("hidden")));
15 // long
* dynamic
() { return _DYNAMIC;
}
17 // 0x3300 (.got.plt) - 0x127b = 8325
18 // 0x2290 (_DYNAMIC
) - 0x3300 (.got.plt) = -4208
19 // CHECK
: 1274: {{.*}} leaq 8325(%rip), %rdx
20 // CHECK-NEXT
: 127b: {{.*}} movabsq $-4208, %rax
23 leaq _GLOBAL_OFFSET_TABLE_
(%rip
), %rdx
24 movabsq $_DYNAMIC@GOTOFF
, %rax