Emit DWARF3 call frame information when DWARF3+ debug info is requested

Currently, llvm always emits a DWARF CIE with a version of 1, even when emitting
DWARF 3 or 4, which both support CIE version 3. This patch makes it emit the
newer CIE version when we are emitting DWARF 3 or 4. This will not reduce
compatibility, as we already emit other DWARF3/4 features, and is worth doing as
the DWARF3 spec removed some ambiguities in the interpretation of call frame
information.

It also fixes a minor bug where the "return address" field of the CIE was
encoded as a ULEB128, which is only valid when the CIE version is 3. There are
no test changes for this, because (as far as I can tell) none of the platforms
that we test have a return address register with a DWARF register number >127.

llvm-svn: 211272
This commit is contained in:
Oliver Stannard 2014-06-19 15:39:33 +00:00
parent 4f7ef8c6ef
commit f7693f4c1f
29 changed files with 132 additions and 74 deletions

View File

@ -57,7 +57,6 @@ enum LLVMConstants : uint32_t {
DW_TAG_user_base = 0x1000, // Recommended base for user tags.
DWARF_VERSION = 4, // Default dwarf version we output.
DW_CIE_VERSION = 1, // Common frame information version.
DW_PUBTYPES_VERSION = 2, // Section version number for .debug_pubtypes.
DW_PUBNAMES_VERSION = 2, // Section version number for .debug_pubnames.
DW_ARANGES_VERSION = 2 // Section version number for .debug_aranges.

View File

@ -209,6 +209,8 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
DwarfVersion = DwarfVersionNumber ? DwarfVersionNumber
: MMI->getModule()->getDwarfVersion();
Asm->OutStreamer.getContext().setDwarfVersion(DwarfVersion);
{
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
beginModule();

View File

@ -1270,7 +1270,10 @@ const MCSymbol &FrameEmitterImpl::EmitCIE(MCObjectStreamer &streamer,
// Version
if (verboseAsm) streamer.AddComment("DW_CIE_VERSION");
streamer.EmitIntValue(dwarf::DW_CIE_VERSION, 1);
// For DWARF2, we use CIE version 1
// For DWARF3+, we use CIE version 3
uint8_t CIEVersion = context.getDwarfVersion() <= 2 ? 1 : 3;
streamer.EmitIntValue(CIEVersion, 1);
// Augmentation String
SmallString<8> Augmentation;
@ -1298,7 +1301,14 @@ const MCSymbol &FrameEmitterImpl::EmitCIE(MCObjectStreamer &streamer,
// Return Address Register
if (verboseAsm) streamer.AddComment("CIE Return Address Column");
streamer.EmitULEB128IntValue(MRI->getDwarfRegNum(MRI->getRARegister(), true));
if (CIEVersion == 1) {
assert(MRI->getRARegister() <= 255 &&
"DWARF 2 encodes return_address_register in one byte");
streamer.EmitIntValue(MRI->getDwarfRegNum(MRI->getRARegister(), true), 1);
} else {
streamer.EmitULEB128IntValue(
MRI->getDwarfRegNum(MRI->getRARegister(), true));
}
// Augmentation Data Length (optional)

View File

@ -17,7 +17,7 @@ foo:
// Output is:
// CHECK: Contents of section .eh_frame:
// CHECK-NEXT: 0000 10000000 00000000 017a5200 017c1e01 .........zR..|..
// CHECK-NEXT: 0000 10000000 00000000 037a5200 017c1e01 .........zR..|..
// CHECK-NEXT: 0010 1b0c1f00 10000000 18000000 00000000 ................
@ -30,7 +30,7 @@ foo:
// -------------------
// 10000000: length of first CIE = 0x10
// 00000000: This is a CIE
// 01: version = 0x1
// 03: version = 0x3
// 7a 52 00: augmentation string "zR" -- pointer format is specified
// 01: code alignment factor 1
// 7c: data alignment factor -4

View File

@ -16,7 +16,7 @@ clean:
}
; CHECK: Contents of section .eh_frame:
; CHECK: 0000 1c000000 00000000 017a504c 5200017c .........zPLR..|
; CHECK: 0000 1c000000 00000000 037a504c 5200017c .........zPLR..|
; CHECK: 0010 1e0b0000 00000000 00000000 1b0c1f00 ................
; Don't really care about the rest:
@ -33,7 +33,7 @@ clean:
; ----------
; 1c000000: Length = 0x1c
; 00000000: This is a CIE
; 01: Version 1
; 03: Version 3
; 7a 50 4c 52 00: Augmentation string "zPLR" (personality routine, language-specific data, pointer format)
; 01: Code alignment factor 1
; 78: Data alignment factor: -8

View File

@ -23,7 +23,7 @@ check_largest_class:
# Contents of the .eh_frame section:
#
# 00000000 0000001c 00000000 CIE
# Version: 1
# Version: 3
# Augmentation: "zR"
# Code alignment factor: 1
# Data alignment factor: -8
@ -48,7 +48,7 @@ check_largest_class:
# DW_CFA_nop
#
# CHECK: Contents of section .eh_frame:
# CHECK-NEXT: 0000 00000014 00000000 017a5200 01780e01 .........zR..x..
# CHECK-NEXT: 0000 00000014 00000000 037a5200 01780e01 .........zR..x..
# CHECK-NEXT: 0010 1b0c0fa0 01000000 0000001c 0000001c ................
# CHECK-NEXT: 0020 00000000 00000012 00468d07 8e068f05 .........F......
# CHECK-NEXT: 0030 440ec002 00000000 D.......

View File

@ -37,7 +37,7 @@ DW.ref.__gxx_personality_v0:
# Contents of the .eh_frame section:
#
# 00000000 0000001c 00000000 CIE
# Version: 1
# Version: 3
# Augmentation: "zPLR"
# Code alignment factor: 1
# Data alignment factor: -8
@ -61,7 +61,7 @@ DW.ref.__gxx_personality_v0:
# DW_CFA_nop
#
# CHECK: Contents of section .eh_frame:
# CHECK-NEXT: 0000 0000001c 00000000 017a504c 52000178 .........zPLR..x
# CHECK-NEXT: 0000 0000001c 00000000 037a504c 52000178 .........zPLR..x
# CHECK-NEXT: 0010 0e079b00 0000001b 1b0c0fa0 01000000 ................
# CHECK-NEXT: 0020 0000001c 00000024 00000000 00000012 .......$........
# CHECK-NEXT: 0030 04000000 00468e06 8f05440e c0020000 .....F....D.....

View File

@ -28,7 +28,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000
// CHECK-NEXT: 0020: 00000000 0A000000 00440E10 410E1444
// CHECK-NEXT: 0030: 0E080000 00000000

View File

@ -26,7 +26,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 01010000 00030001 0E080000
// CHECK-NEXT: )

View File

@ -27,7 +27,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 0A000000 00440E10 450E0800
// CHECK-NEXT: )

View File

@ -23,7 +23,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00410D06 00000000
// CHECK-NEXT: )

View File

@ -23,7 +23,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00410C07 08000000
// CHECK-NEXT: )

View File

@ -24,7 +24,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00411507 7F000000
// CHECK-NEXT: )

View File

@ -23,7 +23,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00418602 00000000
// CHECK-NEXT: )

View File

@ -24,7 +24,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00410906 00000000
// CHECK-NEXT: )

View File

@ -31,7 +31,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 24000000 1C000000
// CHECK-NEXT: 0020: 00000000 05000000 00410E08 410D0641
// CHECK-NEXT: 0030: 11067F41 0E104186 02000000 00000000

View File

@ -23,7 +23,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 01000000 00411106 7F000000
// CHECK-NEXT: )

View File

@ -26,7 +26,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 03000000 00410A41 0B000000
// CHECK-NEXT: )

View File

@ -24,7 +24,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 0041C600 00000000
// CHECK-NEXT: )

View File

@ -24,7 +24,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00410806 00000000
// CHECK-NEXT: )

View File

@ -26,7 +26,7 @@ f2:
// ELF_64-NEXT: AddressAlignment: 8
// ELF_64-NEXT: EntrySize: 0
// ELF_64-NEXT: SectionData (
// ELF_64-NEXT: 0000: 14000000 FFFFFFFF 01000178 100C0708
// ELF_64-NEXT: 0000: 14000000 FFFFFFFF 03000178 100C0708
// ELF_64-NEXT: 0010: 90010000 00000000 14000000 00000000
// ELF_64-NEXT: 0020: 00000000 00000000 01000000 00000000
// ELF_64-NEXT: 0030: 14000000 00000000 00000000 00000000
@ -47,7 +47,7 @@ f2:
// ELF_32-NEXT: AddressAlignment: 4
// ELF_32-NEXT: EntrySize: 0
// ELF_32-NEXT: SectionData (
// ELF_32-NEXT: 0000: 10000000 FFFFFFFF 0100017C 080C0404
// ELF_32-NEXT: 0000: 10000000 FFFFFFFF 0300017C 080C0404
// ELF_32-NEXT: 0010: 88010000 0C000000 00000000 00000000
// ELF_32-NEXT: 0020: 01000000 0C000000 00000000 01000000
// ELF_32-NEXT: 0030: 01000000

View File

@ -23,10 +23,10 @@ g:
// CHECK-NEXT: AddressAlignment: 8
// CHECK-NEXT: EntrySize: 0
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5253 00017810
// CHECK-NEXT: 0000: 14000000 00000000 037A5253 00017810
// CHECK-NEXT: 0010: 011B0C07 08900100 10000000 1C000000
// CHECK-NEXT: 0020: 00000000 00000000 00000000 14000000
// CHECK-NEXT: 0030: 00000000 017A5200 01781001 1B0C0708
// CHECK-NEXT: 0030: 00000000 037A5200 01781001 1B0C0708
// CHECK-NEXT: 0040: 90010000 10000000 1C000000 00000000
// CHECK-NEXT: 0050: 00000000 00000000
// CHECK-NEXT: )

View File

@ -24,7 +24,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00410706 00000000
// CHECK-NEXT: )

View File

@ -0,0 +1,47 @@
; RUN: llc %s -o - -dwarf-version 2 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF2
; RUN: llc %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
; RUN: llc %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
target triple = "armv8-arm-none-eabi"
; Function Attrs: nounwind
define i32 @foo() #0 {
entry:
%call = call i32 bitcast (i32 (...)* @bar to i32 ()*)(), !dbg !12
%add = add nsw i32 %call, 1, !dbg !12
ret i32 %add, !dbg !12
}
declare i32 @bar(...) #1
attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" }
!llvm.dbg.cu = !{!0}
!llvm.module.flags = !{!9, !10}
!llvm.ident = !{!11}
!0 = metadata !{i32 786449, metadata !1, i32 12, metadata !"clang version 3.5.0 ", i1 false, metadata !"", i32 0, metadata !2, metadata !2, metadata !3, metadata !2, metadata !2, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/tmp/test.c] [DW_LANG_C99]
!1 = metadata !{metadata !"test.c", metadata !"/tmp"}
!2 = metadata !{}
!3 = metadata !{metadata !4}
!4 = metadata !{i32 786478, metadata !1, metadata !5, metadata !"foo", metadata !"foo", metadata !"", i32 2, metadata !6, i1 false, i1 true, i32 0, i32 0, null, i32 256, i1 false, i32 ()* @foo, null, null, metadata !2, i32 2} ; [ DW_TAG_subprogram ] [line 2] [def] [foo]
!5 = metadata !{i32 786473, metadata !1} ; [ DW_TAG_file_type ] [/tmp/test.c]
!6 = metadata !{i32 786453, i32 0, null, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !7, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]
!7 = metadata !{metadata !8}
!8 = metadata !{i32 786468, null, null, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ] [int] [line 0, size 32, align 32, offset 0, enc DW_ATE_signed]
!9 = metadata !{i32 2, metadata !"Dwarf Version", i32 4}
!10 = metadata !{i32 1, metadata !"Debug Info Version", i32 1}
!11 = metadata !{metadata !"clang version 3.5.0 "}
!12 = metadata !{i32 2, i32 0, metadata !4, null}
; DWARF2: .debug_frame contents:
; DWARF2: 00000000 0000000c ffffffff CIE
; DWARF2-NEXT: Version: 1
; DWARF2-NEXT: Augmentation:
; DWARF34: .debug_frame contents:
; DWARF34: 00000000 0000000c ffffffff CIE
; DWARF34-NEXT: Version: 3
; DWARF34-NEXT: Augmentation:

View File

@ -26,7 +26,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 02000000 00412D00 00000000
// CHECK-NEXT: )

View File

@ -30,7 +30,7 @@ f:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A5200 01781001
// CHECK-NEXT: 0000: 14000000 00000000 037A5200 01781001
// CHECK-NEXT: 0010: 1B0C0708 90010000 1C000000 1C000000
// CHECK-NEXT: 0020: 00000000 04000000 00410E10 410A0E08
// CHECK-NEXT: 0030: 410B0000 00000000

View File

@ -234,116 +234,116 @@ f37:
// CHECK-NEXT: Relocations [
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 14000000 00000000 017A4C52 00017810
// CHECK-NEXT: 0000: 14000000 00000000 037A4C52 00017810
// CHECK-NEXT: 0010: 02031B0C 07089001 14000000 1C000000
// CHECK-NEXT: 0020: 00000000 01000000 04000000 00000000
// CHECK-NEXT: 0030: 20000000 00000000 017A504C 52000178
// CHECK-NEXT: 0030: 20000000 00000000 037A504C 52000178
// CHECK-NEXT: 0040: 100B0000 00000000 00000003 1B0C0708
// CHECK-NEXT: 0050: 90010000 14000000 28000000 00000000
// CHECK-NEXT: 0060: 01000000 04000000 00000000 14000000
// CHECK-NEXT: 0070: 70000000 00000000 01000000 04000000
// CHECK-NEXT: 0080: 00000000 20000000 00000000 017A504C
// CHECK-NEXT: 0080: 00000000 20000000 00000000 037A504C
// CHECK-NEXT: 0090: 52000178 100B0000 00000000 00000002
// CHECK-NEXT: 00A0: 1B0C0708 90010000 10000000 28000000
// CHECK-NEXT: 00B0: 00000000 01000000 02000000 18000000
// CHECK-NEXT: 00C0: 00000000 017A5052 00017810 04020000
// CHECK-NEXT: 00C0: 00000000 037A5052 00017810 04020000
// CHECK-NEXT: 00D0: 1B0C0708 90010000 10000000 20000000
// CHECK-NEXT: 00E0: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 00F0: 00000000 017A5052 00017810 06030000
// CHECK-NEXT: 00F0: 00000000 037A5052 00017810 06030000
// CHECK-NEXT: 0100: 00001B0C 07089001 10000000 20000000
// CHECK-NEXT: 0110: 00000000 01000000 00000000 1C000000
// CHECK-NEXT: 0120: 00000000 017A5052 00017810 0A040000
// CHECK-NEXT: 0120: 00000000 037A5052 00017810 0A040000
// CHECK-NEXT: 0130: 00000000 00001B0C 07089001 10000000
// CHECK-NEXT: 0140: 24000000 00000000 01000000 00000000
// CHECK-NEXT: 0150: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0150: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0160: 040A0000 1B0C0708 90010000 10000000
// CHECK-NEXT: 0170: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 0180: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0180: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0190: 060B0000 00001B0C 07089001 10000000
// CHECK-NEXT: 01A0: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 01B0: 1C000000 00000000 017A5052 00017810
// CHECK-NEXT: 01B0: 1C000000 00000000 037A5052 00017810
// CHECK-NEXT: 01C0: 0A0C0000 00000000 00001B0C 07089001
// CHECK-NEXT: 01D0: 10000000 24000000 00000000 01000000
// CHECK-NEXT: 01E0: 00000000 1C000000 00000000 017A5052
// CHECK-NEXT: 01E0: 00000000 1C000000 00000000 037A5052
// CHECK-NEXT: 01F0: 00017810 0A080000 00000000 00001B0C
// CHECK-NEXT: 0200: 07089001 10000000 24000000 00000000
// CHECK-NEXT: 0210: 01000000 00000000 1C000000 00000000
// CHECK-NEXT: 0220: 017A5052 00017810 0A100000 00000000
// CHECK-NEXT: 0220: 037A5052 00017810 0A100000 00000000
// CHECK-NEXT: 0230: 00001B0C 07089001 10000000 24000000
// CHECK-NEXT: 0240: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 0250: 00000000 017A5052 00017810 04120000
// CHECK-NEXT: 0250: 00000000 037A5052 00017810 04120000
// CHECK-NEXT: 0260: 1B0C0708 90010000 10000000 20000000
// CHECK-NEXT: 0270: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 0280: 00000000 017A5052 00017810 06130000
// CHECK-NEXT: 0280: 00000000 037A5052 00017810 06130000
// CHECK-NEXT: 0290: 00001B0C 07089001 10000000 20000000
// CHECK-NEXT: 02A0: 00000000 01000000 00000000 1C000000
// CHECK-NEXT: 02B0: 00000000 017A5052 00017810 0A140000
// CHECK-NEXT: 02B0: 00000000 037A5052 00017810 0A140000
// CHECK-NEXT: 02C0: 00000000 00001B0C 07089001 10000000
// CHECK-NEXT: 02D0: 24000000 00000000 01000000 00000000
// CHECK-NEXT: 02E0: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 02E0: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 02F0: 041A0000 1B0C0708 90010000 10000000
// CHECK-NEXT: 0300: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 0310: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0310: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0320: 061B0000 00001B0C 07089001 10000000
// CHECK-NEXT: 0330: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 0340: 1C000000 00000000 017A5052 00017810
// CHECK-NEXT: 0340: 1C000000 00000000 037A5052 00017810
// CHECK-NEXT: 0350: 0A1C0000 00000000 00001B0C 07089001
// CHECK-NEXT: 0360: 10000000 24000000 00000000 01000000
// CHECK-NEXT: 0370: 00000000 1C000000 00000000 017A5052
// CHECK-NEXT: 0370: 00000000 1C000000 00000000 037A5052
// CHECK-NEXT: 0380: 00017810 0A180000 00000000 00001B0C
// CHECK-NEXT: 0390: 07089001 10000000 24000000 00000000
// CHECK-NEXT: 03A0: 01000000 00000000 1C000000 00000000
// CHECK-NEXT: 03B0: 017A5052 00017810 0A800000 00000000
// CHECK-NEXT: 03B0: 037A5052 00017810 0A800000 00000000
// CHECK-NEXT: 03C0: 00001B0C 07089001 10000000 24000000
// CHECK-NEXT: 03D0: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 03E0: 00000000 017A5052 00017810 04820000
// CHECK-NEXT: 03E0: 00000000 037A5052 00017810 04820000
// CHECK-NEXT: 03F0: 1B0C0708 90010000 10000000 20000000
// CHECK-NEXT: 0400: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 0410: 00000000 017A5052 00017810 06830000
// CHECK-NEXT: 0410: 00000000 037A5052 00017810 06830000
// CHECK-NEXT: 0420: 00001B0C 07089001 10000000 20000000
// CHECK-NEXT: 0430: 00000000 01000000 00000000 1C000000
// CHECK-NEXT: 0440: 00000000 017A5052 00017810 0A840000
// CHECK-NEXT: 0440: 00000000 037A5052 00017810 0A840000
// CHECK-NEXT: 0450: 00000000 00001B0C 07089001 10000000
// CHECK-NEXT: 0460: 24000000 00000000 01000000 00000000
// CHECK-NEXT: 0470: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0470: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0480: 048A0000 1B0C0708 90010000 10000000
// CHECK-NEXT: 0490: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 04A0: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 04A0: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 04B0: 068B0000 00001B0C 07089001 10000000
// CHECK-NEXT: 04C0: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 04D0: 1C000000 00000000 017A5052 00017810
// CHECK-NEXT: 04D0: 1C000000 00000000 037A5052 00017810
// CHECK-NEXT: 04E0: 0A8C0000 00000000 00001B0C 07089001
// CHECK-NEXT: 04F0: 10000000 24000000 00000000 01000000
// CHECK-NEXT: 0500: 00000000 1C000000 00000000 017A5052
// CHECK-NEXT: 0500: 00000000 1C000000 00000000 037A5052
// CHECK-NEXT: 0510: 00017810 0A880000 00000000 00001B0C
// CHECK-NEXT: 0520: 07089001 10000000 24000000 00000000
// CHECK-NEXT: 0530: 01000000 00000000 1C000000 00000000
// CHECK-NEXT: 0540: 017A5052 00017810 0A900000 00000000
// CHECK-NEXT: 0540: 037A5052 00017810 0A900000 00000000
// CHECK-NEXT: 0550: 00001B0C 07089001 10000000 24000000
// CHECK-NEXT: 0560: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 0570: 00000000 017A5052 00017810 04920000
// CHECK-NEXT: 0570: 00000000 037A5052 00017810 04920000
// CHECK-NEXT: 0580: 1B0C0708 90010000 10000000 20000000
// CHECK-NEXT: 0590: 00000000 01000000 00000000 18000000
// CHECK-NEXT: 05A0: 00000000 017A5052 00017810 06930000
// CHECK-NEXT: 05A0: 00000000 037A5052 00017810 06930000
// CHECK-NEXT: 05B0: 00001B0C 07089001 10000000 20000000
// CHECK-NEXT: 05C0: 00000000 01000000 00000000 1C000000
// CHECK-NEXT: 05D0: 00000000 017A5052 00017810 0A940000
// CHECK-NEXT: 05D0: 00000000 037A5052 00017810 0A940000
// CHECK-NEXT: 05E0: 00000000 00001B0C 07089001 10000000
// CHECK-NEXT: 05F0: 24000000 00000000 01000000 00000000
// CHECK-NEXT: 0600: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0600: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0610: 049A0000 1B0C0708 90010000 10000000
// CHECK-NEXT: 0620: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 0630: 18000000 00000000 017A5052 00017810
// CHECK-NEXT: 0630: 18000000 00000000 037A5052 00017810
// CHECK-NEXT: 0640: 069B0000 00001B0C 07089001 10000000
// CHECK-NEXT: 0650: 20000000 00000000 01000000 00000000
// CHECK-NEXT: 0660: 1C000000 00000000 017A5052 00017810
// CHECK-NEXT: 0660: 1C000000 00000000 037A5052 00017810
// CHECK-NEXT: 0670: 0A9C0000 00000000 00001B0C 07089001
// CHECK-NEXT: 0680: 10000000 24000000 00000000 01000000
// CHECK-NEXT: 0690: 00000000 1C000000 00000000 017A5052
// CHECK-NEXT: 0690: 00000000 1C000000 00000000 037A5052
// CHECK-NEXT: 06A0: 00017810 0A980000 00000000 00001B0C
// CHECK-NEXT: 06B0: 07089001 10000000 24000000 00000000
// CHECK-NEXT: 06C0: 01000000 00000000 10000000 00000000
// CHECK-NEXT: 06D0: 017A5200 01781001 1B000000 10000000
// CHECK-NEXT: 06D0: 037A5200 01781001 1B000000 10000000
// CHECK-NEXT: 06E0: 18000000 00000000 01000000 00000000
// CHECK-NEXT: )
// CHECK-NEXT: }

View File

@ -31,7 +31,7 @@ func:
// MIPS32: 00000000
// Version
// MIPS32: 01
// MIPS32: 03
// Augmentation String
// MIPS32: 7a5200
@ -67,7 +67,7 @@ func:
// MIPS32EL: 00000000
// Version
// MIPS32EL: 01
// MIPS32EL: 03
// Augmentation String
// MIPS32EL: 7a5200
@ -103,7 +103,7 @@ func:
// MIPS64: 00000000
// Version
// MIPS64: 01
// MIPS64: 03
// Augmentation String
// MIPS64: 7a5200
@ -141,7 +141,7 @@ func:
// MIPS64EL: 00000000
// Version
// MIPS64EL: 01
// MIPS64EL: 03
// Augmentation String
// MIPS64EL: 7a5200

View File

@ -28,8 +28,8 @@ _proc:
# STATIC-NEXT: Relocations [
# STATIC-NEXT: ]
# STATIC-NEXT: SectionData (
# STATIC-BE-NEXT: 0000: 00000010 00000000 017A5200 04784101
# STATIC-LE-NEXT: 0000: 10000000 00000000 017A5200 04784101
# STATIC-BE-NEXT: 0000: 00000010 00000000 037A5200 04784101
# STATIC-LE-NEXT: 0000: 10000000 00000000 037A5200 04784101
# STATIC-BE-NEXT: 0010: 1B0C0100 00000010 00000018 00000000
# STATIC-LE-NEXT: 0010: 1B0C0100 10000000 18000000 00000000
# STATIC-BE-NEXT: 0020: 00000004 00000000
@ -69,8 +69,8 @@ _proc:
# PIC-NEXT: Relocations [
# PIC-NEXT: ]
# PIC-NEXT: SectionData (
# PIC-BE-NEXT: 0000: 00000010 00000000 017A5200 04784101
# PIC-LE-NEXT: 0000: 10000000 00000000 017A5200 04784101
# PIC-BE-NEXT: 0000: 00000010 00000000 037A5200 04784101
# PIC-LE-NEXT: 0000: 10000000 00000000 037A5200 04784101
# PIC-BE-NEXT: 0010: 1B0C0100 00000010 00000018 00000000
# PIC-LE-NEXT: 0010: 1B0C0100 10000000 18000000 00000000
# PIC-BE-NEXT: 0020: 00000004 00000000