2004-06-29 Andrew Cagney * Makefile.am (PROGS, SELFTEST_PROG, check_PROGRAMS, CFILES): Add program "selftest". * Makefile.in: Re-generate. * selftest.c: New file. Index: Makefile.am =================================================================== RCS file: /cvs/src/src/binutils/Makefile.am,v retrieving revision 1.50 diff -p -u -r1.50 Makefile.am --- Makefile.am 19 Mar 2004 07:03:40 -0000 1.50 +++ Makefile.am 29 Jun 2004 23:25:13 -0000 @@ -52,7 +52,11 @@ DLLWRAP_PROG=dllwrap SRCONV_PROG=srconv$(EXEEXT) sysdump$(EXEEXT) coffdump$(EXEEXT) -PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ +# Simple program to selfcheck BFD's internals. +SELFTEST_PROG=selftest +check_PROGRAMS = $(SELFTEST_PROG) + +PROGS = $(SIZE_PROG) $(OBJDUMP_PROG) $(NM_PROG) $(AR_PROG) $(STRINGS_PROG) $(STRIP_PROG) $(RANLIB_PROG) $(DEMANGLER_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ $(SELFTEST_PROG) bin_PROGRAMS = $(SIZE_PROG) $(OBJDUMP_PROG) $(AR_PROG) $(STRINGS_PROG) $(RANLIB_PROG) $(OBJCOPY_PROG) @BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ $(ADDR2LINE_PROG) $(READELF_PROG) @BUILD_DLLWRAP@ @BUILD_MISC@ @@ -94,6 +98,7 @@ CFILES = \ objcopy.c objdump.c prdbg.c \ rdcoff.c rddbg.c readelf.c rename.c \ resbin.c rescoff.c resrc.c resres.c \ + selftest.c \ size.c srconv.c stabs.c strings.c sysdump.c version.c \ windres.c winduni.c wrstabs.c @@ -192,6 +197,8 @@ ranlib_LDADD = $(BFDLIB) $(LIBIBERTY) @L addr2line_SOURCES = addr2line.c budemang.c $(BULIBS) +selftest_SOURCES = selftest.c + # The following is commented out for the conversion to automake. # This rule creates a single binary that switches between ar and ranlib # by looking at argv[0]. Use this kludge to save some disk space. Index: selftest.c =================================================================== RCS file: selftest.c diff -N selftest.c --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ selftest.c 29 Jun 2004 23:25:14 -0000 @@ -0,0 +1,71 @@ +/* verify.c -- Verify BFD's internals. + + Copyright 2004 Free Software Foundation, Inc. + + This file is part of BFD, the Binary File Descriptor library. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. */ + +#include +#include +#include "bfd.h" +#include "libbfd.h" + +#define CHECK(TARGET,METHOD,FORMAT) \ +check ((*TARGET), (*TARGET)->METHOD[FORMAT], #METHOD, FORMAT) + +static void +check (const struct bfd_target *target, void *method, + const char *method_name, enum bfd_format format) +{ + if (method == NULL) + { + const char *format_name; + switch (format) + { +#define CASE(F) case F: format_name = #F; break + CASE (bfd_unknown); + CASE (bfd_object); + CASE (bfd_archive); + CASE (bfd_core); + CASE (bfd_runtime); + CASE (bfd_type_end); + default: format_name = ""; break; + } + printf ("%s->%s[%s]\n", target->name, method_name, format_name); + } +} + +int +main () +{ + { + struct bfd_target const * const*target; + for (target = bfd_target_vector; *target != NULL; target++) + { + { + enum bfd_format format; + for (format = bfd_unknown; format < bfd_type_end; format++) + { + CHECK (target, _bfd_check_format, format); + CHECK (target, _bfd_set_format, format); + CHECK (target, _bfd_write_contents, format); + } + } + } + } + return 0; +} Index: doc/Makefile.in =================================================================== RCS file: /cvs/src/src/binutils/doc/Makefile.in,v retrieving revision 1.14 diff -p -u -r1.14 Makefile.in --- doc/Makefile.in 28 Nov 2003 04:58:41 -0000 1.14 +++ doc/Makefile.in 29 Jun 2004 23:25:14 -0000 @@ -1,6 +1,6 @@ -# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am +# Makefile.in generated automatically by automake 1.4 from Makefile.am -# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. +# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -264,7 +264,7 @@ uninstall-info: else ii=; fi; \ list='$(INFO_DEPS)'; \ for file in $$list; do \ - test -z "$$ii" \ + test -z "$ii" \ || install-info --info-dir=$(DESTDIR)$(infodir) --remove $$file; \ done @$(NORMAL_UNINSTALL)