diff options
author | Tristan Gingold <gingold@adacore.com> | 2010-01-26 13:42:26 +0000 |
---|---|---|
committer | Tristan Gingold <gingold@adacore.com> | 2010-01-26 13:42:26 +0000 |
commit | 8f95b6e44955bda4aa330449215785aa987155bb (patch) | |
tree | b22841b0db23b6dec87e34e9b76e1c65c2059ac1 /bfd/libbfd.h | |
parent | 98da7939e10a50f3efdac438c8f1af77bb602688 (diff) | |
download | gdb-8f95b6e44955bda4aa330449215785aa987155bb.zip gdb-8f95b6e44955bda4aa330449215785aa987155bb.tar.gz gdb-8f95b6e44955bda4aa330449215785aa987155bb.tar.bz2 |
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.
Diffstat (limited to 'bfd/libbfd.h')
-rw-r--r-- | bfd/libbfd.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 073086c..2be8fe5 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -95,6 +95,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 */ }; @@ -212,6 +213,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); @@ -220,6 +227,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). */ @@ -278,6 +287,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 \ @@ -296,6 +307,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 @@ -315,6 +327,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 @@ -322,6 +335,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). */ |