forked from OSchip/llvm-project
Reapply r185872 now that the address sanitizer has been changed to support this.
Original commit message: Stop emitting weak symbols into the "coal" sections. The Mach-O linker has been able to support the weak-def bit on any symbol for quite a while now. The compiler however continued to place these symbols into a "coal" section, which required the linker to map them back to the base section name. Replace the sections like this: __TEXT/__textcoal_nt instead use __TEXT/__text __TEXT/__const_coal instead use __TEXT/__const __DATA/__datacoal_nt instead use __DATA/__data <rdar://problem/14265330> llvm-svn: 187939
This commit is contained in:
parent
6d8d755ccf
commit
b80f9791e4
|
@ -524,14 +524,14 @@ const MCSection *TargetLoweringObjectFileMachO::
|
|||
SelectSectionForGlobal(const GlobalValue *GV, SectionKind Kind,
|
||||
Mangler *Mang, const TargetMachine &TM) const {
|
||||
if (Kind.isText())
|
||||
return GV->isWeakForLinker() ? TextCoalSection : TextSection;
|
||||
|
||||
// If this is weak/linkonce, put this in a coalescable section, either in text
|
||||
// or data depending on if it is writable.
|
||||
return TextSection;
|
||||
|
||||
// If this is weak/linkonce, put this in a read only or data section depending
|
||||
// on whether or not it's writable.
|
||||
if (GV->isWeakForLinker()) {
|
||||
if (Kind.isReadOnly())
|
||||
return ConstTextCoalSection;
|
||||
return DataCoalSection;
|
||||
return ReadOnlySection;
|
||||
return DataSection;
|
||||
}
|
||||
|
||||
// FIXME: Alignment check should be handled by section classifier.
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
; TODO: linux drops this into .rodata, we drop it into ".gnu.linkonce.r.G2"
|
||||
|
||||
; DARWIN: .section __TEXT,__const_coal,coalesced
|
||||
; DARWIN: .section __TEXT,__const{{$}}
|
||||
; DARWIN: _G2:
|
||||
; DARWIN: .long 42
|
||||
|
||||
|
@ -70,7 +70,6 @@
|
|||
; LINUX: .weak foo_20_bar
|
||||
; LINUX: foo_20_bar:
|
||||
|
||||
; DARWIN: .section __DATA,__datacoal_nt,coalesced
|
||||
; DARWIN: .globl "_foo bar"
|
||||
; DARWIN: .weak_definition "_foo bar"
|
||||
; DARWIN: "_foo bar":
|
||||
|
@ -85,7 +84,7 @@
|
|||
; LINUX: .byte 1
|
||||
; LINUX: .size G6, 1
|
||||
|
||||
; DARWIN: .section __TEXT,__const_coal,coalesced
|
||||
; DARWIN: .section __TEXT,__const{{$}}
|
||||
; DARWIN: .globl _G6
|
||||
; DARWIN: .weak_definition _G6
|
||||
; DARWIN:_G6:
|
||||
|
@ -131,7 +130,7 @@
|
|||
@G10 = weak global [100 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=0]
|
||||
|
||||
|
||||
; DARWIN: .section __DATA,__datacoal_nt,coalesced
|
||||
; DARWIN: .section __DATA,__data{{$}}
|
||||
; DARWIN: .globl _G10
|
||||
; DARWIN: .weak_definition _G10
|
||||
; DARWIN: .align 5
|
||||
|
|
Loading…
Reference in New Issue