mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-25 03:06:04 +00:00

This change causes us to read partition specifications from partition specification sections and split output sections into partitions according to their reachability from partition entry points. This is only the first step towards a full implementation of partitions. Later changes will add additional synthetic sections to each partition so that they can be loaded independently. Differential Revision: https://reviews.llvm.org/D60353 llvm-svn: 361925
45 lines
903 B
ArmAsm
45 lines
903 B
ArmAsm
// REQUIRES: x86
|
|
// RUN: llvm-mc %s -o %t.o -filetype=obj --triple=x86_64-unknown-linux
|
|
// RUN: ld.lld %t.o -o %t --export-dynamic --gc-sections
|
|
// RUN: llvm-readelf -S -s %t | FileCheck %s
|
|
|
|
// Ordinarily, the TLS and IFUNC sections would be split into partitions.
|
|
// Make sure that that didn't happen by checking that there is only one
|
|
// of each section.
|
|
|
|
// CHECK: .ifunc
|
|
// CHECK: .tdata
|
|
|
|
// CHECK-NOT: .ifunc
|
|
// CHECK-NOT: .tdata
|
|
|
|
.section .llvm_sympart.f1,"",@llvm_sympart
|
|
.asciz "part1"
|
|
.quad f1
|
|
|
|
.section .text._start,"ax",@progbits
|
|
.globl _start
|
|
_start:
|
|
call tls1
|
|
call ifunc1
|
|
|
|
.section .text.f1,"ax",@progbits
|
|
.globl f1
|
|
f1:
|
|
call tls2
|
|
call ifunc2
|
|
|
|
.section .ifunc,"ax",@progbits,unique,1
|
|
.type ifunc1 STT_GNU_IFUNC
|
|
ifunc1:
|
|
|
|
.section .ifunc,"ax",@progbits,unique,2
|
|
.type ifunc2 STT_GNU_IFUNC
|
|
ifunc2:
|
|
|
|
.section .tdata,"awT",@progbits,unique,1
|
|
tls1:
|
|
|
|
.section .tdata,"awT",@progbits,unique,2
|
|
tls2:
|