view ticoff/main.c @ 118:193926ccd1ec

tiobjd: better handling of section-relative relocs
author Michael Spacefalcon <msokolov@ivan.Harhan.ORG>
date Thu, 03 Apr 2014 07:47:03 +0000
parents 0f94d17899b3
children 2c6b1319383b
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_disasm();
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},
	{"disasm", cmd_disasm},
	{"dumpsym", cmd_symtab},	/* backward compat */
	{"hdr", dump_filehdr_info},
	{"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>\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();
}