private void When_CreateLoader64(bool big_endian) { this.eil = new ElfImageLoader(sc, ImageLocation.FromUri("file:foo"), this.bytes); this.el64 = new ElfLoader64(sc, eih, 0, big_endian ? EndianServices.Big: EndianServices.Little, this.bytes); el64.Segments.AddRange(programHeaders); el64.Sections.AddRange(sections); }
private void When_CreateLoader64() { this.eil = new ElfImageLoader(sc, "foo", this.bytes); this.el64 = new ElfLoader64(eil, eih, this.bytes, 0); el64.ProgramHeaders64.AddRange(programHeaders); el64.Sections.AddRange(sections); }
private void When_CreateLoader64(bool big_endian) { this.eil = new ElfImageLoader(sc, "foo", this.bytes); this.el64 = new ElfLoader64(eil, eih, this.bytes, 0, big_endian ? ElfLoader.ELFDATA2MSB : ElfLoader.ELFDATA2LSB); el64.ProgramHeaders64.AddRange(programHeaders); el64.Sections.AddRange(sections); }
protected void DumpRela64(ElfLoader64 loader) { foreach (var section in loader.Sections.Where(s => s.Type == SectionHeaderType.SHT_RELA && s.LinkedSection != null && s.LinkedSection.FileOffset != 0)) { Debug.Print("RELA: offset {0:X} symbol section {1}, relocating in section {2}", section.FileOffset, section.LinkedSection.Name, section.RelocatedSection.Name); var symbols = loader.Symbols[section.LinkedSection.FileOffset]; var rdr = loader.CreateReader(section.FileOffset); for (uint i = 0; i < section.EntryCount(); ++i) { var rela = Elf64_Rela.Read(rdr); Debug.Print(" off:{0:X16} type:{1,-16} add:{3,-20} {4,3} {2}", rela.r_offset, RelocationTypeToString((uint)rela.r_info), symbols[(int)(rela.r_info >> 32)].Name, rela.r_addend, (int)(rela.r_info >> 32)); } } }
public ElfRelocator64(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(imageSymbols) { this.loader = loader; this.imageSymbols = imageSymbols; }
public RiscVRelocator64(ElfLoader64 loader) : base(loader) { }
public MipsRelocator64(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> imageSymbols) : base(elfLoader, imageSymbols) { this.elfLoader = elfLoader; }
public x86_64Relocator(ElfLoader64 loader) : base(loader) { this.loader = loader; }
public ElfRelocator64(ElfLoader64 loader) { this.loader = loader; }
public x86_64Relocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols) { this.loader = loader; }
public AlphaRelocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols) { }
public RiscVRelocator64(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols) { }
public Sparc64Relocator(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> symbols) : base(elfLoader, symbols) { importReferences = null !; }
protected void DumpRela64(ElfLoader64 loader) { foreach (var section in loader.Sections.Where(s => s.Type == SectionHeaderType.SHT_RELA)) { Debug.Print("RELA: offset {0:X} symbol section {1}, relocating in section {2}", section.FileOffset, section.LinkedSection.Name, section.RelocatedSection.Name); var symbols = loader.Symbols[section.LinkedSection]; var rdr = loader.CreateReader(section.FileOffset); for (uint i = 0; i < section.EntryCount(); ++i) { var rela = Elf64_Rela.Read(rdr); Debug.Print(" off:{0:X16} type:{1,-16} add:{3,-20} {4,3} {2}", rela.r_offset, RelocationTypeToString((uint)rela.r_info), symbols[(int)(rela.r_info >> 32)].Name, rela.r_addend, (int)(rela.r_info >> 32)); } } }
public Arm64Relocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> symbols) : base(loader, symbols) { }
public PpcRelocator64(ElfLoader64 loader) : base(loader) { this.loader = loader; }
public Ia64Relocator(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> symbols) : base(elfLoader, symbols) { }
public AlphaRelocator(ElfLoader64 loader) : base(loader) { }