forked from Imagelibrary/binutils-gdb
2010-01-26 Tristan Gingold <gingold@adacore.com>
* targets.c (BFD_JUMP_TABLE_ARCHIVE): Add initializer for write_ar_hdr. (bfd_target): Add _bfd_write_ar_hdr_fn field. * archive.c (is_bsd44_extended_name): New macro. (_bfd_generic_read_ar_hdr_mag): Use it. Add extra_size. (bfd_slurp_armap): Also check for "__.SYMDEF" as a BSD4.4 extended name. (_bfd_archive_bsd44_construct_extended_name_table): New function. (_bfd_generic_write_ar_hdr): Ditto. (_bfd_bsd44_write_ar_hdr): Ditto. (_bfd_write_archive_contents): Call _bfd_write_ar_hdr. (bsd_write_armap): Adjust firstreal computation. * libbfd-in.h (struct areltdata): Add extra_size field. (_bfd_generic_write_ar_hdr): Add prototype. (_bfd_bsd44_write_ar_hdr): Ditto. (_bfd_write_ar_hdr): Define. (_bfd_noarchive_write_ar_hdr): Ditto. (_bfd_archive_bsd_write_ar_hdr): Ditto. (_bfd_archive_coff_write_ar_hdr): Ditto. (_bfd_archive_bsd44_slurp_armap): Ditto. (_bfd_archive_bsd44_slurp_extended_name_table): Ditto. (_bfd_archive_bsd44_construct_extended_name_table): New prototype. (_bfd_archive_bsd44_truncate_arname): Ditto. (_bfd_archive_bsd44_write_armap): Ditto. (_bfd_archive_bsd44_read_ar_hdr): Ditto. (_bfd_archive_bsd44_write_ar_hdr): Ditto. (_bfd_archive_bsd44_openr_next_archived_file): Ditto. (_bfd_archive_bsd44_get_elt_at_index): Ditto. (_bfd_archive_bsd44_generic_stat_arch_elt): Ditto. (_bfd_archive_bsd44_update_armap_timestamp): Ditto. * libbfd.h: Regenerate. * oasys.c (oasys_write_ar_hdr): Define. * libecoff.h (_bfd_ecoff_write_ar_hdr): Define. * ieee.c (ieee_write_ar_hdr): Define. * elf64-mips.c (bfd_elf64_archive_write_ar_hdr): Define. * coff-rs6000.c (rs6000coff_vec): Adjust for write_ar_hdr field. (bfd_pmac_xcoff_backend_data): Ditto. * coff64-rs6000.c (rs6000coff64_vec): Ditto. (bfd_xcoff_aix5_backend_data): Ditto. * coff-alpha.c (alpha_ecoff_write_ar_hdr): Define. * aout-target.h (MY_write_ar_hdr): Define it if not defined. * aout-tic30.c (MY_write_ar_hdr): Ditto. * mach-o-target.c (TARGET_NAME): Use _bfd_archive_bsd44 archive. (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr) (bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table) (bfd_mach_o_construct_extended_name_table) (bfd_mach_o_truncate_arname, bfd_mach_o_write_armap) (bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt) (bfd_mach_o_update_armap_timestamp): Moved to mach-o.c * mach-o.c (bfd_mach_o_mkarchive, bfd_mach_o_read_ar_hdr) (bfd_mach_o_slurp_armap, bfd_mach_o_slurp_extended_name_table) (bfd_mach_o_construct_extended_name_table) (bfd_mach_o_truncate_arname, bfd_mach_o_write_armap) (bfd_mach_o_get_elt_at_index, bfd_mach_o_generic_stat_arch_elt) (bfd_mach_o_update_armap_timestamp): Moved from mach-o-target.c * bfd-in2.h: Regenerate.
This commit is contained in:
@@ -90,6 +90,7 @@ struct artdata {
|
||||
struct areltdata {
|
||||
char * arch_header; /* it's actually a string */
|
||||
unsigned int parsed_size; /* octets of filesize not including ar_hdr */
|
||||
unsigned int extra_size; /* BSD4.4: extra bytes after the header. */
|
||||
char *filename; /* null-terminated */
|
||||
file_ptr origin; /* for element of a thin archive */
|
||||
};
|
||||
@@ -207,6 +208,12 @@ extern void _bfd_ar_spacepad
|
||||
extern void *_bfd_generic_read_ar_hdr_mag
|
||||
(bfd *, const char *);
|
||||
|
||||
extern bfd_boolean _bfd_generic_write_ar_hdr
|
||||
(bfd *, bfd *);
|
||||
|
||||
extern bfd_boolean _bfd_bsd44_write_ar_hdr
|
||||
(bfd *, bfd *);
|
||||
|
||||
bfd * bfd_generic_openr_next_archived_file
|
||||
(bfd *archive, bfd *last_file);
|
||||
|
||||
@@ -215,6 +222,8 @@ int bfd_generic_stat_arch_elt
|
||||
|
||||
#define _bfd_read_ar_hdr(abfd) \
|
||||
BFD_SEND (abfd, _bfd_read_ar_hdr_fn, (abfd))
|
||||
#define _bfd_write_ar_hdr(archive, abfd) \
|
||||
BFD_SEND (abfd, _bfd_write_ar_hdr_fn, (archive, abfd))
|
||||
|
||||
/* Generic routines to use for BFD_JUMP_TABLE_GENERIC. Use
|
||||
BFD_JUMP_TABLE_GENERIC (_bfd_generic). */
|
||||
@@ -273,6 +282,8 @@ extern bfd_boolean _bfd_nocore_core_file_matches_executable_p
|
||||
((bfd_boolean (*) (bfd *, unsigned int, struct orl *, unsigned int, int)) \
|
||||
bfd_false)
|
||||
#define _bfd_noarchive_read_ar_hdr bfd_nullvoidptr
|
||||
#define _bfd_noarchive_write_ar_hdr \
|
||||
((bfd_boolean (*) (bfd *, bfd *)) bfd_false)
|
||||
#define _bfd_noarchive_openr_next_archived_file \
|
||||
((bfd *(*) (bfd *, bfd *)) bfd_nullvoidptr)
|
||||
#define _bfd_noarchive_get_elt_at_index \
|
||||
@@ -291,6 +302,7 @@ extern bfd_boolean _bfd_archive_bsd_construct_extended_name_table
|
||||
#define _bfd_archive_bsd_truncate_arname bfd_bsd_truncate_arname
|
||||
#define _bfd_archive_bsd_write_armap bsd_write_armap
|
||||
#define _bfd_archive_bsd_read_ar_hdr _bfd_generic_read_ar_hdr
|
||||
#define _bfd_archive_bsd_write_ar_hdr _bfd_generic_write_ar_hdr
|
||||
#define _bfd_archive_bsd_openr_next_archived_file \
|
||||
bfd_generic_openr_next_archived_file
|
||||
#define _bfd_archive_bsd_get_elt_at_index _bfd_generic_get_elt_at_index
|
||||
@@ -310,6 +322,7 @@ extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
|
||||
#define _bfd_archive_coff_truncate_arname bfd_dont_truncate_arname
|
||||
#define _bfd_archive_coff_write_armap coff_write_armap
|
||||
#define _bfd_archive_coff_read_ar_hdr _bfd_generic_read_ar_hdr
|
||||
#define _bfd_archive_coff_write_ar_hdr _bfd_generic_write_ar_hdr
|
||||
#define _bfd_archive_coff_openr_next_archived_file \
|
||||
bfd_generic_openr_next_archived_file
|
||||
#define _bfd_archive_coff_get_elt_at_index _bfd_generic_get_elt_at_index
|
||||
@@ -317,6 +330,26 @@ extern bfd_boolean _bfd_archive_coff_construct_extended_name_table
|
||||
bfd_generic_stat_arch_elt
|
||||
#define _bfd_archive_coff_update_armap_timestamp bfd_true
|
||||
|
||||
/* Routines to use for BFD_JUMP_TABLE_ARCHIVE to get BSD4.4 style
|
||||
archives. Use BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_bsd44). */
|
||||
|
||||
#define _bfd_archive_bsd44_slurp_armap bfd_slurp_bsd_armap
|
||||
#define _bfd_archive_bsd44_slurp_extended_name_table \
|
||||
_bfd_slurp_extended_name_table
|
||||
extern bfd_boolean _bfd_archive_bsd44_construct_extended_name_table
|
||||
(bfd *, char **, bfd_size_type *, const char **);
|
||||
#define _bfd_archive_bsd44_truncate_arname bfd_bsd_truncate_arname
|
||||
#define _bfd_archive_bsd44_write_armap bsd_write_armap
|
||||
#define _bfd_archive_bsd44_read_ar_hdr _bfd_generic_read_ar_hdr
|
||||
#define _bfd_archive_bsd44_write_ar_hdr _bfd_bsd44_write_ar_hdr
|
||||
#define _bfd_archive_bsd44_openr_next_archived_file \
|
||||
bfd_generic_openr_next_archived_file
|
||||
#define _bfd_archive_bsd44_get_elt_at_index _bfd_generic_get_elt_at_index
|
||||
#define _bfd_archive_bsd44_generic_stat_arch_elt \
|
||||
bfd_generic_stat_arch_elt
|
||||
#define _bfd_archive_bsd44_update_armap_timestamp \
|
||||
_bfd_archive_bsd_update_armap_timestamp
|
||||
|
||||
/* Routines to use for BFD_JUMP_TABLE_SYMBOLS where there is no symbol
|
||||
support. Use BFD_JUMP_TABLE_SYMBOLS (_bfd_nosymbols). */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user