mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-26 19:48:19 +02:00
* fixed darwin/stabs code
git-svn-id: trunk@9805 -
This commit is contained in:
parent
1f1a43d7f0
commit
c743711f40
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user