From 58f594cdb752acbd9e5b910cd39f513bcd6ba800 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Thu, 16 Aug 2012 20:31:34 +0000 Subject: Add a testcase for PR binutils/14481 binutils/ PR binutils/14481 * Makefile.am (BFDTEST1_PROG): New. (TEST_PROGS): Likewise. (bfdtest1_DEPENDENCIES): Likewise. (noinst_PROGRAMS): Add $(TEST_PROGS). * Makefile.in: Regenerated. * bfdtest1.c: New file. binutils/testsuite/ PR binutils/14481 * ar.exp (bfdtest1): New. (long_filenames): Run bfdtest1. (thin_archive): Likewise. (thin_archive_with_nested): Likewise. --- binutils/bfdtest1.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 binutils/bfdtest1.c (limited to 'binutils/bfdtest1.c') diff --git a/binutils/bfdtest1.c b/binutils/bfdtest1.c new file mode 100644 index 0000000..b246a04 --- /dev/null +++ b/binutils/bfdtest1.c @@ -0,0 +1,68 @@ +/* A program to test BFD. + Copyright 2012 Free Software Foundation, Inc. + + This file is part of the GNU Binutils. + + 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 3 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., 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#include "sysdep.h" +#include "bfd.h" + +static void +die (const char *s) +{ + printf ("oops: %s\n", s); + exit (1); +} + +int +main (int argc, char **argv) +{ + bfd *archive; + bfd *last, *next; + + if (argc != 2) + die ("bad usage"); + + archive = bfd_openr (argv[1], NULL); + + if (!bfd_check_format (archive, bfd_archive)) + { + bfd_close (archive); + die ("bfd_check_format"); + } + + for (last = bfd_openr_next_archived_file (archive, NULL); + last; + last = next) + { + next = bfd_openr_next_archived_file (archive, last); + bfd_close (last); + } + + for (last = bfd_openr_next_archived_file (archive, NULL); + last; + last = next) + { + next = bfd_openr_next_archived_file (archive, last); + bfd_close (last); + } + + if (!bfd_close (archive)) + die ("bfd_close"); + + return 0; +} -- cgit v1.1