= Ctx->getMachOSection("__TEXT", "__const", 0,
SectionKind::getReadOnly());
- // If the target is not powerpc, map the coal sections to the non-coal
- // sections.
- //
- // "__TEXT/__textcoal_nt" => section "__TEXT/__text"
- // "__TEXT/__const_coal" => section "__TEXT/__const"
- // "__DATA/__datacoal_nt" => section "__DATA/__data"
- Triple::ArchType ArchTy = T.getArch();
-
- if (ArchTy == Triple::ppc || ArchTy == Triple::ppc64) {
- TextCoalSection
- = Ctx->getMachOSection("__TEXT", "__textcoal_nt",
- MachO::S_COALESCED |
- MachO::S_ATTR_PURE_INSTRUCTIONS,
- SectionKind::getText());
- ConstTextCoalSection
- = Ctx->getMachOSection("__TEXT", "__const_coal",
- MachO::S_COALESCED,
- SectionKind::getReadOnly());
- DataCoalSection
- = Ctx->getMachOSection("__DATA","__datacoal_nt",
- MachO::S_COALESCED,
- SectionKind::getDataRel());
- } else {
- TextCoalSection = TextSection;
- ConstTextCoalSection = ReadOnlySection;
- DataCoalSection = DataSection;
- }
-
+ TextCoalSection
+ = Ctx->getMachOSection("__TEXT", "__textcoal_nt",
+ MachO::S_COALESCED |
+ MachO::S_ATTR_PURE_INSTRUCTIONS,
+ SectionKind::getText());
+ ConstTextCoalSection
+ = Ctx->getMachOSection("__TEXT", "__const_coal",
+ MachO::S_COALESCED,
+ SectionKind::getReadOnly());
ConstDataSection // .const_data
= Ctx->getMachOSection("__DATA", "__const", 0,
SectionKind::getReadOnlyWithRel());
+ DataCoalSection
+ = Ctx->getMachOSection("__DATA","__datacoal_nt",
+ MachO::S_COALESCED,
+ SectionKind::getDataRel());
DataCommonSection
= Ctx->getMachOSection("__DATA","__common",
MachO::S_ZEROFILL,
#include "llvm/MC/MCParser/MCAsmParserExtension.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
-#include "llvm/ADT/Triple.h"
#include "llvm/ADT/Twine.h"
#include "llvm/MC/MCContext.h"
-#include "llvm/MC/MCObjectFileInfo.h"
#include "llvm/MC/MCParser/MCAsmLexer.h"
#include "llvm/MC/MCParser/MCAsmParser.h"
#include "llvm/MC/MCSectionMachO.h"
if (!ErrorStr.empty())
return Error(Loc, ErrorStr.c_str());
- // Issue a warning if the target is not powerpc and Section is a *coal* section.
- Triple TT = getParser().getContext().getObjectFileInfo()->getTargetTriple();
- Triple::ArchType ArchTy = TT.getArch();
-
- if (ArchTy != Triple::ppc && ArchTy != Triple::ppc64) {
- StringRef NonCoalSection = StringSwitch<StringRef>(Section)
- .Case("__textcoal_nt", "__text")
- .Case("__const_coal", "__const")
- .Case("__datacoal_nt", "__data")
- .Default(Section);
-
- if (!Section.equals(NonCoalSection)) {
- StringRef SectionVal(Loc.getPointer());
- size_t B = SectionVal.find(',') + 1, E = SectionVal.find(',', B);
- SMLoc BLoc = SMLoc::getFromPointer(SectionVal.data() + B);
- SMLoc ELoc = SMLoc::getFromPointer(SectionVal.data() + E);
- getParser().Warning(Loc, "section \"" + Section + "\" is deprecated",
- SMRange(BLoc, ELoc));
- getParser().Note(Loc, "change section name to \"" + NonCoalSection +
- "\"", SMRange(BLoc, ELoc));
- }
- }
-
// FIXME: Arch specific.
bool isText = Segment == "__TEXT"; // FIXME: Hack.
getStreamer().SwitchSection(getContext().getMachOSection(
+++ /dev/null
-; RUN: llc < %s -mtriple powerpc-apple-darwin8 -march=ppc32 | FileCheck %s
-
-; Check that *coal* sections are emitted.
-
-; CHECK: .section __TEXT,__textcoal_nt,coalesced,pure_instructions
-; CHECK: .section __TEXT,__textcoal_nt,coalesced,pure_instructions
-; CHECK-NEXT: .globl _foo
-
-; CHECK: .section __TEXT,__const_coal,coalesced
-; CHECK-NEXT: .globl _a
-
-; CHECK: .section __DATA,__datacoal_nt,coalesced
-; CHECK-NEXT: .globl _b
-
-@a = weak_odr constant [4 x i32] [i32 1, i32 2, i32 3, i32 4], align 16
-@b = weak global i32 5, align 4
-@g = common global i32* null, align 8
-
-; Function Attrs: nounwind ssp uwtable
-define weak i32* @foo() {
-entry:
- store i32* getelementptr inbounds ([4 x i32], [4 x i32]* @a, i64 0, i64 0), i32** @g, align 8
- ret i32* @b
-}
+++ /dev/null
-; RUN: llc < %s -mtriple x86_64-apple-darwin | FileCheck %s
-
-; Check that *coal* sections are not emitted.
-
-; CHECK: .section __TEXT,__text,regular,pure_instructions{{$}}
-; CHECK-NEXT: .globl _foo
-
-; CHECK: .section __TEXT,__const{{$}}
-; CHECK-NEXT: .globl _a
-
-; CHECK: .section __DATA,__data{{$}}
-; CHECK-NEXT: .globl _b
-
-@a = weak_odr constant [4 x i32] [i32 1, i32 2, i32 3, i32 4], align 16
-@b = weak global i32 5, align 4
-@g = common global i32* null, align 8
-
-; Function Attrs: nounwind ssp uwtable
-define weak i32* @foo() {
-entry:
- store i32* getelementptr inbounds ([4 x i32], [4 x i32]* @a, i64 0, i64 0), i32** @g, align 8
- ret i32* @b
-}
; TODO: linux drops this into .rodata, we drop it into ".gnu.linkonce.r.G2"
-; DARWIN: .section __TEXT,__const{{$}}
+; DARWIN: .section __TEXT,__const_coal,coalesced
; DARWIN: _G2:
; DARWIN: .long 42
; LINUX: .weak "foo bar"
; LINUX: "foo bar":
+; DARWIN: .section __DATA,__datacoal_nt,coalesced
; DARWIN: .globl "_foo bar"
; DARWIN: .weak_definition "_foo bar"
; DARWIN: "_foo bar":
; LINUX: .byte 1
; LINUX: .size G6, 1
-; DARWIN: .section __TEXT,__const{{$}}
+; DARWIN: .section __TEXT,__const_coal,coalesced
; DARWIN: .globl _G6
; DARWIN: .weak_definition _G6
; DARWIN:_G6:
@G10 = weak global [100 x i32] zeroinitializer, align 32 ; <[100 x i32]*> [#uses=0]
-; DARWIN: .section __DATA,__data{{$}}
+; DARWIN: .section __DATA,__datacoal_nt,coalesced
; DARWIN: .globl _G10
; DARWIN: .weak_definition _G10
; DARWIN: .align 5
+++ /dev/null
-// RUN: llvm-mc -triple powerpc-apple-darwin8 -arch=ppc32 -filetype=obj %s -o - | llvm-readobj -sections | FileCheck %s
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 0
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 1
-// CHECK-NEXT: Name: __textcoal_nt (
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 2
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 3
-// CHECK-NEXT: Name: __const_coal (
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 4
-// CHECK-NEXT: Name: __datacoal_nt (
-
- .section __TEXT,__text,regular,pure_instructions
- .machine ppc
- .section __TEXT,__textcoal_nt,coalesced,pure_instructions
- .section __TEXT,__symbol_stub1,symbol_stubs,pure_instructions,16
- .section __TEXT,__text,regular,pure_instructions
- .section __TEXT,__textcoal_nt,coalesced,pure_instructions
- .globl _foo
- .weak_definition _foo
- .align 4
-_foo:
- blr
-
-.subsections_via_symbols
- .section __TEXT,__const_coal,coalesced
- .globl _a ; @a
- .weak_definition _a
- .align 4
-_a:
- .long 1 ; 0x1
-
- .section __DATA,__datacoal_nt,coalesced
- .globl _b ; @b
- .weak_definition _b
- .align 2
-_b:
- .long 5 ; 0x5
+++ /dev/null
-// RUN: llvm-mc -triple x86_64-apple-darwin -filetype=obj %s -o - 2>%t.err | llvm-readobj -sections | FileCheck %s
-// RUN: FileCheck --check-prefix=WARNING < %t.err %s
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 0
-// CHECK-NEXT: Name: __text (
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 1
-// CHECK-NEXT: Name: __textcoal_nt (
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 2
-// CHECK-NEXT: Name: __const_coal (
-
-// CHECK: Section {
-// CHECK-NEXT: Index: 3
-// CHECK-NEXT: Name: __datacoal_nt (
-
-// WARNING: warning: section "__textcoal_nt" is deprecated
-// WARNING: note: change section name to "__text"
-// WARNING: warning: section "__const_coal" is deprecated
-// WARNING: note: change section name to "__const"
-// WARNING: warning: section "__datacoal_nt" is deprecated
-// WARNING: note: change section name to "__data"
-
- .section __TEXT,__textcoal_nt,coalesced,pure_instructions
- .globl _foo
- .weak_definition _foo
- .align 4, 0x90
-_foo:
- retq
-
- .section __TEXT,__const_coal,coalesced
- .globl _a ## @a
- .weak_definition _a
- .align 4
-_a:
- .long 1 ## 0x1
-
- .section __DATA,__datacoal_nt,coalesced
- .globl _b ## @b
- .weak_definition _b
- .align 2
-_b:
- .long 5 ## 0x5
-
-.subsections_via_symbols