#include #include #include #include #include "config.h" #include "exceptions.h" #include "linker.h" typedef void (*sighandler_t) (int); void invite(void) { fprintf(stderr, _("Linker v1.0\n\n")); } void usage(void) { fprintf(stderr, _("Usage: linker obj1 [obj2 [obj3 [...]]] binary\n")); exit(0); } void init_all(int n) { fprintf(stderr, _(" o Initialising the linker... ")); init(n); fprintf(stderr, _(" Done!\n")); } void flush_all(void) { flush(); } void segfaulthand(int i) { exception(1, _("Signal received: segfault")); } int main(int argc, char **argv) { int i; invite(); signal(SIGSEGV, segfaulthand); if (argc < 3) usage(); fprintf(stderr, _("\nPerforming initialisation...\n\n")); init_all(argc - 2); fprintf(stderr, _("Linking files...\n")); for (i = 1; i < argc - 1; i++) { addfile(argv[i]); } fprintf(stderr, _("Generating output file...\n")); dumpfile(argv[i]); fprintf(stderr, _("\nPerforming shutdown...\n\n")); flush_all(); fprintf(stderr, _("Exitting, bye!\n")); return 0; }