" -h, --help Print this help message\n"
" -o, --output Where to write the modified ELF file to\n"
"\n"
+ "ELF dump:\n"
" --print-header Print ELF header\n"
" --print-segments Print program headers\n"
" --print-sections Print sections\n"
"\n"
- " --insert-before off,sz Insert spacing at given offset\n"
+ "Space insertion:\n"
+ " off: File offset, not within any structure (headers or sections).\n"
+ " sz: A multiple of the maximum alignment of all PHDRs.\n"
+ "\n"
+ " --insert-before off,sz Insert spacing at given offset,\n"
+ " mapping everything before it to lower mem addresses.\n"
+ " --insert-after off,sz Insert spacing at given offset,\n"
+ " mapping everything after it to higher mem addresses.\n"
"\n");
}
{"print-segments", 0, 0, 10002},
{"print-sections", 0, 0, 10003},
{"insert-before", 1, 0, 10004},
+ {"insert-after", 1, 0, 10005},
{NULL, 0, NULL, 0}
};
goto USAGE;
}
break;
+ case 10005:
+ opts->insertAfterOffs = strtoul(optarg, &endptr, 0);
+ if (endptr[0] != ',') {
+ goto USAGE;
+ }
+ opts->insertAfterSz = strtoul(endptr + 1, &endptr, 0);
+ if (endptr[0] != '\0' || opts->insertAfterSz == 0) {
+ goto USAGE;
+ }
+ break;
case '?':
default:
goto USAGE;