mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-05 13:26:55 +00:00
Use CIE version 4 for dwarf4.
According to http://www.dwarfstd.org/doc/DWARF4.pdf appendix F the CIE version for dwarf 4 is 4. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235988 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1244,6 +1244,20 @@ void FrameEmitterImpl::EmitCompactUnwind(MCObjectStreamer &Streamer,
|
||||
Streamer.EmitIntValue(0, Size); // No LSDA
|
||||
}
|
||||
|
||||
static unsigned getCIEVersion(bool IsEH, unsigned DwarfVersion) {
|
||||
if (IsEH)
|
||||
return 1;
|
||||
switch (DwarfVersion) {
|
||||
case 2:
|
||||
return 1;
|
||||
case 3:
|
||||
return 3;
|
||||
case 4:
|
||||
return 4;
|
||||
}
|
||||
llvm_unreachable("Unknown version");
|
||||
}
|
||||
|
||||
const MCSymbol &FrameEmitterImpl::EmitCIE(MCObjectStreamer &streamer,
|
||||
const MCSymbol *personality,
|
||||
unsigned personalityEncoding,
|
||||
@@ -1270,10 +1284,7 @@ const MCSymbol &FrameEmitterImpl::EmitCIE(MCObjectStreamer &streamer,
|
||||
streamer.EmitIntValue(CIE_ID, 4);
|
||||
|
||||
// Version
|
||||
// For .eh_frame, we use CIE version 1
|
||||
// For DWARF2, we use CIE version 1
|
||||
// For DWARF3+, we use CIE version 3
|
||||
uint8_t CIEVersion = (IsEH || context.getDwarfVersion() <= 2) ? 1 : 3;
|
||||
uint8_t CIEVersion = getCIEVersion(IsEH, context.getDwarfVersion());
|
||||
streamer.EmitIntValue(CIEVersion, 1);
|
||||
|
||||
// Augmentation String
|
||||
|
@@ -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 03000178 100C0708
|
||||
// ELF_64-NEXT: 0000: 14000000 FFFFFFFF 04000178 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 0300017C 080C0404
|
||||
// ELF_32-NEXT: 0000: 10000000 FFFFFFFF 0400017C 080C0404
|
||||
// ELF_32-NEXT: 0010: 88010000 0C000000 00000000 00000000
|
||||
// ELF_32-NEXT: 0020: 01000000 0C000000 00000000 01000000
|
||||
// ELF_32-NEXT: 0030: 01000000
|
||||
|
@@ -1,6 +1,6 @@
|
||||
; RUN: %llc_dwarf %s -o - -dwarf-version 2 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF2
|
||||
; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
|
||||
; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF34
|
||||
; RUN: %llc_dwarf %s -o - -dwarf-version 3 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF3
|
||||
; RUN: %llc_dwarf %s -o - -dwarf-version 4 -filetype=obj | llvm-dwarfdump - | FileCheck %s --check-prefix=DWARF4
|
||||
|
||||
; .debug_frame is not emitted for targeting Windows x64.
|
||||
; REQUIRES: debug_frame
|
||||
@@ -40,6 +40,10 @@ attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "n
|
||||
; DWARF2: Version: 1
|
||||
; DWARF2-NEXT: Augmentation:
|
||||
|
||||
; DWARF34: .debug_frame contents:
|
||||
; DWARF34: Version: 3
|
||||
; DWARF34-NEXT: Augmentation:
|
||||
; DWARF3: .debug_frame contents:
|
||||
; DWARF3: Version: 3
|
||||
; DWARF3-NEXT: Augmentation:
|
||||
|
||||
; DWARF4: .debug_frame contents:
|
||||
; DWARF4: Version: 4
|
||||
; DWARF4-NEXT: Augmentation:
|
||||
|
Reference in New Issue
Block a user