コード例 #1
0
ファイル: ElfLoader64Tests.cs プロジェクト: fengjixuchui/reko
 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);
 }
コード例 #2
0
 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);
 }
コード例 #3
0
 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);
 }
コード例 #4
0
        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));
                }
            }
        }
コード例 #5
0
 public ElfRelocator64(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(imageSymbols)
 {
     this.loader       = loader;
     this.imageSymbols = imageSymbols;
 }
コード例 #6
0
ファイル: RiscVRelocator.cs プロジェクト: olivierh59500/reko
 public RiscVRelocator64(ElfLoader64 loader) : base(loader)
 {
 }
コード例 #7
0
ファイル: MipsRelocator.cs プロジェクト: VladRassokhin/reko
 public MipsRelocator64(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> imageSymbols) : base(elfLoader, imageSymbols)
 {
     this.elfLoader = elfLoader;
 }
コード例 #8
0
 public x86_64Relocator(ElfLoader64 loader) : base(loader)
 {
     this.loader = loader;
 }
コード例 #9
0
 public ElfRelocator64(ElfLoader64 loader)
 {
     this.loader = loader;
 }
コード例 #10
0
 public x86_64Relocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols)
 {
     this.loader = loader;
 }
コード例 #11
0
ファイル: AlphaRelocator.cs プロジェクト: fengjixuchui/reko
 public AlphaRelocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols)
 {
 }
コード例 #12
0
 public RiscVRelocator64(ElfLoader64 loader, SortedList <Address, ImageSymbol> imageSymbols) : base(loader, imageSymbols)
 {
 }
コード例 #13
0
ファイル: Sparc64Relocator.cs プロジェクト: nemerle/reko
 public Sparc64Relocator(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> symbols) :
     base(elfLoader, symbols)
 {
     importReferences = null !;
 }
コード例 #14
0
ファイル: ElfRelocator.cs プロジェクト: uxmal/reko
 public ElfRelocator64(ElfLoader64 loader)
 {
     this.loader = loader;
 }
コード例 #15
0
ファイル: ElfRelocator.cs プロジェクト: uxmal/reko
        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));
                }
            }
        }
コード例 #16
0
ファイル: RiscVRelocator.cs プロジェクト: uxmal/reko
 public RiscVRelocator64(ElfLoader64 loader) : base(loader)
 {
 }
コード例 #17
0
ファイル: x86_64Relocator.cs プロジェクト: uxmal/reko
 public x86_64Relocator(ElfLoader64 loader) : base(loader)
 {
     this.loader = loader;
 }
コード例 #18
0
 public Arm64Relocator(ElfLoader64 loader, SortedList <Address, ImageSymbol> symbols) : base(loader, symbols)
 {
 }
コード例 #19
0
 public PpcRelocator64(ElfLoader64 loader) : base(loader)
 {
     this.loader = loader;
 }
コード例 #20
0
ファイル: Ia64Relocator.cs プロジェクト: qcyb/reko
 public Ia64Relocator(ElfLoader64 elfLoader, SortedList <Address, ImageSymbol> symbols)
     : base(elfLoader, symbols)
 {
 }
コード例 #21
0
 public AlphaRelocator(ElfLoader64 loader) : base(loader)
 {
 }