So that when mixing small and large text, large text stays out of the way of the rest of the binary. This is useful for mixing precompiled small code model object files and built-from-source large code model binaries so that the the text sections don't get merged. The reland fixes an issue where a function in the large code model would reference small data without GOTOFF. This was incorrectly reverted in 76f78ecc789d58baa3a88b2fe2a57428f07e5362.
26 lines
1.1 KiB
LLVM
26 lines
1.1 KiB
LLVM
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE
|
|
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=small -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL-DS
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=medium -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=SMALL-DS
|
|
; RUN: llc < %s -relocation-model=pic -filetype=obj -code-model=large -function-sections -o %t
|
|
; RUN: llvm-readelf -S %t | FileCheck %s --check-prefix=LARGE-DS
|
|
|
|
; SMALL: .text {{.*}} AX {{.*}}
|
|
; SMALL-DS: .text.func {{.*}} AX {{.*}}
|
|
; LARGE: .ltext {{.*}} AXl {{.*}}
|
|
; LARGE-DS: .ltext.func {{.*}} AXl {{.*}}
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64--linux"
|
|
|
|
define void @func() {
|
|
ret void
|
|
}
|