FreeCalypso > hg > freecalypso-reveng
view leo-obj/tool/main.c @ 155:15743b40e03a
tiobjd ctypes: print more useful hex byte offsets for struct fields
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Fri, 02 May 2014 23:41:44 +0000 |
parents | 25d3ead621f8 |
children | 069b79b36228 |
line wrap: on
line source
/* * tiobjd main() function and command dispatch */ #include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include "globals.h" extern int cmd_basics(); extern int cmd_ctypes(); extern int cmd_disasm(); extern int cmd_ln(); extern int cmd_nm(); extern int cmd_profile(); extern int cmd_rawrel(); extern int cmd_reloc(); extern int cmd_sechdr(); extern int cmd_symtab(); extern int dump_filehdr_info(); static struct cmdtab { char *cmd; int (*func)(); } cmdtab[] = { {"basics", cmd_basics}, {"ctypes", cmd_ctypes}, {"disasm", cmd_disasm}, {"dumpsym", cmd_symtab}, /* backward compat */ {"hdr", dump_filehdr_info}, {"ln", cmd_ln}, {"nm", cmd_nm}, {"profile", cmd_profile}, {"rawrel", cmd_rawrel}, {"reloc", cmd_reloc}, {"sechdr", cmd_sechdr}, {"symtab", cmd_symtab}, {0, 0} }; main(argc, argv) char **argv; { struct cmdtab *tp; if (argc < 3) { fprintf(stderr, "usage: %s <objfile> <op> [args]\n", argv[0]); exit(1); } objfilename = argv[1]; mmap_objfile(); initial_parse_hdr(); for (tp = cmdtab; tp->cmd; tp++) if (!strcmp(tp->cmd, argv[2])) break; if (!tp->func) { fprintf(stderr, "\"%s\": unknown or unimplemented command\n", argv[2]); exit(1); } return tp->func(argc - 2, argv + 2); }