diff options
author | Jack Carter <jcarter@mips.com> | 2013-01-18 21:20:38 +0000 |
---|---|---|
committer | Jack Carter <jcarter@mips.com> | 2013-01-18 21:20:38 +0000 |
commit | c91cbb9b0c90a480299cc7deaef166d47a61d9df (patch) | |
tree | a1c7e0c758d24f4fbae2e03f23bc601c4a29faed /test/MC/Mips | |
parent | 82d3d4524f2595b2dce617e963b6d67876b4f9ba (diff) |
This is a resubmittal. For some reason it broke the bots yesterday
but I cannot reproduce the problem and have scrubed my sources and
even tested with llvm-lit -v --vg.
Support for Mips register information sections.
Mips ELF object files have a section that is dedicated
to register use info. Some of this information such as
the assumed Global Pointer value is used by the linker
in relocation resolution.
The register info file is .reginfo in o32 and .MIPS.options
in 64 and n32 abi files.
This patch contains the changes needed to create the sections,
but leaves the actual register accounting for a future patch.
Contributer: Jack Carter
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172847 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/MC/Mips')
-rw-r--r-- | test/MC/Mips/elf-reginfo.ll | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/test/MC/Mips/elf-reginfo.ll b/test/MC/Mips/elf-reginfo.ll new file mode 100644 index 0000000000..1d7a18866c --- /dev/null +++ b/test/MC/Mips/elf-reginfo.ll @@ -0,0 +1,31 @@ + ; RUN: llc -filetype=obj -march=mips64el -mcpu=mips64 %s -o - \ + ; RUN: | elf-dump --dump-section-data | FileCheck --check-prefix=CHECK_64 %s + ; RUN: llc -filetype=obj -march=mipsel -mcpu=mips32 %s -o - \ + ; RUN: | elf-dump --dump-section-data | FileCheck --check-prefix=CHECK_32 %s + +; Check for register information sections. +; + +@str = private unnamed_addr constant [12 x i8] c"hello world\00" + +define i32 @main() nounwind { +entry: +; Check that the appropriate relocations were created. + +; check for .MIPS.options +; CHECK_64: (('sh_name', 0x{{[0-9|a-f]+}}) # '.MIPS.options' +; CHECK_64-NEXT: ('sh_type', 0x7000000d) +; CHECK_64-NEXT: ('sh_flags', 0x0000000008000002) + +; check for .reginfo +; CHECK_32: (('sh_name', 0x{{[0-9|a-f]+}}) # '.reginfo' +; CHECK_32-NEXT: ('sh_type', 0x70000006) +; CHECK_32-NEXT: ('sh_flags', 0x00000002) + + + %puts = tail call i32 @puts(i8* getelementptr inbounds ([12 x i8]* @str, i64 0, i64 0)) + ret i32 0 + +} +declare i32 @puts(i8* nocapture) nounwind + |