mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01:00
47d3d1e5ef
Today, we always take into account the possibility that object files produced by MC may be consumed by an incremental linker. This results in us initialing fields which vary with time (TimeDateStamp) which harms hermetic builds (e.g. verifying a self-host went well) and produces sub-optimal code because we cannot assume anything about the relative position of functions within a section (call sites can get redirected through incremental linker thunks). Let's provide an MCTargetOption which controls this behavior so that we can disable this functionality if we know a-priori that the build will not rely on /incremental. llvm-svn: 256203
51 lines
1.3 KiB
ArmAsm
51 lines
1.3 KiB
ArmAsm
// The purpose of this test is to verify that we produce relocations for
|
|
// references to functions. Failing to do so might cause pointer-to-function
|
|
// equality to fail if /INCREMENTAL links are used.
|
|
|
|
// RUN: llvm-mc -filetype=obj -incremental-linker-compatible -triple i686-pc-win32 %s | llvm-readobj -s | FileCheck %s
|
|
// RUN: llvm-mc -filetype=obj -incremental-linker-compatible -triple x86_64-pc-win32 %s | llvm-readobj -s | FileCheck %s
|
|
|
|
.def _foo;
|
|
.scl 2;
|
|
.type 32;
|
|
.endef
|
|
.text
|
|
.globl _foo
|
|
.align 16, 0x90
|
|
_foo: # @foo
|
|
# BB#0: # %e
|
|
.align 16, 0x90
|
|
LBB0_1: # %i
|
|
# =>This Inner Loop Header: Depth=1
|
|
jmp LBB0_1
|
|
|
|
.def _bar;
|
|
.scl 2;
|
|
.type 32;
|
|
.endef
|
|
.globl _bar
|
|
.align 16, 0x90
|
|
_bar: # @bar
|
|
# BB#0: # %e
|
|
.align 16, 0x90
|
|
LBB1_1: # %i
|
|
# =>This Inner Loop Header: Depth=1
|
|
jmp LBB1_1
|
|
|
|
.def _baz;
|
|
.scl 2;
|
|
.type 32;
|
|
.endef
|
|
.globl _baz
|
|
.align 16, 0x90
|
|
_baz: # @baz
|
|
# BB#0: # %e
|
|
subl $4, %esp
|
|
Ltmp0:
|
|
call _baz
|
|
addl $4, %esp
|
|
ret
|
|
|
|
// CHECK: Sections [
|
|
// CHECK: RelocationCount: 1
|