1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-26 04:32:44 +01:00
llvm-mirror/test/MC/COFF/simple-fixups.s
David Majnemer 47d3d1e5ef [MC, COFF] Support link /incremental conditionally
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
2015-12-21 22:09:27 +00:00

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