|
@@ -349,39 +349,45 @@ int main(int argc, char *argv[])
|
|
|
|
|
|
for (i = 0; i < ex.e_phnum; i++) {
|
|
|
/* Section types we can ignore... */
|
|
|
- if (ph[i].p_type == PT_NULL || ph[i].p_type == PT_NOTE ||
|
|
|
- ph[i].p_type == PT_PHDR
|
|
|
- || ph[i].p_type == PT_MIPS_REGINFO)
|
|
|
+ switch (ph[i].p_type) {
|
|
|
+ case PT_NULL:
|
|
|
+ case PT_NOTE:
|
|
|
+ case PT_PHDR:
|
|
|
+ case PT_MIPS_REGINFO:
|
|
|
continue;
|
|
|
- /* Section types we can't handle... */
|
|
|
- else if (ph[i].p_type != PT_LOAD) {
|
|
|
- fprintf(stderr,
|
|
|
- "Program header %d type %d can't be converted.\n",
|
|
|
- ex.e_phnum, ph[i].p_type);
|
|
|
- exit(1);
|
|
|
- }
|
|
|
- /* Writable (data) segment? */
|
|
|
- if (ph[i].p_flags & PF_W) {
|
|
|
- struct sect ndata, nbss;
|
|
|
|
|
|
- ndata.vaddr = ph[i].p_vaddr;
|
|
|
- ndata.len = ph[i].p_filesz;
|
|
|
- nbss.vaddr = ph[i].p_vaddr + ph[i].p_filesz;
|
|
|
- nbss.len = ph[i].p_memsz - ph[i].p_filesz;
|
|
|
+ case PT_LOAD:
|
|
|
+ /* Writable (data) segment? */
|
|
|
+ if (ph[i].p_flags & PF_W) {
|
|
|
+ struct sect ndata, nbss;
|
|
|
+
|
|
|
+ ndata.vaddr = ph[i].p_vaddr;
|
|
|
+ ndata.len = ph[i].p_filesz;
|
|
|
+ nbss.vaddr = ph[i].p_vaddr + ph[i].p_filesz;
|
|
|
+ nbss.len = ph[i].p_memsz - ph[i].p_filesz;
|
|
|
|
|
|
- combine(&data, &ndata, 0);
|
|
|
- combine(&bss, &nbss, 1);
|
|
|
- } else {
|
|
|
- struct sect ntxt;
|
|
|
+ combine(&data, &ndata, 0);
|
|
|
+ combine(&bss, &nbss, 1);
|
|
|
+ } else {
|
|
|
+ struct sect ntxt;
|
|
|
|
|
|
- ntxt.vaddr = ph[i].p_vaddr;
|
|
|
- ntxt.len = ph[i].p_filesz;
|
|
|
+ ntxt.vaddr = ph[i].p_vaddr;
|
|
|
+ ntxt.len = ph[i].p_filesz;
|
|
|
|
|
|
- combine(&text, &ntxt, 0);
|
|
|
+ combine(&text, &ntxt, 0);
|
|
|
+ }
|
|
|
+ /* Remember the lowest segment start address. */
|
|
|
+ if (ph[i].p_vaddr < cur_vma)
|
|
|
+ cur_vma = ph[i].p_vaddr;
|
|
|
+ break;
|
|
|
+
|
|
|
+ default:
|
|
|
+ /* Section types we can't handle... */
|
|
|
+ fprintf(stderr,
|
|
|
+ "Program header %d type %d can't be converted.\n",
|
|
|
+ ex.e_phnum, ph[i].p_type);
|
|
|
+ exit(1);
|
|
|
}
|
|
|
- /* Remember the lowest segment start address. */
|
|
|
- if (ph[i].p_vaddr < cur_vma)
|
|
|
- cur_vma = ph[i].p_vaddr;
|
|
|
}
|
|
|
|
|
|
/* Sections must be in order to be converted... */
|