summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/Mips/MipsTargetObjectFile.cpp6
-rw-r--r--llvm/test/CodeGen/Mips/mips-shf-gprel.ll24
2 files changed, 28 insertions, 2 deletions
diff --git a/llvm/lib/Target/Mips/MipsTargetObjectFile.cpp b/llvm/lib/Target/Mips/MipsTargetObjectFile.cpp
index 79df9a05148..e83abdd2a8c 100644
--- a/llvm/lib/Target/Mips/MipsTargetObjectFile.cpp
+++ b/llvm/lib/Target/Mips/MipsTargetObjectFile.cpp
@@ -41,10 +41,12 @@ void MipsTargetObjectFile::Initialize(MCContext &Ctx, const TargetMachine &TM){
InitializeELF(TM.Options.UseInitArray);
SmallDataSection = getContext().getELFSection(
- ".sdata", ELF::SHT_PROGBITS, ELF::SHF_WRITE | ELF::SHF_ALLOC);
+ ".sdata", ELF::SHT_PROGBITS,
+ ELF::SHF_WRITE | ELF::SHF_ALLOC | ELF::SHF_MIPS_GPREL);
SmallBSSSection = getContext().getELFSection(".sbss", ELF::SHT_NOBITS,
- ELF::SHF_WRITE | ELF::SHF_ALLOC);
+ ELF::SHF_WRITE | ELF::SHF_ALLOC |
+ ELF::SHF_MIPS_GPREL);
this->TM = &static_cast<const MipsTargetMachine &>(TM);
}
diff --git a/llvm/test/CodeGen/Mips/mips-shf-gprel.ll b/llvm/test/CodeGen/Mips/mips-shf-gprel.ll
new file mode 100644
index 00000000000..8b5fbaa939e
--- /dev/null
+++ b/llvm/test/CodeGen/Mips/mips-shf-gprel.ll
@@ -0,0 +1,24 @@
+; Check that .sdata section has SHF_MIPS_GPREL flag.
+
+; RUN: llc -mips-ssection-threshold=16 -mgpopt -mattr=noabicalls \
+; RUN: -relocation-model=static -march=mips -o - %s -filetype=obj \
+; RUN: | llvm-readobj -s | FileCheck %s
+
+@data1 = global [4 x i32] [i32 1, i32 2, i32 3, i32 4], align 4
+@date2 = global [4 x i32] zeroinitializer, align 4
+
+; CHECK: Name: .sdata
+; CHECK-NEXT: Type: SHT_PROGBITS
+; CHECK-NEXT: Flags [ (0x10000003)
+; CHECK-NEXT: SHF_ALLOC
+; CHECK-NEXT: SHF_MIPS_GPREL
+; CHECK-NEXT: SHF_WRITE
+; CHECK-NEXT: ]
+
+; CHECK: Name: .sbss
+; CHECK-NEXT: Type: SHT_NOBITS
+; CHECK-NEXT: Flags [ (0x10000003)
+; CHECK-NEXT: SHF_ALLOC
+; CHECK-NEXT: SHF_MIPS_GPREL
+; CHECK-NEXT: SHF_WRITE
+; CHECK-NEXT: ]
OpenPOWER on IntegriCloud