mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[DebugInfo/DWARF] - Report .eh_frame sections of version != 1.
Specification (https://refspecs.linuxbase.org/LSB_5.0.0/LSB-Core-generic/LSB-Core-generic/ehframechpt.html#AEN1349) says that the value of Version field for .eh_frame should be 1. Though we accept other values and might perform an attempt to read it as a .debug_frame because of that, what is wrong. This patch adds a version check. Differential revision: https://reviews.llvm.org/D81469
This commit is contained in:
parent
8609c64f9f
commit
764aa568b0
@ -415,6 +415,11 @@ Error DWARFDebugFrame::parse(DWARFDataExtractor Data) {
|
||||
uint8_t Version = Data.getU8(&Offset);
|
||||
const char *Augmentation = Data.getCStr(&Offset);
|
||||
StringRef AugmentationString(Augmentation ? Augmentation : "");
|
||||
// TODO: we should provide a way to report a warning and continue dumping.
|
||||
if (IsEH && Version != 1)
|
||||
return createStringError(errc::not_supported,
|
||||
"unsupported CIE version: %" PRIu8, Version);
|
||||
|
||||
uint8_t AddressSize = Version < 4 ? Data.getAddressSize() :
|
||||
Data.getU8(&Offset);
|
||||
Data.setAddressSize(AddressSize);
|
||||
|
13
test/DebugInfo/X86/eh-frame-invalid-version-zero.s
Normal file
13
test/DebugInfo/X86/eh-frame-invalid-version-zero.s
Normal file
@ -0,0 +1,13 @@
|
||||
## Check we do not support .eh_frame sections of version 0.
|
||||
|
||||
# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o %t
|
||||
# RUN: not llvm-dwarfdump -debug-frame %t 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: unsupported CIE version: 0
|
||||
|
||||
.section .eh_frame,"a",@unwind
|
||||
.long .Lend - .LCIEptr ## Length
|
||||
.LCIEptr:
|
||||
.long 0x00000000 ## CIE ID
|
||||
.byte 0 ## Version
|
||||
.Lend:
|
13
test/DebugInfo/X86/eh-frame-invalid-version.s
Normal file
13
test/DebugInfo/X86/eh-frame-invalid-version.s
Normal file
@ -0,0 +1,13 @@
|
||||
## Check we do not support .eh_frame sections of versions greater than 1.
|
||||
|
||||
# RUN: llvm-mc -triple x86_64-unknown-linux %s -filetype=obj -o %t
|
||||
# RUN: not llvm-dwarfdump -debug-frame %t 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: unsupported CIE version: 2
|
||||
|
||||
.section .eh_frame,"a",@unwind
|
||||
.long .Lend - .LCIEptr ## Length
|
||||
.LCIEptr:
|
||||
.long 0x00000000 ## CIE ID
|
||||
.byte 2 ## Version
|
||||
.Lend:
|
Loading…
Reference in New Issue
Block a user