mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-29 22:30:33 +00:00
More data/parsing support for tls directives. Add a few more testcases
and cleanup comments as well. llvm-svn: 103985
This commit is contained in:
parent
378d6c5d76
commit
6ea9cf8425
@ -84,19 +84,23 @@ public:
|
||||
|
||||
|
||||
class TargetLoweringObjectFileMachO : public TargetLoweringObjectFile {
|
||||
/// TLSDataSection - Section directive for Thread Local data.
|
||||
/// TLSDataSection - Section for thread local data.
|
||||
///
|
||||
const MCSection *TLSDataSection; // Defaults to ".tdata".
|
||||
|
||||
/// TLSBSSSection - Section directive for Thread Local uninitialized data.
|
||||
/// TLSBSSSection - Section for thread local uninitialized data.
|
||||
///
|
||||
const MCSection *TLSBSSSection; // Defaults to ".tbss".
|
||||
|
||||
/// TLSTLVSection - Section directive for Thread Local structure infomation.
|
||||
/// TLSTLVSection - Section for thread local structure infomation.
|
||||
/// Contains the source code name of the variable, visibility and a pointer
|
||||
/// to the initial value (.tdata or .tbss).
|
||||
const MCSection *TLSTLVSection; // Defaults to ".tlv".
|
||||
|
||||
/// TLSThreadInitSection - Section for thread local data initialization
|
||||
/// functions.
|
||||
const MCSection *TLSThreadInitSection; // Defaults to ".thread_init_func".
|
||||
|
||||
const MCSection *CStringSection;
|
||||
const MCSection *UStringSection;
|
||||
const MCSection *TextCoalSection;
|
||||
|
@ -98,7 +98,7 @@ public:
|
||||
S_THREAD_LOCAL_VARIABLE_POINTERS = 0x14U,
|
||||
/// S_THREAD_LOCAL_INIT_FUNCTION_POINTERS - Section with thread local
|
||||
/// variable initialization pointers to functions.
|
||||
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS = 0x15,
|
||||
S_THREAD_LOCAL_INIT_FUNCTION_POINTERS = 0x15U,
|
||||
|
||||
LAST_KNOWN_SECTION_TYPE = S_THREAD_LOCAL_INIT_FUNCTION_POINTERS,
|
||||
|
||||
|
@ -475,6 +475,12 @@ void TargetLoweringObjectFileMachO::Initialize(MCContext &Ctx,
|
||||
= getContext().getMachOSection("__DATA", "__thread_vars",
|
||||
MCSectionMachO::S_THREAD_LOCAL_VARIABLES,
|
||||
SectionKind::getDataRel());
|
||||
|
||||
TLSThreadInitSection
|
||||
= getContext().getMachOSection("__DATA", "__thread_init",
|
||||
MCSectionMachO::S_THREAD_LOCAL_INIT_FUNCTION_POINTERS,
|
||||
SectionKind::getDataRel());
|
||||
|
||||
CStringSection // .cstring
|
||||
= getContext().getMachOSection("__TEXT", "__cstring",
|
||||
MCSectionMachO::S_CSTRING_LITERALS,
|
||||
|
@ -623,6 +623,16 @@ bool AsmParser::ParseStatement() {
|
||||
return ParseDirectiveSectionSwitch("__OBJC", "__selector_strs",
|
||||
MCSectionMachO::S_CSTRING_LITERALS);
|
||||
|
||||
if (IDVal == ".tdata")
|
||||
return ParseDirectiveSectionSwitch("__DATA", "__thread_data",
|
||||
MCSectionMachO::S_THREAD_LOCAL_REGULAR);
|
||||
if (IDVal == ".tlv")
|
||||
return ParseDirectiveSectionSwitch("__DATA", "__thread_vars",
|
||||
MCSectionMachO::S_THREAD_LOCAL_VARIABLES);
|
||||
if (IDVal == ".thread_init_func")
|
||||
return ParseDirectiveSectionSwitch("__DATA", "__thread_init",
|
||||
MCSectionMachO::S_THREAD_LOCAL_INIT_FUNCTION_POINTERS);
|
||||
|
||||
// Assembler features
|
||||
if (IDVal == ".set")
|
||||
return ParseDirectiveSet();
|
||||
|
@ -1,4 +1,4 @@
|
||||
# RUN: llvm-mc -triple i386-unknown-darwin %s | FileCheck %s
|
||||
# RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s
|
||||
|
||||
# CHECK: .tbss _a$tlv$init, 4
|
||||
# CHECK: .tbss _b$tlv$init, 4, 3
|
||||
|
9
test/MC/AsmParser/directive_tdata.s
Normal file
9
test/MC/AsmParser/directive_tdata.s
Normal file
@ -0,0 +1,9 @@
|
||||
# RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s
|
||||
|
||||
# CHECK: __DATA,__thread_data,thread_local_regular
|
||||
# CHECK: _a$tlv$init:
|
||||
# CHECK: .quad 4
|
||||
|
||||
.tdata
|
||||
_a$tlv$init:
|
||||
.quad 4
|
7
test/MC/AsmParser/directive_thread_init_func.s
Normal file
7
test/MC/AsmParser/directive_thread_init_func.s
Normal file
@ -0,0 +1,7 @@
|
||||
# RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s
|
||||
|
||||
# CHECK: __DATA,__thread_init,thread_local_init_function_pointers
|
||||
# CHECK: .quad 0
|
||||
|
||||
.thread_init_func
|
||||
.quad 0
|
13
test/MC/AsmParser/directive_tlv.s
Normal file
13
test/MC/AsmParser/directive_tlv.s
Normal file
@ -0,0 +1,13 @@
|
||||
# RUN: llvm-mc -triple x86_64-unknown-darwin %s | FileCheck %s
|
||||
|
||||
# CHECK: __DATA,__thread_vars,thread_local_variables
|
||||
# CHECK: .globl _a
|
||||
# CHECK: _a:
|
||||
# CHECK: .quad 0
|
||||
|
||||
.tlv
|
||||
.globl _a
|
||||
_a:
|
||||
.quad 0
|
||||
.quad 0
|
||||
.quad 0
|
Loading…
Reference in New Issue
Block a user