Exemple #1
0
        public virtual void show_segment(List <Hunk> hunk, List <List <Hunk> > seg_list)
        {
            var main = hunk[0];
            // unit hunks are named
            var name = "";

            if (main.Name != null)
            {
                name = String.Format("'{0}'", main.Name);
            }
            var  type_name        = main.HunkType.ToString().Replace("HUNK_", "");
            var  size             = main.size;
            var  hunk_no          = main.hunk_no;
            uint data_file_offset = 0;

            if (main is TextHunk)
            {
                data_file_offset = ((TextHunk)main).data_file_offset;
            }
            var hunk_file_offset = main.FileOffset;
            var alloc_size       = (main.alloc_size != 0) ? main.alloc_size : 0;

            this.print_segment_header(hunk_no, type_name, size, name, data_file_offset, hunk_file_offset, alloc_size);
            if (this.hexdump)
            {
                print_hex(main.Data, indent: 8);
            }
            foreach (var extra in hunk.Skip(1))
            {
                this.show_extra_hunk(extra);
            }
            // index hunk info is embedded if its in a lib
            if (main.index_hunk != null)
            {
                this.show_index_info(main.index_hunk);
            }
            if (main.HunkType == HunkType.HUNK_CODE && this.disassemble && main.Data.Length > 0)
            {
                var disas = new HunkDisassembler(this.use_objdump, this.cpu);
                Console.WriteLine();
                disas.show_disassembly(hunk, seg_list, this.disassemble_start);
                Console.WriteLine();
            }
        }
Exemple #2
0
 public virtual void show_segment(List<Hunk> hunk, List<List<Hunk>> seg_list)
 {
     var main = hunk[0];
     // unit hunks are named
     var name = "";
     if (main.Name != null)
     {
         name = String.Format("'{0}'", main.Name);
     }
     var type_name = main.HunkType.ToString().Replace("HUNK_", "");
     var size = main.size;
     var hunk_no = main.hunk_no;
     uint data_file_offset = 0;
     if (main is TextHunk)
     {
         data_file_offset = ((TextHunk) main).data_file_offset;
     }
     var hunk_file_offset = main.FileOffset;
     var alloc_size = (main.alloc_size != 0) ? main.alloc_size : 0;
     this.print_segment_header(hunk_no, type_name, size, name, data_file_offset, hunk_file_offset, alloc_size);
     if (this.hexdump)
     {
         print_hex(main.Data, indent: 8);
     }
     foreach (var extra in hunk.Skip(1))
     {
         this.show_extra_hunk(extra);
     }
     // index hunk info is embedded if its in a lib
     if (main.index_hunk != null)
     {
         this.show_index_info(main.index_hunk);
     }
     if (main.HunkType == HunkType.HUNK_CODE && this.disassemble && main.Data.Length > 0)
     {
         var disas = new HunkDisassembler(this.use_objdump, this.cpu);
         Console.WriteLine();
         disas.show_disassembly(hunk, seg_list, this.disassemble_start);
         Console.WriteLine();
     }
 }