11#include "srxfixup_internal.h"
29static void search_rel_section(
31static void search_rel_data(
const elf_rel *rpbase,
unsigned int relentries,
unsigned int addr,
struct rellink *result);
32static void dumpb(
const char *head,
unsigned int address,
unsigned int size,
const uint8_t *data);
33static void dumph(
const char *head,
unsigned int address,
unsigned int size,
const uint16_t *data);
34static void dumpw(
const char *head,
unsigned int address,
unsigned int size,
const uint32_t *data);
35static const char *num2name(
const struct name2num *table,
unsigned int num);
37void print_elf(
const elf_file *elf,
unsigned int flag)
43 print_elf_ehdr(elf, flag);
44 print_elf_phdr(elf, flag);
45 print_elf_sections(elf, flag);
46 if ( (flag & 0x100) != 0 )
50 order = build_file_order_list(elf);
51 dump_file_order_list(elf, order);
57static const struct name2num Ei_class_name[] =
59#define X(d) { #d, d },
60 XEACH_Ei_class_name_enum()
64static const struct name2num E_type_name[] =
66#define X(d) { #d, d },
67 XEACH_E_type_name_enum()
71static const struct name2num Ei_data_name[] =
73#define X(d) { #d, d },
74 XEACH_Ei_data_name_enum()
78static const struct name2num E_version_name[] =
80#define X(d) { #d, d },
81 XEACH_E_version_name_enum()
85static const struct name2num E_machine_name[] =
87#define X(d) { #d, d },
88 XEACH_E_machine_name_enum()
94void print_elf_ehdr(
const elf_file *elf,
unsigned int flag)
96 if ( (flag & 1) == 0 )
100 printf(
" Elf header\n");
102 " e_ident = 0x%02x+\"%c%c%c\", class = %s, encode = %s\n",
103 elf->ehp->e_ident[0],
104 elf->ehp->e_ident[1],
105 elf->ehp->e_ident[2],
106 elf->ehp->e_ident[3],
107 num2name(Ei_class_name, elf->ehp->e_ident[4]),
108 num2name(Ei_data_name, elf->ehp->e_ident[5]));
109 printf(
" version = %s\n", num2name(E_version_name, elf->ehp->e_ident[6]));
111 " e_type = %s, e_machine = %s, e_version = %s\n",
112 num2name(E_type_name, elf->ehp->e_type),
113 num2name(E_machine_name, elf->ehp->e_machine),
114 num2name(E_version_name, elf->ehp->e_version));
116 " e_entry = 0x%08x, e_phoff = 0x%08x, e_shoff = 0x%08x\n",
120 printf(
" e_flags = 0x%08x ", elf->ehp->e_flags);
121 if ( (elf->ehp->e_flags & EF_MIPS_NOREORDER) != 0 )
123 printf(
"EF_MIPS_NOREORDER ");
125 if ( (elf->ehp->e_flags & EF_MIPS_PIC) != 0 )
127 printf(
"EF_MIPS_PIC");
129 if ( (elf->ehp->e_flags & EF_MIPS_CPIC) != 0 )
131 printf(
"EF_MIPS_CPIC");
135 " e_ehsize = 0x%04x, e_phentsize = 0x%04x, e_phnum = 0x%04x\n",
137 elf->ehp->e_phentsize,
140 " e_shentsize = 0x%04x, e_shnum = 0x%04x, e_shstrndx = 0x%04x\n",
141 elf->ehp->e_shentsize,
143 elf->ehp->e_shstrndx);
147static const struct name2num P_type_name[] =
149#define X(d) { #d, d },
150 XEACH_P_type_name_enum()
156void print_elf_phdr(
const elf_file *elf,
unsigned int flag)
160 if ( elf->php == NULL || (flag & 1) == 0 )
164 printf(
" Program header\n");
165 for ( i = 0; i < elf->ehp->e_phnum; i += 1 )
167 printf(
" %2d: p_type=%s, ", i, num2name(P_type_name, elf->php[i].phdr.p_type));
169 "p_offset=0x%06x, p_vaddr,p_paddr=0x%06x,0x%06x\n",
170 elf->php[i].phdr.p_offset,
171 elf->php[i].phdr.p_vaddr,
172 elf->php[i].phdr.p_paddr);
174 " p_filesz=0x%06x, p_memsiz=0x%06x, p_align=%d\n",
175 elf->php[i].phdr.p_filesz,
176 elf->php[i].phdr.p_memsz,
177 (
int)(elf->php[i].phdr.p_align));
178 printf(
" p_flags=0x%08x ( ", elf->php[i].phdr.p_flags);
179 if ( (elf->php[i].phdr.p_flags & PF_X) != 0 )
183 if ( (elf->php[i].phdr.p_flags & PF_W) != 0 )
187 if ( (elf->php[i].phdr.p_flags & PF_R) != 0 )
192 if ( elf->php[i].scp )
196 printf(
" include sections = ");
197 for ( j = 0; elf->php[i].scp[j]; j += 1 )
199 printf(
"%s ", elf->php[i].scp[j]->name);
207static const struct name2num S_type_name[] =
209#define X(d) { #d, d },
210 XEACH_S_type_name_enum()
216void print_elf_sections(
const elf_file *elf,
unsigned int flag)
220 if ( elf->scp == NULL )
224 if ( (flag & 1) != 0 )
226 printf(
" Section header\n");
228 for ( i = 1; i < elf->ehp->e_shnum; i += 1 )
230 if ( (flag & 1) != 0 || ((flag & 2) != 0 && elf->scp[i]->shr.sh_type == SHT_REL) )
233 " %2d: %-12s sh_name=0x%04x sh_type=%s\n",
236 elf->scp[i]->shr.sh_name,
237 num2name(S_type_name, elf->scp[i]->shr.sh_type));
238 printf(
" sh_flas=0x%08x ( ", elf->scp[i]->shr.sh_flags);
239 if ( (elf->scp[i]->shr.sh_flags & SHF_WRITE) != 0 )
241 printf(
"SHF_WRITE ");
243 if ( (elf->scp[i]->shr.sh_flags & SHF_ALLOC) != 0 )
245 printf(
"SHF_ALLOC ");
247 if ( (elf->scp[i]->shr.sh_flags & SHF_EXECINSTR) != 0 )
249 printf(
"SHF_EXECINSTR ");
251 if ( (elf->scp[i]->shr.sh_flags & SHF_MIPS_GPREL) != 0 )
253 printf(
"SHF_MIPS_GPREL ");
257 " sh_addr,sh_offset,sh_size=0x%06x,0x%06x,0x%06x, sh_addralign=%2d\n",
258 elf->scp[i]->shr.sh_addr,
259 elf->scp[i]->shr.sh_offset,
260 elf->scp[i]->shr.sh_size,
261 (
int)(elf->scp[i]->shr.sh_addralign));
263 " sh_link=0x%08x, sh_info=0x%08x, sh_entsize=0x%02x(%d)\n",
264 elf->scp[i]->shr.sh_link,
265 elf->scp[i]->shr.sh_info,
266 elf->scp[i]->shr.sh_entsize,
267 (
int)(elf->scp[i]->shr.sh_entsize));
269 switch ( elf->scp[i]->shr.sh_type )
273 print_elf_symtbl(elf->scp[i], flag);
276 print_elf_reloc(elf->scp[i], flag);
282 if ( (flag & 1) != 0 )
288 " moduleinfo=0x%08x, entry=0x%08x, gpvalue=0x%08x\n", data->moduleinfo, data->entry, data->gp_value);
290 " text_size=0x%08x, data_size=0x%08x, bss_size=0x%08x\n",
297 if ( (flag & 1) != 0 )
303 " moduleinfo=0x%08x, entry=0x%08x, gpvalue=0x%08x\n", data->moduleinfo, data->entry, data->gp_value);
305 " text_size=0x%08x, data_size=0x%08x, bss_size=0x%08x\n",
309 printf(
" erx_lib_addr=0x%08x, erx_lib_size=0x%08x\n", data->erx_lib_addr, data->erx_lib_size);
310 printf(
" erx_stub_addr=0x%08x, erx_stub_size=0x%08x\n", data->erx_stub_addr, data->erx_stub_size);
313 case SHT_MIPS_REGINFO:
314 if ( (flag & 1) != 0 )
320 " gpmask=0x08x, cprmask=%08x,%08x,%08x,%08x\n",
324 data->ri_cprmask[3]);
325 printf(
" gp=0x%08x\n", data->ri_gp_value);
331 if ( elf->scp[i]->data )
333 if ( (elf->scp[i]->shr.sh_flags & SHF_EXECINSTR) != 0 && elf->ehp->e_machine == EM_MIPS )
336 ((elf->ehp->e_flags & EF_MIPS_MACH) == EF_MIPS_MACH_5900)
337 && ((elf->ehp->e_flags & EF_MIPS_ARCH) == EF_MIPS_ARCH_3) )
339 initdisasm(2, -1, 0, 0, 0);
343 initdisasm(1, -1, 0, 0, 0);
345 print_elf_disasm(elf, elf->scp[i], flag);
349 print_elf_datadump(elf, elf->scp[i], flag);
356static const struct name2num R_MIPS_Type[] =
358#define X(d) { #d, d },
359 XEACH_R_MIPS_Type_enum()
365void print_elf_reloc(
const elf_section *scp,
unsigned int flag)
368 unsigned int entrise;
371 if ( (flag & 2) == 0 )
375 entrise = scp->shr.sh_size / scp->shr.sh_entsize;
378 printf(
" ###: r_offset r_type r_sym\n");
379 printf(
" --- -------- -------------------- -----------------------------------\n");
382 for ( i = 0; i < entrise; i += 1 )
384 printf(
" %3u: 0x%06x 0x%02x %-16s ", i, rp[i].rel.r_offset, rp[i].type, num2name(R_MIPS_Type, rp[i].type));
385 if ( rp[i].symptr && rp[i].symptr->type == STT_SECTION )
387 printf(
"0x%03x[%s]\n", rp[i].rel.r_info >> 8, rp[i].symptr->shptr->name);
391 printf(
"0x%03x %s\n", rp[i].rel.r_info >> 8, (rp[i].symptr && rp[i].symptr->name) ? rp[i].symptr->name :
"");
405 unsigned int baseoff;
407 const unsigned int *codes;
408 unsigned int relentries;
413 if ( (flag & 8) == 0 )
417 steps = scp->shr.sh_size >> 2;
418 codes = (
unsigned int *)scp->data;
420 search_rel_section(elf, scp, &rpbase, &relentries, &baseoff);
422 for ( i = 0, addr = 0; i < steps; i += 1, addr += 4 )
424 dis[i] = disassemble(addr, codes[i]);
425 gen_asmmacro(dis[i]);
426 search_rel_data(rpbase, relentries, baseoff + addr, &rel[i]);
428 for ( i = 0; i < steps; i += 1 )
430 if ( rel[i].rp && rel[i].rp->type == R_MIPSSCE_MHI16 )
435 for ( d = (int16_t)(codes[i] & 0xFFFF); d; d = (int16_t)(codes[j] & 0xFFFF) )
438 rel[j].rid = rel[i].rid;
439 rel[j].mhrp = rel[i].rp;
443 for ( i = 0; i < steps; i += 1 )
445 format_disasm(dis[i], pb);
446 if ( rel[i].rp || rel[i].mhrp )
450 for ( k = strlen(pb); k <= 47; k += 1 )
455 sprintf(&pb[strlen(pb)],
"%3d:", rel[i].rid);
466 if ( rp->symptr && rp->symptr->type == STT_SECTION )
471 num2name(R_MIPS_Type, rp->type),
472 (
int)(rp->rel.r_info >> 8),
473 rp->symptr->shptr->name);
480 switch ( rp->symptr->bind )
499 num2name(R_MIPS_Type, rp->type),
500 (
int)(rp->rel.r_info >> 8),
501 (rp->symptr && rp->symptr->name) ? rp->symptr->name :
"");
512static void search_rel_section(
519 for ( i = 1; i < elf->ehp->e_shnum; i += 1 )
521 relscp = elf->scp[i];
522 if ( relscp->shr.sh_type == SHT_REL && scp == relscp->info )
527 if ( i < elf->ehp->e_shnum )
529 *result = (
elf_rel *)relscp->data;
530 *relentries = relscp->shr.sh_size / relscp->shr.sh_entsize;
532 switch ( elf->ehp->e_type )
534 case ET_SCE_IOPRELEXEC:
535 case ET_SCE_IOPRELEXEC2:
536 case ET_SCE_EERELEXEC:
537 case ET_SCE_EERELEXEC2:
538 *baseoff = scp->shr.sh_addr;
552static void search_rel_data(
const elf_rel *rpbase,
unsigned int relentries,
unsigned int addr,
struct rellink *result)
558 for ( j = 0; j < (int)relentries; j += 1 )
560 if ( rpbase[j].type != R_MIPSSCE_ADDEND && addr == rpbase[j].rel.r_offset )
563 result->rp = &rpbase[j];
569static void dumpb(
const char *head,
unsigned int address,
unsigned int size,
const uint8_t *data)
576 addr = address & ~0xF;
579 strcpy((
char *)cbuf,
"........ ........");
580 for ( ; off1 < off2; addr += 1 )
582 if ( (addr & 0xF) == 0 )
584 printf(
"%s%08x: ", head, addr);
586 if ( address > addr )
592 printf(
"%02x ", data[off1]);
593 if ( data[off1] > 0x1F && data[off1] <= 0x7E )
610 if ( (((uint8_t)addr + 1) & 3) == 0 )
614 if ( (addr & 0xF) == 15 )
618 strcpy((
char *)cbuf,
"........ ........");
620 if ( address <= addr )
625 for ( ; (addr & 0xF) != 0; addr += 1 )
628 if ( (((uint8_t)addr + 1) & 3) == 0 )
632 if ( (addr & 0xF) == 15 )
636 strcpy((
char *)cbuf,
"........ ........");
641static void dumph(
const char *head,
unsigned int address,
unsigned int size,
const uint16_t *data)
647 addr = address & ~0xF;
650 for ( ; off1 < size; off2 += 2 )
652 if ( (off2 & 0xF) == 0 )
654 printf(
"%s%08x: ", head, off2);
656 if ( address > off2 )
662 printf(
"%04x ", data[off1 >> 1]);
664 if ( (((uint8_t)off2 + 2) & 3) == 0 )
668 if ( (off2 & 0xF) == 14 )
672 if ( address <= off2 )
677 for ( ; (off2 & 0xF) != 0; off2 += 2 )
680 if ( (((uint8_t)off2 + 2) & 3) == 0 )
684 if ( (off2 & 0xF) == 14 )
691static void dumpw(
const char *head,
unsigned int address,
unsigned int size,
const uint32_t *data)
696 addr = address & ~0xF;
698 for ( ; off1 < size; addr += 4 )
700 if ( (addr & 0xF) == 0 )
702 printf(
"%s%08x: ", head, addr);
704 if ( address > addr )
710 printf(
"%08x ", data[off1 >> 2]);
712 if ( (addr & 0xF) == 12 )
716 if ( address <= addr )
721 for ( ; (addr & 0xF) != 0; addr += 4 )
724 if ( (addr & 0xF) == 12 )
735 unsigned int relentries;
736 unsigned int baseoff;
737 unsigned int *dumpbuf;
739 if ( (flag & 0xF0) == 0 )
743 dumpbuf = (
unsigned int *)calloc(1, scp->shr.sh_size + 4);
744 memcpy(dumpbuf, scp->data, scp->shr.sh_size);
745 switch ( scp->shr.sh_type )
750 case SHT_MIPS_REGINFO:
751 swapmemory(dumpbuf,
"l", (scp->shr.sh_size + 1) >> 2);
757 if ( (flag & 0x10) != 0 )
759 dumpb(
"", 0, scp->shr.sh_size, (uint8_t *)dumpbuf);
762 if ( (flag & 0x20) != 0 )
764 dumph(
" ", 0, scp->shr.sh_size, (uint16_t *)dumpbuf);
767 if ( (flag & 0xC0) != 0 )
771 search_rel_section(elf, scp, &rpbase, &relentries, &baseoff);
772 for ( offset = 0; offset < scp->shr.sh_size; offset += 16 )
777 (scp->shr.sh_size > offset + 16) ? 16 : (scp->shr.sh_size - offset),
778 &dumpbuf[offset / 4]);
779 if ( (flag & 0x80) != 0 )
783 for ( i = 0; i <= 15 && (offset + i) < scp->shr.sh_size; i += 4 )
785 search_rel_data(rpbase, relentries, baseoff + offset + i, &rel);
788 printf(
" +%02x:", i);
789 printf(
" [%3d]", rel.rid);
790 if ( rel.rp->symptr && rel.rp->symptr->type == STT_SECTION )
794 num2name(R_MIPS_Type, rel.rp->type),
795 (
int)(rel.rp->rel.r_info >> 8),
796 rel.rp->symptr->shptr->name);
803 if ( rel.rp->symptr )
805 switch ( rel.rp->symptr->bind )
823 num2name(R_MIPS_Type, rel.rp->type),
824 (
int)(rel.rp->rel.r_info >> 8),
825 (rel.rp->symptr && rel.rp->symptr->name) ? rel.rp->symptr->name :
"");
838static const struct name2num SymbolBinding[] =
840#define X(d) { #d, d },
841 XEACH_SymbolBinding_enum()
845static const struct name2num SymbolType[] =
847#define X(d) { #d, d },
848 XEACH_SymbolType_enum()
852static const struct name2num SymbolSpSection[] =
854#define X(d) { #d, d },
855 XEACH_SymbolSpSection_enum()
861void print_elf_symtbl(
const elf_section *scp,
unsigned int flag)
864 unsigned int entirse;
867 if ( (flag & 4) == 0 )
871 entirse = scp->shr.sh_size / scp->shr.sh_entsize;
875 printf(
" ###: name bind type st_value st_size st_shndx\n");
876 printf(
" --- ----------- ---------- ----------- ---------- ------ ------------------\n");
878 for ( i = 1; i < entirse; i += 1 )
881 if ( syp[i]->name && strlen(syp[i]->name) > 0xB )
883 printf(
"%s\n ", syp[i]->name);
887 printf(
"%-11s ", syp[i]->name ?:
"<no name>");
890 "%-10s %-11s 0x%08x 0x%04x ",
891 num2name(SymbolBinding, syp[i]->bind),
892 num2name(SymbolType, syp[i]->type),
893 syp[i]->sym.st_value,
894 syp[i]->sym.st_size);
897 printf(
"%2d '%s'", syp[i]->sym.st_shndx, syp[i]->shptr->name);
903 st_shndx = syp[i]->sym.st_shndx;
904 printf(
"%s(0x%x)", num2name(SymbolSpSection, st_shndx), st_shndx);
906 if ( syp[i]->sym.st_other )
908 printf(
" st_other=0x%x", syp[i]->sym.st_other);
915static const char *num2name(
const struct name2num *table,
unsigned int num)
917 static char buf_28[30];
919 for ( ; table->name; table += 1 )
921 if ( num == table->num )
926 sprintf(buf_28,
"? 0x%x", num);
931static const struct name2num SymbolTypes[] =
933#define X(d) { #d, d },
934 XEACH_SymbolTypes_enum()
938static const struct name2num StorageClasse[] =
940#define X(d) { #d, d },
941 XEACH_StorageClasse_enum()
952 if ( (flag & 0x200) == 0 ||
symbol == NULL )
956 printf(
" Symbol header\n");
957 printf(
" magic=0x%x vstamp=0x%x\n",
symbol->head.magic,
symbol->head.vstamp);
959 " ilineMax= %4u cbLine= %6u cbLineOffset=%u(0x%05x)\n",
962 symbol->head.cbLineOffset,
963 symbol->head.cbLineOffset);
965 " idnMax= %4u cbDnOffset= %6u(0x%05x)\n",
970 " ipdMax= %4u cbPdOffset= %6u(0x%05x)\n",
975 " isymMax= %4u cbSymOffset= %6u(0x%05x)\n",
978 symbol->head.cbSymOffset);
980 " ioptMax= %4u cbOptOffset= %6u(0x%05x)\n",
983 symbol->head.cbOptOffset);
985 " iauxMax= %4u cbAuxOffset= %6u(0x%05x)\n",
988 symbol->head.cbAuxOffset);
990 " issMax= %4u cbSsOffset= %6u(0x%05x)\n",
995 " issExtMax=%4u cbSsExtOffset=%6u(0x%05x)\n",
997 symbol->head.cbSsExtOffset,
998 symbol->head.cbSsExtOffset);
1000 " ifdMax= %4u cbFdOffset= %6u(0x%05x)\n",
1003 symbol->head.cbFdOffset);
1005 " crfd= %4u cbRfdOffset= %6u(0x%05x)\n",
1007 symbol->head.cbRfdOffset,
1008 symbol->head.cbRfdOffset);
1010 " iextMax= %4u cbExtOffset= %6u(0x%05x)\n",
1012 symbol->head.cbExtOffset,
1013 symbol->head.cbExtOffset);
1015 if (
symbol->head.issMax > 0 )
1019 const char *cpend_1;
1022 cpend_1 = &cp_1[
symbol->head.issMax];
1023 printf(
" Local strings\n");
1024 for ( i_1 = 0; cp_1 < cpend_1; i_1 += 1 )
1026 printf(
" %3d(%5d): %s\n", i_1, (
int)(cp_1 -
symbol->cbSs_Ptr), cp_1);
1027 cp_1 += strlen(cp_1) + 1;
1031 if (
symbol->head.issExtMax > 0 )
1035 const char *cpend_2;
1037 cp_2 =
symbol->cbSsExt_Ptr;
1038 cpend_2 = &cp_2[
symbol->head.issExtMax];
1039 printf(
" External strings\n");
1040 for ( i_2 = 0; cp_2 < cpend_2; i_2 += 1 )
1042 printf(
" %3d(%5d): %s\n", i_2, (
int)(cp_2 -
symbol->cbSsExt_Ptr), cp_2);
1043 cp_2 += strlen(cp_2) + 1;
1047 if (
symbol->head.iextMax > 0 )
1053 printf(
" External symbols\n");
1054 for ( i_3 = 0; i_3 <
symbol->head.iextMax; i_3 += 1 )
1057 unsigned int class_1;
1058 unsigned int type_1;
1060 type_1 = ep->asym.sy_bits & 0x3F;
1061 class_1 = (ep->asym.sy_bits >> 6) & 0x1F;
1062 idx_1 = ep->asym.sy_bits >> 12;
1063 printf(
" %3u: res,ifd=%04x,%04hx", i_3, ep->reserved, (
unsigned short)(ep->ifd));
1064 printf(
", 0x%08x", ep->asym.value);
1065 printf(
", %8s:%-7s 0x%05x ", num2name(SymbolTypes, type_1), num2name(StorageClasse, class_1), idx_1);
1066 printf(
"%s\n", &
symbol->cbSsExt_Ptr[ep->asym.iss]);
1071 printf(
" Local informations\n");
1073 for ( ifd = 0; ifd <
symbol->head.ifdMax; ifd += 1 )
1075 const char *issBase;
1077 issBase = &
symbol->cbSs_Ptr[fdrp->issBase];
1078 printf(
" %3u: %-40s addr=0x%08x \n", ifd, &issBase[fdrp->rss], fdrp->adr);
1079 if ( fdrp->csym > 0 )
1084 syp_1 = (
symr *)&
symbol->cbSym_Ptr[
sizeof(
symr) * fdrp->isymBase];
1085 printf(
" Local symbols\n");
1086 for ( i_4 = 0; i_4 < fdrp->csym; i_4 += 1 )
1089 unsigned int class_2;
1090 unsigned int type_2;
1092 type_2 = syp_1->sy_bits & 0x3F;
1093 class_2 = (syp_1->sy_bits >> 6) & 0x1F;
1094 idx_2 = syp_1->sy_bits >> 12;
1095 printf(
" %3d: 0x%08x", i_4, syp_1->value);
1096 printf(
", %10s:%-10s 0x%05x ", num2name(SymbolTypes, type_2), num2name(StorageClasse, class_2), idx_2);
1097 printf(
"%s\n", &issBase[syp_1->iss]);
1101 if ( fdrp->cline > 0 )
1103 printf(
" Line numbers\n");
1104 printf(
" ilinBase = %d, cline= %d\n", fdrp->ilineBase, fdrp->cline);
1106 if ( fdrp->copt > 0 )
1108 printf(
" Optimization entries\n");
1109 printf(
" ioptBase = %d, copt = %d\n", fdrp->ioptBase, fdrp->copt);
1111 if ( fdrp->cpd > 0 )
1117 syp_2 = (
symr *)&
symbol->cbSym_Ptr[
sizeof(
symr) * fdrp->isymBase];
1118 pdrp_2 = (
pdr *)&
symbol->cbPd_Ptr[
sizeof(
pdr) * fdrp->ipdFirst];
1119 printf(
" Procedures\n");
1120 for ( i_5 = 0; i_5 < fdrp->cpd; i_5 += 1 )
1122 printf(
" %3d: 0x%08x %s\n", i_5, pdrp_2->adr, &issBase[syp_2[pdrp_2->isym].iss]);
1124 " regmask=0x%08x, regoffset=%d, fregmask=0x%08x, fregoffset=%d\n",
1128 pdrp_2->fregoffset);
1130 " iopt=%d, frameoffset=%d, framereg=%d, pcreg=%d, line %d..%d\n",
1132 pdrp_2->frameoffset,
1137 printf(
" iline=%d, cbLineOffset=%d\n", pdrp_2->iline, (
int)(pdrp_2->cbLineOffset));
1141 if ( fdrp->caux > 0 )
1143 const unsigned int *ip_1;
1146 printf(
" Auxillary symbol entries\n");
1147 ip_1 = (
unsigned int *)&
symbol->cbAux_Ptr[
sizeof(
unsigned int) * fdrp->iauxBase];
1148 for ( i_6 = 0; i_6 < fdrp->caux; i_6 += 1 )
1150 printf(
" %3d: 0x%08lx \n", i_6, (
unsigned long)(*ip_1));
1154 if ( fdrp->crfd > 0 )
1156 const unsigned int *ip_2;
1159 printf(
" File indirect entries\n");
1160 ip_2 = (
unsigned int *)&
symbol->cbRfd_Ptr[
sizeof(
unsigned int) * fdrp->rfdBase];
1161 for ( i_7 = 0; i_7 < fdrp->crfd; i_7 += 1 )
1163 printf(
" %3d: 0x%08lx \n", i_7, (
unsigned long)(*ip_2));