Exemplo n.º 1
0
 protected void Relocate64(ElfLoader64 loader)
 {
     DumpRela64(loader);
     foreach (var relSection in loader.Sections.Where(s => s.Type == SectionHeaderType.SHT_RELA))
     {
         var symbols          = loader.Symbols[relSection.LinkedSection];
         var referringSection = relSection.RelocatedSection;
         var rdr = loader.CreateReader(relSection.FileOffset);
         for (uint i = 0; i < relSection.EntryCount(); ++i)
         {
             var rela = Elf64_Rela.Read(rdr);
             var sym  = symbols[(int)(rela.r_info >> 8)];
             RelocateEntry(sym, referringSection, rela);
         }
     }
 }
Exemplo n.º 2
0
        protected void DumpRela64(ElfLoader64 loader)
        {
            foreach (var section in loader.Sections.Where(s => s.Type == SectionHeaderType.SHT_RELA))
            {
                Debug.Print("RELA: offset {0:X} link section {1}",
                            section.FileOffset,
                            section.LinkedSection.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,
                                (SparcRt)(rela.r_info & 0xFF),
                                symbols[(int)(rela.r_info >> 8)].Name,
                                rela.r_addend,
                                (int)(rela.r_info >> 8));
                }
            }
        }
Exemplo n.º 3
0
 public SymtabSegmentRenderer64(ElfLoader64 loader, ElfSection shdr)
 {
     this.loader = loader;
     this.shdr   = shdr;
 }
Exemplo n.º 4
0
 public DynamicSectionRenderer64(ElfLoader64 loader, ElfSection shdr)
 {
     this.loader = loader;
     this.shdr   = shdr;
 }
Exemplo n.º 5
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);
 }
Exemplo n.º 6
0
 public ElfObjectLinker64(ElfLoader64 loader, IProcessorArchitecture arch, byte[] rawImage)
     : base(loader, arch, rawImage)
 {
 }
Exemplo n.º 7
0
 public DynamicSectionRenderer64(ElfLoader64 loader, ElfSection shdr)
 {
     this.loader = loader;
     this.shdr = shdr;
 }
Exemplo n.º 8
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);
 }
Exemplo n.º 9
0
 public ElfObjectLinker64(ElfLoader64 loader, IProcessorArchitecture arch, byte[] rawImage) 
     : base(loader, arch, rawImage)
 { }
Exemplo n.º 10
0
 public PpcRelocator64(ElfLoader64 loader)
 {
     this.loader = loader;
 }
Exemplo n.º 11
0
 public x86_64Relocator(ElfLoader64 loader) : base(loader)
 {
     this.loader = loader;
 }
Exemplo n.º 12
0
 public x86_64Relocator(ElfLoader64 loader)
 {
     this.loader = loader;
 }
Exemplo n.º 13
0
 public RelaSegmentRenderer64(ElfLoader64 loader, ElfSection shdr)
 {
     this.loader = loader;
     this.shdr = shdr;
 }
Exemplo n.º 14
0
 public ElfRelocator64(ElfLoader64 loader)
 {
     this.loader = loader;
 }
Exemplo n.º 15
0
        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));
                }
            }
        }
Exemplo n.º 16
0
 public PpcRelocator64(ElfLoader64 loader) : base(loader)
 {
     this.loader = loader;
 }