Don't skip subprogram DIEs with prototyped attribute, which make loading functions from

plain C program actually works.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39436 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin 2010-11-15 17:44:18 +00:00
parent e7b9974180
commit 495e073b20

View File

@ -278,9 +278,8 @@ DwarfImageDebugInfo::GetFunctions(BObjectList<FunctionDebugInfo>& functions)
DIESubprogram* subprogramEntry = static_cast<DIESubprogram*>(entry); DIESubprogram* subprogramEntry = static_cast<DIESubprogram*>(entry);
// ignore declarations, prototypes, and inlined functions // ignore declarations and inlined functions
if (subprogramEntry->IsDeclaration() if (subprogramEntry->IsDeclaration()
|| subprogramEntry->IsPrototyped()
|| subprogramEntry->Inline() == DW_INL_inlined || subprogramEntry->Inline() == DW_INL_inlined
|| subprogramEntry->Inline() == DW_INL_declared_inlined) { || subprogramEntry->Inline() == DW_INL_declared_inlined) {
continue; continue;
@ -402,7 +401,7 @@ DwarfImageDebugInfo::GetType(GlobalTypeCache* cache,
if (typeContext == NULL) { if (typeContext == NULL) {
typeContext = new(std::nothrow) typeContext = new(std::nothrow)
DwarfTypeContext(fArchitecture, fImageInfo.ImageID(), fFile, DwarfTypeContext(fArchitecture, fImageInfo.ImageID(), fFile,
unit, NULL, 0, 0, fRelocationDelta, &inputInterface, unit, NULL, 0, 0, fRelocationDelta, &inputInterface,
fromDwarfMap); fromDwarfMap);
if (typeContext == NULL) if (typeContext == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;
@ -505,7 +504,7 @@ DwarfImageDebugInfo::CreateFrame(Image* image,
DwarfStackFrameDebugInfo* stackFrameDebugInfo DwarfStackFrameDebugInfo* stackFrameDebugInfo
= new(std::nothrow) DwarfStackFrameDebugInfo(fArchitecture, = new(std::nothrow) DwarfStackFrameDebugInfo(fArchitecture,
fImageInfo.ImageID(), fFile, unit, subprogramEntry, fTypeLookup, fImageInfo.ImageID(), fFile, unit, subprogramEntry, fTypeLookup,
fTypeCache, instructionPointer, framePointer, fRelocationDelta, fTypeCache, instructionPointer, framePointer, fRelocationDelta,
inputInterface, fromDwarfMap); inputInterface, fromDwarfMap);
if (stackFrameDebugInfo == NULL) if (stackFrameDebugInfo == NULL)
return B_NO_MEMORY; return B_NO_MEMORY;