anchor.diff:  
     TElfFile = class(TObject)
     protected
  -    function Load32BitFile(Stream: TStream): Boolean;
  +    function Load32BitFile(AStream: TStream): Boolean;
       procedure AddSection(const name: AnsiString; FileOffset, Address, Size: Qword);
     public
       sections  : array of TElfSection;
  
positive.code: 
  { TElfFile }
  
  function TElfFile.Load32BitFile(Stream: TStream): Boolean;
  var
    hdr   : Elf32_Ehdr;
    sect  : array of Elf32_shdr;
  
negative.code:   sz    : LongWord;
    strs  : array of byte;
  begin
    Result := AStream.Read(hdr, sizeof(hdr)) = sizeof(hdr);
    if not Result then
      Exit;
  
    SetLength(sect, hdr.e_shnum);
    AStream.Position := hdr.e_shoff;
  
    sz := hdr.e_shetsize * hdr.e_shnum;
    if sz > LongWord(length(sect)*sizeof(Elf32_shdr)) then
      sz := LongWord(length(sect)*sizeof(Elf32_shdr));
    AStream.Read(sect[0], sz);
  
    i := sect[hdr.e_shstrndx].sh_offset;
    j := sect[hdr.e_shstrndx].sh_size;
    SetLength(strs, j);
    AStream.Position:=i;
    AStream.Read(strs[0], j);
  
    for i := 0 to hdr.e_shnum - 1 do
    begin
      with sect[i] do
      begin
        nm := PChar( @strs[sh_name] );
        AddSection(nm, sh_offset, sh_addr, sh_size );
      end;
    end;
  end;
  
  end;
  
  