17a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown/**
27a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * @file bfddefines.c
37a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * Write out defines for BFD arch and mach of the given binary
47a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown *
57a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * @remark Copyright 2007 OProfile authors
67a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * @remark Read the file COPYING
77a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown *
87a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * @author Jens Wilke
97a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown *
107a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown * Copyright IBM Corporation 2007
117a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown *
127a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown */
137a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown
147a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown#include <stdio.h>
157a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown#include <bfd.h>
167a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown
177a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brownint main(int argc, char ** args)
187a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown{
197a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	bfd * bfd;
207a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	bfd_boolean r;
217a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown
227a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	bfd_init();
237a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	bfd = bfd_openr(args[1], NULL);
247a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	if (bfd == NULL) {
257a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown		bfd_perror("bfd_open");
267a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown		return 1;
277a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	}
287a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	r = bfd_check_format(bfd, bfd_object);
297a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	if (!r) {
307a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown		bfd_perror("bfd_get_arch");
317a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown		return 1;
327a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	}
337a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	printf("/* automatically generated by bfddefines, do not edit*/\n");
347a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	printf("#define BFD_TARGET_NAME \"%s\"\n", bfd->xvec->name);
357a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	printf("#define BFD_ARCH %i\n", bfd_get_arch(bfd));
367a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	printf("#define BFD_MACH %lu\n", bfd_get_mach(bfd));
377a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	printf("#define BFD_PRINTABLE_NAME \"%s\"\n", bfd_printable_name(bfd));
387a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown
397a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown	return 0;
407a33c86eb98056ef0570c99e713214f8dc56b6efJeff Brown}
41