X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=bfd%2Fcoff-alpha.c;h=7cf51a5911005ca56012ee9905041a00cc3c3077;hb=680e019e5aeec49734760653145fee89f0ddc00b;hp=9a3ac089a672a6214b274835c22171182265477a;hpb=7d4b2d2d29e2fc3af14d14412845615cc994cf91;p=binutils-gdb.git diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 9a3ac089a67..7cf51a59110 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -1,5 +1,5 @@ /* BFD back-end for ALPHA Extended-Coff files. - Copyright (C) 1993-2020 Free Software Foundation, Inc. + Copyright (C) 1993-2022 Free Software Foundation, Inc. Modified from coff-mips.c by Steve Chamberlain and Ian Lance Taylor . @@ -118,45 +118,45 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 0, /* size (0 = byte, 1 = short, 2 = long) */ 8, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ reloc_nil, /* special_function */ "IGNORE", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - TRUE), /* pcrel_offset */ + true), /* pcrel_offset */ /* A 32 bit reference to a symbol. */ HOWTO (ALPHA_R_REFLONG, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ "REFLONG", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* A 64 bit reference to a symbol. */ HOWTO (ALPHA_R_REFQUAD, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ 64, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ "REFQUAD", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* A 32 bit GP relative offset. This is just like REFLONG except that when the value is used the value of the gp register will be @@ -165,15 +165,15 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_bitfield, /* complain_on_overflow */ 0, /* special_function */ "GPREL32", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Used for an instruction that refers to memory off the GP register. The offset is 16 bits of the 32 bit instruction. This @@ -182,15 +182,15 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ "LITERAL", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* This reloc only appears immediately following a LITERAL reloc. It identifies a use of the literal. It seems that the linker can @@ -205,15 +205,15 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ reloc_nil, /* special_function */ "LITUSE", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Load the gp register. This is always used for a ldah instruction which loads the upper 16 bits of the gp register. The next reloc @@ -230,15 +230,15 @@ static reloc_howto_type alpha_howto_table[] = 16, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ reloc_nil, /* special_function */ "GPDISP", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ - TRUE), /* pcrel_offset */ + true), /* pcrel_offset */ /* A 21 bit branch. The native assembler generates these for branches within the text segment, and also fills in the PC @@ -247,90 +247,90 @@ static reloc_howto_type alpha_howto_table[] = 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 21, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ "BRADDR", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0x1fffff, /* src_mask */ 0x1fffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* A hint for a jump to a register. */ HOWTO (ALPHA_R_HINT, /* type */ 2, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 14, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "HINT", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0x3fff, /* src_mask */ 0x3fff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* 16 bit PC relative offset. */ HOWTO (ALPHA_R_SREL16, /* type */ 0, /* rightshift */ 1, /* size (0 = byte, 1 = short, 2 = long) */ 16, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ "SREL16", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffff, /* src_mask */ 0xffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* 32 bit PC relative offset. */ HOWTO (ALPHA_R_SREL32, /* type */ 0, /* rightshift */ 2, /* size (0 = byte, 1 = short, 2 = long) */ 32, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ "SREL32", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ 0xffffffff, /* src_mask */ 0xffffffff, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* A 64 bit PC relative offset. */ HOWTO (ALPHA_R_SREL64, /* type */ 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ 64, /* bitsize */ - TRUE, /* pc_relative */ + true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ 0, /* special_function */ "SREL64", /* name */ - TRUE, /* partial_inplace */ + true, /* partial_inplace */ MINUS_ONE, /* src_mask */ MINUS_ONE, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Push a value on the reloc evaluation stack. */ HOWTO (ALPHA_R_OP_PUSH, /* type */ 0, /* rightshift */ 0, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "OP_PUSH", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Store the value from the stack at the given address. Store it in a bitfield of size r_size starting at bit position r_offset. */ @@ -338,15 +338,15 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 4, /* size (0 = byte, 1 = short, 2 = long) */ 64, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "OP_STORE", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ MINUS_ONE, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Subtract the reloc address from the value on the top of the relocation stack. */ @@ -354,15 +354,15 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 0, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "OP_PSUB", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Shift the value on the top of the relocation stack right by the given value. */ @@ -370,38 +370,38 @@ static reloc_howto_type alpha_howto_table[] = 0, /* rightshift */ 0, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "OP_PRSHIFT", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - FALSE), /* pcrel_offset */ + false), /* pcrel_offset */ /* Adjust the GP value for a new range in the object file. */ HOWTO (ALPHA_R_GPVALUE, /* type */ 0, /* rightshift */ 0, /* size (0 = byte, 1 = short, 2 = long) */ 0, /* bitsize */ - FALSE, /* pc_relative */ + false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ 0, /* special_function */ "GPVALUE", /* name */ - FALSE, /* partial_inplace */ + false, /* partial_inplace */ 0, /* src_mask */ 0, /* dst_mask */ - FALSE) /* pcrel_offset */ + false) /* pcrel_offset */ }; /* Recognize an Alpha ECOFF file. */ -static const bfd_target * +static bfd_cleanup alpha_ecoff_object_p (bfd *abfd) { - static const bfd_target *ret; + bfd_cleanup ret; ret = coff_object_p (abfd); @@ -436,14 +436,14 @@ alpha_ecoff_object_p (bfd *abfd) /* See whether the magic number matches. */ -static bfd_boolean +static bool alpha_ecoff_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED, void * filehdr) { struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr; if (! ALPHA_ECOFF_BADMAG (*internal_f)) - return TRUE; + return true; if (ALPHA_ECOFF_COMPRESSEDMAG (*internal_f)) _bfd_error_handler @@ -451,7 +451,7 @@ alpha_ecoff_bad_format_hook (bfd *abfd ATTRIBUTE_UNUSED, "use compiler flags, or objZ, to generate uncompressed binaries"), abfd); - return FALSE; + return false; } /* This is a hook called by coff_real_object_p to create any backend @@ -727,30 +727,36 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, struct bfd_link_info *link_info, struct bfd_link_order *link_order, bfd_byte *data, - bfd_boolean relocatable, + bool relocatable, asymbol **symbols) { bfd *input_bfd = link_order->u.indirect.section->owner; asection *input_section = link_order->u.indirect.section; - long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section); - arelent **reloc_vector = NULL; + long reloc_size; + arelent **reloc_vector; long reloc_count; bfd *output_bfd = relocatable ? abfd : (bfd *) NULL; bfd_vma gp; - bfd_size_type sz; - bfd_boolean gp_undefined; + bool gp_undefined; bfd_vma stack[RELOC_STACKSIZE]; int tos = 0; + reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section); if (reloc_size < 0) - goto error_return; - reloc_vector = (arelent **) bfd_malloc ((bfd_size_type) reloc_size); - if (reloc_vector == NULL && reloc_size != 0) - goto error_return; + return NULL; - sz = input_section->rawsize ? input_section->rawsize : input_section->size; - if (! bfd_get_section_contents (input_bfd, input_section, data, 0, sz)) - goto error_return; + if (!bfd_get_full_section_contents (input_bfd, input_section, &data)) + return NULL; + + if (data == NULL) + return NULL; + + if (reloc_size == 0) + return data; + + reloc_vector = (arelent **) bfd_malloc (reloc_size); + if (reloc_vector == NULL) + return NULL; reloc_count = bfd_canonicalize_reloc (input_bfd, input_section, reloc_vector, symbols); @@ -760,7 +766,7 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, goto successful_return; /* Get the GP value for the output BFD. */ - gp_undefined = FALSE; + gp_undefined = false; gp = _bfd_get_gp_value (abfd); if (gp == 0) { @@ -788,11 +794,11 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, { struct bfd_link_hash_entry *h; - h = bfd_link_hash_lookup (link_info->hash, "_gp", FALSE, FALSE, - TRUE); + h = bfd_link_hash_lookup (link_info->hash, "_gp", false, false, + true); if (h == (struct bfd_link_hash_entry *) NULL || h->type != bfd_link_hash_defined) - gp_undefined = TRUE; + gp_undefined = true; else { gp = (h->u.def.value @@ -1080,7 +1086,7 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, case ALPHA_R_GPVALUE: /* I really don't know if this does the right thing. */ gp = rel->addend; - gp_undefined = FALSE; + gp_undefined = false; break; default: @@ -1103,7 +1109,7 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, case bfd_reloc_undefined: (*link_info->callbacks->undefined_symbol) (link_info, bfd_asymbol_name (*rel->sym_ptr_ptr), - input_bfd, input_section, rel->address, TRUE); + input_bfd, input_section, rel->address, true); break; case bfd_reloc_dangerous: (*link_info->callbacks->reloc_dangerous) @@ -1127,13 +1133,11 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, abort (); successful_return: - if (reloc_vector != NULL) - free (reloc_vector); + free (reloc_vector); return data; error_return: - if (reloc_vector != NULL) - free (reloc_vector); + free (reloc_vector); return NULL; } @@ -1327,7 +1331,7 @@ alpha_convert_external_reloc (bfd *output_bfd ATTRIBUTE_UNUSED, quite similar to get_relocated_section_contents. Perhaps they could be combined somehow. */ -static bfd_boolean +static bool alpha_relocate_section (bfd *output_bfd, struct bfd_link_info *info, bfd *input_bfd, @@ -1338,7 +1342,7 @@ alpha_relocate_section (bfd *output_bfd, asection **symndx_to_section, *lita_sec; struct ecoff_link_hash_entry **sym_hashes; bfd_vma gp; - bfd_boolean gp_undefined; + bool gp_undefined; bfd_vma stack[RELOC_STACKSIZE]; int tos = 0; struct external_reloc *ext_rel; @@ -1354,7 +1358,7 @@ alpha_relocate_section (bfd *output_bfd, amt = NUM_RELOC_SECTIONS * sizeof (asection *); symndx_to_section = (asection **) bfd_alloc (input_bfd, amt); if (!symndx_to_section) - return FALSE; + return false; symndx_to_section[RELOC_SECTION_NONE] = NULL; symndx_to_section[RELOC_SECTION_TEXT] = @@ -1443,7 +1447,7 @@ alpha_relocate_section (bfd *output_bfd, _("using multiple gp values"), (char *) NULL, output_bfd, (asection *) NULL, (bfd_vma) 0); - ecoff_data (output_bfd)->issued_multiple_gp_warning = TRUE; + ecoff_data (output_bfd)->issued_multiple_gp_warning = true; } if (lita_vma < gp - 0x8000) gp = lita_vma + lita_size - 0x8000; @@ -1473,9 +1477,9 @@ alpha_relocate_section (bfd *output_bfd, int r_extern; int r_offset; int r_size; - bfd_boolean relocatep; - bfd_boolean adjust_addrp; - bfd_boolean gp_usedp; + bool relocatep; + bool adjust_addrp; + bool gp_usedp; bfd_vma addend; r_vaddr = H_GET_64 (input_bfd, ext_rel->r_vaddr); @@ -1490,9 +1494,9 @@ alpha_relocate_section (bfd *output_bfd, r_size = ((ext_rel->r_bits[3] & RELOC_BITS3_SIZE_LITTLE) >> RELOC_BITS3_SIZE_SH_LITTLE); - relocatep = FALSE; - adjust_addrp = TRUE; - gp_usedp = FALSE; + relocatep = false; + adjust_addrp = true; + gp_usedp = false; addend = 0; switch (r_type) @@ -1526,13 +1530,13 @@ alpha_relocate_section (bfd *output_bfd, if (bfd_link_relocatable (info)) H_PUT_64 (input_bfd, input_section->output_offset + r_vaddr, ext_rel->r_vaddr); - adjust_addrp = FALSE; + adjust_addrp = false; break; case ALPHA_R_REFLONG: case ALPHA_R_REFQUAD: case ALPHA_R_HINT: - relocatep = TRUE; + relocatep = true; break; case ALPHA_R_BRADDR: @@ -1541,7 +1545,7 @@ alpha_relocate_section (bfd *output_bfd, case ALPHA_R_SREL64: if (r_extern) addend += - (r_vaddr + 4); - relocatep = TRUE; + relocatep = true; break; case ALPHA_R_GPREL32: @@ -1549,9 +1553,9 @@ alpha_relocate_section (bfd *output_bfd, bit offset from the current GP value. We must adjust it by the different between the original GP value and the current GP value. */ - relocatep = TRUE; + relocatep = true; addend = ecoff_data (input_bfd)->gp - gp; - gp_usedp = TRUE; + gp_usedp = true; break; case ALPHA_R_LITERAL: @@ -1582,9 +1586,9 @@ alpha_relocate_section (bfd *output_bfd, || ((insn >> 26) & 0x3f) == 0x28); } - relocatep = TRUE; + relocatep = true; addend = ecoff_data (input_bfd)->gp - gp; - gp_usedp = TRUE; + gp_usedp = true; break; case ALPHA_R_LITUSE: @@ -1648,7 +1652,7 @@ alpha_relocate_section (bfd *output_bfd, bfd_put_32 (input_bfd, (bfd_vma) insn2, contents + r_vaddr - input_section->vma + r_symndx); - gp_usedp = TRUE; + gp_usedp = true; } break; @@ -1691,7 +1695,7 @@ alpha_relocate_section (bfd *output_bfd, relocated. */ (*info->callbacks->undefined_symbol) (info, h->root.root.string, input_bfd, - input_section, (bfd_vma) 0, TRUE); + input_section, (bfd_vma) 0, true); addend = 0; } } @@ -1746,7 +1750,7 @@ alpha_relocate_section (bfd *output_bfd, } } - adjust_addrp = FALSE; + adjust_addrp = false; break; case ALPHA_R_OP_STORE: @@ -1783,7 +1787,7 @@ alpha_relocate_section (bfd *output_bfd, case ALPHA_R_GPVALUE: /* I really don't know if this does the right thing. */ gp = ecoff_data (input_bfd)->gp + r_symndx; - gp_undefined = FALSE; + gp_undefined = false; break; } @@ -1888,7 +1892,7 @@ alpha_relocate_section (bfd *output_bfd, { (*info->callbacks->undefined_symbol) (info, h->root.root.string, input_bfd, input_section, - r_vaddr - input_section->vma, TRUE); + r_vaddr - input_section->vma, true); relocation = 0; } } @@ -1958,20 +1962,20 @@ alpha_relocate_section (bfd *output_bfd, /* Only give the error once per link. */ gp = 4; _bfd_set_gp_value (output_bfd, gp); - gp_undefined = FALSE; + gp_undefined = false; } } if (tos != 0) abort (); - return TRUE; + return true; } /* Do final adjustments to the filehdr and the aouthdr. This routine sets the dynamic bits in the file header. */ -static bfd_boolean +static bool alpha_adjust_headers (bfd *abfd, struct internal_filehdr *fhdr, struct internal_aouthdr *ahdr ATTRIBUTE_UNUSED) @@ -1980,7 +1984,7 @@ alpha_adjust_headers (bfd *abfd, fhdr->f_flags |= F_ALPHA_CALL_SHARED; else if ((abfd->flags & DYNAMIC) != 0) fhdr->f_flags |= F_ALPHA_SHARABLE; - return TRUE; + return true; } /* Archive handling. In OSF/1 (or Digital Unix) v3.2, Digital @@ -2041,7 +2045,8 @@ alpha_ecoff_read_ar_hdr (bfd *abfd) we uncompress the archive element if necessary. */ static bfd * -alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos) +alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos, + struct bfd_link_info *info) { bfd *nbfd = NULL; struct areltdata *tdata; @@ -2053,7 +2058,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos) ufile_ptr filesize; buf = NULL; - nbfd = _bfd_get_elt_at_filepos (archive, filepos); + nbfd = _bfd_get_elt_at_filepos (archive, filepos, info); if (nbfd == NULL) goto error_return; @@ -2130,7 +2135,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos) n = dict[h]; else { - if (! bfd_bread (&n, (bfd_size_type) 1, nbfd)) + if (bfd_bread (&n, 1, nbfd) != 1) goto error_return; dict[h] = n; } @@ -2159,7 +2164,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos) bim->size = size; bim->buffer = buf; - nbfd->mtime_set = TRUE; + nbfd->mtime_set = true; nbfd->mtime = strtol (hdr->ar_date, (char **) NULL, 10); nbfd->flags |= BFD_IN_MEMORY; @@ -2171,8 +2176,7 @@ alpha_ecoff_get_elt_at_filepos (bfd *archive, file_ptr filepos) return nbfd; error_return: - if (buf != NULL) - free (buf); + free (buf); if (nbfd != NULL) bfd_close (nbfd); return NULL; @@ -2212,7 +2216,7 @@ alpha_ecoff_openr_next_archived_file (bfd *archive, bfd *last_file) } } - return alpha_ecoff_get_elt_at_filepos (archive, filestart); + return alpha_ecoff_get_elt_at_filepos (archive, filestart, NULL); } /* Open the archive file given an index into the armap. */ @@ -2223,7 +2227,8 @@ alpha_ecoff_get_elt_at_index (bfd *abfd, symindex sym_index) carsym *entry; entry = bfd_ardata (abfd)->symdefs + sym_index; - return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset); + return alpha_ecoff_get_elt_at_filepos (abfd, entry->file_offset, + NULL); } static void @@ -2300,8 +2305,8 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = alpha_ecoff_swap_coff_reloc_out, alpha_ecoff_swap_filehdr_out, alpha_ecoff_swap_aouthdr_out, alpha_ecoff_swap_scnhdr_out, - FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, TRUE, - ECOFF_NO_LONG_SECTION_NAMES, 4, FALSE, 2, 32768, + FILHSZ, AOUTSZ, SCNHSZ, 0, 0, 0, 0, FILNMLEN, true, + ECOFF_NO_LONG_SECTION_NAMES, 4, false, 2, 32768, alpha_ecoff_swap_filehdr_in, alpha_ecoff_swap_aouthdr_in, alpha_ecoff_swap_scnhdr_in, NULL, alpha_ecoff_bad_format_hook, _bfd_ecoff_set_arch_mach_hook, @@ -2320,7 +2325,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = /* TRUE if the .rdata section is part of the text segment, as on the Alpha. FALSE if .rdata is part of the data segment, as on the MIPS. */ - TRUE, + true, /* Bitsize of constructor entries. */ 64, /* Reloc to use for constructor entries. */ @@ -2424,11 +2429,13 @@ const bfd_target alpha_ecoff_le_vec = | HAS_LINENO | HAS_DEBUG | HAS_SYMS | HAS_LOCALS | DYNAMIC | WP_TEXT | D_PAGED), - (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE | SEC_DATA), + (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC | SEC_CODE + | SEC_DATA | SEC_SMALL_DATA), 0, /* leading underscore */ ' ', /* ar_pad_char */ 15, /* ar_max_namelen */ 0, /* match priority. */ + TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */ bfd_getl64, bfd_getl_signed_64, bfd_putl64, bfd_getl32, bfd_getl_signed_32, bfd_putl32, bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* data */