* fixed darwin/stabs code

git-svn-id: trunk@9805 -
This commit is contained in:
Jonas Maebe 2008-01-20 11:26:31 +00:00
parent 1f1a43d7f0
commit c743711f40

View File

@ -949,6 +949,15 @@ packed record
end; end;
tstab=packed record
strpos : longint;
ntype : byte;
nother : byte;
ndesc : word;
nvalue : dword;
end;
function OpenMachO32PPC(var e:TExeFile):boolean; function OpenMachO32PPC(var e:TExeFile):boolean;
var var
mh:MachoHeader; mh:MachoHeader;
@ -969,15 +978,24 @@ var
block:cmdblock; block:cmdblock;
symbolsSeg: symbSeg; symbolsSeg: symbSeg;
begin begin
seek(e.f,e.sechdrofs);
for i:= 1 to e.nsects do for i:= 1 to e.nsects do
begin begin
blockread (e.f, block, sizeof(block)); blockread (e.f, block, sizeof(block));
if block.cmd = $2 then if block.cmd = $2 then
begin begin
blockread (e.f, symbolsSeg, sizeof(symbolsSeg)); blockread (e.f, symbolsSeg, sizeof(symbolsSeg));
// stabstrofs:=symbolsSeg.stroff; if asecname='.stab' then
secofs:=symbolsSeg.symoff; begin
// stabcnt:=symbolsSeg.nsyms; secofs:=symbolsSeg.symoff;
{ the caller will divide again by sizeof(tstab) }
seclen:=symbolsSeg.nsyms*sizeof(tstab);
end
else if asecname='.stabstr' then
begin
secofs:=symbolsSeg.stroff;
seclen:=symbolsSeg.strsize;
end;
result:=true; result:=true;
exit; exit;
end; end;