Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
Written by Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
. least-recently-used list of BFDs. *}
. struct bfd *lru_prev, *lru_next;
.
. least-recently-used list of BFDs. *}
. struct bfd *lru_prev, *lru_next;
.
-. {* When a file is closed by the caching routines, BFD retains
-. state information on the file here... *}
+. {* Track current file position (or current buffer offset for
+. in-memory BFDs). When a file is closed by the caching routines,
+. BFD retains state information on the file here. *}
. struct coff_tdata *coff_obj_data;
. struct pe_tdata *pe_obj_data;
. struct xcoff_tdata *xcoff_obj_data;
. struct ecoff_tdata *ecoff_obj_data;
. struct coff_tdata *coff_obj_data;
. struct pe_tdata *pe_obj_data;
. struct xcoff_tdata *xcoff_obj_data;
. struct ecoff_tdata *ecoff_obj_data;
. struct srec_data_struct *srec_data;
. struct verilog_data_struct *verilog_data;
. struct ihex_data_struct *ihex_data;
. struct tekhex_data_struct *tekhex_data;
. struct elf_obj_tdata *elf_obj_data;
. struct srec_data_struct *srec_data;
. struct verilog_data_struct *verilog_data;
. struct ihex_data_struct *ihex_data;
. struct tekhex_data_struct *tekhex_data;
. struct elf_obj_tdata *elf_obj_data;
. struct mmo_data_struct *mmo_data;
. struct sun_core_struct *sun_core_data;
. struct sco5_core_struct *sco5_core_data;
. struct mmo_data_struct *mmo_data;
. struct sun_core_struct *sun_core_data;
. struct sco5_core_struct *sco5_core_data;
- N_("No error"),
- N_("System call error"),
- N_("Invalid bfd target"),
- N_("File in wrong format"),
- N_("Archive object file in wrong format"),
- N_("Invalid operation"),
- N_("Memory exhausted"),
- N_("No symbols"),
- N_("Archive has no index; run ranlib to add one"),
- N_("No more archived files"),
- N_("Malformed archive"),
+ N_("no error"),
+ N_("system call error"),
+ N_("invalid bfd target"),
+ N_("file in wrong format"),
+ N_("archive object file in wrong format"),
+ N_("invalid operation"),
+ N_("memory exhausted"),
+ N_("no symbols"),
+ N_("archive has no index; run ranlib to add one"),
+ N_("no more archived files"),
+ N_("malformed archive"),
- N_("File format not recognized"),
- N_("File format is ambiguous"),
- N_("Section has no contents"),
- N_("Nonrepresentable section on output"),
- N_("Symbol needs debug section which does not exist"),
- N_("Bad value"),
- N_("File truncated"),
- N_("File too big"),
- N_("Error reading %s: %s"),
- N_("#<Invalid error code>")
+ N_("file format not recognized"),
+ N_("file format is ambiguous"),
+ N_("section has no contents"),
+ N_("nonrepresentable section on output"),
+ N_("symbol needs debug section which does not exist"),
+ N_("bad value"),
+ N_("file truncated"),
+ N_("file too big"),
+ N_("error reading %s: %s"),
+ N_("#<invalid error code>")
-/* This is the default routine to handle BFD error messages.
- Like fprintf (stderr, ...), but also handles some extra format specifiers.
-
- %pA section name from section. For group components, prints group name too.
- %pB file name from bfd. For archive components, prints archive too.
-
- Beware: Only supports a maximum of 9 format arguments. */
-
+/*
+FUNCTION
+ _bfd_error_handler
+
+SYNOPSIS
+ void _bfd_error_handler (const char *fmt, ...) ATTRIBUTE_PRINTF_1;
+
+DESCRIPTION
+ This is the default routine to handle BFD error messages.
+ Like fprintf (stderr, ...), but also handles some extra format
+ specifiers.
+
+ %pA section name from section. For group components, prints
+ group name too.
+ %pB file name from bfd. For archive components, prints
+ archive too.
+
+ Beware: Only supports a maximum of 9 format arguments.
+*/
+
{
const bfd_target *target;
target = bfd_find_target (emul, NULL);
if (target != NULL
&& target->flavour == bfd_target_elf_flavour)
{
const bfd_target *target;
target = bfd_find_target (emul, NULL);
if (target != NULL
&& target->flavour == bfd_target_elf_flavour)
bfd_put_32 (abfd, sec->size, &echdr->ch_size);
bfd_put_32 (abfd, 1 << sec->alignment_power,
&echdr->ch_addralign);
bfd_put_32 (abfd, sec->size, &echdr->ch_size);
bfd_put_32 (abfd, 1 << sec->alignment_power,
&echdr->ch_addralign);
bfd_put_64 (abfd, sec->size, &echdr->ch_size);
bfd_put_64 (abfd, 1 << sec->alignment_power,
&echdr->ch_addralign);
bfd_put_64 (abfd, sec->size, &echdr->ch_size);
bfd_put_64 (abfd, 1 << sec->alignment_power,
&echdr->ch_addralign);
order. */
memcpy (contents, "ZLIB", 4);
bfd_putb64 (sec->size, contents + 4);
order. */
memcpy (contents, "ZLIB", 4);
bfd_putb64 (sec->size, contents + 4);
SYNOPSIS
bfd_boolean bfd_check_compression_header
(bfd *abfd, bfd_byte *contents, asection *sec,
SYNOPSIS
bfd_boolean bfd_check_compression_header
(bfd *abfd, bfd_byte *contents, asection *sec,
- store the uncompressed size in UNCOMPRESSED_SIZE if the
- compression header is valid.
+ store the uncompressed size in UNCOMPRESSED_SIZE and the
+ uncompressed data alignment in UNCOMPRESSED_ALIGNMENT_POWER
+ if the compression header is valid.
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
&& (elf_section_flags (sec) & SHF_COMPRESSED) != 0)
{
if (bfd_get_flavour (abfd) == bfd_target_elf_flavour
&& (elf_section_flags (sec) & SHF_COMPRESSED) != 0)
chdr.ch_addralign = bfd_get_64 (abfd, &echdr->ch_addralign);
}
if (chdr.ch_type == ELFCOMPRESS_ZLIB
chdr.ch_addralign = bfd_get_64 (abfd, &echdr->ch_addralign);
}
if (chdr.ch_type == ELFCOMPRESS_ZLIB
/* Do nothing if either input or output aren't ELF. */
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
/* Do nothing if either input or output aren't ELF. */
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ /* Convert GNU property size. */
+ if (CONST_STRNEQ (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
+ return _bfd_elf_convert_gnu_property_size (ibfd, obfd);
+
+ /* Do nothing if input file will be decompressed. */
+ if ((ibfd->flags & BFD_DECOMPRESS))
+ return size;
+
/* Do nothing if the input section isn't a SHF_COMPRESSED section. */
hdr_size = bfd_get_compression_header_size (ibfd, isec);
if (hdr_size == 0)
/* Do nothing if the input section isn't a SHF_COMPRESSED section. */
hdr_size = bfd_get_compression_header_size (ibfd, isec);
if (hdr_size == 0)
/* Do nothing if either input or output aren't ELF. */
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
/* Do nothing if either input or output aren't ELF. */
if (bfd_get_flavour (ibfd) != bfd_target_elf_flavour
|| bfd_get_flavour (obfd) != bfd_target_elf_flavour)
+ /* Convert GNU properties. */
+ if (CONST_STRNEQ (isec->name, NOTE_GNU_PROPERTY_SECTION_NAME))
+ return _bfd_elf_convert_gnu_properties (ibfd, isec, obfd, ptr,
+ ptr_size);
+
+ /* Do nothing if input file will be decompressed. */
+ if ((ibfd->flags & BFD_DECOMPRESS))
+ return TRUE;
+
/* Do nothing if the input section isn't a SHF_COMPRESSED section. */
ihdr_size = bfd_get_compression_header_size (ibfd, isec);
if (ihdr_size == 0)
/* Do nothing if the input section isn't a SHF_COMPRESSED section. */
ihdr_size = bfd_get_compression_header_size (ibfd, isec);
if (ihdr_size == 0)