anchor.diff:    writeln('File format: ', dbgInfoSrc.UserName);
   
     ReadDwarfData(dbgInfoSrc);
  +  dbgInfoSrc.Free;
   
  -  dbgInfoSrc.Free;
  +  info:=GetExternalDebugInfo(ParamStr(1));
  +  if info<>'' then begin
  +    dbgInfoSrc := GetDataSource(info);
  +    if not Assigned(dbgInfoSrc) then begin
  +      writeln('file '+ info+ ' is of unknow format');
  +      Exit;
  +    end;
  +    writeln('File format: ', dbgInfoSrc.UserName);
  +
  +    ReadDwarfData(dbgInfoSrc);
  +    dbgInfoSrc.Free;
  +  end;
   end.
   
  
positive.code:   {$IFDEF UNIX}{$IFDEF UseCThreads}
    cthreads,
    {$ENDIF}{$ENDIF}
    Classes, dbgInfoTypes, dbgInfoDwarf,
    PESource, machoDbgSource;
  
  
  procedure ReadDwarfData(source : TDbgDataSource);
  var
  
negative.code:   dwarf.Free;
  end;
  
  function GetExternalDebugInfo(const FileName: String): string;
  {$ifdef DARWIN}
  const
    DwarfPath : String = '/Contents/Resources/DWARF/';
  begin
    Result:=ChangeFileExt(FileName, '.dSYM')+DwarfPath+ExtractFileName(FileName);
  end;
  {$else}
  begin
    Result:='';
  end;
  {$endif}
  
  
  var
    dbgInfoSrc : TDbgDataSource;
    info : AnsiString;
  begin
    if Paramcount < 1 then begin
      writeln('please specify dwarf debug-info file name');
  