Don't use bfd.h in binutils/elfcomm.c

Better than warning about bfd types, just don't include bfd.h and
warn against including the header again.

	* elfcomm.c: Don't include bfd.h or bucomm.h.
	(program_name): Declare.
	(process_archive_index_and_symbols): Replace bfd_boolean with int,
	and substitute FALSE and TRUE.
	(setup_archive, setup_nested_archive): Likewise.
	* elfcomm.h: Likewise.
This commit is contained in:
Alan Modra 2020-03-19 15:33:03 +10:30
parent 1cb7d8b1af
commit 81a65eb338
3 changed files with 39 additions and 31 deletions

View File

@ -1,3 +1,12 @@
2020-03-19 Alan Modra <amodra@gmail.com>
* elfcomm.c: Don't include bfd.h or bucomm.h.
(program_name): Declare.
(process_archive_index_and_symbols): Replace bfd_boolean with int,
and substitute FALSE and TRUE.
(setup_archive, setup_nested_archive): Likewise.
* elfcomm.h: Likewise.
2020-03-19 Alan Modra <amodra@gmail.com>
* readelf.c (process_archive): Always return via path freeing

View File

@ -21,20 +21,19 @@
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
/* Do not use BFD types in this file that differ in size depending on
whether BFD64 is defined. Functions in this file are used by
readelf.c and elfedit.c which define BFD64, and by objdump.c which
doesn't. */
/* Do not include bfd.h in this file. Functions in this file are used
by readelf.c and elfedit.c which define BFD64, and by objdump.c
which doesn't. */
#include "sysdep.h"
#include "libiberty.h"
#include "filenames.h"
#include "bfd.h"
#include "aout/ar.h"
#include "bucomm.h"
#include "elfcomm.h"
#include <assert.h>
extern char *program_name;
void
error (const char *message, ...)
{
@ -461,13 +460,13 @@ adjust_relative_path (const char *file_name, const char *name,
ARCH->sym_size and ARCH->sym_table.
It is the caller's responsibility to free ARCH->index_array and
ARCH->sym_table.
Returns TRUE upon success, FALSE otherwise.
Returns 1 upon success, 0 otherwise.
If failure occurs an error message is printed. */
static bfd_boolean
process_archive_index_and_symbols (struct archive_info * arch,
unsigned int sizeof_ar_index,
bfd_boolean read_symbols)
static int
process_archive_index_and_symbols (struct archive_info *arch,
unsigned int sizeof_ar_index,
int read_symbols)
{
size_t got;
unsigned long size;
@ -482,7 +481,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: invalid archive header size: %ld\n"),
arch->file_name, size);
return FALSE;
return 0;
}
size = size + (size & 1);
@ -495,7 +494,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: failed to skip archive symbol table\n"),
arch->file_name);
return FALSE;
return 0;
}
}
else
@ -513,7 +512,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
if (size < sizeof_ar_index)
{
error (_("%s: the archive index is empty\n"), arch->file_name);
return FALSE;
return 0;
}
/* Read the number of entries in the archive index. */
@ -521,7 +520,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
if (got != sizeof_ar_index)
{
error (_("%s: failed to read archive index\n"), arch->file_name);
return FALSE;
return 0;
}
arch->index_num = byte_get_big_endian (integer_buffer, sizeof_ar_index);
@ -533,7 +532,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: the archive index is supposed to have 0x%lx entries of %d bytes, but the size is only 0x%lx\n"),
arch->file_name, (long) arch->index_num, sizeof_ar_index, size);
return FALSE;
return 0;
}
/* Read in the archive index. */
@ -542,7 +541,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
if (index_buffer == NULL)
{
error (_("Out of memory whilst trying to read archive symbol index\n"));
return FALSE;
return 0;
}
got = fread (index_buffer, sizeof_ar_index, arch->index_num, arch->file);
@ -550,7 +549,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
free (index_buffer);
error (_("%s: failed to read archive index\n"), arch->file_name);
return FALSE;
return 0;
}
size -= arch->index_num * sizeof_ar_index;
@ -562,7 +561,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
free (index_buffer);
error (_("Out of memory whilst trying to convert the archive symbol index\n"));
return FALSE;
return 0;
}
for (i = 0; i < arch->index_num; i++)
@ -576,14 +575,14 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: the archive has an index but no symbols\n"),
arch->file_name);
return FALSE;
return 0;
}
arch->sym_table = (char *) malloc (size);
if (arch->sym_table == NULL)
{
error (_("Out of memory whilst trying to read archive index symbol table\n"));
return FALSE;
return 0;
}
arch->sym_size = size;
@ -592,7 +591,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: failed to read archive index symbol table\n"),
arch->file_name);
return FALSE;
return 0;
}
}
@ -602,10 +601,10 @@ process_archive_index_and_symbols (struct archive_info * arch,
{
error (_("%s: failed to read archive header following archive index\n"),
arch->file_name);
return FALSE;
return 0;
}
return TRUE;
return 1;
}
/* Read the symbol table and long-name table from an archive. */
@ -613,7 +612,7 @@ process_archive_index_and_symbols (struct archive_info * arch,
int
setup_archive (struct archive_info *arch, const char *file_name,
FILE *file, off_t file_size,
bfd_boolean is_thin_archive, bfd_boolean read_symbols)
int is_thin_archive, int read_symbols)
{
size_t got;
@ -627,7 +626,7 @@ setup_archive (struct archive_info *arch, const char *file_name,
arch->longnames_size = 0;
arch->nested_member_origin = 0;
arch->is_thin_archive = is_thin_archive;
arch->uses_64bit_indices = FALSE;
arch->uses_64bit_indices = 0;
arch->next_arhdr_offset = SARMAG;
/* Read the first archive member header. */
@ -654,7 +653,7 @@ setup_archive (struct archive_info *arch, const char *file_name,
}
else if (const_strneq (arch->arhdr.ar_name, "/SYM64/ "))
{
arch->uses_64bit_indices = TRUE;
arch->uses_64bit_indices = 1;
if (! process_archive_index_and_symbols (arch, 8, read_symbols))
return 1;
}
@ -737,7 +736,7 @@ setup_nested_archive (struct archive_info *nested_arch,
if (fstat (fileno (member_file), &statbuf) < 0)
return 1;
return setup_archive (nested_arch, member_file_name, member_file,
statbuf.st_size, FALSE, FALSE);
statbuf.st_size, 0, 0);
}
/* Release the memory used for the archive information. */

View File

@ -64,8 +64,8 @@ struct archive_info
unsigned long longnames_size; /* Size of the long file names table. */
unsigned long nested_member_origin; /* Origin in the nested archive of the current member. */
unsigned long next_arhdr_offset; /* Offset of the next archive header. */
bfd_boolean is_thin_archive; /* TRUE if this is a thin archive. */
bfd_boolean uses_64bit_indices; /* TRUE if the index table uses 64bit entries. */
int is_thin_archive; /* 1 if this is a thin archive. */
int uses_64bit_indices; /* 1 if the index table uses 64bit entries. */
struct ar_hdr arhdr; /* Current archive header. */
};
@ -74,7 +74,7 @@ extern char *adjust_relative_path (const char *, const char *, unsigned long);
/* Read the symbol table and long-name table from an archive. */
extern int setup_archive (struct archive_info *, const char *, FILE *,
off_t, bfd_boolean, bfd_boolean);
off_t, int, int);
/* Open and setup a nested archive, if not already open. */
extern int setup_nested_archive (struct archive_info *, const char *);