mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-25 15:01:07 +00:00
[DebugInfo] Fix crash caused by unhandled error.
Summary: This patch helps fix LLVM crash caused by unhandled error. Reviewers: clayborg, aprantl Reviewed By: clayborg Subscribers: hiraditya, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D78924
This commit is contained in:
parent
7f19ba4dfc
commit
c6f3e6c406
@ -82,8 +82,12 @@ llvm::Error ObjectFileTransformer::convert(const object::ObjectFile &Obj,
|
||||
size_t NumBefore = Gsym.getNumFunctionInfos();
|
||||
for (const object::SymbolRef &Sym : Obj.symbols()) {
|
||||
Expected<SymbolRef::Type> SymType = Sym.getType();
|
||||
if (!SymType) {
|
||||
consumeError(SymType.takeError());
|
||||
continue;
|
||||
}
|
||||
const uint64_t Addr = Sym.getValue();
|
||||
if (!SymType || SymType.get() != SymbolRef::Type::ST_Function ||
|
||||
if (SymType.get() != SymbolRef::Type::ST_Function ||
|
||||
!Gsym.IsValidTextAddress(Addr) || Gsym.hasFunctionInfoForAddress(Addr))
|
||||
continue;
|
||||
// Function size for MachO files will be 0
|
||||
|
@ -0,0 +1,36 @@
|
||||
## This test ensures that LLVM will not crash when converting a Mach-O object
|
||||
## file with a malformed symbol whose n_sect points to an invalid offset.
|
||||
|
||||
# RUN: yaml2obj %s -o %t
|
||||
# RUN: not llvm-gsymutil --convert %t -o %t.o 2>&1 | FileCheck %s
|
||||
|
||||
# CHECK: Loaded 0 functions from symbol table.
|
||||
|
||||
--- !mach-o
|
||||
FileHeader:
|
||||
magic: 0xFEEDFACF
|
||||
cputype: 0x01000007
|
||||
cpusubtype: 0x00000003
|
||||
filetype: 0x0000000A
|
||||
ncmds: 1
|
||||
sizeofcmds: 100
|
||||
flags: 0x00000000
|
||||
reserved: 0x00000000
|
||||
LoadCommands:
|
||||
- cmd: LC_SYMTAB
|
||||
cmdsize: 24
|
||||
symoff: 4096
|
||||
nsyms: 1
|
||||
stroff: 4144
|
||||
strsize: 6
|
||||
LinkEditData:
|
||||
NameList:
|
||||
- n_strx: 2 # _foo
|
||||
n_type: 0x0e
|
||||
n_sect: 3 # Points to an invalid offset.
|
||||
n_desc: 0
|
||||
n_value: 1234
|
||||
StringTable:
|
||||
- ''
|
||||
- ''
|
||||
- _foo
|
Loading…
x
Reference in New Issue
Block a user