diff options
-rw-r--r-- | llvm/lib/Target/Mips/MipsTargetObjectFile.cpp | 6 | ||||
-rw-r--r-- | llvm/test/CodeGen/Mips/mips-shf-gprel.ll | 24 |
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: ] |