diff options
Diffstat (limited to 'bfd')
86 files changed, 5573 insertions, 3908 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 3f02487..583f731 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,7 @@ +2025-07-13 Nick Clifton <nickc@redhat.com> + + * 2.45 Branch point. + 2025-02-08 Alexandre Oliva <oliva@adacore.com> * elfxx-sparc.c (_bfd_sparc_elf_check_relocs): Check for diff --git a/bfd/Makefile.in b/bfd/Makefile.in index 1543af7..8a670ad 100644 --- a/bfd/Makefile.in +++ b/bfd/Makefile.in @@ -113,7 +113,6 @@ target_triplet = @target@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ - $(top_srcdir)/../config/bfd64.m4 \ $(top_srcdir)/../config/depstand.m4 \ $(top_srcdir)/../config/gettext-sister.m4 \ $(top_srcdir)/../config/gettext.m4 \ diff --git a/bfd/aclocal.m4 b/bfd/aclocal.m4 index 8364b5d..4d1b7ba 100644 --- a/bfd/aclocal.m4 +++ b/bfd/aclocal.m4 @@ -1168,7 +1168,6 @@ AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([../config/acx.m4]) -m4_include([../config/bfd64.m4]) m4_include([../config/depstand.m4]) m4_include([../config/gettext-sister.m4]) m4_include([../config/gettext.m4]) diff --git a/bfd/aout-target.h b/bfd/aout-target.h index f513e1b..c6d9d60 100644 --- a/bfd/aout-target.h +++ b/bfd/aout-target.h @@ -214,9 +214,11 @@ static bool MY_bfd_copy_private_section_data (bfd *ibfd, asection *isec ATTRIBUTE_UNUSED, bfd *obfd, - asection *osec ATTRIBUTE_UNUSED) + asection *osec ATTRIBUTE_UNUSED, + struct bfd_link_info *link_info) { - if (bfd_get_flavour (ibfd) == bfd_target_aout_flavour + if (link_info == NULL + && bfd_get_flavour (ibfd) == bfd_target_aout_flavour && bfd_get_flavour (obfd) == bfd_target_aout_flavour) obj_aout_subformat (obfd) = obj_aout_subformat (ibfd); return true; @@ -286,9 +288,6 @@ MY (set_sizes) (bfd *abfd) #ifndef MY_add_dynamic_symbols #define MY_add_dynamic_symbols 0 #endif -#ifndef MY_add_one_symbol -#define MY_add_one_symbol 0 -#endif #ifndef MY_link_dynamic_object #define MY_link_dynamic_object 0 #endif @@ -312,7 +311,6 @@ static const struct aout_backend_data MY (backend_data) = MY_set_sizes, MY_exec_header_not_counted, MY_add_dynamic_symbols, - MY_add_one_symbol, MY_link_dynamic_object, MY_write_dynamic_symbol, MY_check_dynamic_reloc, @@ -566,9 +564,6 @@ MY_bfd_final_link (bfd *abfd, struct bfd_link_info *info) #define MY_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data #endif -#define MY_init_private_section_data \ - _bfd_generic_init_private_section_data - #ifndef MY_bfd_copy_private_symbol_data #define MY_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data #endif diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 63c654f..81e0804 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -2973,9 +2973,6 @@ NAME (aout, link_hash_table_create) (bfd *abfd) static bool aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) { - bool (*add_one_symbol) - (struct bfd_link_info *, bfd *, const char *, flagword, asection *, - bfd_vma, const char *, bool, bool, struct bfd_link_hash_entry **); struct external_nlist *syms; bfd_size_type sym_count; char *strings; @@ -3013,10 +3010,6 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) return false; obj_aout_sym_hashes (abfd) = sym_hash; - add_one_symbol = aout_backend_info (abfd)->add_one_symbol; - if (add_one_symbol == NULL) - add_one_symbol = _bfd_generic_link_add_one_symbol; - p = syms; pend = p + sym_count; for (; p < pend; p++, sym_hash++) @@ -3167,7 +3160,7 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) break; } - if (! ((*add_one_symbol) + if (! (_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value, string, copy, false, (struct bfd_link_hash_entry **) sym_hash))) return false; diff --git a/bfd/archive.c b/bfd/archive.c index 6cda73ce..8e20554 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -2399,12 +2399,8 @@ _bfd_compute_and_write_armap (bfd *arch, unsigned int elength) map = new_map; } - if (syms[src_count]->name != NULL - && syms[src_count]->name[0] == '_' - && syms[src_count]->name[1] == '_' - && strcmp (syms[src_count]->name - + (syms[src_count]->name[2] == '_'), - "__gnu_lto_slim") == 0 + if (bfd_lto_slim_symbol_p (current, + syms[src_count]->name) && report_plugin_err) { report_plugin_err = false; diff --git a/bfd/bfd-in2.h b/bfd/bfd-in2.h index 7a8318e..b013ef9 100644 --- a/bfd/bfd-in2.h +++ b/bfd/bfd-in2.h @@ -1034,11 +1034,12 @@ bool bfd_malloc_and_get_section (bfd *abfd, asection *section, bfd_byte **buf); bool bfd_copy_private_section_data - (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec, + struct bfd_link_info *link_info); -#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ +#define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \ BFD_SEND (obfd, _bfd_copy_private_section_data, \ - (ibfd, isection, obfd, osection)) + (ibfd, isec, obfd, osec, link_info)) bool bfd_generic_is_group_section (bfd *, const asection *sec); const char *bfd_generic_group_name (bfd *, const asection *sec); @@ -2302,6 +2303,16 @@ bfd_get_lto_type (const bfd *abfd) return abfd->lto_type; } +static inline bool +bfd_lto_slim_symbol_p (const bfd *abfd, const char *name) +{ + return (bfd_get_lto_type (abfd) != lto_non_ir_object + && name != NULL + && name[0] == '_' + && name[1] == '_' + && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0); +} + static inline flagword bfd_get_file_flags (const bfd *abfd) { @@ -2913,6 +2924,18 @@ const char *bfd_format_string (bfd_format format); && bfd_is_abs_section ((H)->u.def.section) \ && !(H)->rel_from_abs) +bool _bfd_generic_link_add_one_symbol + (struct bfd_link_info *info, + bfd *abfd, + const char *name, + flagword flags, + asection *section, + bfd_vma value, + const char *string, + bool copy, + bool collect, + struct bfd_link_hash_entry **hashp); + bool bfd_link_align_section (asection *, unsigned int); bool bfd_link_split_section (bfd *abfd, asection *sec); @@ -7003,6 +7026,11 @@ enum bfd_reloc_code_real assembler and not (currently) written to any object files. */ BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC, + /* AArch64 9 bit pc-relative conditional branch and compare & branch. + The lowest two bits must be zero and are not stored in the + instruction, giving an 11 bit signed byte offset. */ + BFD_RELOC_AARCH64_BRANCH9, + /* Tilera TILEPro Relocations. */ BFD_RELOC_TILEPRO_COPY, BFD_RELOC_TILEPRO_GLOB_DAT, @@ -7609,7 +7637,6 @@ typedef struct bfd_target #define BFD_JUMP_TABLE_COPY(NAME) \ NAME##_bfd_copy_private_bfd_data, \ NAME##_bfd_merge_private_bfd_data, \ - NAME##_init_private_section_data, \ NAME##_bfd_copy_private_section_data, \ NAME##_bfd_copy_private_symbol_data, \ NAME##_bfd_copy_private_header_data, \ @@ -7622,16 +7649,10 @@ typedef struct bfd_target /* Called to merge BFD general private data from one object file to a common output file when linking. */ bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *); - /* Called to initialize BFD private section data from one object file - to another. */ -#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ - BFD_SEND (obfd, _bfd_init_private_section_data, \ - (ibfd, isec, obfd, osec, link_info)) - bool (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr, - struct bfd_link_info *); /* Called to copy BFD private section data from one object file to another. */ - bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr); + bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr, + struct bfd_link_info *); /* Called to copy BFD private symbol data from one symbol to another. */ bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, @@ -470,6 +470,16 @@ EXTERNAL . return abfd->lto_type; .} . +.static inline bool +.bfd_lto_slim_symbol_p (const bfd *abfd, const char *name) +.{ +. return (bfd_get_lto_type (abfd) != lto_non_ir_object +. && name != NULL +. && name[0] == '_' +. && name[1] == '_' +. && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0); +.} +. .static inline flagword .bfd_get_file_flags (const bfd *abfd) .{ @@ -709,6 +719,12 @@ EXTERNAL #define EXIT_FAILURE 1 #endif +#ifdef TLS +#define THREAD_LOCAL TLS +#else +#define THREAD_LOCAL +#endif + /* provide storage for subsystem, stack and heap data which may have been passed in on the command line. Ld puts this data into a bfd_link_info @@ -799,8 +815,8 @@ const char *const bfd_errmsgs[] = N_("#<invalid error code>") }; -static TLS bfd_error_type bfd_error; -static TLS char *_bfd_error_buf; +static THREAD_LOCAL bfd_error_type bfd_error; +static THREAD_LOCAL char *_bfd_error_buf; /* Free any data associated with the BFD error. */ @@ -1679,7 +1695,7 @@ _bfd_per_xvec_warn (struct per_xvec_messages *messages, size_t alloc) error_handler_sprintf; when NULL, _bfd_error_internal will be used instead. */ -static TLS struct per_xvec_messages *error_handler_messages; +static THREAD_LOCAL struct per_xvec_messages *error_handler_messages; /* A special value for error_handler_messages that indicates that the error should simply be ignored. */ @@ -2012,18 +2028,20 @@ DESCRIPTION Initialize BFD threading. The functions passed in will be used to lock and unlock global data structures. This may only be called a single time in a given process. Returns true on - success and false on error. DATA is passed verbatim to the - lock and unlock functions. The lock and unlock functions - should return true on success, or set the BFD error and return - false on failure. Note also that the lock must be a recursive - lock: BFD may attempt to acquire the lock when it is already - held by the current thread. + success and false on error. On error, the caller should + assume that BFD cannot be used by multiple threads. DATA is + passed verbatim to the lock and unlock functions. The lock + and unlock functions should return true on success, or set the + BFD error and return false on failure. Note also that the + lock must be a recursive lock: BFD may attempt to acquire the + lock when it is already held by the current thread. */ bool bfd_thread_init (bfd_lock_unlock_fn_type lock, bfd_lock_unlock_fn_type unlock, void *data) { +#ifdef TLS /* Both functions must be set, and this cannot have been called before. */ if (lock == NULL || unlock == NULL || unlock_fn != NULL) @@ -2036,6 +2054,12 @@ bfd_thread_init (bfd_lock_unlock_fn_type lock, bfd_lock_unlock_fn_type unlock, unlock_fn = unlock; lock_data = data; return true; +#else /* TLS */ + /* If thread-local storage wasn't found by configure, we disallow + threaded operation. */ + bfd_set_error (bfd_error_invalid_operation); + return false; +#endif /* TLS */ } /* diff --git a/bfd/coff-alpha.c b/bfd/coff-alpha.c index 2798efd..fcc8aef 100644 --- a/bfd/coff-alpha.c +++ b/bfd/coff-alpha.c @@ -517,8 +517,7 @@ alpha_ecoff_swap_reloc_in (bfd *abfd, value is not actually a symbol index, but is instead a special code. We put the code in the r_size field, and clobber the symndx. */ - if (intern->r_size != 0) - abort (); + BFD_ASSERT (intern->r_size == 0); intern->r_size = intern->r_symndx; intern->r_symndx = RELOC_SECTION_NONE; } @@ -526,12 +525,16 @@ alpha_ecoff_swap_reloc_in (bfd *abfd, { /* The IGNORE reloc generally follows a GPDISP reloc, and is against the .lita section. The section is irrelevant. */ - if (! intern->r_extern && - intern->r_symndx == RELOC_SECTION_ABS) - abort (); + BFD_ASSERT (intern->r_extern || intern->r_symndx != RELOC_SECTION_ABS); if (! intern->r_extern && intern->r_symndx == RELOC_SECTION_LITA) intern->r_symndx = RELOC_SECTION_ABS; } + else if (intern->r_type == ALPHA_R_OP_STORE) + { + /* Size of 64 bits is encoded as 0 in this 6-bit field. */ + if (intern->r_size == 0) + intern->r_size = 64; + } } /* Swap a reloc out. */ @@ -713,6 +716,50 @@ alpha_adjust_reloc_out (bfd *abfd ATTRIBUTE_UNUSED, } } +/* Write VAL to a little-endian bitfield specified by BITOFFSET and + BITSIZE at CONTENTS + SECOFFSET. Verify that these parameter are + valid for SEC in ABFD. */ + +static bool +write_bit_field (bfd *abfd, asection *sec, + bfd_byte *contents, bfd_size_type secoffset, + unsigned int bitoffset, unsigned int bitsize, uint64_t val) +{ + if (bitsize == 0) + return true; + + bfd_size_type secsize = bfd_get_section_limit_octets (abfd, sec); + unsigned int startbyte = bitoffset >> 3; + unsigned int endbyte = (bitoffset + bitsize - 1) >> 3; + + if (secoffset > secsize || secsize - secoffset <= endbyte) + return false; + + unsigned int startbit = bitoffset & 7; + unsigned int endbit = (bitoffset + bitsize - 1) & 7; + unsigned int mask = -1u << startbit; + unsigned char *p = contents + secoffset; + if (startbyte != endbyte) + { + p[startbyte] = (p[startbyte] & ~mask) | ((val << startbit) & mask); + val = val >> (8 - startbit); + + for (unsigned int off = startbyte + 1; off < endbyte; ++off) + { + p[off] = val; + val >>= 8; + } + mask = ~(-1u << (1 + endbit)); + } + else + { + val = val << startbit; + mask = mask & ~(-1u << (1 + endbit)); + } + p[endbyte] = (p[endbyte] & ~mask) | (val & mask); + return true; +} + /* The size of the stack for the relocation evaluator. */ #define RELOC_STACKSIZE (10) @@ -1005,31 +1052,10 @@ alpha_ecoff_get_relocated_section_contents (bfd *abfd, into the addend field by alpha_adjust_reloc_in. */ unsigned int offset = (rel->addend >> 8) & 0xff; unsigned int size = rel->addend & 0xff; - unsigned int startbyte = offset >> 3; - unsigned int endbyte = (offset + size + 7) >> 3; - unsigned int bytes = endbyte + 1 - startbyte; - - if (bytes <= 8 - && rel->address + startbyte + bytes >= rel->address - && (rel->address + startbyte + bytes - <= bfd_get_section_limit_octets (input_bfd, input_section))) - { - uint64_t val = 0; - for (int off = bytes - 1; off >= 0; --off) - val = (val << 8) | data[rel->address + startbyte + off]; - - offset -= startbyte << 3; - size -= startbyte << 3; - uint64_t mask = (((uint64_t) 1 << size) - 1) << offset; - val = (val & ~mask) | ((stack[--tos] << offset) & mask); - - for (unsigned int off = 0; off < bytes; ++off) - { - data[rel->address + startbyte + off] = val & 0xff; - val >>= 8; - } - } - else + + if (!write_bit_field (input_bfd, input_section, + data, rel->address, + offset, size, stack[--tos])) r = bfd_reloc_outofrange; } break; @@ -1779,33 +1805,12 @@ alpha_relocate_section (bfd *output_bfd, adjust the address of the reloc. */ if (! bfd_link_relocatable (info)) { - unsigned int startbyte = r_offset >> 3; - unsigned int endbyte = (r_offset + r_size + 7) >> 3; - unsigned int bytes = endbyte + 1 - startbyte; - - if (bytes <= 8 - && r_vaddr >= input_section->vma - && r_vaddr - input_section->vma < input_section->size - && (input_section->size - (r_vaddr - input_section->vma) - >= startbyte + bytes)) - { - bfd_byte *p = contents + (r_vaddr - input_section->vma); - uint64_t val = 0; - for (int off = bytes - 1; off >= 0; --off) - val = (val << 8) | p[startbyte + off]; - - r_offset -= startbyte << 3; - r_size -= startbyte << 3; - uint64_t mask = (((uint64_t) 1 << r_size) - 1) << r_offset; - val = (val & ~mask) | ((stack[--tos] << r_offset) & mask); - - for (unsigned int off = 0; off < bytes; ++off) - { - p[startbyte + off] = val & 0xff; - val >>= 8; - } - } - else + if (tos == 0) + r = bfd_reloc_notsupported; + else if (!write_bit_field (input_bfd, input_section, + contents, + r_vaddr - input_section->vma, + r_offset, r_size, stack[--tos])) r = bfd_reloc_outofrange; } break; @@ -2359,7 +2364,7 @@ static const struct ecoff_backend_data alpha_ecoff_backend_data = alpha_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags, _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL, NULL + NULL, NULL, NULL, }, /* Supported architecture. */ bfd_arch_alpha, diff --git a/bfd/coff-arm.c b/bfd/coff-arm.c index ab5f7b0..ee57451 100644 --- a/bfd/coff-arm.c +++ b/bfd/coff-arm.c @@ -1876,8 +1876,8 @@ record_arm_to_thumb_glue (struct bfd_link_info * info, it. */ bh = NULL; val = globals->arm_glue_size + 1; - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_GLOBAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_GLOBAL, s, val, NULL, true, false, &bh); free (tmp_name); @@ -1929,8 +1929,8 @@ record_thumb_to_arm_glue (struct bfd_link_info * info, bh = NULL; val = globals->thumb_glue_size + 1; - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_GLOBAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_GLOBAL, s, val, NULL, true, false, &bh); /* If we mark it 'thumb', the disassembler will do a better job. */ myh = (struct coff_link_hash_entry *) bh; @@ -1952,8 +1952,8 @@ record_thumb_to_arm_glue (struct bfd_link_info * info, bh = NULL; val = globals->thumb_glue_size + (globals->support_old_code ? 8 : 4); - bfd_coff_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, - BSF_LOCAL, s, val, NULL, true, false, &bh); + _bfd_generic_link_add_one_symbol (info, globals->bfd_of_glue_owner, tmp_name, + BSF_LOCAL, s, val, NULL, true, false, &bh); free (tmp_name); diff --git a/bfd/coff-mips.c b/bfd/coff-mips.c index e2c632c..8c4d4f7 100644 --- a/bfd/coff-mips.c +++ b/bfd/coff-mips.c @@ -1316,7 +1316,7 @@ static const struct ecoff_backend_data mips_ecoff_backend_data = _bfd_ecoff_mkobject_hook, _bfd_ecoff_styp_to_sec_flags, _bfd_ecoff_set_alignment_hook, _bfd_ecoff_slurp_symbol_table, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, NULL, NULL + NULL, NULL, }, /* Supported architecture. */ bfd_arch_mips, diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c index 7a20dba..3c18518 100644 --- a/bfd/coff-rs6000.c +++ b/bfd/coff-rs6000.c @@ -4456,8 +4456,6 @@ const struct xcoff_dwsect_name xcoff_dwsect_names[] = { #define _bfd_xcoff_get_section_contents _bfd_generic_get_section_contents /* For copy private data entry points. */ -#define _bfd_xcoff_init_private_section_data \ - _bfd_generic_init_private_section_data #define _bfd_xcoff_bfd_copy_private_bfd_data \ _bfd_xcoff_copy_private_bfd_data #define _bfd_xcoff_bfd_merge_private_bfd_data \ @@ -4584,7 +4582,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data = xcoff_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ @@ -4774,7 +4771,6 @@ static const struct xcoff_backend_data_rec bfd_pmac_xcoff_backend_data = xcoff_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ diff --git a/bfd/coff-sh.c b/bfd/coff-sh.c index 275c4f5..c3e0e42 100644 --- a/bfd/coff-sh.c +++ b/bfd/coff-sh.c @@ -3108,7 +3108,7 @@ static const bfd_coff_backend_data bfd_coff_small_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; diff --git a/bfd/coff64-rs6000.c b/bfd/coff64-rs6000.c index 5a4bcbf..d335348 100644 --- a/bfd/coff64-rs6000.c +++ b/bfd/coff64-rs6000.c @@ -2495,7 +2495,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_backend_data = xcoff64_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ @@ -2622,7 +2621,6 @@ const bfd_target rs6000_xcoff64_vec = /* Copy */ _bfd_xcoff_copy_private_bfd_data, _bfd_generic_bfd_merge_private_bfd_data, - _bfd_generic_init_private_section_data, _bfd_generic_bfd_copy_private_section_data, _bfd_generic_bfd_copy_private_symbol_data, _bfd_generic_bfd_copy_private_header_data, @@ -2768,7 +2766,6 @@ static const struct xcoff_backend_data_rec bfd_xcoff_aix5_backend_data = xcoff64_ppc_relocate_section, coff_rtype_to_howto, NULL, /* _bfd_coff_adjust_symndx */ - _bfd_generic_link_add_one_symbol, coff_link_output_has_begun, coff_final_link_postscript, NULL /* print_pdata. */ @@ -2894,7 +2891,6 @@ const bfd_target rs6000_xcoff64_aix_vec = /* Copy */ _bfd_xcoff_copy_private_bfd_data, _bfd_generic_bfd_merge_private_bfd_data, - _bfd_generic_init_private_section_data, _bfd_generic_bfd_copy_private_section_data, _bfd_generic_bfd_copy_private_symbol_data, _bfd_generic_bfd_copy_private_header_data, diff --git a/bfd/coffcode.h b/bfd/coffcode.h index 325a8ab..b81195d 100644 --- a/bfd/coffcode.h +++ b/bfd/coffcode.h @@ -1516,11 +1516,6 @@ CODE_FRAGMENT . (bfd *, struct bfd_link_info *, bfd *, asection *, . struct internal_reloc *, bool *); . -. bool (*_bfd_coff_link_add_one_symbol) -. (struct bfd_link_info *, bfd *, const char *, flagword, -. asection *, bfd_vma, const char *, bool, bool, -. struct bfd_link_hash_entry **); -. . bool (*_bfd_coff_link_output_has_begun) . (bfd *, struct coff_final_link_info *); . @@ -1659,10 +1654,6 @@ INTERNAL .#define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ . ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ . (obfd, info, ibfd, sec, rel, adjustedp)) -.#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ -. value, string, cp, coll, hashp)\ -. ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ -. (info, abfd, name, flags, section, value, string, cp, coll, hashp)) . .#define bfd_coff_link_output_has_begun(a,p) \ . ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) @@ -5513,10 +5504,6 @@ dummy_reloc16_extra_cases (bfd *abfd ATTRIBUTE_UNUSED, #define coff_adjust_symndx NULL #endif -#ifndef coff_link_add_one_symbol -#define coff_link_add_one_symbol _bfd_generic_link_add_one_symbol -#endif - #ifndef coff_link_output_has_begun static bool @@ -5615,7 +5602,7 @@ static const bfd_coff_backend_data bfd_coff_std_swap_table ATTRIBUTE_UNUSED = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; @@ -5656,7 +5643,7 @@ static const bfd_coff_backend_data ticoff0_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata }; @@ -5698,7 +5685,7 @@ static const bfd_coff_backend_data ticoff1_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata /* huh */ }; @@ -5941,7 +5928,7 @@ static const bfd_coff_backend_data bigobj_swap_table = coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate, coff_classify_symbol, coff_compute_section_file_positions, coff_start_final_link, coff_relocate_section, coff_rtype_to_howto, - coff_adjust_symndx, coff_link_add_one_symbol, + coff_adjust_symndx, coff_link_output_has_begun, coff_final_link_postscript, bfd_pe_print_pdata /* huh */ }; @@ -5968,8 +5955,6 @@ static const bfd_coff_backend_data bigobj_swap_table = #define coff_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #endif -#define coff_init_private_section_data _bfd_generic_init_private_section_data - #ifndef coff_bfd_copy_private_section_data #define coff_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data #endif diff --git a/bfd/coffgen.c b/bfd/coffgen.c index f87e54f..c1811cb 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -42,7 +42,9 @@ #include "libbfd.h" #include "coff/internal.h" #include "libcoff.h" +#include "elf-bfd.h" #include "hashtab.h" +#include "safe-ctype.h" /* Extract a long section name at STRINDEX and copy it to the bfd objstack. Return NULL in case of error. */ @@ -1270,9 +1272,24 @@ coff_write_alien_symbol (bfd *abfd, if (c != (coff_symbol_type *) NULL) native->u.syment.n_flags = bfd_asymbol_bfd (&c->symbol)->flags; } + + const elf_symbol_type *elfsym = elf_symbol_from (symbol); + if (elfsym + && (symbol->flags & BSF_FUNCTION) + && elfsym->internal_elf_sym.st_size) + { + /* coff_data (abfd)->local_n_btshft is what ought to be used here, + just that it's set only when reading in COFF objects. */ + native->u.syment.n_type = DT_FCN << 4; + native->u.syment.n_numaux = 1; + native[1].u.auxent.x_sym.x_misc.x_fsize + = elfsym->internal_elf_sym.st_size; + /* FIXME .u.auxent.x_sym.x_fcnary.x_fcn.x_endndx would better also + be set, which would require updating the field once the next + function is seen. */ + } } - native->u.syment.n_type = 0; if (symbol->flags & BSF_FILE) native->u.syment.n_sclass = C_FILE; else if (symbol->flags & BSF_LOCAL) @@ -3104,6 +3121,19 @@ coff_gc_sweep_symbol (struct coff_link_hash_entry *h, typedef bool (*gc_sweep_hook_fn) (bfd *, struct bfd_link_info *, asection *, const struct internal_reloc *); +static inline bool +is_subsection (const char *str, const char *prefix) +{ + size_t n = strlen (prefix); + if (strncmp (str, prefix, n) != 0) + return false; + if (str[n] == 0) + return true; + else if (str[n] != '$') + return false; + return ISDIGIT (str[n + 1]) && str[n + 2] == 0; +} + static bool coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) { @@ -3125,6 +3155,7 @@ coff_gc_sweep (bfd *abfd ATTRIBUTE_UNUSED, struct bfd_link_info *info) else if (startswith (o->name, ".idata") || startswith (o->name, ".pdata") || startswith (o->name, ".xdata") + || is_subsection (o->name, ".didat") || startswith (o->name, ".rsrc")) o->gc_mark = 1; diff --git a/bfd/cofflink.c b/bfd/cofflink.c index 876aed7..38278e2 100644 --- a/bfd/cofflink.c +++ b/bfd/cofflink.c @@ -27,6 +27,7 @@ #include "libbfd.h" #include "coff/internal.h" #include "libcoff.h" +#include "elf-bfd.h" #include "safe-ctype.h" static bool coff_link_add_object_symbols (bfd *, struct bfd_link_info *); @@ -445,7 +446,7 @@ coff_link_add_symbols (bfd *abfd, if (addit) { - if (! (bfd_coff_link_add_one_symbol + if (! (_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value, (const char *) NULL, copy, false, (struct bfd_link_hash_entry **) sym_hash))) @@ -931,14 +932,52 @@ _bfd_coff_final_link (bfd *abfd, bfd_vma written = 0; bool rewrite = false; - if (! (sym->flags & BSF_LOCAL) - || (sym->flags & (BSF_SECTION_SYM | BSF_DEBUGGING_RELOC - | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC - | BSF_SYNTHETIC)) + if ((sym->flags & (BSF_SECTION_SYM | BSF_DEBUGGING_RELOC + | BSF_THREAD_LOCAL | BSF_RELC | BSF_SRELC + | BSF_SYNTHETIC)) || ((sym->flags & BSF_DEBUGGING) && ! (sym->flags & BSF_FILE))) continue; + if (! (sym->flags & BSF_LOCAL)) + { + /* For ELF symbols try to represent their function-ness and + size, if available. */ + if (! (sym->flags & BSF_FUNCTION)) + continue; + + const elf_symbol_type *elfsym = elf_symbol_from (sym); + if (!elfsym) + continue; + + struct coff_link_hash_entry *hent + = (struct coff_link_hash_entry *) bfd_hash_lookup + (&info->hash->table, bfd_asymbol_name (sym), + false, false); + if (!hent) + continue; + + /* coff_data (abfd)->local_n_btshft is what ought to be used + here, just that it's set only when reading in COFF + objects. */ + hent->type = DT_FCN << 4; + if (!elfsym->internal_elf_sym.st_size) + continue; + + hent->aux = bfd_zalloc (abfd, sizeof (*hent->aux)); + if (!hent->aux) + continue; + + hent->numaux = 1; + hent->aux->x_sym.x_misc.x_fsize + = elfsym->internal_elf_sym.st_size; + /* FIXME ->x_sym.x_fcnary.x_fcn.x_endndx would better + also be set, yet that would likely need to happen + elsewhere anyway. */ + + continue; + } + /* See if we are discarding symbols with this name. */ if ((flaginfo.info->strip == strip_some && (bfd_hash_lookup (flaginfo.info->keep_hash, diff --git a/bfd/compress.c b/bfd/compress.c index b635750..2878837 100644 --- a/bfd/compress.c +++ b/bfd/compress.c @@ -517,40 +517,23 @@ decompress_contents (bool is_zstd, bfd_byte *compressed_buffer, #endif } - z_stream strm; - int rc; - /* It is possible the section consists of several compressed buffers concatenated together, so we uncompress in a loop. */ - /* PR 18313: The state field in the z_stream structure is supposed - to be invisible to the user (ie us), but some compilers will - still complain about it being used without initialisation. So - we first zero the entire z_stream structure and then set the fields - that we need. */ - memset (& strm, 0, sizeof strm); - strm.avail_in = compressed_size; - strm.next_in = (Bytef*) compressed_buffer; - strm.avail_out = uncompressed_size; - /* FIXME: strm.avail_in and strm.avail_out are typically unsigned - int. Supporting sizes that don't fit in an unsigned int is - possible but will require some rewriting of this function. */ - if (strm.avail_in != compressed_size || strm.avail_out != uncompressed_size) - return false; - - BFD_ASSERT (Z_OK == 0); - rc = inflateInit (&strm); - while (strm.avail_in > 0 && strm.avail_out > 0) + do { + uLongf dst_len = uncompressed_size; + uLong src_len = compressed_size; + int rc = uncompress2 ((Bytef *) uncompressed_buffer, &dst_len, + (Bytef *) compressed_buffer, &src_len); if (rc != Z_OK) - break; - strm.next_out = ((Bytef*) uncompressed_buffer - + (uncompressed_size - strm.avail_out)); - rc = inflate (&strm, Z_FINISH); - if (rc != Z_STREAM_END) - break; - rc = inflateReset (&strm); + return false; + uncompressed_buffer += dst_len; + uncompressed_size -= dst_len; + compressed_buffer += src_len; + compressed_size -= src_len; } - return inflateEnd (&strm) == Z_OK && rc == Z_OK && strm.avail_out == 0; + while (compressed_size > 0 && uncompressed_size > 0); + return compressed_size == 0 && uncompressed_size == 0; } /* Compress section contents using zlib/zstd and store @@ -987,7 +970,6 @@ bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec) bfd_size_type uncompressed_size; unsigned int uncompressed_alignment_power = 0; enum compression_type ch_type; - z_stream strm; compression_header_size = bfd_get_compression_header_size (abfd, sec); if (compression_header_size > MAX_COMPRESSION_HEADER_SIZE) @@ -1025,10 +1007,11 @@ bfd_init_section_decompress_status (bfd *abfd, sec_ptr sec) return false; } - /* PR28530, reject sizes unsupported by decompress_contents. */ - strm.avail_in = sec->size; - strm.avail_out = uncompressed_size; - if (strm.avail_in != sec->size || strm.avail_out != uncompressed_size) + /* PR28530, reject sizes unsupported by decompress_contents. zlib + supports only up to 4 GiB input on machines whose long is 32 bits. */ + if (ch_type == ch_compress_zlib + && (sec->size != (uLong) sec->size + || uncompressed_size != (uLongf) uncompressed_size)) { bfd_set_error (bfd_error_nonrepresentable_section); return false; diff --git a/bfd/configure b/bfd/configure index ca7f66f..15a3269 100755 --- a/bfd/configure +++ b/bfd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bfd 2.44.50. +# Generated by GNU Autoconf 2.69 for bfd 2.45.50. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. @@ -587,8 +587,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bfd' PACKAGE_TARNAME='bfd' -PACKAGE_VERSION='2.44.50' -PACKAGE_STRING='bfd 2.44.50' +PACKAGE_VERSION='2.45.50' +PACKAGE_STRING='bfd 2.45.50' PACKAGE_BUGREPORT='' PACKAGE_URL='' @@ -702,8 +702,6 @@ REPORT_BUGS_TEXI REPORT_BUGS_TO PKGVERSION DEBUGDIR -ENABLE_BFD_64_BIT_FALSE -ENABLE_BFD_64_BIT_TRUE PLUGINS_FALSE PLUGINS_TRUE LARGEFILE_CPPFLAGS @@ -1411,7 +1409,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures bfd 2.44.50 to adapt to many kinds of systems. +\`configure' configures bfd 2.45.50 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1482,7 +1480,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bfd 2.44.50:";; + short | recursive ) echo "Configuration of bfd 2.45.50:";; esac cat <<\_ACEOF @@ -1627,7 +1625,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bfd configure 2.44.50 +bfd configure 2.45.50 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2221,7 +2219,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by bfd $as_me 2.44.50, which was +It was created by bfd $as_me 2.45.50, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3204,7 +3202,7 @@ fi # Define the identity of the package. PACKAGE='bfd' - VERSION='2.44.50' + VERSION='2.45.50' cat >>confdefs.h <<_ACEOF @@ -11155,7 +11153,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11158 "configure" +#line 11156 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11261,7 +11259,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11264 "configure" +#line 11262 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11930,56 +11928,6 @@ else enable_64_bit_bfd=no fi - -if test "x$enable_64_bit_bfd" = "xno"; then : - # The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of void *" >&5 -$as_echo_n "checking size of void *... " >&6; } -if ${ac_cv_sizeof_void_p+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (void *))" "ac_cv_sizeof_void_p" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_void_p" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (void *) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_void_p=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_void_p" >&5 -$as_echo "$ac_cv_sizeof_void_p" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_VOID_P $ac_cv_sizeof_void_p -_ACEOF - - - if test "x$ac_cv_sizeof_void_p" = "x8"; then : - enable_64_bit_bfd=yes -fi - -fi - - if test "x$enable_64_bit_bfd" = "xyes"; then - ENABLE_BFD_64_BIT_TRUE= - ENABLE_BFD_64_BIT_FALSE='#' -else - ENABLE_BFD_64_BIT_TRUE='#' - ENABLE_BFD_64_BIT_FALSE= -fi - - if test $enable_64_bit_bfd = yes ; then want64=true else @@ -14610,287 +14558,6 @@ $as_echo "$LINGUAS" >&6; } fi - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgfmt", so it can be a program name with args. -set dummy msgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGFMT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGFMT="$MSGFMT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGFMT" && ac_cv_path_MSGFMT=":" - ;; -esac -fi -MSGFMT="$ac_cv_path_MSGFMT" -if test "$MSGFMT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGFMT" >&5 -$as_echo "$MSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - # Extract the first word of "gmsgfmt", so it can be a program name with args. -set dummy gmsgfmt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GMSGFMT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GMSGFMT in - [\\/]* | ?:[\\/]*) - ac_cv_path_GMSGFMT="$GMSGFMT" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_GMSGFMT="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - test -z "$ac_cv_path_GMSGFMT" && ac_cv_path_GMSGFMT="$MSGFMT" - ;; -esac -fi -GMSGFMT=$ac_cv_path_GMSGFMT -if test -n "$GMSGFMT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GMSGFMT" >&5 -$as_echo "$GMSGFMT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "xgettext", so it can be a program name with args. -set dummy xgettext; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_XGETTEXT+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$XGETTEXT" in - [\\/]* | ?:[\\/]*) - ac_cv_path_XGETTEXT="$XGETTEXT" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_XGETTEXT" && ac_cv_path_XGETTEXT=":" - ;; -esac -fi -XGETTEXT="$ac_cv_path_XGETTEXT" -if test "$XGETTEXT" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $XGETTEXT" >&5 -$as_echo "$XGETTEXT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - rm -f messages.po - - -# Prepare PATH_SEPARATOR. -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - echo "#! /bin/sh" >conf$$.sh - echo "exit 0" >>conf$$.sh - chmod +x conf$$.sh - if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then - PATH_SEPARATOR=';' - else - PATH_SEPARATOR=: - fi - rm -f conf$$.sh -fi - -# Find out how to test for executable files. Don't use a zero-byte file, -# as systems may use methods other than mode bits to determine executability. -cat >conf$$.file <<_ASEOF -#! /bin/sh -exit 0 -_ASEOF -chmod +x conf$$.file -if test -x conf$$.file >/dev/null 2>&1; then - ac_executable_p="test -x" -else - ac_executable_p="test -f" -fi -rm -f conf$$.file - -# Extract the first word of "msgmerge", so it can be a program name with args. -set dummy msgmerge; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MSGMERGE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case "$MSGMERGE" in - [\\/]* | ?:[\\/]*) - ac_cv_path_MSGMERGE="$MSGMERGE" # Let the user override the test with a path. - ;; - *) - ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$ac_save_IFS" - test -z "$ac_dir" && ac_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then - if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then - ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext" - break 2 - fi - fi - done - done - IFS="$ac_save_IFS" - test -z "$ac_cv_path_MSGMERGE" && ac_cv_path_MSGMERGE=":" - ;; -esac -fi -MSGMERGE="$ac_cv_path_MSGMERGE" -if test "$MSGMERGE" != ":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MSGMERGE" >&5 -$as_echo "$MSGMERGE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - if test "$GMSGFMT" != ":"; then - if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && - (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5 -$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; } - GMSGFMT=":" - fi - fi - - if test "$XGETTEXT" != ":"; then - if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && - (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then - : ; - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5 -$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; } - XGETTEXT=":" - fi - rm -f messages.po - fi - - ac_config_commands="$ac_config_commands default-2" - - - # Permit host specific settings. . ${srcdir}/configure.host @@ -17677,10 +17344,6 @@ if test -z "${PLUGINS_TRUE}" && test -z "${PLUGINS_FALSE}"; then as_fn_error $? "conditional \"PLUGINS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${ENABLE_BFD_64_BIT_TRUE}" && test -z "${ENABLE_BFD_64_BIT_FALSE}"; then - as_fn_error $? "conditional \"ENABLE_BFD_64_BIT\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 @@ -18091,7 +17754,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by bfd $as_me 2.44.50, which was +This file was extended by bfd $as_me 2.45.50, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -18157,7 +17820,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -bfd config.status 2.44.50 +bfd config.status 2.45.50 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -18544,13 +18207,6 @@ fi # Capture the value of LINGUAS because we need it to compute CATALOGS. LINGUAS="${LINGUAS-%UNSET%}" -# Capture the value of obsolete ALL_LINGUAS because we need it to compute - # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it - # from automake. - eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' - # Capture the value of LINGUAS because we need it to compute CATALOGS. - LINGUAS="${LINGUAS-%UNSET%}" - _ACEOF @@ -18565,7 +18221,6 @@ do "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h:config.in" ;; "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; - "default-2") CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "bfd-in3.h") CONFIG_FILES="$CONFIG_FILES bfd-in3.h:bfd-in2.h" ;; "po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in:po/Make-in" ;; @@ -19998,107 +19653,6 @@ _LT_EOF ;; esac done ;; - "default-2":C) - for ac_file in $CONFIG_FILES; do - # Support "outfile[:infile[:infile...]]" - case "$ac_file" in - *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - esac - # PO directories have a Makefile.in generated from Makefile.in.in. - case "$ac_file" in */Makefile.in) - # Adjust a relative srcdir. - ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` - ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'` - ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` - # In autoconf-2.13 it is called $ac_given_srcdir. - # In autoconf-2.50 it is called $srcdir. - test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" - case "$ac_given_srcdir" in - .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; - /*) top_srcdir="$ac_given_srcdir" ;; - *) top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then - rm -f "$ac_dir/POTFILES" - test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" - cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" - POMAKEFILEDEPS="POTFILES.in" - # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend - # on $ac_dir but don't depend on user-specified configuration - # parameters. - if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then - # The LINGUAS file contains the set of available languages. - if test -n "$OBSOLETE_ALL_LINGUAS"; then - test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.ac is obsolete" || echo "setting ALL_LINGUAS in configure.ac is obsolete" - fi - ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` - # Hide the ALL_LINGUAS assigment from automake. - eval 'ALL_LINGUAS''=$ALL_LINGUAS_' - POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" - else - # The set of available languages was given in configure.ac. - eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' - fi - case "$ac_given_srcdir" in - .) srcdirpre= ;; - *) srcdirpre='$(srcdir)/' ;; - esac - POFILES= - GMOFILES= - UPDATEPOFILES= - DUMMYPOFILES= - for lang in $ALL_LINGUAS; do - POFILES="$POFILES $srcdirpre$lang.po" - GMOFILES="$GMOFILES $srcdirpre$lang.gmo" - UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" - DUMMYPOFILES="$DUMMYPOFILES $lang.nop" - done - # CATALOGS depends on both $ac_dir and the user's LINGUAS - # environment variable. - INST_LINGUAS= - if test -n "$ALL_LINGUAS"; then - for presentlang in $ALL_LINGUAS; do - useit=no - if test "%UNSET%" != "$LINGUAS"; then - desiredlanguages="$LINGUAS" - else - desiredlanguages="$ALL_LINGUAS" - fi - for desiredlang in $desiredlanguages; do - # Use the presentlang catalog if desiredlang is - # a. equal to presentlang, or - # b. a variant of presentlang (because in this case, - # presentlang can be used as a fallback for messages - # which are not translated in the desiredlang catalog). - case "$desiredlang" in - "$presentlang"*) useit=yes;; - esac - done - if test $useit = yes; then - INST_LINGUAS="$INST_LINGUAS $presentlang" - fi - done - fi - CATALOGS= - if test -n "$INST_LINGUAS"; then - for lang in $INST_LINGUAS; do - CATALOGS="$CATALOGS $lang.gmo" - done - fi - test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" - sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" - for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do - if test -f "$f"; then - case "$f" in - *.orig | *.bak | *~) ;; - *) cat "$f" >> "$ac_dir/Makefile" ;; - esac - fi - done - fi - ;; - esac - done ;; "default":C) case "$srcdir" in .) srcdirpre= ;; diff --git a/bfd/configure.ac b/bfd/configure.ac index 90fad54..1e918e3 100644 --- a/bfd/configure.ac +++ b/bfd/configure.ac @@ -81,7 +81,13 @@ if test x$ac_checking != x ; then AC_DEFINE(ENABLE_CHECKING, 1, [Define if you want run-time sanity checks.]) fi -BFD_64_BIT +AC_ARG_ENABLE(64-bit-bfd, + AS_HELP_STRING([--enable-64-bit-bfd], + [64-bit support (on hosts with narrower word sizes)]), + [AS_CASE([$enableval], + [yes|no], [], + [*], [AC_MSG_ERROR(bad value ${enableval} for 64-bit-bfd option)])], + [enable_64_bit_bfd=no]) if test $enable_64_bit_bfd = yes ; then want64=true else @@ -202,7 +208,6 @@ bfd_default_target_size=32 ALL_LINGUAS="da es fi fr hr id ja ro ru rw sr sv tr uk vi zh_CN pt" ZW_GNU_GETTEXT_SISTER_DIR -AM_PO_SUBDIRS # Permit host specific settings. . ${srcdir}/configure.host @@ -1034,8 +1039,7 @@ esac AC_CONFIG_FILES([Makefile bfd-in3.h:bfd-in2.h po/Makefile.in:po/Make-in]) -dnl We need this duplication, even though we use AM_PO_SUBDIRS, because of -dnl our two separate POTFILES. Yuck. +dnl We need this duplication because of our two separate POTFILES. AC_CONFIG_COMMANDS([default], [[ case "$srcdir" in diff --git a/bfd/cpu-riscv.c b/bfd/cpu-riscv.c index ea25e78..67ee601 100644 --- a/bfd/cpu-riscv.c +++ b/bfd/cpu-riscv.c @@ -118,6 +118,7 @@ const struct riscv_spec riscv_priv_specs[] = {"1.10", PRIV_SPEC_CLASS_1P10}, {"1.11", PRIV_SPEC_CLASS_1P11}, {"1.12", PRIV_SPEC_CLASS_1P12}, + {"1.13", PRIV_SPEC_CLASS_1P13}, }; /* Get the corresponding CSR version class by giving privilege diff --git a/bfd/cpu-riscv.h b/bfd/cpu-riscv.h index 93a3f52..b07fcf8 100644 --- a/bfd/cpu-riscv.h +++ b/bfd/cpu-riscv.h @@ -33,6 +33,7 @@ enum riscv_spec_class PRIV_SPEC_CLASS_1P10, PRIV_SPEC_CLASS_1P11, PRIV_SPEC_CLASS_1P12, + PRIV_SPEC_CLASS_1P13, PRIV_SPEC_CLASS_DRAFT, }; diff --git a/bfd/elf-attrs.c b/bfd/elf-attrs.c index e80575b..bc653d7 100644 --- a/bfd/elf-attrs.c +++ b/bfd/elf-attrs.c @@ -510,8 +510,8 @@ bfd_elf_parse_attr_section_v1 (bfd *abfd, bfd_byte *p, bfd_byte *p_end) if (section_len <= 4) { _bfd_error_handler - (_("%pB: error: attribute section length too small: %ld"), - abfd, (long) section_len); + (_("%pB: error: attribute section length too small: %ld"), + abfd, (long) section_len); break; } section_len -= 4; @@ -541,15 +541,15 @@ bfd_elf_parse_attr_section_v1 (bfd *abfd, bfd_byte *p, bfd_byte *p_end) orig_p = p; tag = _bfd_safe_read_leb128 (abfd, &p, false, p_end); if (p_end - p >= 4) - { - subsection_len = bfd_get_32 (abfd, p); - p += 4; - } + { + subsection_len = bfd_get_32 (abfd, p); + p += 4; + } else - { - p = p_end; - break; - } + { + p = p_end; + break; + } if (subsection_len > section_len) subsection_len = section_len; section_len -= subsection_len; @@ -638,12 +638,12 @@ _bfd_elf_parse_attributes (bfd *abfd, Elf_Internal_Shdr * hdr) /* The first character is the version of the attributes. Currently only version 'A' is recognised here. */ if (*cursor != 'A') - { - _bfd_error_handler (_("%pB: error: unknown attributes version '%c'(%d) " - "- expecting 'A'\n"), abfd, *cursor, *cursor); - bfd_set_error (bfd_error_wrong_format); - goto free_data; - } + { + _bfd_error_handler (_("%pB: error: unknown attributes version '%c'(%d) " + "- expecting 'A'\n"), abfd, *cursor, *cursor); + bfd_set_error (bfd_error_wrong_format); + goto free_data; + } ++cursor; @@ -685,9 +685,9 @@ _bfd_elf_merge_object_attributes (bfd *ibfd, struct bfd_link_info *info) { _bfd_error_handler /* xgettext:c-format */ - (_("error: %pB: object has vendor-specific contents that " - "must be processed by the '%s' toolchain"), - ibfd, in_attr->s); + (_("error: %pB: object has vendor-specific contents that " + "must be processed by the '%s' toolchain"), + ibfd, in_attr->s); return false; } diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h index 5903d85..2bd855a 100644 --- a/bfd/elf-bfd.h +++ b/bfd/elf-bfd.h @@ -503,12 +503,21 @@ struct sframe_func_bfdinfo unsigned int func_reloc_index; }; +/* Link state information of the SFrame section. */ +enum sframe_sec_state +{ + SFRAME_SEC_DECODED = 1, + SFRAME_SEC_MERGED, +}; + /* SFrame decoder info. Contains all information for a decoded .sframe section. */ struct sframe_dec_info { /* Decoder context. */ struct sframe_decoder_ctx *sfd_ctx; + /* SFrame section state as it progresses through the link process. */ + enum sframe_sec_state sfd_state; /* Number of function descriptor entries in this .sframe. */ unsigned int sfd_fde_count; /* Additional information for linking. */ @@ -2384,10 +2393,8 @@ extern bool _bfd_elf_copy_private_header_data (bfd *, bfd *); extern bool _bfd_elf_copy_private_symbol_data (bfd *, asymbol *, bfd *, asymbol *); -extern bool _bfd_elf_init_private_section_data - (bfd *, asection *, bfd *, asection *, struct bfd_link_info *); extern bool _bfd_elf_copy_private_section_data - (bfd *, asection *, bfd *, asection *); + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *); extern bool _bfd_elf_write_object_contents (bfd *); extern bool _bfd_elf_write_corefile_contents @@ -2540,6 +2547,8 @@ extern bool _bfd_elf_discard_section_sframe (asection *, bool (*) (bfd_vma, void *), struct elf_reloc_cookie *); extern bool _bfd_elf_merge_section_sframe (bfd *, struct bfd_link_info *, asection *, bfd_byte *); +extern bfd_vma _bfd_elf_sframe_section_offset + (bfd *, struct bfd_link_info *, asection *, bfd_vma); extern bool _bfd_elf_write_section_sframe (bfd *, struct bfd_link_info *); extern bool _bfd_elf_set_section_sframe (bfd *, struct bfd_link_info *); diff --git a/bfd/elf-eh-frame.c b/bfd/elf-eh-frame.c index 78b3ecb..dc0d2e0 100644 --- a/bfd/elf-eh-frame.c +++ b/bfd/elf-eh-frame.c @@ -802,6 +802,9 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, switch (*aug++) { case 'B': + case 'G': + if (abfd->arch_info->arch != bfd_arch_aarch64) + goto unrecognized; break; case 'L': REQUIRE (read_byte (&buf, end, &cie->lsda_encoding)); @@ -843,6 +846,7 @@ _bfd_elf_parse_eh_frame (bfd *abfd, struct bfd_link_info *info, REQUIRE (skip_bytes (&buf, end, per_width)); } break; + unrecognized: default: /* Unrecognized augmentation. Better bail out. */ goto free_no_table; @@ -2506,7 +2510,7 @@ write_dwarf_eh_frame_hdr (bfd *abfd, struct bfd_link_info *info) /* FIXME: octets_per_byte. */ if (!bfd_set_section_contents (abfd, sec->output_section, contents, (file_ptr) sec->output_offset, - sec->size)) + size)) retval = false; out: free (contents); diff --git a/bfd/elf-sframe.c b/bfd/elf-sframe.c index 97e0073..b709e59 100644 --- a/bfd/elf-sframe.c +++ b/bfd/elf-sframe.c @@ -23,6 +23,7 @@ #include "libbfd.h" #include "elf-bfd.h" #include "sframe-api.h" +#include "sframe-internal.h" /* Return TRUE if the function has been marked for deletion during the linking process. */ @@ -190,6 +191,18 @@ _bfd_elf_parse_sframe (bfd *abfd, bfd_size_type sf_size; int decerr = 0; + /* Prior versions of assembler and ld were generating SFrame sections with + section type SHT_PROGBITS. Issue an error for lack of support for such + objects now. Even if section size is zero, a valid section type is + expected. */ + if (elf_section_type (sec) != SHT_GNU_SFRAME) + { + _bfd_error_handler + (_("error in %pB(%pA); unexpected SFrame section type"), + abfd, sec); + return false; + } + if (sec->size == 0 || (sec->flags & SEC_HAS_CONTENTS) == 0 || sec->sec_info_type != SEC_INFO_TYPE_NONE) @@ -212,10 +225,11 @@ _bfd_elf_parse_sframe (bfd *abfd, /* Decode the buffer and keep decoded contents for later use. Relocations are performed later, but are such that the section's size is unaffected. */ - sfd_info = bfd_alloc (abfd, sizeof (*sfd_info)); + sfd_info = bfd_zalloc (abfd, sizeof (*sfd_info)); sf_size = sec->size; sfd_info->sfd_ctx = sframe_decode ((const char*)sfbuf, sf_size, &decerr); + sfd_info->sfd_state = SFRAME_SEC_DECODED; sfd_ctx = sfd_info->sfd_ctx; if (!sfd_ctx) /* Free'ing up any memory held by decoder context is done by @@ -296,8 +310,7 @@ _bfd_elf_discard_section_sframe BFD ABFD. Returns true if no error. */ bool -_bfd_elf_set_section_sframe (bfd *abfd, - struct bfd_link_info *info) +_bfd_elf_set_section_sframe (bfd *abfd, struct bfd_link_info *info) { asection *cfsec; @@ -305,6 +318,7 @@ _bfd_elf_set_section_sframe (bfd *abfd, if (!cfsec) return false; + elf_section_type (cfsec) = SHT_GNU_SFRAME; elf_sframe (abfd) = cfsec; return true; @@ -328,6 +342,8 @@ _bfd_elf_merge_section_sframe (bfd *abfd, int8_t sfd_ctx_fixed_ra_offset; uint8_t dctx_version; uint8_t ectx_version; + uint8_t dctx_flags; + uint8_t ectx_flags; int encerr = 0; struct elf_link_hash_table *htab; @@ -351,6 +367,8 @@ _bfd_elf_merge_section_sframe (bfd *abfd, if (sfd_ctx == NULL || sfe_info == NULL) return false; + dctx_flags = sframe_decoder_get_flags (sfd_ctx); + if (htab->sfe_info.sfe_ctx == NULL) { sfd_ctx_abi_arch = sframe_decoder_get_abi_arch (sfd_ctx); @@ -361,8 +379,18 @@ _bfd_elf_merge_section_sframe (bfd *abfd, if (!sfd_ctx_abi_arch) return false; + /* In-memory FDEs in the encoder object are unsorted during linking and + will be sorted before emission. Reset SFRAME_F_FDE_SORTED to aptly + reflect that (doing so has no other functional value at this time + though). */ + uint8_t tflags = dctx_flags & ~SFRAME_F_FDE_SORTED; + /* ld always generates an output section with + SFRAME_F_FDE_FUNC_START_PCREL flag set. Later using + SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS, it is enforced that the provided + input sections also have this flag set. */ + tflags |= SFRAME_F_FDE_FUNC_START_PCREL; htab->sfe_info.sfe_ctx = sframe_encode (SFRAME_VERSION_2, - 0, /* SFrame flags. */ + tflags, /* SFrame flags. */ sfd_ctx_abi_arch, sfd_ctx_fixed_fp_offset, sfd_ctx_fixed_ra_offset, @@ -411,6 +439,18 @@ _bfd_elf_merge_section_sframe (bfd *abfd, return false; } + /* Check that all SFrame sections being linked have the 'data encoding' + related flags set. The implementation does not support updating these + data encodings on the fly; confirm by checking the ectx_flags. */ + ectx_flags = sframe_encoder_get_flags (sfe_ctx); + if ((dctx_flags & ectx_flags & SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS) + != SFRAME_V2_GNU_AS_LD_ENCODING_FLAGS) + { + _bfd_error_handler + (_("SFrame sections with unexpected data encoding prevent" + " .sframe generation")); + return false; + } /* Iterate over the function descriptor entries and the FREs of the function from the decoder context. Add each of them to the encoder @@ -481,6 +521,15 @@ _bfd_elf_merge_section_sframe (bfd *abfd, address += sframe_read_value (abfd, contents, pltn_r_offset, 4); address += (sec->output_offset + r_offset); + /* SFrame FDE function start address is an offset from the + sfde_func_start_address field to the start PC. The + calculation below is the distance of sfde_func_start_address + field from the start of the output SFrame section. */ + uint32_t offsetof_fde_in_sec + = sframe_encoder_get_offsetof_fde_start_addr (sfe_ctx, + cur_fidx + num_enc_fidx, + NULL); + address -= offsetof_fde_in_sec; /* FIXME For testing only. Cleanup later. */ // address += (sec->output_section->vma); @@ -508,12 +557,98 @@ _bfd_elf_merge_section_sframe (bfd *abfd, } } } + sfd_info->sfd_state = SFRAME_SEC_MERGED; /* Free the SFrame decoder context. */ sframe_decoder_free (&sfd_ctx); return true; } +/* Adjust an address in the .sframe section. Given OFFSET within + SEC, this returns the new offset in the merged .sframe section, + or -1 if the address refers to an FDE which has been removed. + + PS: This function assumes that _bfd_elf_merge_section_sframe has + not been called on the input section SEC yet. Note how it uses + sframe_encoder_get_num_fidx () to figure out the offset of FDE + in the output section. */ + +bfd_vma +_bfd_elf_sframe_section_offset (bfd *output_bfd ATTRIBUTE_UNUSED, + struct bfd_link_info *info, + asection *sec, + bfd_vma offset) +{ + struct sframe_dec_info *sfd_info; + struct sframe_enc_info *sfe_info; + sframe_decoder_ctx *sfd_ctx; + sframe_encoder_ctx *sfe_ctx; + struct elf_link_hash_table *htab; + + unsigned int sec_fde_idx, out_num_fdes; + unsigned int sfd_num_fdes, sfe_num_fdes; + uint32_t sfd_fde_offset; + bfd_vma new_offset; + + if (sec->sec_info_type != SEC_INFO_TYPE_SFRAME) + return offset; + + sfd_info = elf_section_data (sec)->sec_info; + sfd_ctx = sfd_info->sfd_ctx; + sfd_num_fdes = sframe_decoder_get_num_fidx (sfd_ctx); + + BFD_ASSERT (sfd_info->sfd_state == SFRAME_SEC_DECODED); + + htab = elf_hash_table (info); + sfe_info = &(htab->sfe_info); + sfe_ctx = sfe_info->sfe_ctx; + sfe_num_fdes = sframe_encoder_get_num_fidx (sfe_ctx); + + /* The index of this FDE in the output section depends on number of deleted + functions (between index 0 and sec_fde_idx), if any. */ + out_num_fdes = 0; + sec_fde_idx = 0; + for (unsigned int i = 0; i < sfd_num_fdes; i++) + { + sfd_fde_offset = sframe_decoder_get_offsetof_fde_start_addr (sfd_ctx, + i, NULL); + if (!sframe_decoder_func_deleted_p (sfd_info, i)) + out_num_fdes++; + + if (sfd_fde_offset == offset) + { + /* Found the index of the FDE (at OFFSET) in the input section. */ + sec_fde_idx = i; + break; + } + } + + if (sframe_decoder_func_deleted_p (sfd_info, sec_fde_idx)) + return (bfd_vma) -1; + + /* The number of FDEs in the output SFrame section. Note that the output + index of the FDE of interest will be (out_num_fdes - 1). */ + out_num_fdes += sfe_num_fdes; + + new_offset = sframe_decoder_get_offsetof_fde_start_addr (sfd_ctx, + out_num_fdes - 1, + NULL); + /* Recall that SFrame section merging has distinct requirements: All SFrame + FDEs from input sections are clubbed together in the beginning of the + output section. So, at this point in the current function, the new_offset + is the correct offset in the merged output SFrame section. Note, however, + that the default mechanism in the _elf_link_input_bfd will do the + following adjustment: + irela->r_offset += o->output_offset; + for all section types. However, such an adjustment in the RELA offset is + _not_ needed for SFrame sections. Perform the reverse adjustment here so + that the default mechanism does not need additional SFrame specific + checks. */ + new_offset -= sec->output_offset; + + return new_offset; +} + /* Write out the .sframe section. This must be called after _bfd_elf_merge_section_sframe has been called on all input .sframe sections. */ @@ -546,13 +681,11 @@ _bfd_elf_write_section_sframe (bfd *abfd, struct bfd_link_info *info) (file_ptr) sec->output_offset, sec->size)) retval = false; - else if (!bfd_link_relocatable (info)) + else { Elf_Internal_Shdr *hdr = &elf_section_data (sec)->this_hdr; hdr->sh_size = sec->size; } - /* For relocatable links, do not update the section size as the section - contents have not been relocated. */ sframe_encoder_free (&sfe_ctx); @@ -504,17 +504,44 @@ bfd_elf_get_elf_syms (bfd *ibfd, shndx = extshndx_buf; isym < isymend; esym += extsym_size, isym++, shndx = shndx != NULL ? shndx + 1 : NULL) - if (!(*bed->s->swap_symbol_in) (ibfd, esym, shndx, isym)) - { - symoffset += (esym - (bfd_byte *) extsym_buf) / extsym_size; - /* xgettext:c-format */ - _bfd_error_handler (_("%pB symbol number %lu references" - " nonexistent SHT_SYMTAB_SHNDX section"), - ibfd, (unsigned long) symoffset); - free (alloc_intsym); - intsym_buf = NULL; - goto out1; - } + { + if (!(*bed->s->swap_symbol_in) (ibfd, esym, shndx, isym)) + { + symoffset += (esym - (bfd_byte *) extsym_buf) / extsym_size; + /* xgettext:c-format */ + _bfd_error_handler (_("%pB symbol number %lu references" + " nonexistent SHT_SYMTAB_SHNDX section"), + ibfd, (unsigned long) symoffset); + free (alloc_intsym); + intsym_buf = NULL; + goto out1; + } + + /* PR 33019: Do not accept unsupported binding values - they will + likely cause problems later on. */ + int bind = ELF_ST_BIND (isym->st_info); + if (bind > STB_WEAK && bind < STB_LOOS) + { + /* xgettext:c-format */ + _bfd_error_handler (_("%pB symbol number %lu uses unsupported binding of %u"), + ibfd, (unsigned long) (isym - intsym_buf), bind); + free (alloc_intsym); + intsym_buf = NULL; + goto out1; + } + + /* Paranoia: Also refuse to accept the only undefined symbol type: 7. */ + int t = ELF_ST_TYPE (isym->st_info); + if (t == 7) + { + /* xgettext:c-format */ + _bfd_error_handler (_("%pB symbol number %lu uses unsupported type of %u"), + ibfd, (unsigned long) (isym - intsym_buf), t); + free (alloc_intsym); + intsym_buf = NULL; + goto out1; + } + } out1: _bfd_munmap_temporary (alloc_extshndx, alloc_extshndx_size); @@ -2449,6 +2476,7 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex) case SHT_PREINIT_ARRAY: /* .preinit_array section. */ case SHT_GNU_LIBLIST: /* .gnu.liblist section. */ case SHT_GNU_HASH: /* .gnu.hash section. */ + case SHT_GNU_SFRAME: /* .sframe section. */ ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name, shindex); goto success; @@ -3469,7 +3497,7 @@ _bfd_elf_init_reloc_shdr (bfd *abfd, struct bfd_elf_section_reloc_data *reldata, const char *sec_name, bool use_rela_p, - bool delay_st_name_p) + bool delay_sh_name_p) { Elf_Internal_Shdr *rel_hdr; const struct elf_backend_data *bed = get_elf_backend_data (abfd); @@ -3480,7 +3508,7 @@ _bfd_elf_init_reloc_shdr (bfd *abfd, return false; reldata->hdr = rel_hdr; - if (delay_st_name_p) + if (delay_sh_name_p) rel_hdr->sh_name = (unsigned int) -1; else if (!_bfd_elf_set_reloc_sh_name (abfd, rel_hdr, sec_name, use_rela_p)) @@ -3526,7 +3554,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) Elf_Internal_Shdr *this_hdr; unsigned int sh_type; const char *name = asect->name; - bool delay_st_name_p = false; + bool delay_sh_name_p = false; bfd_vma mask; if (arg->failed) @@ -3543,16 +3571,17 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) && (abfd->flags & BFD_COMPRESS) != 0 && (asect->flags & SEC_DEBUGGING) != 0 && (asect->flags & SEC_ALLOC) == 0 + && (asect->flags & SEC_HAS_CONTENTS) != 0 && name[1] == 'd' && name[6] == '_') { /* If this section will be compressed, delay adding section name to section name section after it is compressed in _bfd_elf_assign_file_positions_for_non_load. */ - delay_st_name_p = true; + delay_sh_name_p = true; } - if (delay_st_name_p) + if (delay_sh_name_p) this_hdr->sh_name = (unsigned int) -1; else { @@ -3751,14 +3780,14 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) { if (esd->rel.count && esd->rel.hdr == NULL && !_bfd_elf_init_reloc_shdr (abfd, &esd->rel, name, - false, delay_st_name_p)) + false, delay_sh_name_p)) { arg->failed = true; return; } if (esd->rela.count && esd->rela.hdr == NULL && !_bfd_elf_init_reloc_shdr (abfd, &esd->rela, name, - true, delay_st_name_p)) + true, delay_sh_name_p)) { arg->failed = true; return; @@ -3769,7 +3798,7 @@ elf_fake_sections (bfd *abfd, asection *asect, void *fsarg) ? &esd->rela : &esd->rel), name, asect->use_rela_p, - delay_st_name_p)) + delay_sh_name_p)) { arg->failed = true; return; @@ -3943,20 +3972,17 @@ bfd_elf_set_group_contents (bfd *abfd, asection *sec, void *failedptrarg) break; } - /* We should always get here with loc == sec->contents + 4, but it is - possible to craft bogus SHT_GROUP sections that will cause segfaults - in objcopy without checking loc here and in the loop above. */ - if (loc == sec->contents) - BFD_ASSERT (0); - else + /* We should always get here with loc == sec->contents + 4. Return + an error for bogus SHT_GROUP sections. */ + loc -= 4; + if (loc != sec->contents) { - loc -= 4; - if (loc != sec->contents) - { - BFD_ASSERT (0); - memset (sec->contents + 4, 0, loc - sec->contents); - loc = sec->contents; - } + /* xgettext:c-format */ + _bfd_error_handler (_("%pB: corrupted group section: `%pA'"), + abfd, sec); + bfd_set_error (bfd_error_bad_value); + *failedptr = true; + return; } H_PUT_32 (abfd, sec->flags & SEC_LINK_ONCE ? GRP_COMDAT : 0, loc); @@ -4474,7 +4500,11 @@ elf_map_symbols (bfd *abfd, unsigned int *pnum_locals) asection *sec = sym->section; if (sec->owner != abfd) - sec = sec->output_section; + { + sec = sec->output_section; + if (sec == NULL) + return false; + } sect_syms[sec->index] = syms[idx]; } @@ -6292,27 +6322,28 @@ assign_file_positions_for_load_sections (bfd *abfd, } else { - if (p->p_type == PT_LOAD) + if (this_hdr->sh_type == SHT_NOBITS + && (this_hdr->sh_flags & SHF_TLS) != 0 + && this_hdr->sh_offset == 0) { - this_hdr->sh_offset = sec->filepos = off; - if (this_hdr->sh_type != SHT_NOBITS) - off += this_hdr->sh_size; - } - else if (this_hdr->sh_type == SHT_NOBITS - && (this_hdr->sh_flags & SHF_TLS) != 0 - && this_hdr->sh_offset == 0) - { - /* This is a .tbss section that didn't get a PT_LOAD. - (See _bfd_elf_map_sections_to_segments "Create a - final PT_LOAD".) Set sh_offset to the value it - would have if we had created a zero p_filesz and - p_memsz PT_LOAD header for the section. This - also makes the PT_TLS header have the same - p_offset value. */ + /* Set sh_offset for .tbss sections to their nominal + offset after aligning. They are not loaded from + disk so the value doesn't really matter, except + when the .tbss section is the first one in a + PT_TLS segment. In that case it sets the + p_offset for the PT_TLS segment, which according + to the ELF gABI ought to satisfy + p_offset % p_align == p_vaddr % p_align. */ bfd_vma adjust = vma_page_aligned_bias (this_hdr->sh_addr, off, align); this_hdr->sh_offset = sec->filepos = off + adjust; } + else if (p->p_type == PT_LOAD) + { + this_hdr->sh_offset = sec->filepos = off; + if (this_hdr->sh_type != SHT_NOBITS) + off += this_hdr->sh_size; + } if (this_hdr->sh_type != SHT_NOBITS) { @@ -8345,25 +8376,34 @@ copy_private_bfd_data (bfd *ibfd, bfd *obfd) return rewrite_elf_program_header (ibfd, obfd, maxpagesize); } -/* Initialize private output section information from input section. */ +/* Copy private section information from input to output. This function + is called both by objcopy where LINK_INFO is NULL, and ld where + LINK_INFO is non-NULL in the usual case but NULL for a special case + when dealing with LTO IR or cloning output sections. */ bool -_bfd_elf_init_private_section_data (bfd *ibfd, +_bfd_elf_copy_private_section_data (bfd *ibfd, asection *isec, bfd *obfd, asection *osec, struct bfd_link_info *link_info) - { - Elf_Internal_Shdr *ihdr, *ohdr; - bool final_link = (link_info != NULL - && !bfd_link_relocatable (link_info)); - if (ibfd->xvec->flavour != bfd_target_elf_flavour || obfd->xvec->flavour != bfd_target_elf_flavour) return true; - BFD_ASSERT (elf_section_data (osec) != NULL); + Elf_Internal_Shdr *ihdr = &elf_section_data (isec)->this_hdr; + Elf_Internal_Shdr *ohdr = &elf_section_data (osec)->this_hdr; + if (link_info == NULL) + { + ohdr->sh_entsize = ihdr->sh_entsize; + + if (ihdr->sh_type == SHT_SYMTAB + || ihdr->sh_type == SHT_DYNSYM + || ihdr->sh_type == SHT_GNU_verneed + || ihdr->sh_type == SHT_GNU_verdef) + ohdr->sh_info = ihdr->sh_info; + } /* If this is a known ABI section, ELF section type and flags may have been set up when OSEC was created. For normal sections we @@ -8373,11 +8413,14 @@ _bfd_elf_init_private_section_data (bfd *ibfd, || elf_section_type (osec) == SHT_NOTE || elf_section_type (osec) == SHT_NOBITS) elf_section_type (osec) = SHT_NULL; + /* For objcopy and relocatable link, copy the ELF section type from the input file if the BFD section flags are the same. (If they are different the user may be doing something like "objcopy --set-section-flags .text=alloc,data".) For a final link allow some flags that the linker clears to differ. */ + bool final_link = (link_info != NULL + && !bfd_link_relocatable (link_info)); if (elf_section_type (osec) == SHT_NULL && (osec->flags == isec->flags || (final_link @@ -8415,14 +8458,11 @@ _bfd_elf_init_private_section_data (bfd *ibfd, elf_section_flags (osec) |= (elf_section_flags (isec) & SHF_COMPRESSED); - ihdr = &elf_section_data (isec)->this_hdr; - /* We need to handle elf_linked_to_section for SHF_LINK_ORDER. We don't use the output section of the linked-to section since it may be NULL at this point. */ if ((ihdr->sh_flags & SHF_LINK_ORDER) != 0) { - ohdr = &elf_section_data (osec)->this_hdr; ohdr->sh_flags |= SHF_LINK_ORDER; elf_linked_to_section (osec) = elf_linked_to_section (isec); } @@ -8432,36 +8472,6 @@ _bfd_elf_init_private_section_data (bfd *ibfd, return true; } -/* Copy private section information. This copies over the entsize - field, and sometimes the info field. */ - -bool -_bfd_elf_copy_private_section_data (bfd *ibfd, - asection *isec, - bfd *obfd, - asection *osec) -{ - Elf_Internal_Shdr *ihdr, *ohdr; - - if (ibfd->xvec->flavour != bfd_target_elf_flavour - || obfd->xvec->flavour != bfd_target_elf_flavour) - return true; - - ihdr = &elf_section_data (isec)->this_hdr; - ohdr = &elf_section_data (osec)->this_hdr; - - ohdr->sh_entsize = ihdr->sh_entsize; - - if (ihdr->sh_type == SHT_SYMTAB - || ihdr->sh_type == SHT_DYNSYM - || ihdr->sh_type == SHT_GNU_verneed - || ihdr->sh_type == SHT_GNU_verdef) - ohdr->sh_info = ihdr->sh_info; - - return _bfd_elf_init_private_section_data (ibfd, isec, obfd, osec, - NULL); -} - /* Look at all the SHT_GROUP sections in IBFD, making any adjustments necessary if we are removing either the SHT_GROUP section or any of the group member sections. DISCARDED is the value that a section's @@ -10391,6 +10401,12 @@ elfcore_grok_xstatereg (bfd *abfd, Elf_Internal_Note *note) } static bool +elfcore_grok_sspreg (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-ssp", note); +} + +static bool elfcore_grok_ppc_vmx (bfd *abfd, Elf_Internal_Note *note) { return elfcore_make_note_pseudosection (abfd, ".reg-ppc-vmx", note); @@ -10622,6 +10638,15 @@ elfcore_grok_aarch_zt (bfd *abfd, Elf_Internal_Note *note) return elfcore_make_note_pseudosection (abfd, ".reg-aarch-zt", note); } +/* Convert NOTE into a bfd_section called ".reg-aarch-gcs". Return TRUE if + successful, otherwise return FALSE. */ + +static bool +elfcore_grok_aarch_gcs (bfd *abfd, Elf_Internal_Note *note) +{ + return elfcore_make_note_pseudosection (abfd, ".reg-aarch-gcs", note); +} + static bool elfcore_grok_arc_v2 (bfd *abfd, Elf_Internal_Note *note) { @@ -11085,6 +11110,13 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return true; + case NT_X86_SHSTK: /* Linux CET extension. */ + if (note->namesz == 6 + && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_sspreg (abfd, note); + else + return true; + case NT_PPC_VMX: if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) @@ -11358,6 +11390,12 @@ elfcore_grok_note (bfd *abfd, Elf_Internal_Note *note) else return true; + case NT_ARM_GCS: + if (note->namesz == 6 && strcmp (note->namedata, "LINUX") == 0) + return elfcore_grok_aarch_gcs (abfd, note); + else + return true; + case NT_GDB_TDESC: if (note->namesz == 4 && strcmp (note->namedata, "GDB") == 0) @@ -12535,6 +12573,15 @@ elfcore_write_xstatereg (bfd *abfd, char *buf, int *bufsiz, note_name, NT_X86_XSTATE, xfpregs, size); } +static char * +elfcore_write_sspreg (bfd *abfd, char *buf, int *bufsiz, + const void *ssp, int size) +{ + const char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, + note_name, NT_X86_SHSTK, ssp, size); +} + char * elfcore_write_x86_segbases (bfd *abfd, char *buf, int *bufsiz, const void *regs, int size) @@ -13019,6 +13066,20 @@ elfcore_write_aarch_zt (bfd *abfd, size); } +/* Write the buffer of GCS register values in AARCH_GCS (length SIZE) into + the note buffer BUF and update *BUFSIZ. ABFD is the bfd the note is being + written into. Return a pointer to the new start of the note buffer, to + replace BUF which may no longer be valid. */ + +static char * +elfcore_write_aarch_gcs (bfd *abfd, char *buf, int *bufsiz, + const void *aarch_gcs, int size) +{ + const char *note_name = "LINUX"; + return elfcore_write_note (abfd, buf, bufsiz, note_name, NT_ARM_GCS, + aarch_gcs, size); +} + char * elfcore_write_arc_v2 (bfd *abfd, char *buf, @@ -13130,6 +13191,8 @@ elfcore_write_register_note (bfd *abfd, return elfcore_write_xstatereg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-x86-segbases") == 0) return elfcore_write_x86_segbases (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-ssp") == 0) + return elfcore_write_sspreg (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vmx") == 0) return elfcore_write_ppc_vmx (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-ppc-vsx") == 0) @@ -13206,6 +13269,8 @@ elfcore_write_register_note (bfd *abfd, return elfcore_write_aarch_za (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-aarch-zt") == 0) return elfcore_write_aarch_zt (abfd, buf, bufsiz, data, size); + if (strcmp (section, ".reg-aarch-gcs") == 0) + return elfcore_write_aarch_gcs (abfd, buf, bufsiz, data, size); if (strcmp (section, ".reg-arc-v2") == 0) return elfcore_write_arc_v2 (abfd, buf, bufsiz, data, size); if (strcmp (section, ".gdb-tdesc") == 0) @@ -13492,6 +13557,9 @@ _bfd_elf_section_offset (bfd *abfd, case SEC_INFO_TYPE_EH_FRAME: return _bfd_elf_eh_frame_section_offset (abfd, info, sec, offset); + case SEC_INFO_TYPE_SFRAME: + return _bfd_elf_sframe_section_offset (abfd, info, sec, offset); + default: if ((sec->flags & SEC_ELF_REVERSE_COPY) != 0) { diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c index 5a87462..c913f2b 100644 --- a/bfd/elf32-arm.c +++ b/bfd/elf32-arm.c @@ -18394,6 +18394,9 @@ elf32_arm_output_arch_local_syms (bfd *output_bfd, struct arm_local_iplt_info **local_iplt; unsigned int i, num_syms; + if (!is_arm_elf (input_bfd)) + continue; + local_iplt = elf32_arm_local_iplt (input_bfd); if (local_iplt != NULL) { diff --git a/bfd/elf32-mips.c b/bfd/elf32-mips.c index 6fe93a8..5871fb7 100644 --- a/bfd/elf32-mips.c +++ b/bfd/elf32-mips.c @@ -618,7 +618,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -633,7 +633,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -680,7 +680,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -695,7 +695,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -789,7 +789,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_PCHI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -803,7 +803,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_PCLO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -961,7 +961,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -976,7 +976,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1006,7 +1006,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1021,7 +1021,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1444,7 +1444,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1459,7 +1459,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1492,7 +1492,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1507,7 +1507,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ diff --git a/bfd/elf32-nds32.c b/bfd/elf32-nds32.c index e240c31..3627b30 100644 --- a/bfd/elf32-nds32.c +++ b/bfd/elf32-nds32.c @@ -2692,12 +2692,13 @@ nds32_elf_do_9_pcrel_reloc (bfd * abfd, bfd_vma symbol_value, bfd_vma addend) { - bfd_signed_vma relocation; + bfd_vma relocation; unsigned short x; bfd_reloc_status_type status; /* Sanity check the address (offset in section). */ - if (offset > bfd_get_section_limit (abfd, input_section)) + bfd_vma octet = offset * bfd_octets_per_byte (abfd, input_section); + if (!bfd_reloc_offset_in_range (howto, abfd, input_section, octet)) return bfd_reloc_outofrange; relocation = symbol_value + addend; @@ -2708,7 +2709,7 @@ nds32_elf_do_9_pcrel_reloc (bfd * abfd, before doing pcrel calculations. */ relocation -= (offset & -(bfd_vma) 2); - if (relocation < -ACCURATE_8BIT_S1 || relocation >= ACCURATE_8BIT_S1) + if (relocation + ACCURATE_8BIT_S1 >= 2 * ACCURATE_8BIT_S1) status = bfd_reloc_overflow; else status = bfd_reloc_ok; @@ -2751,7 +2752,7 @@ struct nds32_hi20 static struct nds32_hi20 *nds32_hi20_list; static bfd_reloc_status_type -nds32_elf_hi20_reloc (bfd *abfd ATTRIBUTE_UNUSED, +nds32_elf_hi20_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, void *data, @@ -2774,7 +2775,10 @@ nds32_elf_hi20_reloc (bfd *abfd ATTRIBUTE_UNUSED, } /* Sanity check the address (offset in section). */ - if (reloc_entry->address > bfd_get_section_limit (abfd, input_section)) + bfd_vma octet = (reloc_entry->address + * bfd_octets_per_byte (abfd, input_section)); + if (!bfd_reloc_offset_in_range (reloc_entry->howto, + abfd, input_section, octet)) return bfd_reloc_outofrange; ret = bfd_reloc_ok; @@ -2938,7 +2942,10 @@ nds32_elf_generic_reloc (bfd *input_bfd, arelent *reloc_entry, a section relative addend which is wrong. */ /* Sanity check the address (offset in section). */ - if (reloc_entry->address > bfd_get_section_limit (input_bfd, input_section)) + bfd_vma octet = (reloc_entry->address + * bfd_octets_per_byte (input_bfd, input_section)); + if (!bfd_reloc_offset_in_range (reloc_entry->howto, input_bfd, input_section, + octet)) return bfd_reloc_outofrange; ret = bfd_reloc_ok; @@ -4698,7 +4705,8 @@ nds32_elf_final_link_relocate (reloc_howto_type *howto, bfd *input_bfd, bfd_vma relocation; /* Sanity check the address. */ - if (address > bfd_get_section_limit (input_bfd, input_section)) + bfd_vma octet = address * bfd_octets_per_byte (input_bfd, input_section); + if (!bfd_reloc_offset_in_range (howto, input_bfd, input_section, octet)) return bfd_reloc_outofrange; /* This function assumes that we are dealing with a basic relocation diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c index 39a837c..abb7f5e 100644 --- a/bfd/elf32-sh.c +++ b/bfd/elf32-sh.c @@ -1429,9 +1429,9 @@ sh_elf_swap_insns (bfd *abfd, asection *sec, void *relocs, off = irel->r_offset + 4 + irel->r_addend; if (off == addr) - irel->r_offset += 2; + irel->r_addend += 2; else if (off == addr + 2) - irel->r_offset -= 2; + irel->r_addend -= 2; } if (irel->r_offset == addr) diff --git a/bfd/elf64-mips.c b/bfd/elf64-mips.c index 8af7190..f031dfd 100644 --- a/bfd/elf64-mips.c +++ b/bfd/elf64-mips.c @@ -697,7 +697,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -712,7 +712,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -759,7 +759,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -774,7 +774,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -868,7 +868,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_PCHI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -882,7 +882,7 @@ static reloc_howto_type mips_elf64_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_PCLO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1805,7 +1805,7 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1820,7 +1820,7 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1850,7 +1850,7 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1865,7 +1865,7 @@ static reloc_howto_type mips16_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1931,7 +1931,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1961,7 +1961,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1976,7 +1976,7 @@ static reloc_howto_type mips16_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2481,7 +2481,7 @@ static reloc_howto_type micromips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2496,7 +2496,7 @@ static reloc_howto_type micromips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2529,7 +2529,7 @@ static reloc_howto_type micromips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2544,7 +2544,7 @@ static reloc_howto_type micromips_elf64_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2615,7 +2615,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2630,7 +2630,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2675,7 +2675,7 @@ static reloc_howto_type micromips_elf64_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ diff --git a/bfd/elf64-s390.c b/bfd/elf64-s390.c index 259ad13..a79cc47 100644 --- a/bfd/elf64-s390.c +++ b/bfd/elf64-s390.c @@ -27,6 +27,8 @@ #include "elf/s390.h" #include "elf-s390.h" #include "dwarf2.h" +#include "sframe.h" +#include "sframe-api.h" #include <stdarg.h> /* In case we're on a 32-bit machine, construct a 64-bit "-1" value @@ -594,6 +596,49 @@ static const bfd_byte elf_s390x_eh_frame_plt[] = DW_CFA_nop, DW_CFA_nop, DW_CFA_nop }; +/* .sframe covering the .plt section. */ + +/* This must be the same as sframe_get_hdr_size (sfh). For s390x, this value + is the same as sizeof (sframe_header) because there is no SFrame auxilliary + header. */ +#define PLT_SFRAME_FDE_START_OFFSET sizeof (sframe_header) + +#define SFRAME_PLT0_MAX_NUM_FRES 1 +#define SFRAME_PLTN_MAX_NUM_FRES 1 + +struct elf_s390x_sframe_plt +{ + unsigned int plt0_entry_size; + unsigned int plt0_num_fres; + const sframe_frame_row_entry *plt0_fres[SFRAME_PLT0_MAX_NUM_FRES]; + + unsigned int pltn_entry_size; + unsigned int pltn_num_fres; + const sframe_frame_row_entry *pltn_fres[SFRAME_PLTN_MAX_NUM_FRES]; +}; + +/* .sframe FRE covering the PLT0/PLTn .plt section entry. */ +static const sframe_frame_row_entry elf_s390x_sframe_plt_fre = +{ + 0, /* SFrame FRE start address. */ + { SFRAME_V2_S390X_CFA_OFFSET_ENCODE (160), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* Offset bytes. */ + SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info. */ +}; + +/* SFrame helper object for PLT. */ +static const struct elf_s390x_sframe_plt elf_s390x_sframe_plt = +{ + PLT_FIRST_ENTRY_SIZE, + 1, /* Number of FREs for PLT0. */ + /* Array of SFrame FREs for PLT0. */ + { &elf_s390x_sframe_plt_fre }, + + PLT_ENTRY_SIZE, + 1, /* Number of FREs for PLTn. */ + /* Array of SFrame FREs for PLTn. */ + { &elf_s390x_sframe_plt_fre }, +}; + /* s390 ELF linker hash entry. */ @@ -688,6 +733,11 @@ struct elf_s390_link_hash_table asection *irelifunc; asection *plt_eh_frame; + sframe_encoder_ctx *plt_cfe_ctx; + asection *plt_sframe; + /* The .sframe helper object for .plt section. */ + const struct elf_s390x_sframe_plt *sframe_plt; + union { bfd_signed_vma refcount; bfd_vma offset; @@ -1513,6 +1563,137 @@ elf_s390_adjust_dynamic_symbol (struct bfd_link_info *info, return _bfd_elf_adjust_dynamic_copy (info, h, s); } +/* Create SFrame stack trace info for the PLT entries in the .plt section. */ + +static bool +_bfd_s390_elf_create_sframe_plt (struct bfd_link_info *info) +{ + struct elf_s390_link_hash_table *htab; + + unsigned int plt0_entry_size; + unsigned char func_info; + uint32_t fre_type; + /* The dynamic plt section for which .sframe stack trace information is being + created. */ + asection *dpltsec; + + int err = 0; + + sframe_encoder_ctx **ectx = NULL; + unsigned plt_entry_size = 0; + unsigned int num_pltn_fres = 0; + unsigned int num_pltn_entries = 0; + const sframe_frame_row_entry * const *pltn_fres; + + htab = elf_s390_hash_table (info); + ectx = &htab->plt_cfe_ctx; + dpltsec = htab->elf.splt; + + plt0_entry_size = htab->sframe_plt->plt0_entry_size; + plt_entry_size = htab->sframe_plt->pltn_entry_size; + pltn_fres = htab->sframe_plt->pltn_fres; + num_pltn_fres = htab->sframe_plt->pltn_num_fres; + num_pltn_entries = (dpltsec->size - plt0_entry_size) / plt_entry_size; + + *ectx = sframe_encode (SFRAME_VERSION_2, + SFRAME_F_FDE_FUNC_START_PCREL, + SFRAME_ABI_S390X_ENDIAN_BIG, + SFRAME_CFA_FIXED_FP_INVALID, + SFRAME_CFA_FIXED_RA_INVALID, + &err); + + /* FRE type is dependent on the size of the function. */ + fre_type = sframe_calc_fre_type (dpltsec->size); + func_info = sframe_fde_create_func_info (fre_type, SFRAME_FDE_TYPE_PCINC); + + /* Add SFrame FDE and the associated FREs for PLT0 if PLT0 has been + generated. */ + if (plt0_entry_size) + { + /* Add SFrame FDE for PLT0, the function start address is updated later + at _bfd_elf_merge_section_sframe time. */ + sframe_encoder_add_funcdesc_v2 (*ectx, + 0, /* func start addr. */ + plt0_entry_size, + func_info, + 0, /* Rep block size. */ + 0 /* Num FREs. */); + sframe_frame_row_entry plt0_fre; + unsigned int num_plt0_fres = htab->sframe_plt->plt0_num_fres; + for (unsigned int j = 0; j < num_plt0_fres; j++) + { + plt0_fre = *(htab->sframe_plt->plt0_fres[j]); + sframe_encoder_add_fre (*ectx, 0, &plt0_fre); + } + } + + if (num_pltn_entries) + { + /* PLTn entries use an SFrame FDE of type + SFRAME_FDE_TYPE_PCMASK to exploit the repetitive + pattern of the instructions in these entries. Using this SFrame FDE + type helps in keeping the SFrame stack trace info for PLTn entries + compact. */ + func_info = sframe_fde_create_func_info (fre_type, + SFRAME_FDE_TYPE_PCMASK); + /* Add the SFrame FDE for all PCs starting at the first PLTn entry (hence, + function start address = plt0_entry_size. As usual, this will be + updated later at _bfd_elf_merge_section_sframe, by when the + sections are relocated. */ + sframe_encoder_add_funcdesc_v2 (*ectx, + plt0_entry_size, /* func start addr. */ + dpltsec->size - plt0_entry_size, + func_info, + plt_entry_size, + 0 /* Num FREs. */); + + sframe_frame_row_entry pltn_fre; + /* Now add the FREs for PLTn. Simply adding the FREs suffices due + to the usage of SFRAME_FDE_TYPE_PCMASK above. */ + for (unsigned int j = 0; j < num_pltn_fres; j++) + { + unsigned int func_idx = plt0_entry_size ? 1 : 0; + pltn_fre = *(pltn_fres[j]); + sframe_encoder_add_fre (*ectx, func_idx, &pltn_fre); + } + } + + return true; +} + +/* Write contents of the .sframe section. */ + +static bool +_bfd_s390_elf_write_sframe_plt (struct bfd_link_info *info) +{ + struct elf_s390_link_hash_table *htab; + sframe_encoder_ctx *ectx; + size_t sec_size; + asection *sec; + bfd *dynobj; + + int err = 0; + + htab = elf_s390_hash_table (info); + dynobj = htab->elf.dynobj; + + ectx = htab->plt_cfe_ctx; + sec = htab->plt_sframe; + + BFD_ASSERT (ectx); + + void *contents = sframe_encoder_write (ectx, &sec_size, &err); + + sec->size = (bfd_size_type) sec_size; + sec->contents = (unsigned char *) bfd_zalloc (dynobj, sec->size); + sec->alloced = 1; + memcpy (sec->contents, contents, sec_size); + + sframe_encoder_free (&ectx); + + return true; +} + /* Allocate space in .plt, .got and associated reloc sections for dynamic relocs. */ @@ -1892,6 +2073,25 @@ elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED, htab->plt_eh_frame->size = sizeof (elf_s390x_eh_frame_plt); } + /* No need to size the .sframe section explicitly because the write-out + mechanism is different. Simply prep up the FDE/FRE for the + .plt section. */ + if (_bfd_elf_sframe_present (info)) + { + if (htab->plt_sframe != NULL + && htab->elf.splt != NULL + && htab->elf.splt->size != 0 + && !bfd_is_abs_section (htab->elf.splt->output_section)) + { + _bfd_s390_elf_create_sframe_plt (info); + /* FIXME - Dirty Hack. Set the size to something non-zero for now, + so that the section does not get stripped out below. The precise + size of this section is known only when the contents are + serialized in _bfd_s390x_elf_write_sframe_plt. */ + htab->plt_sframe->size = sizeof (sframe_header) + 1; + } + } + /* We now have determined the sizes of the various dynamic sections. Allocate memory for them. */ relocs = false; @@ -1904,6 +2104,7 @@ elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED, || s == htab->elf.sgot || s == htab->elf.sgotplt || s == htab->plt_eh_frame + || s == htab->plt_sframe || s == htab->elf.sdynbss || s == htab->elf.sdynrelro || s == htab->elf.iplt @@ -1960,6 +2161,11 @@ elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED, if ((s->flags & SEC_HAS_CONTENTS) == 0) continue; + /* Skip allocating contents for .sframe section as it is written + out differently. See below. */ + if (s == htab->plt_sframe) + continue; + /* Allocate memory for the section contents. We use bfd_zalloc here in case unused entries are not reclaimed before the section's contents are written out. This should not happen, @@ -1981,6 +2187,15 @@ elf_s390_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED, htab->plt_eh_frame->contents + PLT_FDE_LEN_OFFSET); } + if (_bfd_elf_sframe_present (info)) + { + if (htab->plt_sframe != NULL + && htab->elf.splt != NULL + && htab->elf.splt->size != 0 + && htab->plt_sframe->contents == NULL) + _bfd_s390_elf_write_sframe_plt (info); + } + return _bfd_elf_add_dynamic_tags (output_bfd, info, relocs); } @@ -2276,9 +2491,6 @@ elf_s390_relocate_section (bfd *output_bfd, || SYMBOL_REFERENCES_LOCAL (info, h) || resolved_to_zero) { - Elf_Internal_Sym *isym; - asection *sym_sec; - /* This is actually a static link, or it is a -Bsymbolic link and the symbol is defined locally, or the symbol was forced to be local @@ -2318,16 +2530,13 @@ elf_s390_relocate_section (bfd *output_bfd, & 0xff00f000) == 0xe300c000 && bfd_get_8 (input_bfd, contents + rel->r_offset + 3) == 0x04)) - && (isym = bfd_sym_from_r_symndx (&htab->elf.sym_cache, - input_bfd, r_symndx)) - && isym->st_shndx != SHN_ABS + && !bfd_is_abs_symbol (&h->root) && h != htab->elf.hdynamic && h != htab->elf.hgot && h != htab->elf.hplt - && !(isym->st_value & 1) - && (sym_sec = bfd_section_from_elf_index (input_bfd, - isym->st_shndx)) - && sym_sec->alignment_power) + && !((h->root.u.def.value + + sec->output_section->vma + + sec->output_offset) & 1)) { unsigned short new_insn = (0xc000 | (bfd_get_8 (input_bfd, @@ -3204,13 +3413,14 @@ elf_s390_relocate_section (bfd *output_bfd, _bfd_error_handler /* xgettext:c-format */ (_("%pB(%pA+%#" PRIx64 "): " - "misaligned symbol `%s' (%#" PRIx64 ") for relocation %s"), + "relocation %s against misaligned symbol `%s' (%#" PRIx64 ") in %pB"), input_bfd, input_section, (uint64_t) rel->r_offset, + howto->name, h->root.root.string, (uint64_t)relocation, - howto->name); + sec->owner); return false; } @@ -3786,6 +3996,34 @@ elf_s390_finish_dynamic_sections (bfd *output_bfd, } } + /* Make any adjustment if necessary and merge .sframe section to + create the final .sframe section for output_bfd. */ + if (htab->plt_sframe != NULL + && htab->plt_sframe->contents != NULL) + { + if (htab->elf.splt != NULL + && htab->elf.splt->size != 0 + && (htab->elf.splt->flags & SEC_EXCLUDE) == 0 + && htab->elf.splt->output_section != NULL + && htab->plt_sframe->output_section != NULL) + { + bfd_vma plt_start = htab->elf.splt->output_section->vma; + bfd_vma sframe_start = htab->plt_sframe->output_section->vma + + htab->plt_sframe->output_offset + + PLT_SFRAME_FDE_START_OFFSET; + bfd_put_signed_32 (dynobj, plt_start - sframe_start, + htab->plt_sframe->contents + + PLT_SFRAME_FDE_START_OFFSET); + } + if (htab->plt_sframe->sec_info_type == SEC_INFO_TYPE_SFRAME) + { + if (! _bfd_elf_merge_section_sframe (output_bfd, info, + htab->plt_sframe, + htab->plt_sframe->contents)) + return false; + } + } + return true; } @@ -4026,6 +4264,8 @@ elf_s390_create_dynamic_sections (bfd *dynobj, if (htab == NULL) return false; + htab->sframe_plt = &elf_s390x_sframe_plt; + if (htab->elf.splt != NULL) { /* Create .eh_frame section for .plt section. */ @@ -4046,6 +4286,22 @@ elf_s390_create_dynamic_sections (bfd *dynobj, return false; } } + + /* Create .sframe section for .plt section. */ + if (!info->no_ld_generated_unwind_info) + { + flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_READONLY + | SEC_HAS_CONTENTS | SEC_IN_MEMORY + | SEC_LINKER_CREATED); + + htab->plt_sframe = bfd_make_section_anyway_with_flags (dynobj, + ".sframe", + flags); + if (htab->plt_sframe == NULL) + return false; + + elf_section_type (htab->plt_sframe) = SHT_GNU_SFRAME; + } } return true; diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c index 1e08f2e..c40a0c5 100644 --- a/bfd/elf64-x86-64.c +++ b/bfd/elf64-x86-64.c @@ -868,13 +868,6 @@ static const bfd_byte elf_x86_64_eh_frame_non_lazy_plt[] = DW_CFA_nop, DW_CFA_nop, DW_CFA_nop }; -static const sframe_frame_row_entry elf_x86_64_sframe_null_fre = -{ - 0, - {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes. */ - SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info. */ -}; - /* .sframe FRE covering the .plt section entry. */ static const sframe_frame_row_entry elf_x86_64_sframe_plt0_fre1 = { @@ -923,6 +916,14 @@ static const sframe_frame_row_entry elf_x86_64_sframe_sec_pltn_fre1 = SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info. */ }; +/* .sframe FRE covering the .plt.got section entry. */ +static const sframe_frame_row_entry elf_x86_64_sframe_pltgot_fre1 = +{ + 0, /* SFrame FRE start address. */ + {16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* 12 bytes. */ + SFRAME_V1_FRE_INFO (SFRAME_BASE_REG_SP, 1, SFRAME_FRE_OFFSET_1B) /* FRE info. */ +}; + /* SFrame helper object for non-lazy PLT. */ static const struct elf_x86_sframe_plt elf_x86_64_sframe_non_lazy_plt = { @@ -933,14 +934,14 @@ static const struct elf_x86_sframe_plt elf_x86_64_sframe_non_lazy_plt = LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLTn. */ /* Array of SFrame FREs for plt. */ - { &elf_x86_64_sframe_sec_pltn_fre1, &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_sec_pltn_fre1 }, 0, 0, /* There is no second PLT necessary. */ - { &elf_x86_64_sframe_null_fre }, + { }, NON_LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLT GOT. */ /* Array of SFrame FREs for PLT GOT. */ - { &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_pltgot_fre1 }, }; /* SFrame helper object for non-lazy IBT enabled PLT. */ @@ -953,14 +954,14 @@ static const struct elf_x86_sframe_plt elf_x86_64_sframe_non_lazy_ibt_plt = LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLTn. */ /* Array of SFrame FREs for plt. */ - { &elf_x86_64_sframe_sec_pltn_fre1, &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_sec_pltn_fre1 }, 0, 0, /* There is no second PLT necessary. */ - { &elf_x86_64_sframe_null_fre }, + { }, LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLT GOT. */ /* Array of SFrame FREs for PLT GOT. */ - { &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_pltgot_fre1 }, }; /* SFrame helper object for lazy PLT. */ @@ -981,7 +982,7 @@ static const struct elf_x86_sframe_plt elf_x86_64_sframe_plt = NON_LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLT GOT. */ /* Array of SFrame FREs for PLT GOT. */ - { &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_pltgot_fre1 }, }; /* SFrame helper object for lazy PLT with IBT. */ @@ -1002,7 +1003,7 @@ static const struct elf_x86_sframe_plt elf_x86_64_sframe_ibt_plt = LAZY_PLT_ENTRY_SIZE, 1, /* Number of FREs for PLT GOT. */ /* Array of SFrame FREs for PLT GOT. */ - { &elf_x86_64_sframe_null_fre }, + { &elf_x86_64_sframe_pltgot_fre1 }, }; /* These are the standard parameters. */ @@ -2552,7 +2553,13 @@ elf_x86_64_scan_relocs (bfd *abfd, struct bfd_link_info *info, } howto = elf_x86_64_rtype_to_howto (abfd, r_type); - if (rel->r_offset + bfd_get_reloc_size (howto) > sec->size) + if (howto == NULL) + { + _bfd_error_handler (_("%pB: unsupported relocation type %#x"), + abfd, r_type); + goto error_return; + } + if (!bfd_reloc_offset_in_range (howto, abfd, sec, rel->r_offset)) { /* xgettext:c-format */ _bfd_error_handler @@ -5241,6 +5248,9 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd, + got_offset); if (PLT_LOCAL_IFUNC_P (info, h)) { + if (h->root.u.def.section == NULL) + return false; + info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"), h->root.root.string, h->root.u.def.section->owner); @@ -5409,6 +5419,9 @@ elf_x86_64_finish_dynamic_symbol (bfd *output_bfd, } if (SYMBOL_REFERENCES_LOCAL_P (info, h)) { + if (h->root.u.def.section == NULL) + return false; + info->callbacks->minfo (_("Local IFUNC function `%s' in %pB\n"), h->root.root.string, h->root.u.def.section->owner); @@ -6123,13 +6136,14 @@ elf_x86_64_fake_sections (bfd *abfd ATTRIBUTE_UNUSED, static bool elf_x86_64_copy_private_section_data (bfd *ibfd, asection *isec, - bfd *obfd, asection *osec) + bfd *obfd, asection *osec, + struct bfd_link_info *link_info) { - if (!_bfd_elf_copy_private_section_data (ibfd, isec, obfd, osec)) + if (!_bfd_elf_copy_private_section_data (ibfd, isec, obfd, osec, link_info)) return false; /* objcopy --set-section-flags without "large" drops SHF_X86_64_LARGE. */ - if (ibfd != obfd) + if (link_info == NULL && ibfd != obfd) elf_section_flags (osec) &= ~SHF_X86_64_LARGE; return true; diff --git a/bfd/elflink.c b/bfd/elflink.c index 1399352..c4f57cf 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -4965,6 +4965,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) asection *sec, *new_sec; flagword flags; const char *name; + const char *defvername; bool must_copy_name = false; struct elf_link_hash_entry *h; struct elf_link_hash_entry *hi; @@ -5141,6 +5142,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) old_alignment = 0; old_bfd = NULL; new_sec = sec; + defvername = NULL; if (is_elf_hash_table (&htab->root)) { @@ -5259,7 +5261,7 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) default version of the symbol. */ if ((iver.vs_vers & VERSYM_HIDDEN) == 0 && isym->st_shndx != SHN_UNDEF) - *p++ = ELF_VER_CHR; + *p++ = ELF_VER_CHR, defvername = name; memcpy (p, verstr, verlen + 1); name = newname; @@ -5709,9 +5711,15 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) } else if (dynamic && h->root.u.def.section->owner == abfd) - /* Add this symbol to first hash if this shared - object has the first definition. */ - elf_link_add_to_first_hash (abfd, info, name, must_copy_name); + { + /* Add this symbol to first hash if this shared + object has the first definition. */ + elf_link_add_to_first_hash (abfd, info, name, must_copy_name); + /* And if it was the default symbol version definition, + also add the short name. */ + if (defvername) + elf_link_add_to_first_hash (abfd, info, defvername, false); + } } } } @@ -6273,12 +6281,30 @@ elf_link_add_archive_symbols (bfd *abfd, struct bfd_link_info *info) if (h->type == bfd_link_hash_undefined) { - /* If the archive element has already been loaded then one - of the symbols defined by that element might have been - made undefined due to being in a discarded section. */ - if (is_elf_hash_table (info->hash) - && ((struct elf_link_hash_entry *) h)->indx == -3) - continue; + if (is_elf_hash_table (info->hash)) + { + /* If the archive element has already been loaded then one + of the symbols defined by that element might have been + made undefined due to being in a discarded section. */ + if (((struct elf_link_hash_entry *) h)->indx == -3) + continue; + + /* In the pre-LTO-plugin pass we must not mistakenly + include this archive member if an earlier shared + library defined this symbol. */ + struct elf_link_hash_table *htab = elf_hash_table (info); + if (htab->first_hash) + { + struct elf_link_first_hash_entry *e + = ((struct elf_link_first_hash_entry *) + bfd_hash_lookup (htab->first_hash, symdef->name, + false, false)); + if (e + && (e->abfd->flags & DYNAMIC) != 0 + && e->abfd != abfd) + continue; + } + } } else if (h->type == bfd_link_hash_common) { @@ -11267,7 +11293,7 @@ _bfd_elf_default_action_discarded (asection *sec) && strncmp (sec->name, ".eh_frame.", 10) == 0) return 0; - if (strcmp (".sframe", sec->name) == 0) + if (elf_section_type (sec) == SHT_GNU_SFRAME) return 0; if (strcmp (".gcc_except_table", sec->name) == 0) @@ -12206,9 +12232,9 @@ elf_link_input_bfd (struct elf_final_link_info *flinfo, bfd *input_bfd) break; case SEC_INFO_TYPE_SFRAME: { - /* Merge .sframe sections into the ctf frame encoder - context of the output_bfd's section. The final .sframe - output section will be written out later. */ + /* Merge SFrame section into the SFrame encoder context of the + output_bfd's section. The final .sframe output section will + be written out later. */ if (!_bfd_elf_merge_section_sframe (output_bfd, flinfo->info, o, contents)) return false; @@ -14032,7 +14058,7 @@ _bfd_elf_gc_mark_rsec (struct bfd_link_info *info, asection *sec, h = get_ext_sym_hash_from_cookie (cookie, r_symndx); if (h == NULL) { - /* A corrup tinput file can lead to a situation where the index + /* A corrupt input file can lead to a situation where the index does not reference either a local or an external symbol. */ if (r_symndx >= cookie->locsymcount) return NULL; @@ -14384,7 +14410,8 @@ elf_gc_sweep (bfd *abfd, struct bfd_link_info *info) if (o->flags & SEC_GROUP) { asection *first = elf_next_in_group (o); - o->gc_mark = first->gc_mark; + if (first != NULL) + o->gc_mark = first->gc_mark; } if (o->gc_mark) diff --git a/bfd/elfn32-mips.c b/bfd/elfn32-mips.c index 25f989b..07e222c 100644 --- a/bfd/elfn32-mips.c +++ b/bfd/elfn32-mips.c @@ -676,7 +676,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -691,7 +691,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -738,7 +738,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -753,7 +753,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -847,7 +847,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS_PCHI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -861,7 +861,7 @@ static reloc_howto_type elf_mips_howto_table_rel[] = true, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS_PCLO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1785,7 +1785,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1800,7 +1800,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1830,7 +1830,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1845,7 +1845,7 @@ static reloc_howto_type elf_mips16_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MIPS16_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -1911,7 +1911,7 @@ static reloc_howto_type elf_mips16_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1941,7 +1941,7 @@ static reloc_howto_type elf_mips16_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -1956,7 +1956,7 @@ static reloc_howto_type elf_mips16_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MIPS16_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2461,7 +2461,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2476,7 +2476,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_DTPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2509,7 +2509,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_hi16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_HI16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2524,7 +2524,7 @@ static reloc_howto_type elf_micromips_howto_table_rel[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_generic_reloc, /* special_function */ + _bfd_mips_elf_lo16_reloc, /* special_function */ "R_MICROMIPS_TLS_TPREL_LO16", /* name */ true, /* partial_inplace */ 0x0000ffff, /* src_mask */ @@ -2595,7 +2595,7 @@ static reloc_howto_type elf_micromips_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_hi16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_HI16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2610,7 +2610,7 @@ static reloc_howto_type elf_micromips_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_dont, /* complain_on_overflow */ - _bfd_mips_elf_lo16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_LO16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ @@ -2655,7 +2655,7 @@ static reloc_howto_type elf_micromips_howto_table_rela[] = false, /* pc_relative */ 0, /* bitpos */ complain_overflow_signed, /* complain_on_overflow */ - _bfd_mips_elf_got16_reloc, /* special_function */ + _bfd_mips_elf_generic_reloc, /* special_function */ "R_MICROMIPS_GOT16", /* name */ false, /* partial_inplace */ 0, /* src_mask */ diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c index 548da1f..9e98215d 100644 --- a/bfd/elfnn-aarch64.c +++ b/bfd/elfnn-aarch64.c @@ -2268,6 +2268,9 @@ elfNN_aarch64_howto_from_bfd_reloc (bfd_reloc_code_real_type code) if (code == BFD_RELOC_AARCH64_NONE) return &elfNN_aarch64_howto_none; + if (code == BFD_RELOC_AARCH64_BRANCH9) + return &elfNN_aarch64_howto_none; + return NULL; } @@ -2619,6 +2622,9 @@ struct elf_aarch64_link_hash_table /* Don't apply link-time values for dynamic relocations. */ int no_apply_dynamic_relocs; + /* Memtag Extension mode of operation. */ + aarch64_memtag_opts memtag_opts; + /* The number of bytes in the initial entry in the PLT. */ bfd_size_type plt_header_size; @@ -5006,13 +5012,15 @@ bfd_elfNN_aarch64_set_options (struct bfd *output_bfd, int fix_erratum_835769, erratum_84319_opts fix_erratum_843419, int no_apply_dynamic_relocs, - const aarch64_protection_opts *sw_protections) + const aarch64_protection_opts *sw_protections, + const aarch64_memtag_opts *memtag_opts) { struct elf_aarch64_link_hash_table *globals; globals = elf_aarch64_hash_table (link_info); globals->pic_veneer = pic_veneer; globals->fix_erratum_835769 = fix_erratum_835769; + globals->memtag_opts = *memtag_opts; /* If the default options are used, then ERRAT_ADR will be set by default which will enable the ADRP->ADR workaround for the erratum 843419 workaround. */ @@ -9772,7 +9780,20 @@ elfNN_aarch64_late_size_sections (bfd *output_bfd ATTRIBUTE_UNUSED, && !add_dynamic_entry (DT_AARCH64_PAC_PLT, 0)) return false; } + + if (is_aarch64_elf (output_bfd) + && htab->memtag_opts.memtag_mode != AARCH64_MEMTAG_MODE_NONE + && !add_dynamic_entry (DT_AARCH64_MEMTAG_MODE, + htab->memtag_opts.memtag_mode == AARCH64_MEMTAG_MODE_ASYNC)) + return false; + + if (is_aarch64_elf (output_bfd) + && htab->memtag_opts.memtag_stack == 1 + && !add_dynamic_entry (DT_AARCH64_MEMTAG_STACK, + htab->memtag_opts.memtag_stack == 1)) + return false; } + #undef add_dynamic_entry return true; diff --git a/bfd/elfnn-loongarch.c b/bfd/elfnn-loongarch.c index faad512..46fafb3 100644 --- a/bfd/elfnn-loongarch.c +++ b/bfd/elfnn-loongarch.c @@ -25,6 +25,7 @@ #define ARCH_SIZE NN #include "elf-bfd.h" #include "objalloc.h" +#include "splay-tree.h" #include "elf/loongarch.h" #include "elfxx-loongarch.h" #include "opcode/loongarch.h" @@ -134,6 +135,10 @@ struct loongarch_elf_link_hash_table a partially updated state (some sections have vma updated but the others do not), and it's unsafe to do the normal relaxation. */ bool layout_mutating_for_relr; + + /* Pending relaxation (byte deletion) operations meant for roughly + sequential access. */ + splay_tree pending_delete_ops; }; struct loongarch_elf_section_data @@ -168,6 +173,10 @@ loongarch_elf_new_section_hook (bfd *abfd, asection *sec) #define loongarch_elf_hash_table(p) \ ((struct loongarch_elf_link_hash_table *) ((p)->hash)) \ +/* During linker relaxation, indicates whether the section has already + undergone alignment processing and no more byte deletion is permitted. */ +#define loongarch_sec_closed_for_deletion(sec) ((sec)->sec_flg0) + #define MINUS_ONE ((bfd_vma) 0 - 1) #define sec_addr(sec) ((sec)->output_section->vma + (sec)->output_offset) @@ -2933,11 +2942,21 @@ perform_relocation (const Elf_Internal_Rela *rel, asection *input_section, { value -= sec_addr (input_section) + rel->r_offset; value += rel->r_addend; - bfd_vma word = bfd_get (howto->bitsize, input_bfd, - contents + rel->r_offset); - word = (word & ~howto->dst_mask) | (value & howto->dst_mask); - bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset); - r = bfd_reloc_ok; + /* Check overflow. */ + if (ELFNN_R_TYPE (rel->r_info) == R_LARCH_32_PCREL) + { + r = loongarch_reloc_rewrite_imm_insn (rel, input_section, + howto, input_bfd, + contents, value); + } + else + { + bfd_vma word = bfd_get (howto->bitsize, input_bfd, + contents + rel->r_offset); + word = (word & ~howto->dst_mask) | (value & howto->dst_mask); + bfd_put (howto->bitsize, input_bfd, word, contents + rel->r_offset); + r = bfd_reloc_ok; + } break; } @@ -4714,12 +4733,178 @@ loongarch_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, return !fatal; } -static bool +/* A pending delete op during a linker relaxation trip, to be stored in a + splay tree. + The key is the starting offset of this op's deletion range, interpreted + as if no delete op were executed for this trip. */ +struct pending_delete_op +{ + /* Number of bytes to delete at the address. */ + bfd_size_type size; + + /* The total offset adjustment at the address as if all preceding delete + ops had been executed. Used for calculating expected addresses after + relaxation without actually adjusting anything. */ + bfd_size_type cumulative_offset; +}; + +static int +pending_delete_op_compare (splay_tree_key a, splay_tree_key b) +{ + bfd_vma off_a = (bfd_vma)a; + bfd_vma off_b = (bfd_vma)b; + + if (off_a < off_b) + return -1; + else if (off_a > off_b) + return 1; + else + return 0; +} + +static void * +_allocate_on_bfd (int wanted, void *data) +{ + bfd *abfd = (bfd *)data; + return bfd_alloc (abfd, wanted); +} + +static void +_deallocate_on_bfd (void *p ATTRIBUTE_UNUSED, void *data ATTRIBUTE_UNUSED) +{ + /* Nothing to do; the data will get released along with the associated BFD + or an early bfd_release call. */ +} + +static splay_tree +pending_delete_ops_new (bfd *abfd) +{ + /* The node values are allocated with bfd_zalloc, so they are automatically + taken care of at BFD release time. */ + return splay_tree_new_with_allocator (pending_delete_op_compare, NULL, NULL, + _allocate_on_bfd, _deallocate_on_bfd, abfd); +} + +static bfd_vma +loongarch_calc_relaxed_addr (struct bfd_link_info *info, bfd_vma offset) +{ + struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (info); + splay_tree pdops = htab->pending_delete_ops; + struct pending_delete_op *op; + splay_tree_node node; + + if (!pdops) + /* Currently this means we are past the stages where byte deletion could + possibly happen. */ + return offset; + + /* Find the op that starts just before the given address. */ + node = splay_tree_predecessor (pdops, (splay_tree_key)offset); + if (node == NULL) + /* Nothing has been deleted yet. */ + return offset; + BFD_ASSERT (((bfd_vma)node->key) < offset); + op = (struct pending_delete_op *)node->value; + + /* If offset is inside this op's range, it is actually one of the deleted + bytes, so the adjusted node->key should be returned in this case. */ + bfd_vma op_end_off = (bfd_vma)node->key + op->size; + if (offset < op_end_off) + { + offset = (bfd_vma)node->key; + node = splay_tree_predecessor (pdops, node->key); + op = node ? (struct pending_delete_op *)node->value : NULL; + } + + return offset - (op ? op->cumulative_offset : 0); +} + +static void loongarch_relax_delete_bytes (bfd *abfd, - asection *sec, - bfd_vma addr, - size_t count, - struct bfd_link_info *link_info) + bfd_vma addr, + size_t count, + struct bfd_link_info *link_info) +{ + struct loongarch_elf_link_hash_table *htab + = loongarch_elf_hash_table (link_info); + splay_tree pdops = htab->pending_delete_ops; + splay_tree_node node; + struct pending_delete_op *op = NULL, *new_op = NULL; + bool need_new_node = true; + + if (count == 0) + return; + + BFD_ASSERT (pdops != NULL); + + node = splay_tree_predecessor (pdops, addr); + if (node) + { + op = (struct pending_delete_op *)node->value; + if ((bfd_vma)node->key + op->size >= addr) + { + /* The previous op already covers this offset, coalesce the new op + into it. */ + op->size += count; + op->cumulative_offset += count; + need_new_node = false; + } + } + + if (need_new_node) + { + new_op = bfd_zalloc (abfd, sizeof (struct pending_delete_op)); + new_op->size = count; + new_op->cumulative_offset = (op ? op->cumulative_offset : 0) + count; + node = splay_tree_insert (pdops, (splay_tree_key)addr, + (splay_tree_value)new_op); + } + + /* Adjust all cumulative offsets after this op. At this point either: + - a new node is created, in which case `node` has been updated with the + new value, or + - an existing node is to be reused, in which case `node` is untouched by + the new node logic above and appropriate to use, + so we can just re-use `node` here. */ + for (node = splay_tree_successor (pdops, node->key); node != NULL; + node = splay_tree_successor (pdops, node->key)) + { + op = (struct pending_delete_op *)node->value; + op->cumulative_offset += count; + } +} + +static void +loongarch_relax_delete_or_nop (bfd *abfd, + asection *sec, + bfd_vma addr, + size_t count, + struct bfd_link_info *link_info) +{ + struct bfd_elf_section_data *data = elf_section_data (sec); + bfd_byte *contents = data->this_hdr.contents; + + BFD_ASSERT (count % 4 == 0); + + if (!loongarch_sec_closed_for_deletion (sec)) + { + /* Deletions are still possible within the section. */ + loongarch_relax_delete_bytes (abfd, addr, count, link_info); + return; + } + + /* We can no longer delete bytes in the section after enforcing alignment. + But as the resulting shrinkage may open up a few more relaxation chances, + allowing unnecessary instructions to be replaced with NOPs instead of + being removed altogether may still benefit performance to a lesser + extent. */ + for (; count; addr += 4, count -= 4) + bfd_put (32, abfd, LARCH_NOP, contents + addr); +} + +static void +loongarch_relax_perform_deletes (bfd *abfd, asection *sec, + struct bfd_link_info *link_info) { unsigned int i, symcount; bfd_vma toaddr = sec->size; @@ -4727,30 +4912,82 @@ loongarch_relax_delete_bytes (bfd *abfd, Elf_Internal_Shdr *symtab_hdr = &elf_tdata (abfd)->symtab_hdr; unsigned int sec_shndx = _bfd_elf_section_from_bfd_section (abfd, sec); struct bfd_elf_section_data *data = elf_section_data (sec); - bfd_byte *contents = data->this_hdr.contents; + bfd_byte *contents = data->this_hdr.contents, *contents_end = NULL; struct relr_entry *relr = loongarch_elf_section_data (sec)->relr; struct loongarch_elf_link_hash_table *htab = loongarch_elf_hash_table (link_info); struct relr_entry *relr_end = NULL; + splay_tree pdops = htab->pending_delete_ops; + splay_tree_node node1 = NULL, node2 = NULL; if (htab->relr_count) relr_end = htab->relr + htab->relr_count; - /* Actually delete the bytes. */ - sec->size -= count; - memmove (contents + addr, contents + addr + count, toaddr - addr - count); + BFD_ASSERT (pdops != NULL); + node1 = splay_tree_min (pdops); + + if (node1 == NULL) + /* No pending delete ops, nothing to do. */ + return; + + /* Actually delete the bytes. For each delete op the pointer arithmetics + look like this: + + node1->key -\ /- node2->key + |<- op1->size ->| | + v v v + ...-DDDDDD-------xxxxxxxxxxxxxxxxxSSSSSSxxxxxxxxxx----... + ^ ^ ^ + contents_end node1->key + op1->size + | + contents_end after this memmove + + where the "S" and "D" bytes are the memmove's source and destination + respectively. In case node1 is the first op, contents_end is initialized + to the op's start; in case node2 == NULL, the chunk's end is the section's + end. The contents_end pointer will be bumped to the new end of content + after each memmove. As no byte is added during the process, it is + guaranteed to trail behind the delete ops, and all bytes overwritten are + either already copied by an earlier memmove or meant to be discarded. + + For memmove, we need to translate offsets to pointers by adding them to + `contents`. */ + for (; node1; node1 = node2) + { + struct pending_delete_op *op1 = (struct pending_delete_op *)node1->value; + bfd_vma op1_start_off = (bfd_vma)node1->key; + bfd_vma op1_end_off = op1_start_off + op1->size; + node2 = splay_tree_successor (pdops, node1->key); + bfd_vma op2_start_off = node2 ? (bfd_vma)node2->key : toaddr; + bfd_size_type count = op2_start_off - op1_end_off; + + if (count) + { + if (contents_end == NULL) + /* Start from the end of the first unmodified content chunk. */ + contents_end = contents + op1_start_off; + + memmove (contents_end, contents + op1_end_off, count); + contents_end += count; + } + + /* Adjust the section size once, when we have reached the end. */ + if (node2 == NULL) + sec->size -= op1->cumulative_offset; + } /* Adjust the location of all of the relocs. Note that we need not adjust the addends, since all PC-relative references must be against symbols, which we will adjust below. */ for (i = 0; i < sec->reloc_count; i++) - if (data->relocs[i].r_offset > addr && data->relocs[i].r_offset < toaddr) - data->relocs[i].r_offset -= count; + if (data->relocs[i].r_offset < toaddr) + data->relocs[i].r_offset = loongarch_calc_relaxed_addr ( + link_info, data->relocs[i].r_offset); /* Likewise for relative relocs to be packed into .relr. */ for (; relr && relr < relr_end && relr->sec == sec; relr++) - if (relr->off > addr && relr->off < toaddr) - relr->off -= count; + if (relr->off < toaddr) + relr->off = loongarch_calc_relaxed_addr (link_info, relr->off); /* Adjust the local symbols defined in this section. */ for (i = 0; i < symtab_hdr->sh_info; i++) @@ -4758,24 +4995,35 @@ loongarch_relax_delete_bytes (bfd *abfd, Elf_Internal_Sym *sym = (Elf_Internal_Sym *) symtab_hdr->contents + i; if (sym->st_shndx == sec_shndx) { - /* If the symbol is in the range of memory we just moved, we - have to adjust its value. */ - if (sym->st_value > addr && sym->st_value <= toaddr) - sym->st_value -= count; + bfd_vma orig_value = sym->st_value; + if (orig_value <= toaddr) + sym->st_value + = loongarch_calc_relaxed_addr (link_info, orig_value); - /* If the symbol *spans* the bytes we just deleted (i.e. its - *end* is in the moved bytes but its *start* isn't), then we - must adjust its size. + /* If the symbol *spans* some deleted bytes, that is its *end* is in + the moved bytes but its *start* isn't, then we must adjust its + size. This test needs to use the original value of st_value, otherwise we might accidentally decrease size when deleting bytes right - before the symbol. But since deleted relocs can't span across - symbols, we can't have both a st_value and a st_size decrease, - so it is simpler to just use an else. */ - else if (sym->st_value <= addr - && sym->st_value + sym->st_size > addr - && sym->st_value + sym->st_size <= toaddr) - sym->st_size -= count; + before the symbol. */ + bfd_vma sym_end = orig_value + sym->st_size; + if (sym_end <= toaddr) + { + splay_tree_node node = splay_tree_predecessor ( + pdops, (splay_tree_key)orig_value); + for (; node; node = splay_tree_successor (pdops, node->key)) + { + bfd_vma addr = (bfd_vma)node->key; + struct pending_delete_op *op + = (struct pending_delete_op *)node->value; + + if (addr >= sym_end) + break; + if (orig_value <= addr && sym_end > addr) + sym->st_size -= op->size; + } + } } } @@ -4820,20 +5068,33 @@ loongarch_relax_delete_bytes (bfd *abfd, || sym_hash->root.type == bfd_link_hash_defweak) && sym_hash->root.u.def.section == sec) { - /* As above, adjust the value if needed. */ - if (sym_hash->root.u.def.value > addr - && sym_hash->root.u.def.value <= toaddr) - sym_hash->root.u.def.value -= count; + bfd_vma orig_value = sym_hash->root.u.def.value; + + /* As above, adjust the value. */ + if (orig_value <= toaddr) + sym_hash->root.u.def.value + = loongarch_calc_relaxed_addr (link_info, orig_value); /* As above, adjust the size if needed. */ - else if (sym_hash->root.u.def.value <= addr - && sym_hash->root.u.def.value + sym_hash->size > addr - && sym_hash->root.u.def.value + sym_hash->size <= toaddr) - sym_hash->size -= count; + bfd_vma sym_end = orig_value + sym_hash->size; + if (sym_end <= toaddr) + { + splay_tree_node node = splay_tree_predecessor ( + pdops, (splay_tree_key)orig_value); + for (; node; node = splay_tree_successor (pdops, node->key)) + { + bfd_vma addr = (bfd_vma)node->key; + struct pending_delete_op *op + = (struct pending_delete_op *)node->value; + + if (addr >= sym_end) + break; + if (orig_value <= addr && sym_end > addr) + sym_hash->size -= op->size; + } + } } } - - return true; } /* Start perform TLS type transition. @@ -4909,7 +5170,7 @@ loongarch_tls_perform_trans (bfd *abfd, asection *sec, bfd_put (32, abfd, LARCH_NOP, contents + rel->r_offset); /* link with -relax option will delete NOP. */ if (!info->disable_target_specific_optimizations) - loongarch_relax_delete_bytes (abfd, sec, rel->r_offset, 4, info); + loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset, 4, info); return true; case R_LARCH_TLS_IE_PC_HI20: @@ -4998,8 +5259,7 @@ loongarch_tls_perform_trans (bfd *abfd, asection *sec, lu52i.d $rd,$rd,%le64_hi12(sym) => (deleted) */ static bool -loongarch_relax_tls_le (bfd *abfd, asection *sec, - asection *sym_sec ATTRIBUTE_UNUSED, +loongarch_relax_tls_le (bfd *abfd, asection *sec, asection *sym_sec, Elf_Internal_Rela *rel, bfd_vma symval, struct bfd_link_info *link_info, bool *agin ATTRIBUTE_UNUSED, @@ -5009,6 +5269,8 @@ loongarch_relax_tls_le (bfd *abfd, asection *sec, uint32_t insn = bfd_get (32, abfd, contents + rel->r_offset); static uint32_t insn_rj,insn_rd; symval = symval - elf_hash_table (link_info)->tls_sec->vma; + if (sym_sec == sec) + symval = loongarch_calc_relaxed_addr (link_info, symval); /* The old LE instruction sequence can be relaxed when the symbol offset is smaller than the 12-bit range. */ if (symval <= 0xfff) @@ -5023,7 +5285,7 @@ loongarch_relax_tls_le (bfd *abfd, asection *sec, if (symval < 0x800) { rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); - loongarch_relax_delete_bytes (abfd, sec, rel->r_offset, + loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset, 4, link_info); } break; @@ -5048,8 +5310,8 @@ loongarch_relax_tls_le (bfd *abfd, asection *sec, case R_LARCH_TLS_LE64_LO20: case R_LARCH_TLS_LE64_HI12: rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); - loongarch_relax_delete_bytes (abfd, sec, rel->r_offset, - 4, link_info); + loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset, + 4, link_info); break; case R_LARCH_TLS_LE_LO12: @@ -5106,14 +5368,18 @@ loongarch_relax_pcala_addi (bfd *abfd, asection *sec, asection *sym_sec, size_input_section already took care of updating it after relaxation, so we additionally update once here. */ sec->output_offset = sec->output_section->size; - bfd_vma pc = sec_addr (sec) + rel_hi->r_offset; + bfd_vma pc = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, rel_hi->r_offset); + if (sym_sec == sec) + symval = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec)); /* If pc and symbol not in the same segment, add/sub segment alignment. */ if (!loongarch_two_sections_in_same_segment (info->output_bfd, sec->output_section, sym_sec->output_section)) max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize - : max_alignment; + : max_alignment; if (symval > pc) pc -= (max_alignment > 4 ? max_alignment : 0); @@ -5145,7 +5411,7 @@ loongarch_relax_pcala_addi (bfd *abfd, asection *sec, asection *sym_sec, R_LARCH_PCREL20_S2); rel_lo->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); - loongarch_relax_delete_bytes (abfd, sec, rel_lo->r_offset, 4, info); + loongarch_relax_delete_or_nop (abfd, sec, rel_lo->r_offset, 4, info); return true; } @@ -5167,14 +5433,18 @@ loongarch_relax_call36 (bfd *abfd, asection *sec, asection *sym_sec, size_input_section already took care of updating it after relaxation, so we additionally update once here. */ sec->output_offset = sec->output_section->size; - bfd_vma pc = sec_addr (sec) + rel->r_offset; + bfd_vma pc = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, rel->r_offset); + if (sym_sec == sec) + symval = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec)); /* If pc and symbol not in the same segment, add/sub segment alignment. */ if (!loongarch_two_sections_in_same_segment (info->output_bfd, sec->output_section, sym_sec->output_section)) max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize - : max_alignment; + : max_alignment; if (symval > pc) pc -= (max_alignment > 4 ? max_alignment : 0); @@ -5201,7 +5471,7 @@ loongarch_relax_call36 (bfd *abfd, asection *sec, asection *sym_sec, /* Adjust relocations. */ rel->r_info = ELFNN_R_INFO (ELFNN_R_SYM (rel->r_info), R_LARCH_B26); /* Delete jirl instruction. */ - loongarch_relax_delete_bytes (abfd, sec, rel->r_offset + 4, 4, info); + loongarch_relax_delete_or_nop (abfd, sec, rel->r_offset + 4, 4, info); return true; } @@ -5227,14 +5497,18 @@ loongarch_relax_pcala_ld (bfd *abfd, asection *sec, size_input_section already took care of updating it after relaxation, so we additionally update once here. */ sec->output_offset = sec->output_section->size; - bfd_vma pc = sec_addr (sec) + rel_hi->r_offset; + bfd_vma pc = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, rel_hi->r_offset); + if (sym_sec == sec) + symval = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec)); /* If pc and symbol not in the same segment, add/sub segment alignment. */ if (!loongarch_two_sections_in_same_segment (info->output_bfd, sec->output_section, sym_sec->output_section)) max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize - : max_alignment; + : max_alignment; if (symval > pc) pc -= (max_alignment > 4 ? max_alignment : 0); @@ -5272,12 +5546,13 @@ bfd_elfNN_loongarch_set_data_segment_info (struct bfd_link_info *info, loongarch_elf_hash_table (info)->data_segment_phase = data_segment_phase; } -/* Implement R_LARCH_ALIGN by deleting excess alignment NOPs. - Once we've handled an R_LARCH_ALIGN, we can't relax anything else. */ +/* Honor R_LARCH_ALIGN requests by deleting excess alignment NOPs. + Once we've handled an R_LARCH_ALIGN, we can't relax anything else by deleting + bytes, or alignment will be disrupted. */ static bool loongarch_relax_align (bfd *abfd, asection *sec, asection *sym_sec, Elf_Internal_Rela *rel, - bfd_vma symval ATTRIBUTE_UNUSED, + bfd_vma symval, struct bfd_link_info *link_info, bool *again ATTRIBUTE_UNUSED, bfd_vma max_alignment ATTRIBUTE_UNUSED) @@ -5293,6 +5568,10 @@ loongarch_relax_align (bfd *abfd, asection *sec, asection *sym_sec, else alignment = rel->r_addend + 4; + if (sym_sec == sec) + symval = sec_addr (sec) + + loongarch_calc_relaxed_addr (link_info, symval - sec_addr (sec)); + addend = alignment - 4; /* The bytes of NOPs added by R_LARCH_ALIGN. */ symval -= addend; /* The address of first NOP added by R_LARCH_ALIGN. */ bfd_vma aligned_addr = ((symval - 1) & ~(alignment - 1)) + alignment; @@ -5310,25 +5589,27 @@ loongarch_relax_align (bfd *abfd, asection *sec, asection *sym_sec, return false; } - /* Once we've handled an R_LARCH_ALIGN in a section, - we can't relax anything else in this section. */ - sec->sec_flg0 = true; + /* Once we've handled an R_LARCH_ALIGN in a section, we can't relax anything + else by deleting bytes, or alignment will be disrupted. */ + loongarch_sec_closed_for_deletion (sec) = true; rel->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); /* If skipping more bytes than the specified maximum, then the alignment is not done at all and delete all NOPs. */ if (max > 0 && need_nop_bytes > max) - return loongarch_relax_delete_bytes (abfd, sec, rel->r_offset, - addend, link_info); + { + loongarch_relax_delete_bytes (abfd, rel->r_offset, addend, link_info); + return true; + } /* If the number of NOPs is already correct, there's nothing to do. */ if (need_nop_bytes == addend) return true; /* Delete the excess NOPs. */ - return loongarch_relax_delete_bytes (abfd, sec, - rel->r_offset + need_nop_bytes, - addend - need_nop_bytes, link_info); + loongarch_relax_delete_bytes (abfd, rel->r_offset + need_nop_bytes, + addend - need_nop_bytes, link_info); + return true; } /* Relax pcalau12i + addi.d of TLS LD/GD/DESC to pcaddi. */ @@ -5349,14 +5630,18 @@ loongarch_relax_tls_ld_gd_desc (bfd *abfd, asection *sec, asection *sym_sec, size_input_section already took care of updating it after relaxation, so we additionally update once here. */ sec->output_offset = sec->output_section->size; - bfd_vma pc = sec_addr (sec) + rel_hi->r_offset; + bfd_vma pc = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, rel_hi->r_offset); + if (sym_sec == sec) + symval = sec_addr (sec) + + loongarch_calc_relaxed_addr (info, symval - sec_addr (sec)); /* If pc and symbol not in the same segment, add/sub segment alignment. */ if (!loongarch_two_sections_in_same_segment (info->output_bfd, sec->output_section, sym_sec->output_section)) max_alignment = info->maxpagesize > max_alignment ? info->maxpagesize - : max_alignment; + : max_alignment; if (symval > pc) pc -= (max_alignment > 4 ? max_alignment : 0); @@ -5404,7 +5689,7 @@ loongarch_relax_tls_ld_gd_desc (bfd *abfd, asection *sec, asection *sym_sec, } rel_lo->r_info = ELFNN_R_INFO (0, R_LARCH_NONE); - loongarch_relax_delete_bytes (abfd, sec, rel_lo->r_offset, 4, info); + loongarch_relax_delete_or_nop (abfd, sec, rel_lo->r_offset, 4, info); return true; } @@ -5448,15 +5733,25 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, if (htab->layout_mutating_for_relr) return true; + /* Definition of LoongArch linker relaxation passes: + + - Pass 0: relaxes everything except R_LARCH_ALIGN, byte deletions are + performed; skipped if disable_target_specific_optimizations. + - Pass 1: handles alignment, byte deletions are performed. Sections with + R_LARCH_ALIGN relocations are marked closed for further byte + deletion in order to not disturb alignment. This pass is NOT + skipped even if disable_target_specific_optimizations is true. + - Pass 2: identical to Pass 0, but replacing relaxed insns with NOP in case + the containing section is closed for deletion; skip condition + also same as Pass 0. */ + bool is_alignment_pass = info->relax_pass == 1; if (bfd_link_relocatable (info) - || sec->sec_flg0 || sec->reloc_count == 0 || (sec->flags & SEC_RELOC) == 0 || (sec->flags & SEC_HAS_CONTENTS) == 0 /* The exp_seg_relro_adjust is enum phase_enum (0x4). */ || *(htab->data_segment_phase) == 4 - || (info->disable_target_specific_optimizations - && info->relax_pass == 0)) + || (info->disable_target_specific_optimizations && !is_alignment_pass)) return true; struct bfd_elf_section_data *data = elf_section_data (sec); @@ -5492,6 +5787,12 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, htab->max_alignment = max_alignment; } + splay_tree pdops = NULL; + if (!loongarch_sec_closed_for_deletion (sec)) + pdops = pending_delete_ops_new (abfd); + + htab->pending_delete_ops = pdops; + for (unsigned int i = 0; i < sec->reloc_count; i++) { char symtype; @@ -5531,7 +5832,13 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, } relax_func_t relax_func = NULL; - if (info->relax_pass == 0) + if (is_alignment_pass) + { + if (r_type != R_LARCH_ALIGN) + continue; + relax_func = loongarch_relax_align; + } + else { switch (r_type) { @@ -5585,10 +5892,6 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, continue; } } - else if (info->relax_pass == 1 && r_type == R_LARCH_ALIGN) - relax_func = loongarch_relax_align; - else - continue; /* Four kind of relocations: Normal: symval is the symbol address. @@ -5727,6 +6030,13 @@ loongarch_elf_relax_section (bfd *abfd, asection *sec, info, again, max_alignment); } + if (pdops) + { + loongarch_relax_perform_deletes (abfd, sec, info); + htab->pending_delete_ops = NULL; + splay_tree_delete (pdops); + } + return true; } diff --git a/bfd/elfnn-riscv.c b/bfd/elfnn-riscv.c index 1c494f5..2fd0129 100644 --- a/bfd/elfnn-riscv.c +++ b/bfd/elfnn-riscv.c @@ -99,7 +99,7 @@ ((H) != NULL \ && (H)->dynindx != -1 \ && (!bfd_link_pic (INFO) \ - || !SYMBOLIC_BIND ((INFO), (H)) \ + || !(bfd_link_pie ((INFO)) || SYMBOLIC_BIND ((INFO), (H))) \ || !(H)->def_regular)) /* True if this is actually a static link, or it is a -Bsymbolic link @@ -176,6 +176,11 @@ struct _bfd_riscv_elf_obj_tdata /* tls_type for each local got entry. */ char *local_got_tls_type; + + /* All GNU_PROPERTY_RISCV_FEATURE_1_AND properties. */ + uint32_t gnu_and_prop; + /* PLT type. */ + riscv_plt_type plt_type; }; #define _bfd_riscv_elf_tdata(abfd) \ @@ -232,6 +237,15 @@ struct riscv_elf_link_hash_table /* Relocations for variant CC symbols may be present. */ int variant_cc; + + /* The number of bytes in the PLT header and enties. */ + bfd_size_type plt_header_size; + bfd_size_type plt_entry_size; + + /* Functions to make PLT header and entries. */ + bool (*make_plt_header) (bfd *output_bfd, struct riscv_elf_link_hash_table *htab); + bool (*make_plt_entry) (bfd *output_bfd, asection *got, bfd_vma got_offset, + asection *plt, bfd_vma plt_offset); }; /* Instruction access functions. */ @@ -252,6 +266,12 @@ struct riscv_elf_link_hash_table && elf_hash_table_id (elf_hash_table (p)) == RISCV_ELF_DATA) \ ? (struct riscv_elf_link_hash_table *) (p)->hash : NULL) +/* Forward declaration PLT related functions. */ +static bool +riscv_make_plt_header (bfd *, struct riscv_elf_link_hash_table *); +static bool +riscv_make_plt_entry (bfd *, asection *, bfd_vma, asection *, bfd_vma); + void riscv_elfNN_set_options (struct bfd_link_info *link_info, struct riscv_elf_params *params) @@ -297,6 +317,12 @@ riscv_is_insn_reloc (const reloc_howto_type *howto) #define PLT_ENTRY_INSNS 4 #define PLT_HEADER_SIZE (PLT_HEADER_INSNS * 4) #define PLT_ENTRY_SIZE (PLT_ENTRY_INSNS * 4) + +#define PLT_ZICFILP_UNLABELED_HEADER_INSNS 12 +#define PLT_ZICFILP_UNLABELED_ENTRY_INSNS 4 +#define PLT_ZICFILP_UNLABELED_HEADER_SIZE (PLT_ZICFILP_UNLABELED_HEADER_INSNS * 4) +#define PLT_ZICFILP_UNLABELED_ENTRY_SIZE (PLT_ZICFILP_UNLABELED_ENTRY_INSNS * 4) + #define GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES #define TLS_GD_GOT_ENTRY_SIZE (RISCV_ELF_WORD_BYTES * 2) #define TLS_IE_GOT_ENTRY_SIZE RISCV_ELF_WORD_BYTES @@ -314,12 +340,42 @@ riscv_is_insn_reloc (const reloc_howto_type *howto) # define MATCH_LREG MATCH_LD #endif + +/* Check whether the compact PLT is used in this object. Tools need this + to dump the correct PLT header contents. */ + +static long +elfNN_riscv_get_synthetic_symtab (bfd *abfd, + long symcount, + asymbol **syms, + long dynsymcount, + asymbol **dynsyms, + asymbol **ret) +{ + /* Check Zicfilp PLT. */ + elf_property *prop; + prop = _bfd_elf_get_property (abfd, GNU_PROPERTY_RISCV_FEATURE_1_AND, 4); + if (prop) + { + if (prop->u.number & GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED) + _bfd_riscv_elf_tdata (abfd)->plt_type |= PLT_ZICFILP_UNLABELED; + } + + return _bfd_elf_get_synthetic_symtab (abfd, symcount, syms, + dynsymcount, dynsyms, ret); +} + /* Generate a PLT header. */ static bool -riscv_make_plt_header (bfd *output_bfd, bfd_vma gotplt_addr, bfd_vma addr, - uint32_t *entry) +riscv_make_plt_header (bfd *output_bfd, struct riscv_elf_link_hash_table *htab) { + asection *splt = htab->elf.splt; + bfd_vma addr = sec_addr (splt); + + asection *sgotplt = htab->elf.sgotplt; + bfd_vma gotplt_addr = sec_addr (sgotplt); + bfd_vma gotplt_offset_high = RISCV_PCREL_HIGH_PART (gotplt_addr, addr); bfd_vma gotplt_offset_low = RISCV_PCREL_LOW_PART (gotplt_addr, addr); @@ -340,6 +396,7 @@ riscv_make_plt_header (bfd *output_bfd, bfd_vma gotplt_addr, bfd_vma addr, l[w|d] t0, PTRSIZE(t0) # link map jr t3 */ + uint32_t entry[PLT_HEADER_INSNS]; entry[0] = RISCV_UTYPE (AUIPC, X_T2, gotplt_offset_high); entry[1] = RISCV_RTYPE (SUB, X_T1, X_T1, X_T3); entry[2] = RISCV_ITYPE (LREG, X_T3, X_T2, gotplt_offset_low); @@ -349,15 +406,78 @@ riscv_make_plt_header (bfd *output_bfd, bfd_vma gotplt_addr, bfd_vma addr, entry[6] = RISCV_ITYPE (LREG, X_T0, X_T0, RISCV_ELF_WORD_BYTES); entry[7] = RISCV_ITYPE (JALR, 0, X_T3, 0); + for (int i = 0; i < PLT_HEADER_INSNS; i++) + bfd_putl32 (entry[i], splt->contents + 4 * i); + + return true; +} + +static bool +riscv_make_plt_zicfilp_unlabeled_header (bfd *output_bfd, + struct riscv_elf_link_hash_table *htab) +{ + /* + lpad 0 # disable label checking + auipc t2, %hi(.got.plt) # Rewrite this to using + sub t1, t1, t3 # shifted .got.plt offset + hdr size + 16 + l[w|d] t3, %lo(1b)(t2) # _dl_runtime_resolve + addi t1, t1, -(hdr size + 12) # shifted .got.plt offset + addi t0, t2, %pcrel_lo(1b) # &.got.plt + srli t1, t1, log2(16/PTRSIZE) # .got.plt offset + l[w|d] t0, PTRSIZE(t0) # link map + jr t3 + nop + nop + nop */ + + /* RVE has no t3 register, so this won't work, and is not supported. */ + if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE) + { + _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"), + output_bfd); + return false; + } + + asection *gotplt = htab->elf.sgotplt; + bfd_vma gotplt_addr = sec_addr (gotplt); + + asection *splt = htab->elf.splt; + bfd_vma plt_header_addr = sec_addr (splt); + + bfd_vma auipc_addr = plt_header_addr + 4; + /* Add INSN_BYTES to skip the lpad instruction. */ + bfd_vma gotplt_offset_high = RISCV_PCREL_HIGH_PART (gotplt_addr, auipc_addr); + bfd_vma gotplt_offset_low = RISCV_PCREL_LOW_PART (gotplt_addr, auipc_addr); + + uint32_t header[PLT_ZICFILP_UNLABELED_HEADER_INSNS]; + header[0] = RISCV_UTYPE (LPAD, X_ZERO, 0); + header[1] = RISCV_UTYPE (AUIPC, X_T2, gotplt_offset_high); + header[2] = RISCV_RTYPE (SUB, X_T1, X_T1, X_T3); + header[3] = RISCV_ITYPE (LREG, X_T3, X_T2, gotplt_offset_low); + header[4] = RISCV_ITYPE (ADDI, X_T1, X_T1, + (uint32_t) -(PLT_ZICFILP_UNLABELED_HEADER_SIZE + 16)); + header[5] = RISCV_ITYPE (ADDI, X_T0, X_T2, gotplt_offset_low); + header[6] = RISCV_ITYPE (SRLI, X_T1, X_T1, 4 - RISCV_ELF_LOG_WORD_BYTES); + header[7] = RISCV_ITYPE (LREG, X_T0, X_T0, RISCV_ELF_WORD_BYTES); + header[8] = RISCV_ITYPE (JALR, 0, X_T3, 0); + header[9] = RISCV_NOP; + header[10] = RISCV_NOP; + header[11] = RISCV_NOP; + + for (int i = 0; i < PLT_ZICFILP_UNLABELED_HEADER_INSNS; i++) + bfd_putl32 (header[i], splt->contents + 4 * i); + return true; } /* Generate a PLT entry. */ static bool -riscv_make_plt_entry (bfd *output_bfd, bfd_vma got, bfd_vma addr, - uint32_t *entry) +riscv_make_plt_entry (bfd *output_bfd, asection *gotsec, bfd_vma got_offset, + asection *pltsec, bfd_vma plt_offset) { + bfd_vma got = sec_addr (gotsec) + got_offset; + bfd_vma addr = sec_addr (pltsec) + plt_offset; /* RVE has no t3 register, so this won't work, and is not supported. */ if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE) { @@ -371,11 +491,50 @@ riscv_make_plt_entry (bfd *output_bfd, bfd_vma got, bfd_vma addr, jalr t1, t3 nop */ + uint32_t entry[PLT_ENTRY_INSNS]; entry[0] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got, addr)); entry[1] = RISCV_ITYPE (LREG, X_T3, X_T3, RISCV_PCREL_LOW_PART (got, addr)); entry[2] = RISCV_ITYPE (JALR, X_T1, X_T3, 0); entry[3] = RISCV_NOP; + bfd_byte *loc = pltsec->contents + plt_offset; + for (int i = 0; i < PLT_ENTRY_INSNS; i++) + bfd_putl32 (entry[i], loc + 4 * i); + + return true; +} + +static bool +riscv_make_plt_zicfilp_unlabeled_entry (bfd *output_bfd, asection *got, + bfd_vma got_offset, asection *plt, + bfd_vma plt_offset) +{ + /* lpad 0 + 1: auipc t3, %pcrel_hi(function@.got.plt) + l[w|d] t3, %pcrel_lo(1b)(t3) + jalr t1, t3 */ + + /* RVE has no t3 register, so this won't work, and is not supported. */ + if (elf_elfheader (output_bfd)->e_flags & EF_RISCV_RVE) + { + _bfd_error_handler (_("%pB: warning: RVE PLT generation not supported"), + output_bfd); + return false; + } + + bfd_vma got_entry_addr = sec_addr(got) + got_offset; + bfd_vma plt_entry_addr = sec_addr(plt) + plt_offset; + bfd_vma auipc_addr = plt_entry_addr + 4; + uint32_t entry[PLT_ZICFILP_UNLABELED_ENTRY_INSNS]; + entry[0] = RISCV_UTYPE (LPAD, X_ZERO, 0); + entry[1] = RISCV_UTYPE (AUIPC, X_T3, RISCV_PCREL_HIGH_PART (got_entry_addr, auipc_addr)); + entry[2] = RISCV_ITYPE (LREG, X_T3, X_T3, RISCV_PCREL_LOW_PART (got_entry_addr, auipc_addr)); + entry[3] = RISCV_ITYPE (JALR, X_T1, X_T3, 0); + + bfd_byte *loc = plt->contents + plt_offset; + for (int i = 0; i < PLT_ZICFILP_UNLABELED_ENTRY_INSNS; i++) + bfd_putl32 (entry[i], loc + 4 * i); + return true; } @@ -489,6 +648,38 @@ riscv_elf_link_hash_table_free (bfd *obfd) _bfd_elf_link_hash_table_free (obfd); } +/* Set up the PLT generation stubs in the hash table. */ + +static void +setup_plt_values (struct bfd *output_bfd, + struct riscv_elf_link_hash_table *htab, + unsigned plt_type) +{ + switch (plt_type) + { + case PLT_NORMAL: + htab->plt_header_size = PLT_HEADER_SIZE; + htab->plt_entry_size = PLT_ENTRY_SIZE; + htab->make_plt_header = riscv_make_plt_header; + htab->make_plt_entry = riscv_make_plt_entry; + break; + + case PLT_ZICFILP_UNLABELED: + htab->plt_header_size = PLT_ZICFILP_UNLABELED_HEADER_SIZE; + htab->plt_entry_size = PLT_ZICFILP_UNLABELED_ENTRY_SIZE; + htab->make_plt_header = riscv_make_plt_zicfilp_unlabeled_header; + htab->make_plt_entry = riscv_make_plt_zicfilp_unlabeled_entry; + break; + + default: + _bfd_error_handler (_("%pB: error: unsupported PLT type: %u"), + output_bfd, + plt_type); + bfd_set_error (bfd_error_bad_value); + break; + } +} + /* Create a RISC-V ELF linker hash table. */ static struct bfd_link_hash_table * @@ -511,6 +702,8 @@ riscv_elf_link_hash_table_create (bfd *abfd) ret->max_alignment = (bfd_vma) -1; ret->max_alignment_for_gp = (bfd_vma) -1; + setup_plt_values (abfd, ret, PLT_NORMAL); + /* Create hash table for local ifunc. */ ret->loc_hash_table = htab_try_create (1024, riscv_elf_local_htab_hash, @@ -1259,12 +1452,12 @@ allocate_dynrelocs (struct elf_link_hash_entry *h, void *inf) asection *s = htab->elf.splt; if (s->size == 0) - s->size = PLT_HEADER_SIZE; + s->size = htab->plt_header_size; h->plt.offset = s->size; /* Make room for this entry. */ - s->size += PLT_ENTRY_SIZE; + s->size += htab->plt_entry_size; /* We also need to make an entry in the .got.plt section. */ htab->elf.sgotplt->size += GOT_ENTRY_SIZE; @@ -1456,6 +1649,7 @@ allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h, void *inf) { struct bfd_link_info *info; + struct riscv_elf_link_hash_table *htab; if (h->root.type == bfd_link_hash_indirect) return true; @@ -1464,6 +1658,7 @@ allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h, h = (struct elf_link_hash_entry *) h->root.u.i.link; info = (struct bfd_link_info *) inf; + htab = riscv_elf_hash_table (info); /* Since STT_GNU_IFUNC symbol must go through PLT, we handle it here if it is defined and referenced in a non-shared object. */ @@ -1471,8 +1666,8 @@ allocate_ifunc_dynrelocs (struct elf_link_hash_entry *h, && h->def_regular) return _bfd_elf_allocate_ifunc_dyn_relocs (info, h, &h->dyn_relocs, - PLT_ENTRY_SIZE, - PLT_HEADER_SIZE, + htab->plt_entry_size, + htab->plt_header_size, GOT_ENTRY_SIZE, true); return true; @@ -2472,14 +2667,14 @@ riscv_elf_relocate_section (bfd *output_bfd, if (htab->elf.splt != NULL) { - plt_idx = (h->plt.offset - PLT_HEADER_SIZE) - / PLT_ENTRY_SIZE; + plt_idx = (h->plt.offset - htab->plt_header_size) + / htab->plt_entry_size; off = GOTPLT_HEADER_SIZE + (plt_idx * GOT_ENTRY_SIZE); base_got = htab->elf.sgotplt; } else { - plt_idx = h->plt.offset / PLT_ENTRY_SIZE; + plt_idx = h->plt.offset / htab->plt_entry_size; off = plt_idx * GOT_ENTRY_SIZE; base_got = htab->elf.igotplt; } @@ -3247,8 +3442,7 @@ riscv_elf_finish_dynamic_symbol (bfd *output_bfd, { /* We've decided to create a PLT entry for this symbol. */ bfd_byte *loc; - bfd_vma i, header_address, plt_idx, got_offset, got_address; - uint32_t plt_entry[PLT_ENTRY_INSNS]; + bfd_vma plt_idx, got_offset, got_address; Elf_Internal_Rela rela; asection *plt, *gotplt, *relplt; @@ -3278,36 +3472,29 @@ riscv_elf_finish_dynamic_symbol (bfd *output_bfd, || relplt == NULL) abort (); - /* Calculate the address of the PLT header. */ - header_address = sec_addr (plt); - /* Calculate the index of the entry and the offset of .got.plt entry. For static executables, we don't reserve anything. */ if (plt == htab->elf.splt) { - plt_idx = (h->plt.offset - PLT_HEADER_SIZE) / PLT_ENTRY_SIZE; + plt_idx = (h->plt.offset - htab->plt_header_size) + / htab->plt_entry_size; got_offset = GOTPLT_HEADER_SIZE + (plt_idx * GOT_ENTRY_SIZE); } else { - plt_idx = h->plt.offset / PLT_ENTRY_SIZE; + plt_idx = h->plt.offset / htab->plt_entry_size; got_offset = plt_idx * GOT_ENTRY_SIZE; } /* Calculate the address of the .got.plt entry. */ got_address = sec_addr (gotplt) + got_offset; - /* Find out where the .plt entry should go. */ - loc = plt->contents + h->plt.offset; /* Fill in the PLT entry itself. */ - if (! riscv_make_plt_entry (output_bfd, got_address, - header_address + h->plt.offset, - plt_entry)) + if (! htab->make_plt_entry (output_bfd, gotplt, got_offset, + plt, h->plt.offset)) return false; - for (i = 0; i < PLT_ENTRY_INSNS; i++) - bfd_putl32 (plt_entry[i], loc + 4*i); /* Fill in the initial value of the .got.plt entry. */ loc = gotplt->contents + (got_address - sec_addr (gotplt)); @@ -3595,19 +3782,12 @@ riscv_elf_finish_dynamic_sections (bfd *output_bfd, /* Fill in the head and tail entries in the procedure linkage table. */ if (splt->size > 0) { - int i; - uint32_t plt_header[PLT_HEADER_INSNS]; - ret = riscv_make_plt_header (output_bfd, - sec_addr (htab->elf.sgotplt), - sec_addr (splt), plt_header); + ret = htab->make_plt_header (output_bfd, htab); if (!ret) return ret; - for (i = 0; i < PLT_HEADER_INSNS; i++) - bfd_putl32 (plt_header[i], splt->contents + 4*i); - elf_section_data (splt->output_section)->this_hdr.sh_entsize - = PLT_ENTRY_SIZE; + = htab->plt_entry_size; } } @@ -3661,7 +3841,18 @@ static bfd_vma riscv_elf_plt_sym_val (bfd_vma i, const asection *plt, const arelent *rel ATTRIBUTE_UNUSED) { - return plt->vma + PLT_HEADER_SIZE + i * PLT_ENTRY_SIZE; + unsigned plt_type = _bfd_riscv_elf_tdata (plt->owner)->plt_type; + switch (plt_type) + { + case PLT_NORMAL: + return plt->vma + (PLT_HEADER_SIZE) + (i * PLT_ENTRY_SIZE); + + case PLT_ZICFILP_UNLABELED: + return plt->vma + PLT_ZICFILP_UNLABELED_HEADER_SIZE + (i * PLT_ZICFILP_UNLABELED_ENTRY_SIZE); + + default: + abort (); + } } /* Used to decide how to sort relocs in an optimal manner for the @@ -5753,6 +5944,43 @@ riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h, h->other |= STO_RISCV_VARIANT_CC; } +/* Implement elf_backend_setup_gnu_properties for RISC-V. It serves as a + wrapper function for _bfd_riscv_elf_link_setup_gnu_properties to account + for the effect of GNU properties of the output_bfd. */ + +static bfd * +elfNN_riscv_link_setup_gnu_properties (struct bfd_link_info *info) +{ + uint32_t and_prop = _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop; + + bfd *pbfd = _bfd_riscv_elf_link_setup_gnu_properties (info, &and_prop); + + _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop = and_prop; + + if (and_prop & GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED) + _bfd_riscv_elf_tdata (info->output_bfd)->plt_type = PLT_ZICFILP_UNLABELED; + + setup_plt_values (info->output_bfd, riscv_elf_hash_table (info), + _bfd_riscv_elf_tdata (info->output_bfd)->plt_type); + + return pbfd; +} + +/* Implement elf_backend_merge_gnu_properties for RISC-V. It serves as a + wrapper function for _bfd_riscv_elf_merge_gnu_properties to account + for the effect of GNU properties of the output_bfd. */ + +static bool +elfNN_riscv_merge_gnu_properties (struct bfd_link_info *info, bfd *abfd, + bfd *bbfd ATTRIBUTE_UNUSED, + elf_property *aprop, elf_property *bprop) +{ + uint32_t and_prop = _bfd_riscv_elf_tdata (info->output_bfd)->gnu_and_prop; + + return _bfd_riscv_elf_merge_gnu_properties (info, abfd, aprop, bprop, + and_prop); +} + #define TARGET_LITTLE_SYM riscv_elfNN_vec #define TARGET_LITTLE_NAME "elfNN-littleriscv" #define TARGET_BIG_SYM riscv_elfNN_be_vec @@ -5785,6 +6013,7 @@ riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h, #define elf_info_to_howto riscv_info_to_howto_rela #define bfd_elfNN_bfd_relax_section _bfd_riscv_relax_section #define bfd_elfNN_mkobject elfNN_riscv_mkobject +#define bfd_elfNN_get_synthetic_symtab elfNN_riscv_get_synthetic_symtab #define elf_backend_additional_program_headers \ riscv_elf_additional_program_headers #define elf_backend_modify_segment_map riscv_elf_modify_segment_map @@ -5792,6 +6021,9 @@ riscv_elf_merge_symbol_attribute (struct elf_link_hash_entry *h, #define elf_backend_init_index_section _bfd_elf_init_1_index_section +#define elf_backend_setup_gnu_properties elfNN_riscv_link_setup_gnu_properties +#define elf_backend_merge_gnu_properties elfNN_riscv_merge_gnu_properties + #define elf_backend_can_gc_sections 1 #define elf_backend_can_refcount 1 #define elf_backend_want_got_plt 1 diff --git a/bfd/elfxx-aarch64.c b/bfd/elfxx-aarch64.c index 45a0205..551f74e 100644 --- a/bfd/elfxx-aarch64.c +++ b/bfd/elfxx-aarch64.c @@ -708,7 +708,7 @@ static inline bool bfd_is_non_dynamic_elf_object (bfd *abfd, const struct elf_backend_data *out_be) { const struct elf_backend_data *in_be = get_elf_backend_data (abfd); - + return bfd_get_flavour (abfd) == bfd_target_elf_flavour && bfd_count_sections (abfd) != 0 && (abfd->flags & (DYNAMIC | BFD_PLUGIN | BFD_LINKER_CREATED)) == 0 @@ -930,28 +930,20 @@ _bfd_aarch64_elf_link_setup_gnu_properties (struct bfd_link_info *info) GNU properties (if found). */ bfd *pbfd = _bfd_elf_link_setup_gnu_properties (info); - /* If pbfd has any GNU_PROPERTY_AARCH64_FEATURE_1_AND properties, update - outprop accordingly. */ if (pbfd != NULL) { - /* The property list is sorted in order of type. */ - for (elf_property_list *p = elf_properties (pbfd); - (p != NULL) - && (GNU_PROPERTY_AARCH64_FEATURE_1_AND <= p->property.pr_type); - p = p->next) - { - /* This merge of features should happen only once as all the identical - properties are supposed to have been merged at this stage by - _bfd_elf_link_setup_gnu_properties(). */ - if (p->property.pr_type == GNU_PROPERTY_AARCH64_FEATURE_1_AND) - { - outprop = (p->property.u.number - & (GNU_PROPERTY_AARCH64_FEATURE_1_BTI - | GNU_PROPERTY_AARCH64_FEATURE_1_PAC - | GNU_PROPERTY_AARCH64_FEATURE_1_GCS)); - break; - } - } + elf_property_list *p; + elf_property_list *plist = elf_properties (pbfd); + + /* If pbfd has any GNU_PROPERTY_AARCH64_FEATURE_1_AND properties, update + outprop accordingly. */ + if ((p = _bfd_elf_find_property (plist, + GNU_PROPERTY_AARCH64_FEATURE_1_AND, NULL)) + != NULL) + outprop = p->property.u.number + & (GNU_PROPERTY_AARCH64_FEATURE_1_BTI + | GNU_PROPERTY_AARCH64_FEATURE_1_PAC + | GNU_PROPERTY_AARCH64_FEATURE_1_GCS); } tdata->gnu_property_aarch64_feature_1_and = outprop; diff --git a/bfd/elfxx-aarch64.h b/bfd/elfxx-aarch64.h index 506f4a9..bd3642c 100644 --- a/bfd/elfxx-aarch64.h +++ b/bfd/elfxx-aarch64.h @@ -129,13 +129,38 @@ typedef enum ERRAT_ADRP = (1 << 2), /* Erratum workarounds using ADRP are allowed. */ } erratum_84319_opts; +/* An enum to define the various modes of MTE operation. + At this time, except AARCH64_MEMTAG_MODE_NONE, the enumerator constants are + the same as specified in the Memtag ABI Extension to ELF for the Arm 64-bit + Architecture (AArch64) document (the intent being that this keeps the + emission of the associated dynamic tag simple).*/ +typedef enum +{ + AARCH64_MEMTAG_MODE_SYNC = 0, + AARCH64_MEMTAG_MODE_ASYNC = 1, + AARCH64_MEMTAG_MODE_NONE = 2, +} aarch64_memtag_mode_type; + +/* A structure to encompass all information about memtag feature related + command line options. */ +struct aarch64_memtag_opts +{ + /* Mode of MTE operation. */ + aarch64_memtag_mode_type memtag_mode; + + /* Whether stack accesses use MTE insns. */ + unsigned int memtag_stack; +}; + +typedef struct aarch64_memtag_opts aarch64_memtag_opts; + extern void bfd_elf64_aarch64_set_options (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int, - const aarch64_protection_opts *); + const aarch64_protection_opts *, const aarch64_memtag_opts *); extern void bfd_elf32_aarch64_set_options (bfd *, struct bfd_link_info *, int, int, int, int, erratum_84319_opts, int, - const aarch64_protection_opts *); + const aarch64_protection_opts *, const aarch64_memtag_opts *); /* AArch64 stub generation support for ELF64. Called from the linker. */ extern int elf64_aarch64_setup_section_lists diff --git a/bfd/elfxx-loongarch.c b/bfd/elfxx-loongarch.c index 9498022..6268c47 100644 --- a/bfd/elfxx-loongarch.c +++ b/bfd/elfxx-loongarch.c @@ -1390,7 +1390,7 @@ static loongarch_reloc_howto_type loongarch_howto_table[] = 0xffffffff, /* dst_mask */ false, /* pcrel_offset */ BFD_RELOC_LARCH_32_PCREL, /* bfd_reloc_code_real_type */ - NULL, /* adjust_reloc_bits */ + reloc_sign_bits, /* adjust_reloc_bits */ NULL), /* larch_reloc_type_name */ /* The paired relocation may be relaxed. */ @@ -2171,11 +2171,11 @@ loongarch_elf_add_sub_reloc_uleb128 (bfd *abfd, if (output_bfd != NULL) return bfd_reloc_continue; - relocation = symbol->value + symbol->section->output_section->vma - + symbol->section->output_offset + reloc_entry->addend; + relocation = (symbol->value + symbol->section->output_section->vma + + symbol->section->output_offset + reloc_entry->addend); - bfd_size_type octets = reloc_entry->address - * bfd_octets_per_byte (abfd, input_section); + bfd_size_type octets = (reloc_entry->address + * bfd_octets_per_byte (abfd, input_section)); if (!bfd_reloc_offset_in_range (reloc_entry->howto, abfd, input_section, octets)) return bfd_reloc_outofrange; @@ -2195,8 +2195,11 @@ loongarch_elf_add_sub_reloc_uleb128 (bfd *abfd, break; } - bfd_vma mask = (1 << (7 * len)) - 1; - relocation = relocation & mask; + if (7 * len < sizeof (bfd_vma)) + { + bfd_vma mask = ((bfd_vma) 1 << (7 * len)) - 1; + relocation = relocation & mask; + } loongarch_write_unsigned_leb128 (p, len, relocation); return bfd_reloc_ok; } diff --git a/bfd/elfxx-mips.c b/bfd/elfxx-mips.c index ace1d4b..3c38f51 100644 --- a/bfd/elfxx-mips.c +++ b/bfd/elfxx-mips.c @@ -2294,6 +2294,17 @@ lo16_reloc_p (int r_type) } static inline bool +tls_hi16_reloc_p (int r_type) +{ + return (r_type == R_MIPS_TLS_DTPREL_HI16 + || r_type == R_MIPS_TLS_TPREL_HI16 + || r_type == R_MIPS16_TLS_DTPREL_HI16 + || r_type == R_MIPS16_TLS_TPREL_HI16 + || r_type == R_MICROMIPS_TLS_DTPREL_HI16 + || r_type == R_MICROMIPS_TLS_TPREL_HI16); +} + +static inline bool mips16_call_reloc_p (int r_type) { return r_type == R_MIPS16_26 || r_type == R_MIPS16_CALL16; @@ -2599,23 +2610,23 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, addend is adjusted for the fact that the low part is sign extended. For example, an addend of 0x38000 would have 0x0004 in the high part and 0x8000 (=0xff..f8000) in the low part. - To extract the actual addend, calculate (a) - ((hi & 0xffff) << 16) + ((lo & 0xffff) ^ 0x8000) - 0x8000. - We will be applying (symbol + addend) & 0xffff to the low insn, - and we want to apply (b) (symbol + addend + 0x8000) >> 16 to the - high insn (the +0x8000 adjusting for when the applied low part is - negative). Substituting (a) into (b) and recognising that - (hi & 0xffff) is already in the high insn gives a high part - addend adjustment of (lo & 0xffff) ^ 0x8000. */ - vallo = (bfd_get_32 (abfd, location) & 0xffff) ^ 0x8000; + To extract the actual addend, calculate + ((hi & 0xffff) << 16) + ((lo & 0xffff) ^ 0x8000) - 0x8000. */ + vallo = _bfd_mips_elf_sign_extend (bfd_get_32 (abfd, location) & 0xffff, 16); _bfd_mips_elf_reloc_shuffle (abfd, reloc_entry->howto->type, false, location); + /* Add in the separate addend, if any. Since we are REL here this + will have been set and the in-place addend cleared if we have + been called from GAS via `bfd_install_relocation'. */ + vallo += reloc_entry->addend; tdata = mips_elf_tdata (abfd); while (tdata->mips_hi16_list != NULL) { bfd_reloc_status_type ret; struct mips_hi16 *hi; + bfd_vma addhi; + bfd_vma addlo; hi = tdata->mips_hi16_list; @@ -2631,7 +2642,19 @@ _bfd_mips_elf_lo16_reloc (bfd *abfd, arelent *reloc_entry, asymbol *symbol, else if (hi->rel.howto->type == R_MICROMIPS_GOT16) hi->rel.howto = MIPS_ELF_RTYPE_TO_HOWTO (abfd, R_MICROMIPS_HI16, false); - hi->rel.addend += vallo; + /* We will be applying (symbol + addend) & 0xffff to the low insn, + and we want to apply (symbol + addend + 0x8000) >> 16 to the + high insn (the +0x8000 adjusting for when the applied low part is + negative). */ + addhi = (hi->rel.addend + 0x8000) & ~(bfd_vma) 0xffff; + addlo = vallo; + + /* For a PC-relative relocation the PCLO16 part of the addend + is relative to its PC and not ours, so we need to adjust it. */ + if (hi->rel.howto->type == R_MIPS_PCHI16) + addlo -= reloc_entry->address - hi->rel.address; + + hi->rel.addend = addhi + _bfd_mips_elf_sign_extend (addlo & 0xffff, 16); ret = _bfd_mips_elf_generic_reloc (abfd, &hi->rel, symbol, hi->data, hi->input_section, output_bfd, @@ -2707,6 +2730,29 @@ _bfd_mips_elf_generic_reloc (bfd *abfd ATTRIBUTE_UNUSED, arelent *reloc_entry, /* Add in the separate addend, if any. */ val += reloc_entry->addend; + /* The high 16 bits of the addend are stored in the high insn, the + low 16 bits in the low insn, but there is a catch: You can't + just concatenate the high and low parts. The high part of the + addend is adjusted for the fact that the low part is sign + extended. For example, an addend of 0x38000 would have 0x0004 in + the high part and 0x8000 (=0xff..f8000) in the low part. + We will be applying (symbol + addend) & 0xffff to the low insn, + and we want to apply (symbol + addend + 0x8000) >> 16 to the + high insn (the +0x8000 adjusting for when the applied low part is + negative). Analogously for the higher parts of a 64-bit addend. */ + if (reloc_entry->howto->bitsize == 16 + && reloc_entry->howto->rightshift % 16 == 0) +#ifdef BFD64 + val += 0x800080008000ULL >> (48 - reloc_entry->howto->rightshift); +#else + { + if (reloc_entry->howto->rightshift <= 16) + val += 0x8000 >> (16 - reloc_entry->howto->rightshift); + else + abort (); + } +#endif + /* Add VAL to the relocation field. */ _bfd_mips_elf_reloc_unshuffle (abfd, reloc_entry->howto->type, false, location); @@ -8277,14 +8323,44 @@ mips_elf_add_lo16_rel_addend (bfd *abfd, bfd_vma l; r_type = ELF_R_TYPE (abfd, rel->r_info); - if (mips16_reloc_p (r_type)) - lo16_type = R_MIPS16_LO16; - else if (micromips_reloc_p (r_type)) - lo16_type = R_MICROMIPS_LO16; - else if (r_type == R_MIPS_PCHI16) - lo16_type = R_MIPS_PCLO16; - else - lo16_type = R_MIPS_LO16; + switch (r_type) + { + case R_MIPS_HI16: + case R_MIPS_GOT16: + lo16_type = R_MIPS_LO16; + break; + case R_MIPS_PCHI16: + lo16_type = R_MIPS_PCLO16; + break; + case R_MIPS_TLS_DTPREL_HI16: + lo16_type = R_MIPS_TLS_DTPREL_LO16; + break; + case R_MIPS_TLS_TPREL_HI16: + lo16_type = R_MIPS_TLS_TPREL_LO16; + break; + case R_MIPS16_HI16: + case R_MIPS16_GOT16: + lo16_type = R_MIPS16_LO16; + break; + case R_MIPS16_TLS_DTPREL_HI16: + lo16_type = R_MIPS16_TLS_DTPREL_LO16; + break; + case R_MIPS16_TLS_TPREL_HI16: + lo16_type = R_MIPS16_TLS_TPREL_LO16; + break; + case R_MICROMIPS_HI16: + case R_MICROMIPS_GOT16: + lo16_type = R_MICROMIPS_LO16; + break; + case R_MICROMIPS_TLS_DTPREL_HI16: + lo16_type = R_MICROMIPS_TLS_DTPREL_LO16; + break; + case R_MICROMIPS_TLS_TPREL_HI16: + lo16_type = R_MICROMIPS_TLS_TPREL_LO16; + break; + default: + abort (); + } /* The combined value is the sum of the HI16 addend, left-shifted by sixteen bits, and the LO16 addend, sign extended. (Usually, the @@ -8313,6 +8389,10 @@ mips_elf_add_lo16_rel_addend (bfd *abfd, contents); l <<= lo16_howto->rightshift; + /* For a PC-relative relocation the PCLO16 part of the addend + is relative to its PC and not ours, so we need to adjust it. */ + if (r_type == R_MIPS_PCHI16) + l = (l - (lo16_relocation->r_offset - rel->r_offset)) & 0xffff; l = _bfd_mips_elf_sign_extend (l, 16); *addend <<= 16; @@ -10508,7 +10588,8 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, if (hi16_reloc_p (r_type) || (got16_reloc_p (r_type) && mips_elf_local_relocation_p (input_bfd, rel, - local_sections))) + local_sections)) + || tls_hi16_reloc_p (r_type)) { if (!mips_elf_add_lo16_rel_addend (input_bfd, input_section, rel, relend, @@ -10546,7 +10627,9 @@ _bfd_mips_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info, if (!rela_relocation_p && rel->r_addend) { addend += rel->r_addend; - if (hi16_reloc_p (r_type) || got16_reloc_p (r_type)) + if (hi16_reloc_p (r_type) + || got16_reloc_p (r_type) + || tls_hi16_reloc_p (r_type)) addend = mips_elf_high (addend); else if (r_type == R_MIPS_HIGHER) addend = mips_elf_higher (addend); diff --git a/bfd/elfxx-riscv.c b/bfd/elfxx-riscv.c index ec25491..1200032 100644 --- a/bfd/elfxx-riscv.c +++ b/bfd/elfxx-riscv.c @@ -1022,6 +1022,12 @@ static const struct elf_reloc_map riscv_reloc_map[] = { BFD_RELOC_RISCV_SUB_ULEB128, R_RISCV_SUB_ULEB128 }, }; +struct riscv_profiles +{ + const char *profile_name; + const char *profile_string; +}; + /* Given a BFD reloc type, return a howto structure. */ reloc_howto_type * @@ -1148,7 +1154,8 @@ riscv_elf_ignore_reloc (bfd *abfd ATTRIBUTE_UNUSED, /* Always add implicit extensions for the SUBSET. */ static bool -check_implicit_always (riscv_subset_t *subset ATTRIBUTE_UNUSED) +check_implicit_always (riscv_parse_subset_t *rps ATTRIBUTE_UNUSED, + const riscv_subset_t *subset ATTRIBUTE_UNUSED) { return true; } @@ -1156,20 +1163,45 @@ check_implicit_always (riscv_subset_t *subset ATTRIBUTE_UNUSED) /* Add implicit extensions only when the version of SUBSET less than 2.1. */ static bool -check_implicit_for_i (riscv_subset_t *subset) +check_implicit_for_i (riscv_parse_subset_t *rps ATTRIBUTE_UNUSED, + const riscv_subset_t *subset ATTRIBUTE_UNUSED) { return (subset->major_version < 2 || (subset->major_version == 2 && subset->minor_version < 1)); } +/* Add the IMPLICIT only when the 'f' extension is also available + and XLEN is 32. */ + +static bool +check_implicit_for_zcf (riscv_parse_subset_t *rps, + const riscv_subset_t *subset ATTRIBUTE_UNUSED) +{ + return (rps != NULL + && rps->xlen != NULL + && *rps->xlen == 32 + && riscv_subset_supports (rps, "f")); +} + +/* Add the implicit only when 'd' extension is also available. */ + +static bool +check_implicit_for_zcd (riscv_parse_subset_t *rps, + const riscv_subset_t *subset ATTRIBUTE_UNUSED) +{ + return (rps != NULL + && riscv_subset_supports (rps, "d")); +} + /* Record all implicit information for the subsets. */ struct riscv_implicit_subset { const char *ext; const char *implicit_exts; /* A function to determine if we need to add the implicit subsets. */ - bool (*check_func) (riscv_subset_t *); + bool (*check_func) (riscv_parse_subset_t *, + const riscv_subset_t *); }; /* Please added in order since this table is only run once time. */ static struct riscv_implicit_subset riscv_implicit_subsets[] = @@ -1191,6 +1223,9 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"xsfvqmaccdod", "+zve32x,+zvl128b", check_implicit_always}, {"xsfvfnrclipxfqf", "+zve32f", check_implicit_always}, + {"xtheadvector", "+zicsr", check_implicit_always}, + {"xtheadzvamo", "+zaamo", check_implicit_always}, + {"v", "+zve64d,+zvl128b", check_implicit_always}, {"zvfh", "+zvfhmin,+zfhmin", check_implicit_always}, {"zvfhmin", "+zve32f", check_implicit_always}, @@ -1213,15 +1248,11 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zvl128b", "+zvl64b", check_implicit_always}, {"zvl64b", "+zvl32b", check_implicit_always}, - {"zcb", "+zca", check_implicit_always}, - {"zcd", "+d,+zca", check_implicit_always}, - {"zcf", "+f,+zca", check_implicit_always}, - {"zcmp", "+zca", check_implicit_always}, - {"zcmop", "+zca", check_implicit_always}, - {"zcmt", "+zca,+zicsr", check_implicit_always}, - {"zicfilp", "+zicsr", check_implicit_always}, {"zicfiss", "+zimop,+zicsr", check_implicit_always}, + {"zclsd", "+zca,+zilsd", check_implicit_always}, + + {"sha", "+h,+ssstateen,+shcounterenw,+shvstvala,+shtvala,+shvstvecd,+shvsatpa,+shgatpa", check_implicit_always}, {"shcounterenw", "+h", check_implicit_always}, {"shgatpa", "+h", check_implicit_always}, @@ -1233,6 +1264,9 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zhinx", "+zhinxmin", check_implicit_always}, {"zhinxmin", "+zfinx", check_implicit_always}, + {"zcd", "+d,+zca", check_implicit_always}, + {"zcf", "+f,+zca", check_implicit_always}, + {"q", "+d", check_implicit_always}, {"zqinx", "+zdinx", check_implicit_always}, @@ -1246,6 +1280,16 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zfinx", "+zicsr", check_implicit_always}, {"f", "+zicsr", check_implicit_always}, + {"zce", "+zcb,+zcmp,+zcmt", check_implicit_always}, + {"zce", "+zcf", check_implicit_for_zcf}, + {"zcb", "+zca", check_implicit_always}, + {"zcmp", "+zca", check_implicit_always}, + {"zcmop", "+zca", check_implicit_always}, + {"zcmt", "+zca,+zicsr", check_implicit_always}, + {"c", "+zcf", check_implicit_for_zcf}, + {"c", "+zcd", check_implicit_for_zcd}, + {"c", "+zca", check_implicit_always}, + {"b", "+zba,+zbb,+zbs", check_implicit_always}, {"zk", "+zkn,+zkr,+zkt", check_implicit_always}, @@ -1260,9 +1304,11 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"zvks", "+zvksed,+zvksh,+zvkb,+zvkt", check_implicit_always}, {"smaia", "+ssaia", check_implicit_always}, + {"smcdeleg", "+ssccfg", check_implicit_always}, {"smcsrind", "+sscsrind", check_implicit_always}, {"smcntrpmf", "+zicsr", check_implicit_always}, {"smctr", "+zicsr", check_implicit_always}, + {"smrnmi", "+zicsr", check_implicit_always}, {"smstateen", "+ssstateen", check_implicit_always}, {"smepmp", "+zicsr", check_implicit_always}, {"smdbltrp", "+zicsr", check_implicit_always}, @@ -1270,6 +1316,7 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {"smmpm", "+zicsr", check_implicit_always}, {"ssaia", "+zicsr", check_implicit_always}, + {"ssccfg", "+sscsrind", check_implicit_always}, {"sscsrind", "+zicsr", check_implicit_always}, {"sscofpmf", "+zicsr", check_implicit_always}, {"sscounterenw", "+zicsr", check_implicit_always}, @@ -1288,6 +1335,61 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] = {NULL, NULL, NULL} }; +/* This table records the mapping form RISC-V Profiles into march string. */ +static struct riscv_profiles riscv_profiles_table[] = +{ + /* RVI20U only contains the base extension 'i' as mandatory extension. */ + {"rvi20u64", "rv64i"}, + {"rvi20u32", "rv32i"}, + + /* RVA20U contains the 'i,m,a,f,d,c,zicsr,zicntr,ziccif,ziccrse,ziccamoa, + zicclsm,za128rs' as mandatory extensions. */ + {"rva20u64", "rv64imafdc_zicsr_zicntr_ziccif_ziccrse_ziccamoa" + "_zicclsm_za128rs"}, + + /* RVA22U contains the 'i,m,a,f,d,c,zicsr,zihintpause,zba,zbb,zbs,zicntr, + zihpm,ziccif,ziccrse,ziccamoa, zicclsm,zic64b,za64rs,zicbom,zicbop,zicboz, + zfhmin,zkt' as mandatory extensions. */ + {"rva22u64", "rv64imafdc_zicsr_zicntr_ziccif_ziccrse_ziccamoa" + "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop" + "_zicboz_zfhmin_zkt"}, + + /* RVA23 contains all mandatory base ISA for RVA22U64 and the new extension + 'v,zihintntl,zvfhmin,zvbb,zvkt,zicond,zimop,zcmop,zfa,zawrs' as mandatory + extensions. */ + {"rva23u64", "rv64imafdcbv_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa" + "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop" + "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb" + "_zfa_zawrs_supm"}, + + /* RVA23S contains all mandatory base ISA for RVA23U64 and the privileged + extensions as mandatory extensions. */ + {"rva23s64", "rv64imafdcbv_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa" + "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop" + "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb" + "_zfa_zawrs_supm_svbare_svade_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt" + "_svinval_svnapot_sstc_sscofpmf_ssnpm_ssu64xl_sha"}, + + /* RVB23 contains all mandatory base ISA for RVA22U64 and the new extension + 'zihintntl,zicond,zimop,zcmop,zfa,zawrs' as mandatory + extensions. */ + {"rvb23u64", "rv64imafdcb_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa" + "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop" + "_zicboz_zfhmin_zkt_zihintntl_zicond_zimop_zcmop_zcb" + "_zfa_zawrs_supm"}, + + /* RVB23S contains all mandatory base ISA for RVB23U64 and the privileged + extensions as mandatory extensions. */ + {"rvb23s64", "rv64imafdcb_zicsr_zicntr_zihpm_ziccif_ziccrse_ziccamoa" + "_zicclsm_zic64b_za64rs_zihintpause_zba_zbb_zbs_zicbom_zicbop" + "_zicboz_zfhmin_zkt_zvfhmin_zvbb_zvkt_zihintntl_zicond_zimop_zcmop_zcb" + "_zfa_zawrs_supm_svbare_svade_ssccptr_sstvecd_sstvala_sscounterenw_svpbmt" + "_svinval_svnapot_sstc_sscofpmf_ssu64xl"}, + + /* Terminate the list. */ + {NULL, NULL} +}; + /* For default_enable field, decide if the extension should be enbaled by default. */ @@ -1363,6 +1465,7 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"zimop", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zicfiss", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zicfilp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zilsd", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zmmul", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"za64rs", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"za128rs", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -1437,16 +1540,19 @@ static struct riscv_supported_ext riscv_supported_std_z_ext[] = {"ztso", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zca", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcb", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zce", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcd", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcmop", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcmp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"zcmt", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"zclsd", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {NULL, 0, 0, 0, 0} }; static struct riscv_supported_ext riscv_supported_std_s_ext[] = { + {"sha", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"shcounterenw", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"shgatpa", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"shtvala", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -1454,6 +1560,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] = {"shvstvala", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"shvstvecd", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smaia", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"smcdeleg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smcsrind", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smcntrpmf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smctr", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -1462,6 +1569,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] = {"smstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smdbltrp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"ssaia", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"ssccfg", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"ssccptr", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"sscsrind", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"sscofpmf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -1479,6 +1587,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] = {"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"svnapot", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"svpbmt", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"svvptc", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"ssqosid", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"ssnpm", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {"smnpm", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, @@ -1523,6 +1632,10 @@ static struct riscv_supported_ext riscv_supported_vendor_x_ext[] = {"xsfvqmaccqoq", ISA_SPEC_CLASS_DRAFT, 1, 0, 0}, {"xsfvqmaccdod", ISA_SPEC_CLASS_DRAFT, 1, 0, 0}, {"xsfvfnrclipxfqf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0}, + {"xmipscbop", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"xmipscmov", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"xmipsexectl", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, + {"xmipslsp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 }, {NULL, 0, 0, 0, 0} }; @@ -1940,10 +2053,11 @@ riscv_parsing_subset_version (const char *p, static const char * riscv_parse_extensions (riscv_parse_subset_t *rps, const char *arch, - const char *p) + const char *p, + bool profile) { - /* First letter must start with i, e or g. */ - if (*p != 'e' && *p != 'i' && *p != 'g') + /* First letter must start with i, e, g or a profile. */ + if (*p != 'e' && *p != 'i' && *p != 'g' && !profile) { rps->error_handler (_("%s: first ISA extension must be `e', `i' or `g'"), @@ -2076,7 +2190,7 @@ riscv_parse_add_implicit_subsets (riscv_parse_subset_t *rps) { riscv_subset_t *subset = NULL; if (riscv_lookup_subset (rps->subset_list, t->ext, &subset) - && t->check_func (subset)) + && t->check_func (rps, subset)) riscv_update_subset1 (rps, subset, t->implicit_exts); } } @@ -2109,7 +2223,7 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps) && riscv_subset_supports (rps, "zcd")) { rps->error_handler - (_("zcmp' is incompatible with `d/zcd' extension")); + (_("zcmp' is incompatible with `d' and `c', or `zcd' extension")); no_conflict = false; } if (riscv_lookup_subset (rps->subset_list, "zcf", &subset) @@ -2127,10 +2241,19 @@ riscv_parse_check_conflicts (riscv_parse_subset_t *rps) no_conflict = false; } if (riscv_lookup_subset (rps->subset_list, "xtheadvector", &subset) - && riscv_lookup_subset (rps->subset_list, "v", &subset)) + && riscv_lookup_subset (rps->subset_list, "zve32x", &subset)) + { + rps->error_handler + (_("`xtheadvector' is conflict with the `v/zve32x' extension")); + no_conflict = false; + } + if (riscv_lookup_subset (rps->subset_list, "zclsd", &subset) + && ((riscv_lookup_subset (rps->subset_list, "c", &subset) + && riscv_lookup_subset (rps->subset_list, "f", &subset)) + || riscv_lookup_subset (rps->subset_list, "zcf", &subset))) { rps->error_handler - (_("`xtheadvector' is conflict with the `v' extension")); + (_("`zclsd' is conflict with the `c+f'/ `zcf' extension")); no_conflict = false; } if (riscv_lookup_subset (rps->subset_list, "ssnpm", &subset) && xlen != 64) @@ -2212,6 +2335,42 @@ riscv_set_default_arch (riscv_parse_subset_t *rps) } } +static bool +riscv_find_profiles (riscv_parse_subset_t *rps, const char **pp) +{ + const char *p = *pp; + + /* Checking if input string contains a Profiles. + There are two cases use Profiles in -march option: + + 1. Only use Profiles in '-march' as input + 2. Mixed Profiles with other extensions + + Use '_' to split Profiles and other extensions. */ + + for (int i = 0; riscv_profiles_table[i].profile_name != NULL; ++i) + { + /* Find profile at the begin. */ + if (startswith (p, riscv_profiles_table[i].profile_name)) + { + /* Handle the profile string. */ + riscv_parse_subset (rps, riscv_profiles_table[i].profile_string); + p += strlen (riscv_profiles_table[i].profile_name); + /* Handle string after profiles if exists. If missing underline + bewteen profile and other extensions, warn the user but not deal + as an error. */ + if (*p != '\0' && *p != '_') + _bfd_error_handler + (_("Warning: should use \"_\" to contact Profiles with other " + "extensions")); + *pp = p; + return true; + } + } + /* Not found profile, return directly. */ + return false; +} + /* Function for parsing ISA string. Return Value: @@ -2249,8 +2408,14 @@ riscv_parse_subset (riscv_parse_subset_t *rps, } } + bool profile = false; p = arch; - if (startswith (p, "rv32")) + if (riscv_find_profiles (rps, &p)) + { + /* Check if using Profiles. */ + profile = true; + } + else if (startswith (p, "rv32")) { *rps->xlen = 32; p += 4; @@ -2271,13 +2436,13 @@ riscv_parse_subset (riscv_parse_subset_t *rps, string is empty. */ if (strlen (arch)) rps->error_handler ( - _("%s: ISA string must begin with rv32 or rv64"), + _("%s: ISA string must begin with rv32, rv64 or Profiles"), arch); return false; } /* Parse single standard and prefixed extensions. */ - if (riscv_parse_extensions (rps, arch, p) == NULL) + if (riscv_parse_extensions (rps, arch, p, profile) == NULL) return false; /* Finally add implicit extensions according to the current @@ -2452,7 +2617,7 @@ riscv_remove_subset (riscv_subset_list_t *subset_list, called from riscv_update_subset./ The IMPLICIT_EXTS, +extension[version] [,...,+extension_n[version_n]] - -extension [,...,-extension_n], + (Deprecated) -extension [,...,-extension_n], full ISA. */ static bool @@ -2544,16 +2709,26 @@ riscv_update_subset1 (riscv_parse_subset_t *rps, return false; } - if (explicit_subset == NULL - && (strcmp (subset, "i") == 0 - || strcmp (subset, "e") == 0 - || strcmp (subset, "g") == 0)) + if (explicit_subset == NULL) { - rps->error_handler - (_("%scannot + or - base extension `%s' in %s `%s'"), - errmsg_internal, subset, errmsg_caller, implicit_exts); - free (subset); - return false; + if (removed) + { + rps->error_handler + (_("%sdeprecated - extension `%s' in %s `%s'"), + errmsg_internal, subset, errmsg_caller, implicit_exts); + free (subset); + return false; + } + else if (strcmp (subset, "i") == 0 + || strcmp (subset, "e") == 0 + || strcmp (subset, "g") == 0) + { + rps->error_handler + (_("%scannot + base extension `%s' in %s `%s'"), + errmsg_internal, subset, errmsg_caller, implicit_exts); + free (subset); + return false; + } } if (removed) @@ -2579,8 +2754,8 @@ riscv_update_subset1 (riscv_parse_subset_t *rps, return no_conflict; } -/* Add/Remove an extension to/from the subset list. This is used for - the .option rvc or norvc, and .option arch directives. */ +/* Add an extension to/from the subset list. This is used for the .option rvc + and .option arch directives. */ bool riscv_update_subset (riscv_parse_subset_t *rps, @@ -2589,6 +2764,16 @@ riscv_update_subset (riscv_parse_subset_t *rps, return riscv_update_subset1 (rps, NULL, str); } +/* Called from .option norvc directives. */ + +bool +riscv_update_subset_norvc (riscv_parse_subset_t *rps) +{ + return riscv_update_subset1 (rps, rps->subset_list->head, + "-c,-zca,-zcd,-zcf,-zcb,-zce,-zcmp,-zcmt," + "-zcmop,-zclsd"); +} + /* Check if the FEATURE subset is supported or not in the subset list. Return true if it is supported; Otherwise, return false. */ @@ -2625,10 +2810,9 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "zifencei"); case INSN_CLASS_ZIHINTNTL: return riscv_subset_supports (rps, "zihintntl"); - case INSN_CLASS_ZIHINTNTL_AND_C: - return (riscv_subset_supports (rps, "zihintntl") - && (riscv_subset_supports (rps, "c") - || riscv_subset_supports (rps, "zca"))); + case INSN_CLASS_ZIHINTNTL_AND_ZCA: + return riscv_subset_supports (rps, "zihintntl") + && riscv_subset_supports (rps, "zca"); case INSN_CLASS_ZIHINTPAUSE: return riscv_subset_supports (rps, "zihintpause"); case INSN_CLASS_ZIMOP: @@ -2663,17 +2847,12 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "d"); case INSN_CLASS_Q: return riscv_subset_supports (rps, "q"); - case INSN_CLASS_C: - return (riscv_subset_supports (rps, "c") - || riscv_subset_supports (rps, "zca")); - case INSN_CLASS_F_AND_C: - return (riscv_subset_supports (rps, "f") - && (riscv_subset_supports (rps, "c") - || riscv_subset_supports (rps, "zcf"))); - case INSN_CLASS_D_AND_C: - return (riscv_subset_supports (rps, "d") - && (riscv_subset_supports (rps, "c") - || riscv_subset_supports (rps, "zcd"))); + case INSN_CLASS_ZCA: + return riscv_subset_supports (rps, "zca"); + case INSN_CLASS_ZCF: + return riscv_subset_supports (rps, "zcf"); + case INSN_CLASS_ZCD: + return riscv_subset_supports (rps, "zcd"); case INSN_CLASS_F_INX: return (riscv_subset_supports (rps, "f") || riscv_subset_supports (rps, "zfinx")); @@ -2801,6 +2980,10 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, case INSN_CLASS_SMCTR_OR_SSCTR: return (riscv_subset_supports (rps, "smctr") || riscv_subset_supports (rps, "ssctr")); + case INSN_CLASS_ZILSD: + return riscv_subset_supports (rps, "zilsd"); + case INSN_CLASS_ZCLSD: + return riscv_subset_supports (rps, "zclsd"); case INSN_CLASS_SMRNMI: return riscv_subset_supports (rps, "smrnmi"); case INSN_CLASS_SVINVAL: @@ -2863,6 +3046,14 @@ riscv_multi_subset_supports (riscv_parse_subset_t *rps, return riscv_subset_supports (rps, "xsfvqmaccdod"); case INSN_CLASS_XSFVFNRCLIPXFQF: return riscv_subset_supports (rps, "xsfvfnrclipxfqf"); + case INSN_CLASS_XMIPSCBOP: + return riscv_subset_supports (rps, "xmipscbop"); + case INSN_CLASS_XMIPSCMOV: + return riscv_subset_supports (rps, "xmipscmov"); + case INSN_CLASS_XMIPSEXECTL: + return riscv_subset_supports (rps, "xmipsexectl"); + case INSN_CLASS_XMIPSLSP: + return riscv_subset_supports (rps, "xmipslsp"); default: rps->error_handler (_("internal: unreachable INSN_CLASS_*")); @@ -2908,11 +3099,10 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return "zicfilp"; case INSN_CLASS_ZIHINTNTL: return "zihintntl"; - case INSN_CLASS_ZIHINTNTL_AND_C: + case INSN_CLASS_ZIHINTNTL_AND_ZCA: if (!riscv_subset_supports (rps, "zihintntl")) { - if (!riscv_subset_supports (rps, "c") - && !riscv_subset_supports (rps, "zca")) + if (!riscv_subset_supports (rps, "zca")) return _("zihintntl' and `c', or `zihintntl' and `zca"); else return "zihintntl"; @@ -2943,30 +3133,12 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return "d"; case INSN_CLASS_Q: return "q"; - case INSN_CLASS_C: + case INSN_CLASS_ZCA: return _("c' or `zca"); - case INSN_CLASS_F_AND_C: - if (!riscv_subset_supports (rps, "f")) - { - if (!riscv_subset_supports (rps, "c") - && !riscv_subset_supports (rps, "zcf")) - return _("f' and `c', or `f' and `zcf"); - else - return "f"; - } - else - return _("c' or `zcf"); - case INSN_CLASS_D_AND_C: - if (!riscv_subset_supports (rps, "d")) - { - if (!riscv_subset_supports (rps, "c") - && !riscv_subset_supports (rps, "zcd")) - return _("d' and `c', or `d' and `zcd"); - else - return "d"; - } - else - return _("c' or `zcd"); + case INSN_CLASS_ZCF: + return _("f' and `c', or `zcf"); + case INSN_CLASS_ZCD: + return _("d' and `c', or `zcd"); case INSN_CLASS_F_INX: return _("f' or `zfinx"); case INSN_CLASS_D_INX: @@ -3110,6 +3282,10 @@ riscv_multi_subset_supports_ext (riscv_parse_subset_t *rps, return "zcmt"; case INSN_CLASS_SMCTR_OR_SSCTR: return _("smctr' or `ssctr"); + case INSN_CLASS_ZILSD: + return "zilsd"; + case INSN_CLASS_ZCLSD: + return "zclsd"; case INSN_CLASS_SMRNMI: return "smrnmi"; case INSN_CLASS_SVINVAL: @@ -3214,3 +3390,174 @@ riscv_print_extensions (void) } printf ("\n"); } + +/* Find the first input bfd with GNU property and merge it with GPROP. If no + such input is found, add it to a new section at the last input. Update + GPROP accordingly. */ + +bfd * +_bfd_riscv_elf_link_setup_gnu_properties (struct bfd_link_info *info, + uint32_t *and_prop_p) +{ + asection *sec; + bfd *pbfd; + bfd *ebfd = NULL; + elf_property *prop; + + uint32_t and_prop = *and_prop_p; + + /* Find a normal input file with GNU property note. */ + for (pbfd = info->input_bfds; pbfd != NULL; pbfd = pbfd->link.next) + if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour + && bfd_count_sections (pbfd) != 0) + { + ebfd = pbfd; + + if (elf_properties (pbfd) != NULL) + break; + } + + /* If ebfd != NULL it is either an input with property note or the last + input. Either way if we have and_prop, we should add it (by + creating a section if needed). */ + if (ebfd != NULL && (and_prop)) + { + prop = _bfd_elf_get_property (ebfd, GNU_PROPERTY_RISCV_FEATURE_1_AND, 4); + + prop->u.number |= and_prop; + prop->pr_kind = property_number; + + /* pbfd being NULL implies ebfd is the last input. Create the GNU + property note section. */ + if (pbfd == NULL) + { + sec + = bfd_make_section_with_flags (ebfd, NOTE_GNU_PROPERTY_SECTION_NAME, + (SEC_ALLOC | SEC_LOAD | SEC_IN_MEMORY + | SEC_READONLY | SEC_HAS_CONTENTS + | SEC_DATA)); + if (sec == NULL) + info->callbacks->einfo ( + _ ("%F%P: failed to create GNU property section\n")); + + elf_section_type (sec) = SHT_NOTE; + } + } + + pbfd = _bfd_elf_link_setup_gnu_properties (info); + + if (bfd_link_relocatable (info)) + return pbfd; + + /* If pbfd has any GNU_PROPERTY_RISCV_FEATURE_1_AND properties, update + and_prop accordingly. */ + if (pbfd != NULL) + { + elf_property_list *p; + elf_property_list *plist = elf_properties (pbfd); + + if ((p = _bfd_elf_find_property (plist, GNU_PROPERTY_RISCV_FEATURE_1_AND, + NULL)) + != NULL) + and_prop = p->property.u.number + & (GNU_PROPERTY_RISCV_FEATURE_1_CFI_LP_UNLABELED + | GNU_PROPERTY_RISCV_FEATURE_1_CFI_SS); + } + + *and_prop_p = and_prop; + return pbfd; +} + +/* Define elf_backend_parse_gnu_properties for RISC-V. */ + +enum elf_property_kind +_bfd_riscv_elf_parse_gnu_properties (bfd *abfd, unsigned int type, + bfd_byte *ptr, unsigned int datasz) +{ + elf_property *prop; + + switch (type) + { + case GNU_PROPERTY_RISCV_FEATURE_1_AND: + if (datasz != 4) + { + _bfd_error_handler (_ ( + "error: %pB: <corrupt RISC-V used size: 0x%x>"), + abfd, datasz); + return property_corrupt; + } + prop = _bfd_elf_get_property (abfd, type, datasz); + /* Combine properties of the same type. */ + prop->u.number |= bfd_h_get_32 (abfd, ptr); + prop->pr_kind = property_number; + break; + + default: + return property_ignored; + } + + return property_number; +} + +/* Merge RISC-V GNU property BPROP with APROP also accounting for PROP. + If APROP isn't NULL, merge it with BPROP and/or PROP. Vice-versa if BROP + isn't NULL. Return TRUE if there is any update to APROP or if BPROP should + be merge with ABFD. */ + +bool +_bfd_riscv_elf_merge_gnu_properties + (struct bfd_link_info *info ATTRIBUTE_UNUSED, bfd *abfd ATTRIBUTE_UNUSED, + elf_property *aprop, elf_property *bprop, uint32_t and_prop) +{ + unsigned int orig_number; + bool updated = false; + unsigned int pr_type = aprop != NULL ? aprop->pr_type : bprop->pr_type; + + switch (pr_type) + { + case GNU_PROPERTY_RISCV_FEATURE_1_AND: { + if (aprop != NULL && bprop != NULL) + { + orig_number = aprop->u.number; + aprop->u.number = (orig_number & bprop->u.number) | and_prop; + updated = orig_number != aprop->u.number; + /* Remove the property if all feature bits are cleared. */ + if (aprop->u.number == 0) + aprop->pr_kind = property_remove; + break; + } + /* If either is NULL, the AND would be 0 so, if there is + any PROP, asign it to the input that is not NULL. */ + if (and_prop) + { + if (aprop != NULL) + { + orig_number = aprop->u.number; + aprop->u.number = and_prop; + updated = orig_number != aprop->u.number; + } + else if (bprop != NULL) + { + bprop->u.number = and_prop; + updated = true; + } + /* Shouldn't happen because we checked one of APROP or BPROP != + * NULL. */ + else + abort (); + } + /* No PROP and BPROP is NULL, so remove APROP. */ + else if (!and_prop && bprop == NULL && aprop != NULL) + { + aprop->pr_kind = property_remove; + updated = true; + } + } + break; + + default: + abort (); + } + + return updated; +} diff --git a/bfd/elfxx-riscv.h b/bfd/elfxx-riscv.h index 1ce682a..fbbefb5 100644 --- a/bfd/elfxx-riscv.h +++ b/bfd/elfxx-riscv.h @@ -27,6 +27,12 @@ #define RISCV_UNKNOWN_VERSION -1 +typedef enum +{ + PLT_NORMAL = 0x0, /* Normal plts. */ + PLT_ZICFILP_UNLABELED = 0x1 /* Landing pad unlabeled plts. */ +} riscv_plt_type; + struct riscv_elf_params { /* Whether to relax code sequences to GP-relative addressing. */ @@ -113,6 +119,9 @@ extern bool riscv_update_subset (riscv_parse_subset_t *, const char *); extern bool +riscv_update_subset_norvc (riscv_parse_subset_t *); + +extern bool riscv_subset_supports (riscv_parse_subset_t *, const char *); extern bool @@ -128,3 +137,16 @@ extern void bfd_elf32_riscv_set_data_segment_info (struct bfd_link_info *, int *); extern void bfd_elf64_riscv_set_data_segment_info (struct bfd_link_info *, int *); + +extern bfd * +_bfd_riscv_elf_link_setup_gnu_properties (struct bfd_link_info *, uint32_t *); + +extern enum elf_property_kind +_bfd_riscv_elf_parse_gnu_properties (bfd *, unsigned int, bfd_byte *, + unsigned int); + +extern bool +_bfd_riscv_elf_merge_gnu_properties (struct bfd_link_info *, bfd *, + elf_property *, elf_property *, uint32_t); + +#define elf_backend_parse_gnu_properties _bfd_riscv_elf_parse_gnu_properties diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h index 625243c..4cf02bb 100644 --- a/bfd/elfxx-target.h +++ b/bfd/elfxx-target.h @@ -225,8 +225,6 @@ _bfd_elf_copy_private_symbol_data #endif -#define bfd_elfNN_init_private_section_data \ - _bfd_elf_init_private_section_data #ifndef bfd_elfNN_bfd_copy_private_section_data #define bfd_elfNN_bfd_copy_private_section_data \ _bfd_elf_copy_private_section_data diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index 6ea41f2..3dc0095 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -609,8 +609,7 @@ _bfd_elf_x86_get_local_sym_hash (struct elf_x86_link_hash_table *htab, return &ret->elf; } -/* Create an entry in a x86 ELF linker hash table. NB: THIS MUST BE IN - SYNC WITH _bfd_elf_link_hash_newfunc. */ +/* Create an entry in an x86 ELF linker hash table. */ struct bfd_hash_entry * _bfd_x86_elf_link_hash_newfunc (struct bfd_hash_entry *entry, @@ -629,27 +628,14 @@ _bfd_x86_elf_link_hash_newfunc (struct bfd_hash_entry *entry, } /* Call the allocation method of the superclass. */ - entry = _bfd_link_hash_newfunc (entry, table, string); + entry = _bfd_elf_link_hash_newfunc (entry, table, string); if (entry != NULL) { struct elf_x86_link_hash_entry *eh = (struct elf_x86_link_hash_entry *) entry; - struct elf_link_hash_table *htab - = (struct elf_link_hash_table *) table; - memset (&eh->elf.size, 0, - (sizeof (struct elf_x86_link_hash_entry) - - offsetof (struct elf_link_hash_entry, size))); + memset (&eh->elf + 1, 0, sizeof (*eh) - sizeof (eh->elf)); /* Set local fields. */ - eh->elf.indx = -1; - eh->elf.dynindx = -1; - eh->elf.got = htab->init_got_refcount; - eh->elf.plt = htab->init_plt_refcount; - /* Assume that we have been called by a non-ELF symbol reader. - This flag is then reset by the code which reads an ELF input - file. This ensures that a symbol created by a non-ELF symbol - reader will have the flag set correctly. */ - eh->elf.non_elf = 1; eh->plt_second.offset = (bfd_vma) -1; eh->plt_got.offset = (bfd_vma) -1; eh->tlsdesc_got = (bfd_vma) -1; @@ -1905,7 +1891,7 @@ _bfd_x86_elf_create_sframe_plt (bfd *output_bfd, } *ectx = sframe_encode (SFRAME_VERSION_2, - 0, + SFRAME_F_FDE_FUNC_START_PCREL, SFRAME_ABI_AMD64_ENDIAN_LITTLE, SFRAME_CFA_FIXED_FP_INVALID, -8, /* Fixed RA offset. */ @@ -4799,11 +4785,10 @@ _bfd_x86_elf_link_setup_gnu_properties | SEC_HAS_CONTENTS | SEC_IN_MEMORY | SEC_LINKER_CREATED); - sec = bfd_make_section_anyway_with_flags (dynobj, - ".sframe", - flags); + sec = bfd_make_section_anyway_with_flags (dynobj, ".sframe", flags); if (sec == NULL) info->callbacks->fatal (_("%P: failed to create PLT .sframe section\n")); + elf_section_type (sec) = SHT_GNU_SFRAME; // FIXME check this // if (!bfd_set_section_alignment (sec, class_align)) @@ -4819,6 +4804,7 @@ _bfd_x86_elf_link_setup_gnu_properties flags); if (sec == NULL) info->callbacks->fatal (_("%P: failed to create second PLT .sframe section\n")); + elf_section_type (sec) = SHT_GNU_SFRAME; htab->plt_second_sframe = sec; } @@ -4831,6 +4817,7 @@ _bfd_x86_elf_link_setup_gnu_properties flags); if (sec == NULL) info->callbacks->fatal (_("%P: failed to create PLT GOT .sframe section\n")); + elf_section_type (sec) = SHT_GNU_SFRAME; htab->plt_got_sframe = sec; } diff --git a/bfd/format.c b/bfd/format.c index 7769ad0..a909b70 100644 --- a/bfd/format.c +++ b/bfd/format.c @@ -331,6 +331,25 @@ print_and_clear_messages (struct per_xvec_messages *list, free (iter); iter = next; } + + /* Don't retain a pointer to free'd memory. */ + list->next = NULL; +} + +/* Discard all messages associated with TARG in LIST. Unlike + print_and_clear_messages, PER_XVEC_NO_TARGET is not valid for TARG. */ + +static void +clear_messages (struct per_xvec_messages *list, + const bfd_target *targ) +{ + struct per_xvec_messages *iter; + + for (iter = list; iter != NULL; iter = iter->next) + { + if (iter->targ == targ) + clear_warnmsg (&iter->messages); + } } /* This a copy of lto_section defined in GCC (lto-streamer.h). */ @@ -451,7 +470,18 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) /* Avoid clashes with bfd_cache_close_all running in another thread. */ if (!bfd_cache_set_uncloseable (abfd, true, &old_in_format_matches)) - return false; + { + free (matching_vector); + return false; + } + + /* Locking is required here in order to manage _bfd_section_id. */ + if (!bfd_lock ()) + { + bfd_cache_set_uncloseable (abfd, old_in_format_matches, NULL); + free (matching_vector); + return false; + } /* Presume the answer is yes. */ abfd->format = format; @@ -461,10 +491,6 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) of an archive. */ orig_messages = _bfd_set_error_handler_caching (&messages); - /* Locking is required here in order to manage _bfd_section_id. */ - if (!bfd_lock ()) - return false; - preserve_match.marker = NULL; if (!bfd_preserve_save (abfd, &preserve, NULL)) goto err_ret; @@ -545,6 +571,12 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) /* Change BFD's target temporarily. */ abfd->xvec = *target; + /* It is possible that targets appear multiple times in + bfd_target_vector. If this is the case, then we want to avoid + accumulating duplicate messages for a target in MESSAGES, so + discard any previous messages associated with this target. */ + clear_messages (&messages, abfd->xvec); + if (bfd_seek (abfd, 0, SEEK_SET) != 0) goto err_ret; @@ -754,7 +786,8 @@ bfd_check_format_matches (bfd *abfd, bfd_format format, char ***matching) out: if (preserve_match.marker != NULL) bfd_preserve_finish (abfd, &preserve_match); - bfd_preserve_restore (abfd, &preserve); + if (preserve.marker != NULL) + bfd_preserve_restore (abfd, &preserve); _bfd_restore_error_handler_caching (orig_messages); print_and_clear_messages (&messages, PER_XVEC_NO_TARGET); bfd_cache_set_uncloseable (abfd, old_in_format_matches, NULL); diff --git a/bfd/i386aout.c b/bfd/i386aout.c index fb09597..082ebfb 100644 --- a/bfd/i386aout.c +++ b/bfd/i386aout.c @@ -79,7 +79,6 @@ static const struct aout_backend_data MY (backend_data) = MY (set_sizes), 1, /* Exec header not counted. */ 0, /* Add_dynamic_symbols. */ - 0, /* Add_one_symbol. */ 0, /* Link_dynamic_object. */ 0, /* Write_dynamic_symbol. */ 0, /* Check_dynamic_reloc. */ diff --git a/bfd/libaout.h b/bfd/libaout.h index ca4faec..7628d6a 100644 --- a/bfd/libaout.h +++ b/bfd/libaout.h @@ -177,13 +177,6 @@ struct aout_backend_data (bfd *, struct bfd_link_info *, struct external_nlist **, bfd_size_type *, char **); - /* Callback from the add symbols phase of the linker code to handle - adding a single symbol to the global linker hash table. */ - bool (*add_one_symbol) - (struct bfd_link_info *, bfd *, const char *, flagword, - asection *, bfd_vma, const char *, bool, bool, - struct bfd_link_hash_entry **); - /* Called to handle linking a dynamic object. */ bool (*link_dynamic_object) (struct bfd_link_info *, bfd *); diff --git a/bfd/libbfd-in.h b/bfd/libbfd-in.h index b2f70fb..213cc7d 100644 --- a/bfd/libbfd-in.h +++ b/bfd/libbfd-in.h @@ -270,17 +270,14 @@ extern bool _bfd_generic_get_section_contents #define _bfd_generic_bfd_merge_private_bfd_data \ _bfd_bool_bfd_link_true #define _bfd_generic_bfd_set_private_flags _bfd_bool_bfd_uint_true -#define _bfd_generic_bfd_copy_private_section_data \ - _bfd_bool_bfd_asection_bfd_asection_true +extern bool _bfd_generic_bfd_copy_private_section_data + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *) + ATTRIBUTE_HIDDEN; #define _bfd_generic_bfd_copy_private_symbol_data \ _bfd_bool_bfd_asymbol_bfd_asymbol_true #define _bfd_generic_bfd_copy_private_header_data _bfd_bool_bfd_bfd_true #define _bfd_generic_bfd_print_private_bfd_data _bfd_bool_bfd_ptr_true -extern bool _bfd_generic_init_private_section_data - (bfd *, asection *, bfd *, asection *, struct bfd_link_info *) - ATTRIBUTE_HIDDEN; - /* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */ @@ -645,12 +642,6 @@ extern bool _bfd_generic_link_add_archive_symbols /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; -/* Generic routine to add a single symbol. */ -extern bool _bfd_generic_link_add_one_symbol - (struct bfd_link_info *, bfd *, const char *name, flagword, - asection *, bfd_vma, const char *, bool copy, - bool constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN; - /* Generic routine to mark section as supplying symbols only. */ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; diff --git a/bfd/libbfd.c b/bfd/libbfd.c index f2daf79..6587fc1 100644 --- a/bfd/libbfd.c +++ b/bfd/libbfd.c @@ -1514,11 +1514,11 @@ _bfd_write_unsigned_leb128 (bfd_byte *p, bfd_byte *end, bfd_vma val) } bool -_bfd_generic_init_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED, - asection *isec ATTRIBUTE_UNUSED, - bfd *obfd ATTRIBUTE_UNUSED, - asection *osec ATTRIBUTE_UNUSED, - struct bfd_link_info *link_info ATTRIBUTE_UNUSED) +_bfd_generic_bfd_copy_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED, + asection *isec ATTRIBUTE_UNUSED, + bfd *obfd ATTRIBUTE_UNUSED, + asection *osec ATTRIBUTE_UNUSED, + struct bfd_link_info *link_info ATTRIBUTE_UNUSED) { return true; } diff --git a/bfd/libbfd.h b/bfd/libbfd.h index 4f6f5ea..bab1f71 100644 --- a/bfd/libbfd.h +++ b/bfd/libbfd.h @@ -276,17 +276,14 @@ extern bool _bfd_generic_get_section_contents #define _bfd_generic_bfd_merge_private_bfd_data \ _bfd_bool_bfd_link_true #define _bfd_generic_bfd_set_private_flags _bfd_bool_bfd_uint_true -#define _bfd_generic_bfd_copy_private_section_data \ - _bfd_bool_bfd_asection_bfd_asection_true +extern bool _bfd_generic_bfd_copy_private_section_data + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *) + ATTRIBUTE_HIDDEN; #define _bfd_generic_bfd_copy_private_symbol_data \ _bfd_bool_bfd_asymbol_bfd_asymbol_true #define _bfd_generic_bfd_copy_private_header_data _bfd_bool_bfd_bfd_true #define _bfd_generic_bfd_print_private_bfd_data _bfd_bool_bfd_ptr_true -extern bool _bfd_generic_init_private_section_data - (bfd *, asection *, bfd *, asection *, struct bfd_link_info *) - ATTRIBUTE_HIDDEN; - /* Routines to use for BFD_JUMP_TABLE_CORE when there is no core file support. Use BFD_JUMP_TABLE_CORE (_bfd_nocore). */ @@ -651,12 +648,6 @@ extern bool _bfd_generic_link_add_archive_symbols /* Forward declaration to avoid prototype errors. */ typedef struct bfd_link_hash_entry _bfd_link_hash_entry; -/* Generic routine to add a single symbol. */ -extern bool _bfd_generic_link_add_one_symbol - (struct bfd_link_info *, bfd *, const char *name, flagword, - asection *, bfd_vma, const char *, bool copy, - bool constructor, struct bfd_link_hash_entry **) ATTRIBUTE_HIDDEN; - /* Generic routine to mark section as supplying symbols only. */ extern void _bfd_generic_link_just_syms (asection *, struct bfd_link_info *) ATTRIBUTE_HIDDEN; @@ -3236,6 +3227,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@", "BFD_RELOC_AARCH64_LD_GOT_LO12_NC", "BFD_RELOC_AARCH64_TLSIE_LD_GOTTPREL_LO12_NC", "BFD_RELOC_AARCH64_TLSDESC_LD_LO12_NC", + "BFD_RELOC_AARCH64_BRANCH9", "BFD_RELOC_TILEPRO_COPY", "BFD_RELOC_TILEPRO_GLOB_DAT", "BFD_RELOC_TILEPRO_JMP_SLOT", diff --git a/bfd/libcoff.h b/bfd/libcoff.h index d0cfd09..05ebe35 100644 --- a/bfd/libcoff.h +++ b/bfd/libcoff.h @@ -864,11 +864,6 @@ typedef struct (bfd *, struct bfd_link_info *, bfd *, asection *, struct internal_reloc *, bool *); - bool (*_bfd_coff_link_add_one_symbol) - (struct bfd_link_info *, bfd *, const char *, flagword, - asection *, bfd_vma, const char *, bool, bool, - struct bfd_link_hash_entry **); - bool (*_bfd_coff_link_output_has_begun) (bfd *, struct coff_final_link_info *); @@ -1005,10 +1000,6 @@ typedef struct #define bfd_coff_adjust_symndx(obfd, info, ibfd, sec, rel, adjustedp)\ ((coff_backend_info (abfd)->_bfd_coff_adjust_symndx)\ (obfd, info, ibfd, sec, rel, adjustedp)) -#define bfd_coff_link_add_one_symbol(info, abfd, name, flags, section,\ - value, string, cp, coll, hashp)\ - ((coff_backend_info (abfd)->_bfd_coff_link_add_one_symbol)\ - (info, abfd, name, flags, section, value, string, cp, coll, hashp)) #define bfd_coff_link_output_has_begun(a,p) \ ((coff_backend_info (a)->_bfd_coff_link_output_has_begun) (a, p)) diff --git a/bfd/libecoff.h b/bfd/libecoff.h index 51a00e0..08b601d 100644 --- a/bfd/libecoff.h +++ b/bfd/libecoff.h @@ -250,9 +250,6 @@ extern bool _bfd_ecoff_get_section_contents #define _bfd_ecoff_bfd_link_split_section _bfd_generic_link_split_section #define _bfd_ecoff_bfd_link_check_relocs _bfd_generic_link_check_relocs -#define _bfd_ecoff_init_private_section_data \ - _bfd_generic_init_private_section_data - extern bool _bfd_ecoff_bfd_copy_private_bfd_data (bfd *, bfd *); #define _bfd_ecoff_bfd_copy_private_section_data \ diff --git a/bfd/libpei.h b/bfd/libpei.h index 4932fb1..fc1ada2 100644 --- a/bfd/libpei.h +++ b/bfd/libpei.h @@ -473,7 +473,7 @@ CODEVIEW_INFO *_bfd_XXi_slurp_codeview_record unsigned _bfd_XX_only_swap_filehdr_out (bfd *, void *, void *); unsigned _bfd_XXi_only_swap_filehdr_out (bfd *, void *, void *); bool _bfd_XX_bfd_copy_private_section_data - (bfd *, asection *, bfd *, asection *); + (bfd *, asection *, bfd *, asection *, struct bfd_link_info *); bool _bfd_pe_print_ce_compressed_pdata (bfd *, void *); bool _bfd_pe64_print_ce_compressed_pdata (bfd *, void *); diff --git a/bfd/linker.c b/bfd/linker.c index 2a4b8f0..a9a23e5 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1378,7 +1378,25 @@ hash_entry_bfd (struct bfd_link_hash_entry *h) /*NOTREACHED*/ } -/* Add a symbol to the global hash table. +/* +FUNCTION + _bfd_generic_link_add_one_symbol + +SYNOPSIS + bool _bfd_generic_link_add_one_symbol + (struct bfd_link_info *info, + bfd *abfd, + const char *name, + flagword flags, + asection *section, + bfd_vma value, + const char *string, + bool copy, + bool collect, + struct bfd_link_hash_entry **hashp); + +DESCRIPTION + Add a symbol to the global hash table. ABFD is the BFD the symbol comes from. NAME is the name of the symbol. FLAGS is the BSF_* bits associated with the symbol. diff --git a/bfd/mach-o-target.c b/bfd/mach-o-target.c index fa1953f..e402d3a 100644 --- a/bfd/mach-o-target.c +++ b/bfd/mach-o-target.c @@ -74,7 +74,6 @@ #define bfd_mach_o_write_armap _bfd_noarchive_write_armap #define bfd_mach_o_get_elt_at_index _bfd_noarchive_get_elt_at_index #define bfd_mach_o_update_armap_timestamp _bfd_noarchive_update_armap_timestamp -#define bfd_mach_o_init_private_section_data _bfd_generic_init_private_section_data #define TARGET_NAME_BACKEND XCONCAT2(TARGET_NAME,_backend) diff --git a/bfd/mach-o.c b/bfd/mach-o.c index fb5bde1..cc191b9 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -583,15 +583,17 @@ bfd_mach_o_bfd_copy_private_symbol_data (bfd *ibfd ATTRIBUTE_UNUSED, bool bfd_mach_o_bfd_copy_private_section_data (bfd *ibfd, asection *isection, - bfd *obfd, asection *osection) + bfd *obfd, asection *osection, + struct bfd_link_info *link_info) { - bfd_mach_o_section *os = bfd_mach_o_get_mach_o_section (osection); - bfd_mach_o_section *is = bfd_mach_o_get_mach_o_section (isection); - - if (ibfd->xvec->flavour != bfd_target_mach_o_flavour + if (link_info != NULL + || ibfd->xvec->flavour != bfd_target_mach_o_flavour || obfd->xvec->flavour != bfd_target_mach_o_flavour) return true; + bfd_mach_o_section *os = bfd_mach_o_get_mach_o_section (osection); + bfd_mach_o_section *is = bfd_mach_o_get_mach_o_section (isection); + BFD_ASSERT (is != NULL && os != NULL); os->flags = is->flags; diff --git a/bfd/mach-o.h b/bfd/mach-o.h index 3aaae38..1cda072 100644 --- a/bfd/mach-o.h +++ b/bfd/mach-o.h @@ -691,7 +691,8 @@ bool bfd_mach_o_write_contents (bfd *); bool bfd_mach_o_bfd_copy_private_symbol_data (bfd *, asymbol *, bfd *, asymbol *); bool bfd_mach_o_bfd_copy_private_section_data (bfd *, asection *, - bfd *, asection *); + bfd *, asection *, + struct bfd_link_info *); bool bfd_mach_o_bfd_copy_private_header_data (bfd *, bfd *); bool bfd_mach_o_bfd_set_private_flags (bfd *, flagword); bool bfd_mach_o_bfd_print_private_bfd_data (bfd *, void *); @@ -3350,7 +3350,6 @@ mmo_write_object_contents (bfd *abfd) #define mmo_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #define mmo_bfd_set_private_flags _bfd_generic_bfd_set_private_flags #define mmo_bfd_print_private_bfd_data _bfd_generic_bfd_print_private_bfd_data -#define mmo_init_private_section_data _bfd_generic_init_private_section_data const bfd_target mmix_mmo_vec = { diff --git a/bfd/pdp11.c b/bfd/pdp11.c index bdd9fc2..2d12033 100644 --- a/bfd/pdp11.c +++ b/bfd/pdp11.c @@ -2839,9 +2839,6 @@ aout_link_check_archive_element (bfd *abfd, static bool aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) { - bool (*add_one_symbol) - (struct bfd_link_info *, bfd *, const char *, flagword, asection *, - bfd_vma, const char *, bool, bool, struct bfd_link_hash_entry **); struct external_nlist *syms; bfd_size_type sym_count; char *strings; @@ -2875,10 +2872,6 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) return false; obj_aout_sym_hashes (abfd) = sym_hash; - add_one_symbol = aout_backend_info (abfd)->add_one_symbol; - if (add_one_symbol == NULL) - add_one_symbol = _bfd_generic_link_add_one_symbol; - p = syms; pend = p + sym_count; for (; p < pend; p++, sym_hash++) @@ -2951,7 +2944,7 @@ aout_link_add_symbols (bfd *abfd, struct bfd_link_info *info) break; } - if (! ((*add_one_symbol) + if (! (_bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value, string, copy, false, (struct bfd_link_hash_entry **) sym_hash))) return false; diff --git a/bfd/pe-aarch64.c b/bfd/pe-aarch64.c index 64975d1..2204a51 100644 --- a/bfd/pe-aarch64.c +++ b/bfd/pe-aarch64.c @@ -48,6 +48,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pe-arm.c b/bfd/pe-arm.c index fe4e18e..5efa559 100644 --- a/bfd/pe-arm.c +++ b/bfd/pe-arm.c @@ -43,6 +43,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pe-i386.c b/bfd/pe-i386.c index 07f6743..3742fd8 100644 --- a/bfd/pe-i386.c +++ b/bfd/pe-i386.c @@ -36,6 +36,8 @@ #define COFF_SECTION_ALIGNMENT_ENTRIES \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pe-x86_64.c b/bfd/pe-x86_64.c index d56d75d..9151aac 100644 --- a/bfd/pe-x86_64.c +++ b/bfd/pe-x86_64.c @@ -57,6 +57,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/peXXigen.c b/bfd/peXXigen.c index 2901268..c337fc5 100644 --- a/bfd/peXXigen.c +++ b/bfd/peXXigen.c @@ -593,7 +593,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, void * in, void * out) struct internal_extra_pe_aouthdr *extra = &pe->pe_opthdr; PEAOUTHDR *aouthdr_out = (PEAOUTHDR *) out; bfd_vma sa, fa, ib; - IMAGE_DATA_DIRECTORY idata2, idata5, tls; + IMAGE_DATA_DIRECTORY idata2, idata5, didat2, tls, loadcfg; sa = extra->SectionAlignment; fa = extra->FileAlignment; @@ -601,7 +601,9 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, void * in, void * out) idata2 = pe->pe_opthdr.DataDirectory[PE_IMPORT_TABLE]; idata5 = pe->pe_opthdr.DataDirectory[PE_IMPORT_ADDRESS_TABLE]; + didat2 = pe->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR]; tls = pe->pe_opthdr.DataDirectory[PE_TLS_TABLE]; + loadcfg = pe->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE]; if (aouthdr_in->tsize) { @@ -650,7 +652,9 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, void * in, void * out) a final link is going to be performed, it can overwrite them. */ extra->DataDirectory[PE_IMPORT_TABLE] = idata2; extra->DataDirectory[PE_IMPORT_ADDRESS_TABLE] = idata5; + extra->DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR] = didat2; extra->DataDirectory[PE_TLS_TABLE] = tls; + extra->DataDirectory[PE_LOAD_CONFIG_TABLE] = loadcfg; if (extra->DataDirectory[PE_IMPORT_TABLE].VirtualAddress == 0) /* Until other .idata fixes are made (pending patch), the entry for @@ -999,6 +1003,7 @@ _bfd_XXi_swap_scnhdr_out (bfd * abfd, void * in, void * out) { ".arch", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_DISCARDABLE | IMAGE_SCN_ALIGN_8BYTES }, { ".bss", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_UNINITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, { ".data", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, + { ".didat", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA | IMAGE_SCN_MEM_WRITE }, { ".edata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, { ".idata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, { ".pdata", IMAGE_SCN_MEM_READ | IMAGE_SCN_CNT_INITIALIZED_DATA }, @@ -3110,9 +3115,11 @@ bool _bfd_XX_bfd_copy_private_section_data (bfd *ibfd, asection *isec, bfd *obfd, - asection *osec) + asection *osec, + struct bfd_link_info *link_info) { - if (bfd_get_flavour (ibfd) != bfd_target_coff_flavour + if (link_info != NULL + || bfd_get_flavour (ibfd) != bfd_target_coff_flavour || bfd_get_flavour (obfd) != bfd_target_coff_flavour) return true; @@ -4403,6 +4410,7 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) struct coff_link_hash_entry *h1; struct bfd_link_info *info = pfinfo->info; bool result = true; + char name[20]; /* There are a few fields that need to be filled in now while we have symbol table access. @@ -4430,8 +4438,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[1] because .idata$2 is missing"), - abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"), + abfd, PE_IMPORT_TABLE, ".idata$2"); result = false; } @@ -4450,8 +4458,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[1] because .idata$4 is missing"), - abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"), + abfd, PE_IMPORT_TABLE, ".idata$4"); result = false; } @@ -4471,8 +4479,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[12] because .idata$5 is missing"), - abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"), + abfd, PE_IMPORT_ADDRESS_TABLE, ".idata$5"); result = false; } @@ -4491,8 +4499,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because .idata$6 is missing"), - abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s is missing"), + abfd, PE_IMPORT_ADDRESS_TABLE, ".idata$6"); result = false; } } @@ -4533,17 +4541,62 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)]" - " because .idata$6 is missing"), abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"), + abfd, PE_IMPORT_ADDRESS_TABLE, "__IAT_end__"); result = false; } } } + /* The delay import directory. This is .didat$2 */ h1 = coff_link_hash_lookup (coff_hash_table (info), - (bfd_get_symbol_leading_char (abfd) != 0 - ? "__tls_used" : "_tls_used"), - false, false, true); + "__DELAY_IMPORT_DIRECTORY_start__", false, false, + true); + if (h1 != NULL + && (h1->root.type == bfd_link_hash_defined + || h1->root.type == bfd_link_hash_defweak) + && h1->root.u.def.section != NULL + && h1->root.u.def.section->output_section != NULL) + { + bfd_vma delay_va; + + delay_va = + (h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset); + + h1 = coff_link_hash_lookup (coff_hash_table (info), + "__DELAY_IMPORT_DIRECTORY_end__", false, + false, true); + if (h1 != NULL + && (h1->root.type == bfd_link_hash_defined + || h1->root.type == bfd_link_hash_defweak) + && h1->root.u.def.section != NULL + && h1->root.u.def.section->output_section != NULL) + { + pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].Size = + ((h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset) + - delay_va); + if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].Size + != 0) + pe_data (abfd)->pe_opthdr.DataDirectory[PE_DELAY_IMPORT_DESCRIPTOR].VirtualAddress = + delay_va - pe_data (abfd)->pe_opthdr.ImageBase; + } + else + { + _bfd_error_handler + (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"), + abfd, PE_DELAY_IMPORT_DESCRIPTOR, + "__DELAY_IMPORT_DIRECTORY_end__"); + result = false; + } + } + + name[0] = bfd_get_symbol_leading_char (abfd); + strcpy (name + !!name[0], "_tls_used"); + h1 = coff_link_hash_lookup (coff_hash_table (info), name, false, false, true); if (h1 != NULL) { if ((h1->root.type == bfd_link_hash_defined @@ -4558,8 +4611,8 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) else { _bfd_error_handler - (_("%pB: unable to fill in DataDictionary[9] because __tls_used is missing"), - abfd); + (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"), + abfd, PE_TLS_TABLE, name); result = false; } /* According to PECOFF sepcifications by Microsoft version 8.2 @@ -4573,6 +4626,81 @@ _bfd_XXi_final_link_postscript (bfd * abfd, struct coff_final_link_info *pfinfo) #endif } + name[0] = bfd_get_symbol_leading_char (abfd); + strcpy (name + !!name[0], "_load_config_used"); + h1 = coff_link_hash_lookup (coff_hash_table (info), name, false, false, true); + if (h1 != NULL) + { + char data[4]; + if ((h1->root.type == bfd_link_hash_defined + || h1->root.type == bfd_link_hash_defweak) + && h1->root.u.def.section != NULL + && h1->root.u.def.section->output_section != NULL) + { + pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].VirtualAddress = + (h1->root.u.def.value + + h1->root.u.def.section->output_section->vma + + h1->root.u.def.section->output_offset + - pe_data (abfd)->pe_opthdr.ImageBase); + + if (pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].VirtualAddress + & (bfd_arch_bits_per_address (abfd) / bfd_arch_bits_per_byte (abfd) + - 1)) + { + _bfd_error_handler + (_("%pB: unable to fill in DataDirectory[%d]: %s not properly aligned"), + abfd, PE_LOAD_CONFIG_TABLE, name); + result = false; + } + + /* The size is stored as the first 4 bytes at _load_config_used. */ + if (bfd_get_section_contents (abfd, + h1->root.u.def.section->output_section, data, + h1->root.u.def.section->output_offset + h1->root.u.def.value, + 4)) + { + uint32_t size = bfd_get_32 (abfd, data); + /* The Microsoft PE format documentation says for compatibility + with Windows XP and earlier, the size must be 64 for x86 + images. */ + pe_data (abfd)->pe_opthdr.DataDirectory[PE_LOAD_CONFIG_TABLE].Size + = (bfd_get_arch (abfd) == bfd_arch_i386 + && ((bfd_get_mach (abfd) & ~bfd_mach_i386_intel_syntax) + == bfd_mach_i386_i386) + && ((pe_data (abfd)->pe_opthdr.Subsystem + == IMAGE_SUBSYSTEM_WINDOWS_GUI) + || (pe_data (abfd)->pe_opthdr.Subsystem + == IMAGE_SUBSYSTEM_WINDOWS_CUI)) + && (pe_data (abfd)->pe_opthdr.MajorSubsystemVersion * 256 + + pe_data (abfd)->pe_opthdr.MinorSubsystemVersion + <= 0x0501)) + ? 64 : size; + + if (size > h1->root.u.def.section->size - h1->root.u.def.value) + { + _bfd_error_handler + (_("%pB: unable to fill in DataDirectory[%d]: size too large for the containing section"), + abfd, PE_LOAD_CONFIG_TABLE); + result = false; + } + } + else + { + _bfd_error_handler + (_("%pB: unable to fill in DataDirectory[%d]: size can't be read from %s"), + abfd, PE_LOAD_CONFIG_TABLE, name); + result = false; + } + } + else + { + _bfd_error_handler + (_("%pB: unable to fill in DataDirectory[%d]: %s not defined correctly"), + abfd, PE_LOAD_CONFIG_TABLE, name); + result = false; + } + } + /* If there is a .pdata section and we have linked pdata finally, we need to sort the entries ascending. */ #if !defined(COFF_WITH_pep) && (defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) || defined(COFF_WITH_peLoongArch64) || defined (COFF_WITH_peRiscV64)) diff --git a/bfd/pei-aarch64.c b/bfd/pei-aarch64.c index 3d7f5b3..00f38e0 100644 --- a/bfd/pei-aarch64.c +++ b/bfd/pei-aarch64.c @@ -49,6 +49,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pei-arm.c b/bfd/pei-arm.c index 2abc14d..07cebb5 100644 --- a/bfd/pei-arm.c +++ b/bfd/pei-arm.c @@ -45,6 +45,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pei-i386.c b/bfd/pei-i386.c index 676a824..a26f170 100644 --- a/bfd/pei-i386.c +++ b/bfd/pei-i386.c @@ -35,6 +35,8 @@ #define COFF_SECTION_ALIGNMENT_ENTRIES \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pei-loongarch64.c b/bfd/pei-loongarch64.c index 4b3a30d..f22498c 100644 --- a/bfd/pei-loongarch64.c +++ b/bfd/pei-loongarch64.c @@ -49,6 +49,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pei-riscv64.c b/bfd/pei-riscv64.c index e87aa42..c4ae7bf 100644 --- a/bfd/pei-riscv64.c +++ b/bfd/pei-riscv64.c @@ -49,6 +49,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/pei-x86_64.c b/bfd/pei-x86_64.c index 3f8f255..a5c2fd8 100644 --- a/bfd/pei-x86_64.c +++ b/bfd/pei-x86_64.c @@ -51,6 +51,8 @@ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 4 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".idata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ +{ COFF_SECTION_NAME_PARTIAL_MATCH (".didat"), \ + COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_EXACT_MATCH (".pdata"), \ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ { COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ diff --git a/bfd/plugin.c b/bfd/plugin.c index d57ae59..1c72b74 100644 --- a/bfd/plugin.c +++ b/bfd/plugin.c @@ -73,8 +73,6 @@ dlerror (void) #define bfd_plugin_bfd_free_cached_info _bfd_generic_bfd_free_cached_info #define bfd_plugin_new_section_hook _bfd_generic_new_section_hook #define bfd_plugin_get_section_contents _bfd_generic_get_section_contents -#define bfd_plugin_init_private_section_data _bfd_generic_init_private_section_data -#define bfd_plugin_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #define bfd_plugin_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data #define bfd_plugin_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #define bfd_plugin_bfd_set_private_flags _bfd_generic_bfd_set_private_flags @@ -782,7 +780,8 @@ static bool bfd_plugin_bfd_copy_private_section_data (bfd *ibfd ATTRIBUTE_UNUSED, asection *isection ATTRIBUTE_UNUSED, bfd *obfd ATTRIBUTE_UNUSED, - asection *osection ATTRIBUTE_UNUSED) + asection *osection ATTRIBUTE_UNUSED, + struct bfd_link_info *link_info ATTRIBUTE_UNUSED) { BFD_ASSERT (0); return true; diff --git a/bfd/po/bfd.pot b/bfd/po/bfd.pot index 6649106..c90c033 100644 --- a/bfd/po/bfd.pot +++ b/bfd/po/bfd.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" -"POT-Creation-Date: 2025-01-19 12:19+0000\n" +"POT-Creation-Date: 2025-07-13 08:43+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -67,51 +67,52 @@ msgstr "" msgid "%pB: attempt to write out unknown reloc type" msgstr "" -#: aoutx.h:4047 pdp11.c:3409 +#: aoutx.h:4040 pdp11.c:3402 #, c-format msgid "%pB: unsupported relocation type" msgstr "" #. Unknown relocation. -#: aoutx.h:4367 coff-alpha.c:601 coff-mips.c:356 coff-rs6000.c:3037 +#: aoutx.h:4360 coff-alpha.c:604 coff-mips.c:356 coff-rs6000.c:3037 #: coff-sh.c:504 coff-tic4x.c:184 coff-tic54x.c:262 elf-hppa.h:798 #: elf-hppa.h:826 elf-m10200.c:226 elf-m10300.c:813 elf32-arc.c:531 -#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4686 +#: elf32-arm.c:1985 elf32-avr.c:957 elf32-bfin.c:1063 elf32-bfin.c:4692 #: elf32-cr16.c:654 elf32-cr16.c:684 elf32-cris.c:467 elf32-crx.c:429 #: elf32-csky.c:991 elf32-d10v.c:234 elf32-d30v.c:522 elf32-d30v.c:544 #: elf32-dlx.c:546 elf32-epiphany.c:373 elf32-fr30.c:381 elf32-frv.c:2558 -#: elf32-frv.c:6240 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394 +#: elf32-frv.c:6246 elf32-ft32.c:304 elf32-h8300.c:302 elf32-i386.c:394 #: elf32-ip2k.c:1241 elf32-iq2000.c:442 elf32-lm32.c:495 elf32-m32c.c:305 -#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2209 elf32-m68hc11.c:390 +#: elf32-m32r.c:1286 elf32-m32r.c:1311 elf32-m32r.c:2211 elf32-m68hc11.c:390 #: elf32-m68hc12.c:510 elf32-m68k.c:354 elf32-mcore.c:354 elf32-mcore.c:440 #: elf32-mep.c:385 elf32-metag.c:871 elf32-microblaze.c:708 #: elf32-microblaze.c:1015 elf32-mips.c:2242 elf32-moxie.c:137 -#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3287 -#: elf32-nds32.c:3308 elf32-nds32.c:5077 elf32-or1k.c:1085 elf32-pj.c:326 +#: elf32-msp430.c:737 elf32-msp430.c:747 elf32-mt.c:241 elf32-nds32.c:3294 +#: elf32-nds32.c:3315 elf32-nds32.c:5084 elf32-or1k.c:1085 elf32-pj.c:326 #: elf32-ppc.c:900 elf32-ppc.c:913 elf32-pru.c:423 elf32-rl78.c:291 #: elf32-rx.c:324 elf32-rx.c:333 elf32-s12z.c:296 elf32-s390.c:347 #: elf32-score.c:2373 elf32-score7.c:2214 elf32-sh.c:437 elf32-spu.c:163 #: elf32-tic6x.c:1498 elf32-tic6x.c:1508 elf32-tic6x.c:1527 elf32-tic6x.c:1537 #: elf32-tic6x.c:2575 elf32-tilepro.c:791 elf32-v850.c:1902 elf32-v850.c:1924 -#: elf32-v850.c:4253 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105 +#: elf32-v850.c:4254 elf32-vax.c:288 elf32-visium.c:481 elf32-wasm32.c:105 #: elf32-xgate.c:418 elf32-xstormy16.c:395 elf32-xtensa.c:510 -#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4055 -#: elf64-alpha.c:4203 elf64-bpf.c:132 elf64-ia64-vms.c:255 -#: elf64-ia64-vms.c:3426 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260 +#: elf32-xtensa.c:544 elf32-z80.c:331 elf64-alpha.c:1112 elf64-alpha.c:4058 +#: elf64-alpha.c:4206 elf64-bpf.c:132 elf64-ia64-vms.c:255 +#: elf64-ia64-vms.c:3428 elf64-mips.c:3965 elf64-mips.c:3981 elf64-mmix.c:1260 #: elf64-nfp.c:151 elf64-ppc.c:1031 elf64-ppc.c:1385 elf64-ppc.c:1394 -#: elf64-s390.c:328 elf64-s390.c:378 elf64-x86-64.c:305 elfn32-mips.c:3799 -#: elfxx-ia64.c:324 elfxx-loongarch.c:1897 elfxx-riscv.c:1062 -#: elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947 +#: elf64-s390.c:331 elf64-s390.c:381 elf64-x86-64.c:305 elf64-x86-64.c:2558 +#: elfn32-mips.c:3799 elfxx-ia64.c:324 elfxx-loongarch.c:1897 +#: elfxx-riscv.c:1068 elfxx-sparc.c:589 elfxx-sparc.c:639 elfxx-tilegx.c:907 +#: elfxx-tilegx.c:947 #: elfnn-aarch64.c:2215 -#: elfnn-aarch64.c:2313 +#: elfnn-aarch64.c:2316 #: elfnn-ia64.c:214 -#: elfnn-ia64.c:3821 +#: elfnn-ia64.c:3823 #: elfnn-kvx.c:259 #, c-format msgid "%pB: unsupported relocation type %#x" msgstr "" -#: aoutx.h:5387 pdp11.c:3825 +#: aoutx.h:5380 pdp11.c:3818 #, c-format msgid "%pB: relocatable link from %s to %s not supported" msgstr "" @@ -122,135 +123,135 @@ msgid "%pB: cannot allocate memory for local GOT entries" msgstr "" #: archive.c:748 -msgid "%F%P: %pB(%s): error opening thin archive member: %E\n" +msgid "%P: %pB(%s): error opening thin archive member: %E\n" msgstr "" #: archive.c:2282 msgid "warning: writing archive was slow: rewriting timestamp" msgstr "" -#: archive.c:2351 archive.c:2412 elflink.c:4931 linker.c:1452 +#: archive.c:2351 archive.c:2408 elflink.c:4956 linker.c:1470 #, c-format msgid "%pB: plugin needed to handle lto object" msgstr "" -#: archive.c:2644 +#: archive.c:2640 msgid "Reading archive file mod timestamp" msgstr "" -#: archive.c:2675 +#: archive.c:2671 msgid "Writing updated armap timestamp" msgstr "" -#: bfd.c:777 +#: bfd.c:793 msgid "no error" msgstr "" -#: bfd.c:778 +#: bfd.c:794 msgid "system call error" msgstr "" -#: bfd.c:779 +#: bfd.c:795 msgid "invalid bfd target" msgstr "" -#: bfd.c:780 +#: bfd.c:796 msgid "file in wrong format" msgstr "" -#: bfd.c:781 +#: bfd.c:797 msgid "archive object file in wrong format" msgstr "" -#: bfd.c:782 +#: bfd.c:798 msgid "invalid operation" msgstr "" -#: bfd.c:783 +#: bfd.c:799 msgid "memory exhausted" msgstr "" -#: bfd.c:784 +#: bfd.c:800 msgid "no symbols" msgstr "" -#: bfd.c:785 +#: bfd.c:801 msgid "archive has no index; run ranlib to add one" msgstr "" -#: bfd.c:786 +#: bfd.c:802 msgid "no more archived files" msgstr "" -#: bfd.c:787 +#: bfd.c:803 msgid "malformed archive" msgstr "" -#: bfd.c:788 +#: bfd.c:804 msgid "DSO missing from command line" msgstr "" -#: bfd.c:789 +#: bfd.c:805 msgid "file format not recognized" msgstr "" -#: bfd.c:790 +#: bfd.c:806 msgid "file format is ambiguous" msgstr "" -#: bfd.c:791 +#: bfd.c:807 msgid "section has no contents" msgstr "" -#: bfd.c:792 +#: bfd.c:808 msgid "nonrepresentable section on output" msgstr "" -#: bfd.c:793 +#: bfd.c:809 msgid "symbol needs debug section which does not exist" msgstr "" -#: bfd.c:794 +#: bfd.c:810 msgid "bad value" msgstr "" -#: bfd.c:795 +#: bfd.c:811 msgid "file truncated" msgstr "" -#: bfd.c:796 +#: bfd.c:812 msgid "file too big" msgstr "" -#: bfd.c:797 +#: bfd.c:813 msgid "sorry, cannot handle this file" msgstr "" -#: bfd.c:798 +#: bfd.c:814 #, c-format msgid "error reading %s: %s" msgstr "" -#: bfd.c:799 +#: bfd.c:815 msgid "#<invalid error code>" msgstr "" -#: bfd.c:2242 +#: bfd.c:2266 #, c-format msgid "BFD %s assertion fail %s:%d" msgstr "" -#: bfd.c:2255 +#: bfd.c:2279 #, c-format msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n" msgstr "" -#: bfd.c:2259 +#: bfd.c:2283 #, c-format msgid "%s: BFD %s internal error, aborting at %s:%d\n" msgstr "" -#: bfd.c:2262 +#: bfd.c:2286 #, c-format msgid "Please report this bug.\n" msgstr "" @@ -272,37 +273,37 @@ msgid "" "to generate uncompressed binaries" msgstr "" -#: coff-alpha.c:867 coff-alpha.c:894 coff-alpha.c:2004 coff-mips.c:948 +#: coff-alpha.c:914 coff-alpha.c:941 coff-alpha.c:2009 coff-mips.c:948 msgid "GP relative relocation used when GP not defined" msgstr "" -#: coff-alpha.c:1151 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13188 -#: elfxx-mips.c:13509 reloc.c:8596 reloc16.c:314 +#: coff-alpha.c:1177 coff-z80.c:351 coff-z8k.c:214 elf32-nds32.c:13195 +#: elfxx-mips.c:13594 reloc.c:8602 reloc16.c:314 #, c-format msgid "%X%P: %pB(%pA): relocation \"%pR\" goes out of range\n" msgstr "" -#: coff-alpha.c:1157 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13519 -#: reloc.c:8606 +#: coff-alpha.c:1183 coff-z80.c:477 coff-z8k.c:378 elfxx-mips.c:13604 +#: reloc.c:8612 #, c-format msgid "%X%P: %pB(%pA): relocation \"%pR\" is not supported\n" msgstr "" -#: coff-alpha.c:1163 elfxx-mips.c:13528 reloc.c:8615 +#: coff-alpha.c:1189 elfxx-mips.c:13613 reloc.c:8621 #, c-format msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n" msgstr "" -#: coff-alpha.c:1489 +#: coff-alpha.c:1515 msgid "using multiple gp values" msgstr "" -#: coff-alpha.c:1987 +#: coff-alpha.c:1992 #, c-format msgid "%X%P: %pB(%pA): relocation out of range\n" msgstr "" -#: coff-alpha.c:1999 +#: coff-alpha.c:2004 #, c-format msgid "%X%P: %pB(%pA): relocation is not supported\n" msgstr "" @@ -402,13 +403,13 @@ msgstr "" msgid "%pB: fatal: generic symbols retrieved before relaxing" msgstr "" -#: coff-sh.c:2773 cofflink.c:2947 +#: coff-sh.c:2773 cofflink.c:2986 #, c-format msgid "%pB: illegal symbol index %ld in relocs" msgstr "" #: coff-tic30.c:172 coff-tic4x.c:228 coff-tic54x.c:338 coff-z80.c:325 -#: coff-z8k.c:188 coffcode.h:5314 +#: coff-z8k.c:188 coffcode.h:5305 #, c-format msgid "%pB: warning: illegal symbol index %ld in relocs" msgstr "" @@ -465,152 +466,152 @@ msgstr "" msgid "%pB (%s): section flag %s (%#lx) ignored" msgstr "" -#: coffcode.h:1954 +#: coffcode.h:1945 #, c-format msgid "%pB: overflow reloc count too small" msgstr "" -#: coffcode.h:1963 coffcode.h:2028 +#: coffcode.h:1954 coffcode.h:2019 #, c-format msgid "%pB: warning: claims to have 0xffff relocs, without overflow" msgstr "" -#: coffcode.h:2411 +#: coffcode.h:2402 #, c-format msgid "unrecognized TI COFF target id '0x%x'" msgstr "" -#: coffcode.h:2690 +#: coffcode.h:2681 #, c-format msgid "%pB: reloc against a non-existent symbol index: %ld" msgstr "" -#: coffcode.h:3162 +#: coffcode.h:3153 #, c-format msgid "%pB: too many sections (%d)" msgstr "" -#: coffcode.h:3690 +#: coffcode.h:3681 #, c-format msgid "%pB: section %pA: string table overflow at offset %ld" msgstr "" -#: coffcode.h:3791 +#: coffcode.h:3782 #, c-format msgid "%pB:%s section %s: alignment 2**%u not representable" msgstr "" -#: coffcode.h:4532 +#: coffcode.h:4523 #, c-format msgid "%pB: warning: line number table read failed" msgstr "" -#: coffcode.h:4578 coffcode.h:4592 +#: coffcode.h:4569 coffcode.h:4583 #, c-format msgid "%pB: warning: illegal symbol index 0x%lx in line number entry %d" msgstr "" -#: coffcode.h:4606 +#: coffcode.h:4597 #, c-format msgid "%pB: warning: illegal symbol in line number entry %d" msgstr "" -#: coffcode.h:4619 +#: coffcode.h:4610 #, c-format msgid "%pB: warning: duplicate line number information for `%s'" msgstr "" -#: coffcode.h:5043 +#: coffcode.h:5034 #, c-format msgid "%pB: unrecognized storage class %d for %s symbol `%s'" msgstr "" -#: coffcode.h:5183 +#: coffcode.h:5174 #, c-format msgid "warning: %pB: local symbol `%s' has no section" msgstr "" -#: coffcode.h:5354 +#: coffcode.h:5345 #, c-format msgid "%pB: illegal relocation type %d at address %#<PRIx64>" msgstr "" -#: coffgen.c:255 elf.c:1033 +#: coffgen.c:257 elf.c:1060 #, c-format msgid "%pB: unable to compress section %s" msgstr "" -#: coffgen.c:265 elf.c:1043 +#: coffgen.c:267 elf.c:1070 #, c-format msgid "%pB: unable to decompress section %s" msgstr "" -#: coffgen.c:1778 +#: coffgen.c:1795 #, c-format msgid "%pB: bad string table size %<PRIu64>" msgstr "" -#: coffgen.c:2162 coffgen.c:2301 cofflink.c:2012 ecoff.c:1456 elf.c:2288 -#: elf.c:2320 pef.c:214 syms.c:788 xcofflink.c:5530 +#: coffgen.c:2179 coffgen.c:2318 cofflink.c:2051 ecoff.c:1444 elf.c:2313 +#: elf.c:2345 pef.c:214 syms.c:789 xcofflink.c:384 xcofflink.c:5577 msgid "<corrupt>" msgstr "" -#: coffgen.c:2191 +#: coffgen.c:2208 #, c-format msgid "<corrupt info> %s" msgstr "" -#: coffgen.c:2797 elflink.c:15435 linker.c:3011 -msgid "%F%P: already_linked_table: %E\n" +#: coffgen.c:2818 elflink.c:15490 linker.c:3061 +msgid "%P: already_linked_table: %E\n" msgstr "" -#: coffgen.c:3139 elflink.c:14375 +#: coffgen.c:3175 elflink.c:14430 #, c-format msgid "removing unused section '%pA' in file '%pB'" msgstr "" -#: coffgen.c:3216 elflink.c:14606 +#: coffgen.c:3252 elflink.c:14661 msgid "warning: gc-sections option ignored" msgstr "" -#: cofflink.c:398 +#: cofflink.c:399 #, c-format msgid "warning: symbol `%s' is both section and non-section" msgstr "" -#: cofflink.c:503 elf64-ia64-vms.c:5198 elflink.c:5560 +#: cofflink.c:504 elf64-ia64-vms.c:5200 elflink.c:5587 #, c-format msgid "warning: type of symbol `%s' changed from %d to %d in %pB" msgstr "" -#: cofflink.c:2340 +#: cofflink.c:2379 #, c-format msgid "%pB: relocs in section `%pA', but it has no contents" msgstr "" -#: cofflink.c:2403 elflink.c:11809 +#: cofflink.c:2442 elflink.c:11880 #, c-format msgid "" "%X`%s' referenced in section `%pA' of %pB: defined in discarded section `%" "pA' of %pB\n" msgstr "" -#: cofflink.c:2598 +#: cofflink.c:2637 #, c-format msgid "%pB: stripping non-representable symbol '%s' (value 0x%<PRIx64>)" msgstr "" -#: cofflink.c:2716 +#: cofflink.c:2755 #, c-format msgid "%pB: %pA: reloc overflow: %#x > 0xffff" msgstr "" -#: cofflink.c:2724 +#: cofflink.c:2763 #, c-format msgid "%pB: warning: %pA: line number overflow: %#x > 0xffff" msgstr "" -#: cofflink.c:3118 +#: cofflink.c:3157 #, c-format msgid "%pB: bad reloc address %#<PRIx64> in section `%pA'" msgstr "" @@ -620,7 +621,7 @@ msgstr "" msgid "%pB: %s: reloc overflow: 0x%lx > 0xffff" msgstr "" -#: compress.c:748 compress.c:765 libbfd.c:1322 +#: compress.c:732 compress.c:749 libbfd.c:1322 #, c-format msgid "error: %pB(%pA) is too large (%#<PRIx64> bytes)" msgstr "" @@ -764,163 +765,168 @@ msgid "" "greater than '%u'" msgstr "" -#: ecoff.c:1017 +#: ecoff.c:1005 #, c-format msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)" msgstr "" -#: ecoff.c:1313 +#: ecoff.c:1301 #, c-format msgid "unknown basic type %d" msgstr "" -#: ecoff.c:1571 +#: ecoff.c:1559 #, c-format msgid "" "\n" " End+1 symbol: %ld" msgstr "" -#: ecoff.c:1578 ecoff.c:1581 +#: ecoff.c:1566 ecoff.c:1569 #, c-format msgid "" "\n" " First symbol: %ld" msgstr "" -#: ecoff.c:1596 +#: ecoff.c:1584 #, c-format msgid "" "\n" " End+1 symbol: %-7ld Type: %s" msgstr "" -#: ecoff.c:1604 +#: ecoff.c:1592 #, c-format msgid "" "\n" " Local symbol: %ld" msgstr "" -#: ecoff.c:1612 +#: ecoff.c:1600 #, c-format msgid "" "\n" " struct; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1617 +#: ecoff.c:1605 #, c-format msgid "" "\n" " union; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1622 +#: ecoff.c:1610 #, c-format msgid "" "\n" " enum; End+1 symbol: %ld" msgstr "" -#: ecoff.c:1630 +#: ecoff.c:1618 #, c-format msgid "" "\n" " Type: %s" msgstr "" -#: elf-attrs.c:417 elf-attrs.c:447 elf-attrs.c:623 +#: elf-attrs.c:424 elf-attrs.c:454 elf-attrs.c:596 msgid "error adding attribute" msgstr "" -#: elf-attrs.c:503 +#: elf-attrs.c:513 +#, c-format +msgid "%pB: error: attribute section length too small: %ld" +msgstr "" + +#: elf-attrs.c:623 #, c-format msgid "%pB: error: attribute section '%pA' too big: %#llx" msgstr "" -#: elf-attrs.c:540 +#: elf-attrs.c:642 #, c-format -msgid "%pB: error: attribute section length too small: %ld" +msgid "%pB: error: unknown attributes version '%c'(%d) - expecting 'A'\n" msgstr "" -#: elf-attrs.c:673 +#: elf-attrs.c:688 #, c-format msgid "" "error: %pB: object has vendor-specific contents that must be processed by " "the '%s' toolchain" msgstr "" -#: elf-attrs.c:683 +#: elf-attrs.c:698 #, c-format msgid "error: %pB: object tag '%d, %s' is incompatible with tag '%d, %s'" msgstr "" -#: elf-eh-frame.c:946 +#: elf-eh-frame.c:952 #, c-format msgid "discarding zero address range FDE in %pB(%pA).\n" msgstr "" -#: elf-eh-frame.c:1051 +#: elf-eh-frame.c:1057 #, c-format msgid "error in %pB(%pA); no .eh_frame_hdr table will be created" msgstr "" -#: elf-eh-frame.c:1542 +#: elf-eh-frame.c:1548 #, c-format msgid "FDE encoding in %pB(%pA) prevents .eh_frame_hdr table being created" msgstr "" -#: elf-eh-frame.c:1549 +#: elf-eh-frame.c:1555 msgid "" "further warnings about FDE encoding preventing .eh_frame_hdr generation " "dropped" msgstr "" -#: elf-eh-frame.c:1872 +#: elf-eh-frame.c:1878 #, c-format msgid "%pB: %pA not in order" msgstr "" -#: elf-eh-frame.c:1886 +#: elf-eh-frame.c:1892 #, c-format msgid "%pB: %pA invalid input section size" msgstr "" -#: elf-eh-frame.c:1894 +#: elf-eh-frame.c:1900 #, c-format msgid "%pB: %pA points past end of text section" msgstr "" -#: elf-eh-frame.c:2147 +#: elf-eh-frame.c:2153 msgid "DW_EH_PE_datarel unspecified for this architecture" msgstr "" -#: elf-eh-frame.c:2317 +#: elf-eh-frame.c:2323 #, c-format msgid "invalid output section for .eh_frame_entry: %pA" msgstr "" -#: elf-eh-frame.c:2340 +#: elf-eh-frame.c:2346 #, c-format msgid "invalid contents in %pA section" msgstr "" -#: elf-eh-frame.c:2496 +#: elf-eh-frame.c:2500 msgid ".eh_frame_hdr entry overflow" msgstr "" -#: elf-eh-frame.c:2498 +#: elf-eh-frame.c:2502 msgid ".eh_frame_hdr refers to overlapping FDEs" msgstr "" #. xgettext:c-format. #: elf-ifunc.c:144 -#: elfnn-loongarch.c:1704 +#: elfnn-loongarch.c:1713 #, c-format msgid "" -"%F%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can " -"not be used when making an executable; recompile with -fPIE and relink with -" +"%P: dynamic STT_GNU_IFUNC symbol `%s' with pointer equality in `%pB' can not " +"be used when making an executable; recompile with -fPIE and relink with -" "pie\n" msgstr "" @@ -928,31 +934,31 @@ msgstr "" #: elf32-cris.c:2033 elf32-crx.c:922 elf32-d10v.c:510 elf32-epiphany.c:563 #: elf32-fr30.c:594 elf32-frv.c:4048 elf32-ft32.c:492 elf32-h8300.c:523 #: elf32-ip2k.c:1478 elf32-iq2000.c:691 elf32-lm32.c:1069 elf32-m32c.c:624 -#: elf32-m32r.c:2837 elf32-m68hc1x.c:1270 elf32-mep.c:522 elf32-metag.c:1983 -#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6092 -#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5081 -#: elf32-tilepro.c:3369 elf32-v850.c:2297 elf32-visium.c:680 -#: elf32-xstormy16.c:930 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3742 +#: elf32-m32r.c:2839 elf32-m68hc1x.c:1271 elf32-mep.c:522 elf32-metag.c:1983 +#: elf32-microblaze.c:1677 elf32-moxie.c:288 elf32-mt.c:402 elf32-nds32.c:6099 +#: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5084 +#: elf32-tilepro.c:3371 elf32-v850.c:2297 elf32-visium.c:680 +#: elf32-xstormy16.c:931 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3744 msgid "internal error: out of range error" msgstr "" #: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3136 elf32-cr16.c:1433 #: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598 #: elf32-frv.c:4052 elf32-ft32.c:496 elf32-h8300.c:527 elf32-iq2000.c:695 -#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2841 elf32-m68hc1x.c:1274 +#: elf32-lm32.c:1073 elf32-m32c.c:628 elf32-m32r.c:2843 elf32-m68hc1x.c:1275 #: elf32-mep.c:526 elf32-metag.c:1987 elf32-microblaze.c:1681 -#: elf32-moxie.c:292 elf32-msp430.c:1510 elf32-nds32.c:6096 elf32-or1k.c:1899 -#: elf32-score.c:2728 elf32-score7.c:2539 elf32-spu.c:5085 -#: elf32-tilepro.c:3373 elf32-v850.c:2301 elf32-visium.c:684 -#: elf32-xstormy16.c:934 elf64-mmix.c:1541 elfxx-mips.c:10642 -#: elfxx-tilegx.c:3746 +#: elf32-moxie.c:292 elf32-msp430.c:1510 elf32-nds32.c:6103 elf32-or1k.c:1899 +#: elf32-score.c:2728 elf32-score7.c:2539 elf32-spu.c:5088 +#: elf32-tilepro.c:3375 elf32-v850.c:2301 elf32-visium.c:684 +#: elf32-xstormy16.c:935 elf64-mmix.c:1541 elfxx-mips.c:10727 +#: elfxx-tilegx.c:3748 msgid "internal error: unsupported relocation error" msgstr "" #: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518 -#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2845 elf32-m68hc1x.c:1278 -#: elf32-microblaze.c:1685 elf32-nds32.c:6100 elf32-score.c:2732 -#: elf32-score7.c:2543 elf32-spu.c:5089 +#: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2847 elf32-m68hc1x.c:1279 +#: elf32-microblaze.c:1685 elf32-nds32.c:6107 elf32-score.c:2732 +#: elf32-score7.c:2543 elf32-spu.c:5092 msgid "internal error: dangerous error" msgstr "" @@ -960,12 +966,12 @@ msgstr "" #: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578 #: elf32-fr30.c:606 elf32-frv.c:4060 elf32-ft32.c:504 elf32-h8300.c:535 #: elf32-ip2k.c:1493 elf32-iq2000.c:703 elf32-lm32.c:1081 elf32-m32c.c:636 -#: elf32-m32r.c:2849 elf32-m68hc1x.c:1282 elf32-mep.c:534 elf32-metag.c:1995 +#: elf32-m32r.c:2851 elf32-m68hc1x.c:1283 elf32-mep.c:534 elf32-metag.c:1995 #: elf32-microblaze.c:1689 elf32-moxie.c:300 elf32-msp430.c:1518 -#: elf32-mt.c:410 elf32-nds32.c:6104 elf32-or1k.c:1907 elf32-score.c:2741 -#: elf32-score7.c:2547 elf32-spu.c:5093 elf32-tilepro.c:3381 elf32-v850.c:2321 -#: elf32-visium.c:692 elf32-xstormy16.c:942 elf64-bpf.c:352 elf64-mmix.c:1549 -#: elfxx-tilegx.c:3754 +#: elf32-mt.c:410 elf32-nds32.c:6111 elf32-or1k.c:1907 elf32-score.c:2741 +#: elf32-score7.c:2547 elf32-spu.c:5096 elf32-tilepro.c:3383 elf32-v850.c:2321 +#: elf32-visium.c:692 elf32-xstormy16.c:943 elf64-bpf.c:352 elf64-mmix.c:1549 +#: elfxx-tilegx.c:3756 msgid "internal error: unknown error" msgstr "" @@ -979,13 +985,13 @@ msgstr "" msgid "%pB: %s' accessed both as normal and thread local symbol" msgstr "" -#: elf-m10300.c:2093 elf32-arm.c:13472 elf32-i386.c:3503 elf32-m32r.c:2331 -#: elf32-m68k.c:3929 elf32-s390.c:3072 elf32-sh.c:3672 elf32-tilepro.c:3272 -#: elf32-xtensa.c:3020 elf64-s390.c:3129 elf64-x86-64.c:4564 -#: elfxx-sparc.c:2913 elfxx-sparc.c:3810 elfxx-tilegx.c:3665 -#: elfnn-aarch64.c:5725 -#: elfnn-aarch64.c:7343 -#: elfnn-kvx.c:2772 +#: elf-m10300.c:2093 elf32-arm.c:13476 elf32-i386.c:3545 elf32-m32r.c:2333 +#: elf32-m68k.c:3931 elf32-s390.c:3074 elf32-sh.c:3674 elf32-tilepro.c:3274 +#: elf32-xtensa.c:3022 elf64-s390.c:3391 elf64-x86-64.c:5025 +#: elfxx-sparc.c:2924 elfxx-sparc.c:3820 elfxx-tilegx.c:3667 +#: elfnn-aarch64.c:5743 +#: elfnn-aarch64.c:7361 +#: elfnn-kvx.c:2773 #, c-format msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation against symbol `%s'" msgstr "" @@ -1007,113 +1013,118 @@ msgstr "" msgid "internal error: suspicious relocation type used in shared library" msgstr "" -#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5621 elf64-ia64-vms.c:365 -#: elfxx-sparc.c:2680 reloc.c:8370 reloc16.c:155 +#: elf-m10300.c:2650 elf32-avr.c:2483 elf32-frv.c:5627 elf64-ia64-vms.c:365 +#: elfxx-sparc.c:2691 reloc.c:8376 reloc16.c:155 #: elfnn-ia64.c:365 -msgid "%P%F: --relax and -r may not be used together\n" +msgid "%P: --relax and -r may not be used together\n" msgstr "" -#: elf-properties.c:65 +#: elf-properties.c:121 #, c-format msgid "%pB: out of memory in _bfd_elf_get_property" msgstr "" -#: elf-properties.c:91 +#: elf-properties.c:150 #, c-format msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) size: %#lx" msgstr "" -#: elf-properties.c:112 +#: elf-properties.c:171 #, c-format msgid "warning: %pB: corrupt GNU_PROPERTY_TYPE (%ld) type (0x%x) datasz: 0x%x" msgstr "" -#: elf-properties.c:151 +#: elf-properties.c:210 #, c-format msgid "warning: %pB: corrupt stack size: 0x%x" msgstr "" -#: elf-properties.c:169 +#: elf-properties.c:228 #, c-format msgid "warning: %pB: corrupt no copy on protected size: 0x%x" msgstr "" -#: elf-properties.c:184 +#: elf-properties.c:243 #, c-format msgid "warning: %pB: corrupt memory sealing size: 0x%x" msgstr "" -#: elf-properties.c:203 +#: elf-properties.c:262 #, c-format msgid "error: %pB: <corrupt property (0x%x) size: 0x%x>" msgstr "" -#: elf-properties.c:228 +#: elf-properties.c:287 #, c-format msgid "warning: %pB: unsupported GNU_PROPERTY_TYPE (%ld) type: 0x%x" msgstr "" -#: elf-properties.c:415 +#: elf-properties.c:467 msgid "Removed property %W to merge %pB (0x%v) and %pB (0x%v)\n" msgstr "" -#: elf-properties.c:421 +#: elf-properties.c:473 msgid "Removed property %W to merge %pB (0x%v) and %pB (not found)\n" msgstr "" -#: elf-properties.c:430 elf-properties.c:508 +#: elf-properties.c:482 elf-properties.c:560 msgid "Removed property %W to merge %pB and %pB\n" msgstr "" -#: elf-properties.c:434 +#: elf-properties.c:486 msgid "Removed property %W to merge %pB and %pB (not found)\n" msgstr "" -#: elf-properties.c:451 +#: elf-properties.c:503 msgid "Updated property %W (0x%v) to merge %pB (0x%v) and %pB (0x%v)\n" msgstr "" -#: elf-properties.c:460 +#: elf-properties.c:512 msgid "Updated property %W (%v) to merge %pB (0x%v) and %pB (not found)\n" msgstr "" -#: elf-properties.c:502 +#: elf-properties.c:554 msgid "Removed property %W to merge %pB (not found) and %pB (0x%v)\n" msgstr "" -#: elf-properties.c:640 elfxx-aarch64.c:748 elfxx-x86.c:4348 -msgid "%F%P: failed to create GNU property section\n" -msgstr "" - -#: elf-properties.c:644 elfxx-aarch64.c:752 elfxx-x86.c:4353 -#, c-format -msgid "%F%pA: failed to align section\n" +#: elf-properties.c:693 elfxx-aarch64.c:765 +msgid "%P: failed to create %s\n" msgstr "" #. Merge .note.gnu.property sections. -#: elf-properties.c:749 elf-properties.c:751 +#: elf-properties.c:798 elf-properties.c:800 msgid "\n" msgstr "" -#: elf-properties.c:750 +#: elf-properties.c:799 msgid "Merging program properties\n" msgstr "" -#: elf-sframe.c:239 +#: elf-sframe.c:201 +#, c-format +msgid "error in %pB(%pA); unexpected SFrame section type" +msgstr "" + +#: elf-sframe.c:252 #, c-format msgid "error in %pB(%pA); no .sframe will be created" msgstr "" -#: elf-sframe.c:399 +#: elf-sframe.c:426 msgid "input SFrame sections with different abi prevent .sframe generation" msgstr "" -#: elf-sframe.c:410 +#: elf-sframe.c:437 msgid "" "input SFrame sections with different format versions prevent .sframe " "generation" msgstr "" +#: elf-sframe.c:450 +msgid "" +"SFrame sections with unexpected data encoding prevent .sframe generation" +msgstr "" + #: elf.c:299 #, c-format msgid "%pB: string table [%u] is corrupt" @@ -1130,197 +1141,212 @@ msgstr "" msgid "%pB: invalid string offset %u >= %<PRIu64> for section `%s'" msgstr "" -#: elf.c:511 elf32-arm.c:17773 -#: elfnn-aarch64.c:8343 -#: elfnn-loongarch.c:6132 -#: elfnn-riscv.c:3688 +#: elf.c:512 elf32-arm.c:17779 +#: elfnn-aarch64.c:8361 +#: elfnn-loongarch.c:6449 +#: elfnn-riscv.c:3885 #, c-format msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "" -#: elf.c:614 +#: elf.c:526 +#, c-format +msgid "%pB symbol number %lu uses unsupported binding of %u" +msgstr "" + +#: elf.c:538 +#, c-format +msgid "%pB symbol number %lu uses unsupported type of %u" +msgstr "" + +#: elf.c:641 #, c-format msgid "%pB: could not read contents of group [%u]" msgstr "" -#: elf.c:645 +#: elf.c:672 #, c-format msgid "%pB: invalid entry (%#x) in group [%u]" msgstr "" -#: elf.c:664 +#: elf.c:691 #, c-format msgid "%pB: unexpected type (%#x) section `%s' in group [%u]" msgstr "" -#: elf.c:740 +#: elf.c:767 #, c-format msgid "%pB: sh_link [%d] in section `%pA' is incorrect" msgstr "" -#: elf.c:769 +#: elf.c:796 #, c-format msgid "%pB: section group entry number %u is corrupt" msgstr "" -#: elf.c:1051 +#: elf.c:1078 #, c-format msgid "" "%pB: section %s is compressed with zstd, but BFD is not built with zstd " "support" msgstr "" -#: elf.c:1237 +#: elf.c:1264 #, c-format msgid "%pB: invalid sh_link field (%d) in section number %d" msgstr "" -#: elf.c:1253 +#: elf.c:1280 #, c-format msgid "%pB: failed to find link section for section %d" msgstr "" -#: elf.c:1280 +#: elf.c:1307 #, c-format msgid "%pB: failed to find info section for section %d" msgstr "" -#: elf.c:1457 +#: elf.c:1484 #, c-format msgid "" "\n" "Program Header:\n" msgstr "" -#: elf.c:1499 +#: elf.c:1526 #, c-format msgid "" "\n" "Dynamic Section:\n" msgstr "" -#: elf.c:1638 +#: elf.c:1665 #, c-format msgid "" "\n" "Version definitions:\n" msgstr "" -#: elf.c:1663 +#: elf.c:1690 #, c-format msgid "" "\n" "Version References:\n" msgstr "" -#: elf.c:1668 +#: elf.c:1695 #, c-format msgid " required from %s:\n" msgstr "" -#: elf.c:1917 +#: elf.c:1944 #, c-format msgid "%pB: DT_STRTAB table is corrupt" msgstr "" -#: elf.c:2426 +#: elf.c:2451 #, c-format msgid "%pB: warning: loop in section dependencies detected" msgstr "" -#: elf.c:2533 +#: elf.c:2559 #, c-format msgid "" "%pB: warning: multiple symbol tables detected - ignoring the table in " "section %u" msgstr "" -#: elf.c:2618 +#: elf.c:2644 #, c-format msgid "" "%pB: warning: multiple dynamic symbol tables detected - ignoring the table " "in section %u" msgstr "" -#: elf.c:2737 +#: elf.c:2763 #, c-format msgid "%pB: invalid link %u for reloc section %s (index %u)" msgstr "" -#: elf.c:2794 +#: elf.c:2820 #, c-format msgid "" "%pB: warning: secondary relocation section '%s' for section %pA found - " "ignoring" msgstr "" -#: elf.c:2879 elf.c:2893 elf.c:2904 elf.c:2917 +#: elf.c:2905 elf.c:2919 elf.c:2930 elf.c:2943 #, c-format msgid "%pB: unknown type [%#x] section `%s'" msgstr "" -#: elf.c:3586 +#: elf.c:3614 #, c-format msgid "%pB: error: alignment power %d of section `%pA' is too big" msgstr "" -#: elf.c:3621 +#: elf.c:3649 #, c-format msgid "warning: section `%pA' type changed to PROGBITS" msgstr "" -#: elf.c:4130 +#: elf.c:3981 +#, c-format +msgid "%pB: corrupted group section: `%pA'" +msgstr "" + +#: elf.c:4156 #, c-format msgid "%pB: too many sections: %u" msgstr "" -#: elf.c:4216 +#: elf.c:4242 #, c-format msgid "" "%pB: sh_link of section `%pA' points to discarded section `%pA' of `%pB'" msgstr "" -#: elf.c:4234 +#: elf.c:4260 #, c-format msgid "%pB: sh_link of section `%pA' points to removed section `%pA' of `%pB'" msgstr "" -#: elf.c:4830 +#: elf.c:4860 #, c-format msgid "%pB: GNU_MBIND section `%pA' has invalid sh_info field: %d" msgstr "" -#: elf.c:5013 -msgid "%F%P: failed to size relative relocations\n" +#: elf.c:5043 +msgid "%P: failed to size relative relocations\n" msgstr "" -#: elf.c:5440 +#: elf.c:5470 #, c-format msgid "%pB: TLS sections are not adjacent:" msgstr "" -#: elf.c:5447 +#: elf.c:5477 #, c-format msgid "\t TLS: %pA" msgstr "" -#: elf.c:5451 +#: elf.c:5481 #, c-format msgid "\tnon-TLS: %pA" msgstr "" -#: elf.c:6075 +#: elf.c:6103 #, c-format msgid "" "%pB: The first section in the PT_DYNAMIC segment is not the .dynamic section" msgstr "" -#: elf.c:6101 +#: elf.c:6129 #, c-format msgid "%pB: not enough room for program headers, try linking with -N" msgstr "" -#: elf.c:6222 +#: elf.c:6256 #, c-format msgid "%pB: section %pA lma %#<PRIx64> adjusted to %#<PRIx64>" msgstr "" @@ -1328,201 +1354,201 @@ msgstr "" #. The fix for this error is usually to edit the linker script being #. used and set up the program headers manually. Either that or #. leave room for the headers at the start of the SECTIONS. -#: elf.c:6362 +#: elf.c:6397 #, c-format msgid "%pB: error: PHDR segment not covered by LOAD segment" msgstr "" -#: elf.c:6402 +#: elf.c:6437 #, c-format msgid "%pB: section `%pA' can't be allocated in segment %u" msgstr "" -#: elf.c:6543 +#: elf.c:6575 #, c-format msgid "%pB: warning: allocated section `%s' not in segment" msgstr "" -#: elf.c:6678 +#: elf.c:6710 #, c-format msgid "%pB: warning: unable to allocate any sections to PT_GNU_RELRO segment" msgstr "" -#: elf.c:6709 +#: elf.c:6741 #, c-format msgid "" "%pB: error: non-load segment %d includes file header and/or program header" msgstr "" -#: elf.c:6862 +#: elf.c:6894 #, c-format msgid "error: %pB has a TLS segment with execute permission" msgstr "" -#: elf.c:6868 +#: elf.c:6900 #, c-format msgid "warning: %pB has a TLS segment with execute permission" msgstr "" -#: elf.c:6883 +#: elf.c:6915 #, c-format msgid "error: %pB has a LOAD segment with RWX permissions" msgstr "" -#: elf.c:6889 +#: elf.c:6921 #, c-format msgid "warning: %pB has a LOAD segment with RWX permissions" msgstr "" -#: elf.c:7284 +#: elf.c:7316 #, c-format msgid "%pB: symbol `%s' required but not present" msgstr "" -#: elf.c:7661 +#: elf.c:7693 #, c-format msgid "" "%pB: warning: empty loadable segment detected at vaddr=%#<PRIx64>, is this " "intentional?" msgstr "" -#: elf.c:8334 +#: elf.c:8366 #, c-format msgid "%pB: warning: segment alignment of %#<PRIx64> is too large" msgstr "" -#: elf.c:8837 +#: elf.c:8848 #, c-format msgid "" "%pB: Unable to handle section index %x in ELF symbol. Using ABS instead." msgstr "" -#: elf.c:8867 +#: elf.c:8878 #, c-format msgid "" "unable to find equivalent output section for symbol '%s' from section '%s'" msgstr "" -#: elf.c:9300 +#: elf.c:9311 #, c-format msgid "%pB: .gnu.version_r invalid entry" msgstr "" -#: elf.c:9478 +#: elf.c:9489 #, c-format msgid "%pB: .gnu.version_d invalid entry" msgstr "" -#: elf.c:9981 +#: elf.c:9992 #, c-format msgid "%pB:%pA: error: attempting to write over the end of the section" msgstr "" -#: elf.c:9993 +#: elf.c:10004 #, c-format msgid "%pB:%pA: error: attempting to write section into an empty buffer" msgstr "" -#: elf.c:10108 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7675 -#: elf32-ppc.c:8863 elf64-ppc.c:16860 +#: elf.c:10119 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7666 +#: elf32-ppc.c:8854 elf64-ppc.c:16870 #, c-format msgid "%pB: %s unsupported" msgstr "" -#: elf.c:10923 +#: elf.c:10966 #, c-format msgid "%pB: warning: win32pstatus %s of size %lu bytes is too small" msgstr "" -#: elf.c:11002 +#: elf.c:11045 #, c-format msgid "" "%pB: win32pstatus NOTE_INFO_MODULE of size %lu is too small to contain a " "name of size %u" msgstr "" -#: elf.c:13640 +#: elf.c:13726 msgid "GNU_MBIND section is supported only by GNU and FreeBSD targets" msgstr "" -#: elf.c:13643 +#: elf.c:13729 msgid "symbol type STT_GNU_IFUNC is supported only by GNU and FreeBSD targets" msgstr "" -#: elf.c:13646 +#: elf.c:13732 msgid "" "symbol binding STB_GNU_UNIQUE is supported only by GNU and FreeBSD targets" msgstr "" -#: elf.c:13649 +#: elf.c:13735 msgid "GNU_RETAIN section is supported only by GNU and FreeBSD targets" msgstr "" -#: elf.c:13866 +#: elf.c:13952 #, c-format msgid "%pB(%pA): relocation %zu has invalid symbol index %lu" msgstr "" -#: elf.c:13941 +#: elf.c:14027 #, c-format msgid "" "%pB(%pA): link section cannot be set because the output file does not have a " "symbol table" msgstr "" -#: elf.c:13955 +#: elf.c:14041 #, c-format msgid "%pB(%pA): info section index is invalid" msgstr "" -#: elf.c:13969 +#: elf.c:14055 #, c-format msgid "" "%pB(%pA): info section index cannot be set because the section is not in the " "output" msgstr "" -#: elf.c:14045 +#: elf.c:14131 #, c-format msgid "%pB(%pA): error: secondary reloc section processed twice" msgstr "" -#: elf.c:14057 +#: elf.c:14143 #, c-format msgid "%pB(%pA): error: secondary reloc section has zero sized entries" msgstr "" -#: elf.c:14069 +#: elf.c:14155 #, c-format msgid "%pB(%pA): error: secondary reloc section has non-standard sized entries" msgstr "" -#: elf.c:14083 +#: elf.c:14169 #, c-format msgid "%pB(%pA): error: secondary reloc section is empty!" msgstr "" -#: elf.c:14106 +#: elf.c:14193 #, c-format msgid "%pB(%pA): error: internal relocs missing for secondary reloc section" msgstr "" -#: elf.c:14126 +#: elf.c:14213 #, c-format msgid "%pB(%pA): error: reloc table entry %zu is empty" msgstr "" -#: elf.c:14151 +#: elf.c:14238 #, c-format msgid "%pB(%pA): error: secondary reloc %zu references a missing symbol" msgstr "" -#: elf.c:14169 +#: elf.c:14256 #, c-format msgid "%pB(%pA): error: secondary reloc %zu references a deleted symbol" msgstr "" -#: elf.c:14183 +#: elf.c:14270 #, c-format msgid "%pB(%pA): error: secondary reloc %zu is of an unknown type" msgstr "" @@ -1531,10 +1557,10 @@ msgstr "" #. containing valid data. #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. -#: elf32-arc.c:454 elf32-arm.c:15194 elf32-frv.c:6612 elf32-iq2000.c:868 -#: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218 +#: elf32-arc.c:454 elf32-arm.c:15198 elf32-frv.c:6618 elf32-iq2000.c:868 +#: elf32-m32c.c:915 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218 #: elf32-visium.c:844 elf64-ppc.c:5531 -#: elfnn-aarch64.c:7573 +#: elfnn-aarch64.c:7591 #, c-format msgid "private flags = 0x%lx:" msgstr "" @@ -1580,8 +1606,8 @@ msgid "" "error: attempting to link %pB with a binary %pB of different architecture" msgstr "" -#: elf32-arc.c:937 elf32-iq2000.c:844 elf32-m32c.c:889 elf32-m68hc1x.c:1389 -#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15680 +#: elf32-arc.c:937 elf32-iq2000.c:844 elf32-m32c.c:890 elf32-m68hc1x.c:1390 +#: elf32-ppc.c:3854 elf64-sparc.c:737 elfxx-mips.c:15766 #, c-format msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)" msgstr "" @@ -1638,27 +1664,27 @@ msgstr "" msgid "%pB(%pA): internal error: unknown error" msgstr "" -#: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15637 elf32-metag.c:2250 -#: elf32-nds32.c:5542 -#: elfnn-aarch64.c:7980 -#: elfnn-riscv.c:722 +#: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15641 elf32-metag.c:2250 +#: elf32-nds32.c:5549 +#: elfnn-aarch64.c:7998 +#: elfnn-riscv.c:915 #, c-format msgid "" "%pB: relocation %s against `%s' can not be used when making a shared object; " "recompile with -fPIC" msgstr "" -#: elf32-arc.c:2920 +#: elf32-arc.c:2922 #, c-format msgid "%pB: unknown mandatory ARC object attribute %d" msgstr "" -#: elf32-arc.c:2928 +#: elf32-arc.c:2930 #, c-format msgid "warning: %pB: unknown ARC object attribute %d" msgstr "" -#: elf32-arm.c:4365 elf32-arm.c:4399 elf32-arm.c:4418 elf32-arm.c:4470 +#: elf32-arm.c:4367 elf32-arm.c:4401 elf32-arm.c:4420 elf32-arm.c:4472 #, c-format msgid "" "%pB(%pA): warning: long branch veneers used in section with SHF_ARM_PURECODE " @@ -1666,158 +1692,158 @@ msgid "" "movw instruction" msgstr "" -#: elf32-arm.c:4430 elf32-arm.c:4484 elf32-arm.c:9181 elf32-arm.c:9271 +#: elf32-arm.c:4432 elf32-arm.c:4486 elf32-arm.c:9185 elf32-arm.c:9275 #, c-format msgid "" "%pB(%s): warning: interworking not enabled; first occurrence: %pB: %s call " "to %s" msgstr "" -#: elf32-arm.c:4610 +#: elf32-arm.c:4612 #, c-format msgid "" "ERROR: CMSE stub (%s section) too far (%#<PRIx64>) from destination (%" "#<PRIx64>)" msgstr "" -#: elf32-arm.c:4779 +#: elf32-arm.c:4781 #, c-format msgid "no address assigned to the veneers output section %s" msgstr "" -#: elf32-arm.c:4854 elf32-arm.c:7003 elf32-csky.c:3385 elf32-hppa.c:581 -#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14175 -#: elfnn-aarch64.c:3188 +#: elf32-arm.c:4856 elf32-arm.c:7005 elf32-csky.c:3387 elf32-hppa.c:581 +#: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14180 +#: elfnn-aarch64.c:3200 #: elfnn-kvx.c:894 #, c-format msgid "%pB: cannot create stub entry %s" msgstr "" -#: elf32-arm.c:5075 elf32-csky.c:3727 elf32-hppa.c:731 elf32-hppa.c:760 -#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3344 -#: elf64-ppc.c:12292 elf64-ppc.c:12300 xcofflink.c:4676 -#: elfnn-aarch64.c:3260 +#: elf32-arm.c:5077 elf32-csky.c:3729 elf32-hppa.c:731 elf32-hppa.c:760 +#: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3346 +#: elf64-ppc.c:12297 elf64-ppc.c:12305 xcofflink.c:4723 +#: elfnn-aarch64.c:3272 msgid "" -"%F%P: Could not assign `%pA' to an output section. Retry without --enable-" -"non-contiguous-regions.\n" +"%P: Could not assign `%pA' to an output section. Retry without --enable-non-" +"contiguous-regions.\n" msgstr "" -#: elf32-arm.c:6046 +#: elf32-arm.c:6048 #, c-format msgid "%pB: special symbol `%s' only allowed for ARMv8-M architecture or later" msgstr "" -#: elf32-arm.c:6055 +#: elf32-arm.c:6057 #, c-format msgid "" "%pB: invalid special symbol `%s'; it must be a global or weak function symbol" msgstr "" -#: elf32-arm.c:6094 +#: elf32-arm.c:6096 #, c-format msgid "" "%pB: invalid standard symbol `%s'; it must be a global or weak function " "symbol" msgstr "" -#: elf32-arm.c:6100 +#: elf32-arm.c:6102 #, c-format msgid "%pB: absent standard symbol `%s'" msgstr "" -#: elf32-arm.c:6112 +#: elf32-arm.c:6114 #, c-format msgid "%pB: `%s' and its special symbol are in different sections" msgstr "" -#: elf32-arm.c:6124 +#: elf32-arm.c:6126 #, c-format msgid "%pB: entry function `%s' not output" msgstr "" -#: elf32-arm.c:6131 +#: elf32-arm.c:6133 #, c-format msgid "%pB: entry function `%s' is empty" msgstr "" -#: elf32-arm.c:6260 +#: elf32-arm.c:6262 #, c-format msgid "%pB: --in-implib only supported for Secure Gateway import libraries" msgstr "" -#: elf32-arm.c:6309 +#: elf32-arm.c:6311 #, c-format msgid "" "%pB: invalid import library entry: `%s'; symbol should be absolute, global " "and refer to Thumb functions" msgstr "" -#: elf32-arm.c:6331 +#: elf32-arm.c:6333 #, c-format msgid "entry function `%s' disappeared from secure code" msgstr "" -#: elf32-arm.c:6355 +#: elf32-arm.c:6357 #, c-format msgid "`%s' refers to a non entry function" msgstr "" -#: elf32-arm.c:6370 +#: elf32-arm.c:6372 #, c-format msgid "%pB: visibility of symbol `%s' has changed" msgstr "" -#: elf32-arm.c:6379 +#: elf32-arm.c:6381 #, c-format msgid "%pB: incorrect size for symbol `%s'" msgstr "" -#: elf32-arm.c:6398 +#: elf32-arm.c:6400 #, c-format msgid "offset of veneer for entry function `%s' not a multiple of its size" msgstr "" -#: elf32-arm.c:6418 +#: elf32-arm.c:6420 msgid "" "new entry function(s) introduced but no output import library specified:" msgstr "" -#: elf32-arm.c:6426 +#: elf32-arm.c:6428 #, c-format msgid "start address of `%s' is different from previous link" msgstr "" -#: elf32-arm.c:7137 elf32-arm.c:7175 +#: elf32-arm.c:7140 elf32-arm.c:7178 #, c-format msgid "unable to find %s glue '%s' for '%s'" msgstr "" -#: elf32-arm.c:7886 +#: elf32-arm.c:7890 #, c-format msgid "%pB: BE8 images only valid in big-endian mode" msgstr "" #. Give a warning, but do as the user requests anyway. -#: elf32-arm.c:8114 +#: elf32-arm.c:8118 #, c-format msgid "" "%pB: warning: selected VFP11 erratum workaround is not necessary for target " "architecture" msgstr "" -#: elf32-arm.c:8141 +#: elf32-arm.c:8145 #, c-format msgid "" "%pB: warning: selected STM32L4XX erratum workaround is not necessary for " "target architecture" msgstr "" -#: elf32-arm.c:8677 elf32-arm.c:8697 elf32-arm.c:8764 elf32-arm.c:8783 +#: elf32-arm.c:8681 elf32-arm.c:8701 elf32-arm.c:8768 elf32-arm.c:8787 #, c-format msgid "%pB: unable to find %s veneer `%s'" msgstr "" -#: elf32-arm.c:8990 +#: elf32-arm.c:8994 #, c-format msgid "" "%pB(%pA+%#x): error: multiple load detected in non-last IT block " @@ -1825,502 +1851,502 @@ msgid "" "it to generate only one instruction per IT block" msgstr "" -#: elf32-arm.c:9088 +#: elf32-arm.c:9092 #, c-format msgid "invalid TARGET2 relocation type '%s'" msgstr "" #. FIXME: We ought to be able to generate thumb-1 PLT #. instructions... -#: elf32-arm.c:9857 +#: elf32-arm.c:9861 #, c-format msgid "%pB: warning: thumb-1 mode PLT generation not currently supported" msgstr "" -#: elf32-arm.c:10166 elf32-arm.c:10208 +#: elf32-arm.c:10170 elf32-arm.c:10212 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' in TLS trampoline" msgstr "" -#: elf32-arm.c:10489 +#: elf32-arm.c:10493 #, c-format msgid "" "warning: %pB(%s): Forcing bramch to absolute symbol in Thumb mode (Thumb-" "only CPU) in %pB" msgstr "" -#: elf32-arm.c:10494 +#: elf32-arm.c:10498 #, c-format msgid "" "warning: (%s): Forcing branch to absolute symbol in Thumb mode (Thumb-only " "CPU) in %pB" msgstr "" -#: elf32-arm.c:10523 +#: elf32-arm.c:10527 #, c-format msgid "%pB(%s): Unknown destination type (ARM/Thumb) in %pB" msgstr "" -#: elf32-arm.c:10527 +#: elf32-arm.c:10531 #, c-format msgid "(%s): Unknown destination type (ARM/Thumb) in %pB" msgstr "" -#: elf32-arm.c:10615 +#: elf32-arm.c:10619 msgid "shared object" msgstr "" -#: elf32-arm.c:10618 +#: elf32-arm.c:10622 msgid "PIE executable" msgstr "" -#: elf32-arm.c:10621 +#: elf32-arm.c:10625 #, c-format msgid "" "%pB: relocation %s against external or undefined symbol `%s' can not be used " "when making a %s; recompile with -fPIC" msgstr "" -#: elf32-arm.c:10723 +#: elf32-arm.c:10727 #, c-format msgid "\\%pB: warning: %s BLX instruction targets %s function '%s'" msgstr "" -#: elf32-arm.c:11140 +#: elf32-arm.c:11144 #, c-format msgid "%pB: warning: %s BLX instruction targets %s function '%s'" msgstr "" -#: elf32-arm.c:11774 +#: elf32-arm.c:11778 #, c-format msgid "" "%pB: expected symbol index in range 0..%lu but found local symbol with index " "%lu" msgstr "" -#: elf32-arm.c:12049 elf32-arm.c:12075 +#: elf32-arm.c:12053 elf32-arm.c:12079 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): unexpected %s instruction '%#lx' referenced by " "TLS_GOTDESC" msgstr "" -#: elf32-arm.c:12121 elf32-csky.c:4955 elf32-m68k.c:3733 elf32-metag.c:1912 +#: elf32-arm.c:12125 elf32-csky.c:4958 elf32-m68k.c:3735 elf32-metag.c:1912 #, c-format msgid "%pB(%pA+%#<PRIx64>): %s relocation not permitted in shared object" msgstr "" -#: elf32-arm.c:12335 +#: elf32-arm.c:12339 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): only ADD or SUB instructions are allowed for ALU group " "relocations" msgstr "" -#: elf32-arm.c:12376 elf32-arm.c:12468 elf32-arm.c:12556 elf32-arm.c:12646 +#: elf32-arm.c:12380 elf32-arm.c:12472 elf32-arm.c:12560 elf32-arm.c:12650 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group " "relocation %s" msgstr "" -#: elf32-arm.c:12704 elf32-arm.c:12863 +#: elf32-arm.c:12708 elf32-arm.c:12867 msgid "local symbol index too big" msgstr "" -#: elf32-arm.c:12714 elf32-arm.c:12748 +#: elf32-arm.c:12718 elf32-arm.c:12752 msgid "no dynamic index information available" msgstr "" -#: elf32-arm.c:12756 +#: elf32-arm.c:12760 msgid "invalid dynamic index" msgstr "" -#: elf32-arm.c:12873 +#: elf32-arm.c:12877 msgid "dynamic index information not available" msgstr "" -#: elf32-arm.c:13304 elf32-sh.c:3566 +#: elf32-arm.c:13308 elf32-sh.c:3568 #, c-format msgid "%pB(%pA+%#<PRIx64>): %s relocation against SEC_MERGE section" msgstr "" -#: elf32-arm.c:13417 elf32-m68k.c:3966 elf32-xtensa.c:2758 -#: elfnn-aarch64.c:7070 -#: elfnn-kvx.c:2568 +#: elf32-arm.c:13421 elf32-m68k.c:3968 elf32-xtensa.c:2760 +#: elfnn-aarch64.c:7088 +#: elfnn-kvx.c:2569 #, c-format msgid "%pB(%pA+%#<PRIx64>): %s used with TLS symbol %s" msgstr "" -#: elf32-arm.c:13419 elf32-m68k.c:3968 elf32-xtensa.c:2760 -#: elfnn-aarch64.c:7072 -#: elfnn-kvx.c:2570 +#: elf32-arm.c:13423 elf32-m68k.c:3970 elf32-xtensa.c:2762 +#: elfnn-aarch64.c:7090 +#: elfnn-kvx.c:2571 #, c-format msgid "%pB(%pA+%#<PRIx64>): %s used with non-TLS symbol %s" msgstr "" -#: elf32-arm.c:13502 elf32-tic6x.c:2641 -#: elfnn-aarch64.c:7407 -#: elfnn-kvx.c:2797 +#: elf32-arm.c:13506 elf32-tic6x.c:2641 +#: elfnn-aarch64.c:7425 +#: elfnn-kvx.c:2798 msgid "out of range" msgstr "" -#: elf32-arm.c:13506 elf32-pru.c:936 elf32-tic6x.c:2645 -#: elfnn-aarch64.c:7411 -#: elfnn-kvx.c:2801 +#: elf32-arm.c:13510 elf32-pru.c:936 elf32-tic6x.c:2645 +#: elfnn-aarch64.c:7429 +#: elfnn-kvx.c:2802 msgid "unsupported relocation" msgstr "" -#: elf32-arm.c:13514 elf32-pru.c:946 elf32-tic6x.c:2653 -#: elfnn-aarch64.c:7419 -#: elfnn-kvx.c:2809 +#: elf32-arm.c:13518 elf32-pru.c:946 elf32-tic6x.c:2653 +#: elfnn-aarch64.c:7437 +#: elfnn-kvx.c:2810 msgid "unknown error" msgstr "" -#: elf32-arm.c:13991 +#: elf32-arm.c:13995 #, c-format msgid "" "warning: not setting interworking flag of %pB since it has already been " "specified as non-interworking" msgstr "" -#: elf32-arm.c:13995 +#: elf32-arm.c:13999 #, c-format msgid "warning: clearing the interworking flag of %pB due to outside request" msgstr "" -#: elf32-arm.c:14040 +#: elf32-arm.c:14044 #, c-format msgid "" "warning: clearing the interworking flag of %pB because non-interworking code " "in %pB has been linked with it" msgstr "" -#: elf32-arm.c:14127 +#: elf32-arm.c:14131 #, c-format msgid "%pB: unknown mandatory EABI object attribute %d" msgstr "" -#: elf32-arm.c:14135 +#: elf32-arm.c:14139 #, c-format msgid "warning: %pB: unknown EABI object attribute %d" msgstr "" -#: elf32-arm.c:14470 +#: elf32-arm.c:14474 #, c-format msgid "error: %pB: unknown CPU architecture" msgstr "" -#: elf32-arm.c:14508 +#: elf32-arm.c:14512 #, c-format msgid "error: conflicting CPU architectures %s vs %s in %pB" msgstr "" -#: elf32-arm.c:14605 +#: elf32-arm.c:14609 #, c-format msgid "" "Error: %pB has both the current and legacy Tag_MPextension_use attributes" msgstr "" -#: elf32-arm.c:14642 +#: elf32-arm.c:14646 #, c-format msgid "error: %pB uses VFP register arguments, %pB does not" msgstr "" -#: elf32-arm.c:14812 +#: elf32-arm.c:14816 #, c-format msgid "error: %pB: unable to merge virtualization attributes with %pB" msgstr "" -#: elf32-arm.c:14838 +#: elf32-arm.c:14842 #, c-format msgid "error: %pB: conflicting architecture profiles %c/%c" msgstr "" -#: elf32-arm.c:14977 +#: elf32-arm.c:14981 #, c-format msgid "warning: %pB: conflicting platform configuration" msgstr "" -#: elf32-arm.c:14986 +#: elf32-arm.c:14990 #, c-format msgid "error: %pB: conflicting use of R9" msgstr "" -#: elf32-arm.c:14998 +#: elf32-arm.c:15002 #, c-format msgid "error: %pB: SB relative addressing conflicts with use of R9" msgstr "" -#: elf32-arm.c:15011 +#: elf32-arm.c:15015 #, c-format msgid "" "warning: %pB uses %u-byte wchar_t yet the output is to use %u-byte wchar_t; " "use of wchar_t values across objects may fail" msgstr "" -#: elf32-arm.c:15042 +#: elf32-arm.c:15046 #, c-format msgid "" "warning: %pB uses %s enums yet the output is to use %s enums; use of enum " "values across objects may fail" msgstr "" -#: elf32-arm.c:15054 +#: elf32-arm.c:15058 #, c-format msgid "error: %pB uses iWMMXt register arguments, %pB does not" msgstr "" -#: elf32-arm.c:15071 +#: elf32-arm.c:15075 #, c-format msgid "error: fp16 format mismatch between %pB and %pB" msgstr "" -#: elf32-arm.c:15107 +#: elf32-arm.c:15111 #, c-format msgid "%pB has both the current and legacy Tag_MPextension_use attributes" msgstr "" -#: elf32-arm.c:15203 +#: elf32-arm.c:15207 #, c-format msgid " [interworking enabled]" msgstr "" -#: elf32-arm.c:15211 +#: elf32-arm.c:15215 #, c-format msgid " [VFP float format]" msgstr "" -#: elf32-arm.c:15213 +#: elf32-arm.c:15217 #, c-format msgid " [FPA float format]" msgstr "" -#: elf32-arm.c:15216 +#: elf32-arm.c:15220 #, c-format msgid " [floats passed in float registers]" msgstr "" -#: elf32-arm.c:15219 elf32-arm.c:15304 +#: elf32-arm.c:15223 elf32-arm.c:15308 #, c-format msgid " [position independent]" msgstr "" -#: elf32-arm.c:15222 +#: elf32-arm.c:15226 #, c-format msgid " [new ABI]" msgstr "" -#: elf32-arm.c:15225 +#: elf32-arm.c:15229 #, c-format msgid " [old ABI]" msgstr "" -#: elf32-arm.c:15228 +#: elf32-arm.c:15232 #, c-format msgid " [software FP]" msgstr "" -#: elf32-arm.c:15236 +#: elf32-arm.c:15240 #, c-format msgid " [Version1 EABI]" msgstr "" -#: elf32-arm.c:15239 elf32-arm.c:15250 +#: elf32-arm.c:15243 elf32-arm.c:15254 #, c-format msgid " [sorted symbol table]" msgstr "" -#: elf32-arm.c:15241 elf32-arm.c:15252 +#: elf32-arm.c:15245 elf32-arm.c:15256 #, c-format msgid " [unsorted symbol table]" msgstr "" -#: elf32-arm.c:15247 +#: elf32-arm.c:15251 #, c-format msgid " [Version2 EABI]" msgstr "" -#: elf32-arm.c:15255 +#: elf32-arm.c:15259 #, c-format msgid " [dynamic symbols use segment index]" msgstr "" -#: elf32-arm.c:15258 +#: elf32-arm.c:15262 #, c-format msgid " [mapping symbols precede others]" msgstr "" -#: elf32-arm.c:15265 +#: elf32-arm.c:15269 #, c-format msgid " [Version3 EABI]" msgstr "" -#: elf32-arm.c:15269 +#: elf32-arm.c:15273 #, c-format msgid " [Version4 EABI]" msgstr "" -#: elf32-arm.c:15273 +#: elf32-arm.c:15277 #, c-format msgid " [Version5 EABI]" msgstr "" -#: elf32-arm.c:15276 +#: elf32-arm.c:15280 #, c-format msgid " [soft-float ABI]" msgstr "" -#: elf32-arm.c:15279 +#: elf32-arm.c:15283 #, c-format msgid " [hard-float ABI]" msgstr "" -#: elf32-arm.c:15285 +#: elf32-arm.c:15289 #, c-format msgid " [BE8]" msgstr "" -#: elf32-arm.c:15288 +#: elf32-arm.c:15292 #, c-format msgid " [LE8]" msgstr "" -#: elf32-arm.c:15294 +#: elf32-arm.c:15298 #, c-format msgid " <EABI version unrecognised>" msgstr "" -#: elf32-arm.c:15301 +#: elf32-arm.c:15305 #, c-format msgid " [relocatable executable]" msgstr "" -#: elf32-arm.c:15307 +#: elf32-arm.c:15311 #, c-format msgid " [FDPIC ABI supplement]" msgstr "" -#: elf32-arm.c:15312 -#: elfnn-aarch64.c:7576 +#: elf32-arm.c:15316 +#: elfnn-aarch64.c:7594 #, c-format msgid " <Unrecognised flag bits set>" msgstr "" -#: elf32-arm.c:15420 elf32-arm.c:15554 elf32-i386.c:1545 elf32-s390.c:921 +#: elf32-arm.c:15424 elf32-arm.c:15558 elf32-i386.c:1576 elf32-s390.c:921 #: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 -#: elf64-s390.c:843 elf64-x86-64.c:2173 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 -#: elfxx-x86.c:971 -#: elfnn-aarch64.c:7847 -#: elfnn-kvx.c:3247 -#: elfnn-loongarch.c:952 -#: elfnn-riscv.c:766 +#: elf64-s390.c:924 elf64-x86-64.c:2550 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 +#: elfxx-x86.c:962 +#: elfnn-aarch64.c:7865 +#: elfnn-kvx.c:3248 +#: elfnn-loongarch.c:961 +#: elfnn-riscv.c:959 #, c-format msgid "%pB: bad symbol index: %d" msgstr "" -#: elf32-arm.c:15810 +#: elf32-arm.c:15814 #, c-format msgid "" "FDPIC does not yet support %s relocation to become dynamic for executable" msgstr "" -#: elf32-arm.c:17072 +#: elf32-arm.c:17077 #, c-format msgid "errors encountered processing file %pB" msgstr "" -#: elf32-arm.c:17442 elflink.c:13533 elflink.c:13580 +#: elf32-arm.c:17448 elflink.c:13605 elflink.c:13652 #, c-format msgid "could not find section %s" msgstr "" -#: elf32-arm.c:18397 +#: elf32-arm.c:18406 #, c-format msgid "%pB: Number of symbols in input file has increased from %lu to %u\n" msgstr "" -#: elf32-arm.c:18655 +#: elf32-arm.c:18664 #, c-format msgid "%pB: error: Cortex-A8 erratum stub is allocated in unsafe location" msgstr "" #. There's not much we can do apart from complain if this #. happens. -#: elf32-arm.c:18682 +#: elf32-arm.c:18691 #, c-format msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)" msgstr "" -#: elf32-arm.c:19509 elf32-arm.c:19531 +#: elf32-arm.c:19518 elf32-arm.c:19540 #, c-format msgid "%pB: error: VFP11 veneer out of range" msgstr "" -#: elf32-arm.c:19582 +#: elf32-arm.c:19591 #, c-format msgid "" "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range by " "%<PRId64> bytes; cannot encode branch instruction" msgstr "" -#: elf32-arm.c:19621 +#: elf32-arm.c:19630 #, c-format msgid "%pB: error: cannot create STM32L4XX veneer" msgstr "" -#: elf32-arm.c:20704 +#: elf32-arm.c:20713 #, c-format msgid "error: %pB is already in final BE8 format" msgstr "" -#: elf32-arm.c:20781 +#: elf32-arm.c:20790 #, c-format msgid "" "error: source object %pB has EABI version %d, but target %pB has EABI " "version %d" msgstr "" -#: elf32-arm.c:20796 +#: elf32-arm.c:20805 #, c-format msgid "error: %pB is compiled for APCS-%d, whereas target %pB uses APCS-%d" msgstr "" -#: elf32-arm.c:20806 +#: elf32-arm.c:20815 #, c-format msgid "" "error: %pB passes floats in float registers, whereas %pB passes them in " "integer registers" msgstr "" -#: elf32-arm.c:20810 +#: elf32-arm.c:20819 #, c-format msgid "" "error: %pB passes floats in integer registers, whereas %pB passes them in " "float registers" msgstr "" -#: elf32-arm.c:20820 elf32-arm.c:20824 +#: elf32-arm.c:20829 elf32-arm.c:20833 #, c-format msgid "error: %pB uses %s instructions, whereas %pB does not" msgstr "" -#: elf32-arm.c:20843 +#: elf32-arm.c:20852 #, c-format msgid "error: %pB uses software FP, whereas %pB uses hardware FP" msgstr "" -#: elf32-arm.c:20847 +#: elf32-arm.c:20856 #, c-format msgid "error: %pB uses hardware FP, whereas %pB uses software FP" msgstr "" -#: elf32-arm.c:20861 +#: elf32-arm.c:20870 #, c-format msgid "warning: %pB supports interworking, whereas %pB does not" msgstr "" -#: elf32-arm.c:20867 +#: elf32-arm.c:20876 #, c-format msgid "warning: %pB does not support interworking, whereas %pB does" msgstr "" @@ -2339,7 +2365,7 @@ msgid "" msgstr "" #: elf32-avr.c:3335 -#: elfnn-aarch64.c:3219 +#: elfnn-aarch64.c:3231 #, c-format msgid "cannot create stub entry %s" msgstr "" @@ -2353,8 +2379,8 @@ msgstr "" msgid "%pB(%pA+%#<PRIx64>): unresolvable relocation against symbol `%s'" msgstr "" -#: elf32-bfin.c:1621 elf32-i386.c:3543 elf32-m68k.c:4006 elf32-s390.c:3130 -#: elf64-s390.c:3205 elf64-x86-64.c:4619 +#: elf32-bfin.c:1621 elf32-i386.c:3585 elf32-m68k.c:4008 elf32-s390.c:3132 +#: elf64-s390.c:3468 elf64-x86-64.c:5080 #, c-format msgid "%pB(%pA+%#<PRIx64>): reloc against `%s': error %d" msgstr "" @@ -2378,7 +2404,7 @@ msgstr "" msgid "cannot emit fixups in read-only section" msgstr "" -#: elf32-bfin.c:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4384 +#: elf32-bfin.c:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4386 msgid "cannot emit dynamic relocations in read-only section" msgstr "" @@ -2397,41 +2423,41 @@ msgstr "" #: elf32-bfin.c:3140 elf32-cris.c:2041 elf32-epiphany.c:574 elf32-fr30.c:602 #: elf32-frv.c:4056 elf32-ft32.c:500 elf32-ip2k.c:1489 elf32-iq2000.c:699 #: elf32-m32c.c:632 elf32-mep.c:530 elf32-metag.c:1991 elf32-moxie.c:296 -#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3377 -#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:348 -#: elf64-mmix.c:1545 elfxx-tilegx.c:3750 +#: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3379 +#: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:939 elf64-bpf.c:348 +#: elf64-mmix.c:1545 elfxx-tilegx.c:3752 msgid "internal error: dangerous relocation" msgstr "" #. Ignore init flag - it may not be set, despite the flags field containing valid data. -#: elf32-bfin.c:4728 elf32-cris.c:3860 elf32-m68hc1x.c:1414 elf32-m68k.c:1264 -#: elf32-score.c:3984 elf32-score7.c:3791 elf32-vax.c:534 elf32-xgate.c:494 -#: elfxx-mips.c:16366 +#: elf32-bfin.c:4734 elf32-cris.c:3862 elf32-m68hc1x.c:1415 elf32-m68k.c:1264 +#: elf32-score.c:3986 elf32-score7.c:3793 elf32-vax.c:534 elf32-xgate.c:494 +#: elfxx-mips.c:16452 #, c-format msgid "private flags = %lx:" msgstr "" -#: elf32-bfin.c:4779 elf32-frv.c:6585 +#: elf32-bfin.c:4785 elf32-frv.c:6591 #, c-format msgid "%pB: cannot link non-fdpic object file into fdpic executable" msgstr "" -#: elf32-bfin.c:4783 elf32-frv.c:6589 +#: elf32-bfin.c:4789 elf32-frv.c:6595 #, c-format msgid "%pB: cannot link fdpic object file into non-fdpic executable" msgstr "" -#: elf32-bfin.c:4919 +#: elf32-bfin.c:4925 #, c-format msgid "*** check this relocation %s" msgstr "" -#: elf32-bfin.c:5034 +#: elf32-bfin.c:5040 msgid "" "the bfin target does not currently support the generation of copy relocations" msgstr "" -#: elf32-bfin.c:5329 elf32-cr16.c:2720 elf32-m68k.c:4420 +#: elf32-bfin.c:5335 elf32-cr16.c:2723 elf32-m68k.c:4423 msgid "unsupported relocation type" msgstr "" @@ -2532,102 +2558,102 @@ msgid "" "recompile with -fPIC" msgstr "" -#: elf32-cris.c:3699 +#: elf32-cris.c:3701 #, c-format msgid "" "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a " "shared object; recompile with -fPIC" msgstr "" -#: elf32-cris.c:3811 +#: elf32-cris.c:3813 msgid "unexpected machine number" msgstr "" -#: elf32-cris.c:3863 +#: elf32-cris.c:3865 #, c-format msgid " [symbols have a _ prefix]" msgstr "" -#: elf32-cris.c:3866 +#: elf32-cris.c:3868 #, c-format msgid " [v10 and v32]" msgstr "" -#: elf32-cris.c:3869 +#: elf32-cris.c:3871 #, c-format msgid " [v32]" msgstr "" -#: elf32-cris.c:3913 +#: elf32-cris.c:3915 #, c-format msgid "" "%pB: uses _-prefixed symbols, but writing file with non-prefixed symbols" msgstr "" -#: elf32-cris.c:3914 +#: elf32-cris.c:3916 #, c-format msgid "" "%pB: uses non-prefixed symbols, but writing file with _-prefixed symbols" msgstr "" -#: elf32-cris.c:3933 +#: elf32-cris.c:3935 #, c-format msgid "%pB contains CRIS v32 code, incompatible with previous objects" msgstr "" -#: elf32-cris.c:3935 +#: elf32-cris.c:3937 #, c-format msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects" msgstr "" -#: elf32-csky.c:2016 +#: elf32-csky.c:2017 msgid "GOT table size out of range" msgstr "" -#: elf32-csky.c:2826 +#: elf32-csky.c:2828 #, c-format msgid "warning: unrecognized arch eflag '%#lx'" msgstr "" -#: elf32-csky.c:2849 +#: elf32-csky.c:2851 #, c-format msgid "warning: unrecognised arch name '%#x'" msgstr "" -#: elf32-csky.c:2914 elf32-csky.c:3074 +#: elf32-csky.c:2916 elf32-csky.c:3076 #, c-format msgid "%pB: machine flag conflict with target" msgstr "" -#: elf32-csky.c:2927 +#: elf32-csky.c:2929 #, c-format msgid "" "warning: file %pB's arch flag %s conflict with target %s,set target arch " "flag to %s" msgstr "" -#: elf32-csky.c:2956 +#: elf32-csky.c:2958 #, c-format msgid "Error: %pB and %pB has different VDSP version" msgstr "" -#: elf32-csky.c:2973 +#: elf32-csky.c:2975 #, c-format msgid "Error: %pB and %pB has different DSP version" msgstr "" -#: elf32-csky.c:2991 +#: elf32-csky.c:2993 #, c-format msgid "Error: %pB and %pB has different FPU ABI" msgstr "" -#: elf32-csky.c:3088 +#: elf32-csky.c:3090 #, c-format msgid "warning: file %pB's arch flag %s conflicts with target ck%s, using %s" msgstr "" #. The r_type is error, not support it. -#: elf32-csky.c:4327 elf32-i386.c:344 +#: elf32-csky.c:4330 elf32-i386.c:344 #, c-format msgid "%pB: unsupported relocation type: %#x" msgstr "" @@ -2730,18 +2756,18 @@ msgstr "" msgid "%H: reloc against `%s': %s\n" msgstr "" -#: elf32-frv.c:6496 +#: elf32-frv.c:6502 #, c-format msgid "" "%pB: compiled with %s and linked with modules that use non-pic relocations" msgstr "" -#: elf32-frv.c:6550 elf32-iq2000.c:830 elf32-m32c.c:876 +#: elf32-frv.c:6556 elf32-iq2000.c:830 elf32-m32c.c:877 #, c-format msgid "%pB: compiled with %s and linked with modules compiled with %s" msgstr "" -#: elf32-frv.c:6563 +#: elf32-frv.c:6569 #, c-format msgid "" "%pB: uses different unknown e_flags (%#x) fields than previous modules (%#x)" @@ -2752,7 +2778,7 @@ msgstr "" msgid "%pB: relocations in generic ELF (EM: %d)" msgstr "" -#: elf32-hppa.c:862 elf32-hppa.c:3402 +#: elf32-hppa.c:862 elf32-hppa.c:3403 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): cannot reach %s, recompile with -ffunction-sections" @@ -2770,127 +2796,132 @@ msgstr "" msgid "%pB: duplicate export stub %s" msgstr "" -#: elf32-hppa.c:3235 +#: elf32-hppa.c:3236 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): %s fixup for insn %#x is not supported in a non-shared " "link" msgstr "" -#: elf32-hppa.c:3455 +#: elf32-hppa.c:3456 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 8 " "(gp %#x)" msgstr "" -#: elf32-hppa.c:3474 +#: elf32-hppa.c:3475 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): displacement %#x for insn %#x is not a multiple of 4 " "(gp %#x)" msgstr "" -#: elf32-hppa.c:4089 +#: elf32-hppa.c:4090 #, c-format msgid "%s has both normal and TLS relocs" msgstr "" -#: elf32-hppa.c:4107 +#: elf32-hppa.c:4108 #, c-format msgid "%pB:%s has both normal and TLS relocs" msgstr "" -#: elf32-hppa.c:4166 +#: elf32-hppa.c:4167 #, c-format msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s" msgstr "" -#: elf32-hppa.c:4470 +#: elf32-hppa.c:4471 msgid ".got section not immediately after .plt section" msgstr "" -#: elf32-i386.c:1296 +#: elf32-i386.c:1300 #, c-format msgid "" "%pB: direct GOT relocation R_386_GOT32X against `%s' without base register " "can not be used when making a shared object" msgstr "" -#: elf32-i386.c:1729 elf32-s390.c:1149 elf32-sh.c:5498 elf32-tilepro.c:1546 -#: elf32-xtensa.c:1261 elf64-s390.c:1081 elfxx-sparc.c:1555 +#: elf32-i386.c:1586 +#, c-format +msgid "%pB: bad reloc offset (%#<PRIx32> > %#<PRIx32>) for section `%pA'" +msgstr "" + +#: elf32-i386.c:1771 elf32-s390.c:1149 elf32-sh.c:5500 elf32-tilepro.c:1546 +#: elf32-xtensa.c:1261 elf64-s390.c:1162 elfxx-sparc.c:1565 #: elfxx-tilegx.c:1766 -#: elfnn-loongarch.c:741 -#: elfnn-riscv.c:673 +#: elfnn-loongarch.c:750 +#: elfnn-riscv.c:866 #, c-format msgid "%pB: `%s' accessed both as normal and thread local symbol" msgstr "" -#: elf32-i386.c:1801 +#: elf32-i386.c:1843 #, c-format msgid "%pB: unsupported non-PIC call to IFUNC `%s'" msgstr "" -#: elf32-i386.c:1856 elf64-x86-64.c:2567 +#: elf32-i386.c:1898 elf64-x86-64.c:2964 #, c-format msgid "" "%pB: non-canonical reference to canonical protected function `%s' in %pB" msgstr "" -#: elf32-i386.c:2419 elf64-x86-64.c:3050 -#: elfnn-riscv.c:2544 +#: elf32-i386.c:2461 elf64-x86-64.c:3446 +#: elfnn-riscv.c:2742 #, c-format msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't supported" msgstr "" -#: elf32-i386.c:2452 elf32-i386.c:3752 elf32-i386.c:3900 elf64-x86-64.c:3107 -#: elf64-x86-64.c:4790 elf64-x86-64.c:4958 -#: elfnn-riscv.c:2406 -#: elfnn-riscv.c:3318 -#: elfnn-riscv.c:3392 +#: elf32-i386.c:2494 elf32-i386.c:3794 elf32-i386.c:3942 elf64-x86-64.c:3503 +#: elf64-x86-64.c:5254 elf64-x86-64.c:5425 +#: elfnn-riscv.c:2604 +#: elfnn-riscv.c:3511 +#: elfnn-riscv.c:3585 #, c-format msgid "Local IFUNC function `%s' in %pB\n" msgstr "" -#: elf32-i386.c:2630 +#: elf32-i386.c:2672 #, c-format msgid "" "%pB: direct GOT relocation %s against `%s' without base register can not be " "used when making a shared object" msgstr "" -#: elf32-i386.c:2665 elf64-x86-64.c:3324 +#: elf32-i386.c:2707 elf64-x86-64.c:3726 msgid "hidden symbol" msgstr "" -#: elf32-i386.c:2668 elf64-x86-64.c:3327 +#: elf32-i386.c:2710 elf64-x86-64.c:3729 msgid "internal symbol" msgstr "" -#: elf32-i386.c:2671 elf64-x86-64.c:3330 +#: elf32-i386.c:2713 elf64-x86-64.c:3732 msgid "protected symbol" msgstr "" -#: elf32-i386.c:2674 elf64-x86-64.c:3333 +#: elf32-i386.c:2716 elf64-x86-64.c:3735 msgid "symbol" msgstr "" -#: elf32-i386.c:2680 +#: elf32-i386.c:2722 #, c-format msgid "" "%pB: relocation R_386_GOTOFF against undefined %s `%s' can not be used when " "making a shared object" msgstr "" -#: elf32-i386.c:2693 +#: elf32-i386.c:2735 #, c-format msgid "" "%pB: relocation R_386_GOTOFF against protected %s `%s' can not be used when " "making a shared object" msgstr "" -#: elf32-i386.c:4103 elf64-x86-64.c:5169 -msgid "%F%P: discarded output section: `%pA'\n" +#: elf32-i386.c:4145 elf64-x86-64.c:5645 +msgid "%P: discarded output section: `%pA'\n" msgstr "" #: elf32-ip2k.c:855 elf32-ip2k.c:861 elf32-ip2k.c:928 elf32-ip2k.c:934 @@ -2930,136 +2961,136 @@ msgstr "" msgid "SDA relocation when _SDA_BASE_ not defined" msgstr "" -#: elf32-m32r.c:2776 elf32-microblaze.c:1147 elf32-microblaze.c:1195 +#: elf32-m32r.c:2778 elf32-microblaze.c:1147 elf32-microblaze.c:1195 #, c-format msgid "%pB: the target (%s) of an %s relocation is in the wrong section (%pA)" msgstr "" -#: elf32-m32r.c:3277 +#: elf32-m32r.c:3279 #, c-format msgid "%pB: instruction set mismatch with previous modules" msgstr "" -#: elf32-m32r.c:3298 elf32-nds32.c:6899 +#: elf32-m32r.c:3300 elf32-nds32.c:6906 #, c-format msgid "private flags = %lx" msgstr "" -#: elf32-m32r.c:3303 +#: elf32-m32r.c:3305 #, c-format msgid ": m32r instructions" msgstr "" -#: elf32-m32r.c:3304 +#: elf32-m32r.c:3306 #, c-format msgid ": m32rx instructions" msgstr "" -#: elf32-m32r.c:3305 +#: elf32-m32r.c:3307 #, c-format msgid ": m32r2 instructions" msgstr "" -#: elf32-m68hc1x.c:1134 +#: elf32-m68hc1x.c:1135 #, c-format msgid "" "reference to the far symbol `%s' using a wrong relocation may result in " "incorrect execution" msgstr "" -#: elf32-m68hc1x.c:1165 +#: elf32-m68hc1x.c:1166 #, c-format msgid "" "XGATE address (%lx) is not within shared RAM(0xE000-0xFFFF), therefore you " "must manually offset the address, and possibly manage the page, in your code." msgstr "" -#: elf32-m68hc1x.c:1181 +#: elf32-m68hc1x.c:1182 #, c-format msgid "" "banked address [%lx:%04lx] (%lx) is not in the same bank as current banked " "address [%lx:%04lx] (%lx)" msgstr "" -#: elf32-m68hc1x.c:1196 +#: elf32-m68hc1x.c:1197 #, c-format msgid "" "reference to a banked address [%lx:%04lx] in the normal address space at %" "04lx" msgstr "" -#: elf32-m68hc1x.c:1232 +#: elf32-m68hc1x.c:1233 #, c-format msgid "" "S12 address (%lx) is not within shared RAM(0x2000-0x4000), therefore you " "must manually offset the address in your code" msgstr "" -#: elf32-m68hc1x.c:1356 +#: elf32-m68hc1x.c:1357 #, c-format msgid "" "%pB: linking files compiled for 16-bit integers (-mshort) and others for 32-" "bit integers" msgstr "" -#: elf32-m68hc1x.c:1363 +#: elf32-m68hc1x.c:1364 #, c-format msgid "" "%pB: linking files compiled for 32-bit double (-fshort-double) and others " "for 64-bit double" msgstr "" -#: elf32-m68hc1x.c:1372 +#: elf32-m68hc1x.c:1373 #, c-format msgid "%pB: linking files compiled for HCS12 with others compiled for HC12" msgstr "" -#: elf32-m68hc1x.c:1417 elf32-xgate.c:497 +#: elf32-m68hc1x.c:1418 elf32-xgate.c:497 #, c-format msgid "[abi=32-bit int, " msgstr "" -#: elf32-m68hc1x.c:1419 elf32-xgate.c:499 +#: elf32-m68hc1x.c:1420 elf32-xgate.c:499 #, c-format msgid "[abi=16-bit int, " msgstr "" -#: elf32-m68hc1x.c:1422 elf32-xgate.c:502 +#: elf32-m68hc1x.c:1423 elf32-xgate.c:502 #, c-format msgid "64-bit double, " msgstr "" -#: elf32-m68hc1x.c:1424 elf32-xgate.c:504 +#: elf32-m68hc1x.c:1425 elf32-xgate.c:504 #, c-format msgid "32-bit double, " msgstr "" -#: elf32-m68hc1x.c:1427 +#: elf32-m68hc1x.c:1428 #, c-format msgid "cpu=HC11]" msgstr "" -#: elf32-m68hc1x.c:1429 +#: elf32-m68hc1x.c:1430 #, c-format msgid "cpu=HCS12]" msgstr "" -#: elf32-m68hc1x.c:1431 +#: elf32-m68hc1x.c:1432 #, c-format msgid "cpu=HC12]" msgstr "" -#: elf32-m68hc1x.c:1434 +#: elf32-m68hc1x.c:1435 #, c-format msgid " [memory=bank-model]" msgstr "" -#: elf32-m68hc1x.c:1436 +#: elf32-m68hc1x.c:1437 #, c-format msgid " [memory=flat]" msgstr "" -#: elf32-m68hc1x.c:1439 +#: elf32-m68hc1x.c:1440 #, c-format msgid " [XGATE RAM offsetting]" msgstr "" @@ -3121,8 +3152,8 @@ msgid "" "link" msgstr "" -#: elf32-microblaze.c:1590 elf32-tilepro.c:3018 elfxx-sparc.c:3442 -#: elfxx-tilegx.c:3415 +#: elf32-microblaze.c:1590 elf32-tilepro.c:3020 elfxx-sparc.c:3452 +#: elfxx-tilegx.c:3417 #, c-format msgid "%pB: probably compiled without -fPIC?" msgstr "" @@ -3193,91 +3224,91 @@ msgid "" "exclusively in lower memory" msgstr "" -#: elf32-nds32.c:3673 +#: elf32-nds32.c:3680 #, c-format msgid "error: can't find symbol: %s" msgstr "" -#: elf32-nds32.c:5572 +#: elf32-nds32.c:5579 #, c-format msgid "%pB: warning: %s unsupported in shared mode" msgstr "" -#: elf32-nds32.c:5698 +#: elf32-nds32.c:5705 #, c-format msgid "%pB: warning: unaligned access to GOT entry" msgstr "" -#: elf32-nds32.c:5739 +#: elf32-nds32.c:5746 #, c-format msgid "%pB: warning: relocate SDA_BASE failed" msgstr "" -#: elf32-nds32.c:5761 +#: elf32-nds32.c:5768 #, c-format msgid "%pB(%pA): warning: unaligned small data access of type %d" msgstr "" -#: elf32-nds32.c:6687 +#: elf32-nds32.c:6694 #, c-format msgid "" "%pB: ISR vector size mismatch with previous modules, previous %u-byte, " "current %u-byte" msgstr "" -#: elf32-nds32.c:6735 +#: elf32-nds32.c:6742 #, c-format msgid "%pB: warning: endian mismatch with previous modules" msgstr "" -#: elf32-nds32.c:6749 +#: elf32-nds32.c:6756 #, c-format msgid "" "%pB: warning: older version of object file encountered, please recompile " "with current tool chain" msgstr "" -#: elf32-nds32.c:6837 +#: elf32-nds32.c:6844 #, c-format msgid "%pB: error: ABI mismatch with previous modules" msgstr "" -#: elf32-nds32.c:6847 +#: elf32-nds32.c:6854 #, c-format msgid "%pB: error: instruction set mismatch with previous modules" msgstr "" -#: elf32-nds32.c:6874 +#: elf32-nds32.c:6881 #, c-format msgid "%pB: warning: incompatible elf-versions %s and %s" msgstr "" -#: elf32-nds32.c:6905 +#: elf32-nds32.c:6912 #, c-format msgid ": n1 instructions" msgstr "" -#: elf32-nds32.c:6908 +#: elf32-nds32.c:6915 #, c-format msgid ": n1h instructions" msgstr "" -#: elf32-nds32.c:9357 +#: elf32-nds32.c:9364 #, c-format msgid "%pB: error: search_nds32_elf_blank reports wrong node" msgstr "" -#: elf32-nds32.c:9621 +#: elf32-nds32.c:9628 #, c-format msgid "%pB: warning: %s points to unrecognized reloc at %#<PRIx64>" msgstr "" -#: elf32-nds32.c:12886 +#: elf32-nds32.c:12893 #, c-format msgid "%pB: nested OMIT_FP in %pA" msgstr "" -#: elf32-nds32.c:12905 +#: elf32-nds32.c:12912 #, c-format msgid "%pB: unmatched OMIT_FP in %pA" msgstr "" @@ -3307,7 +3338,7 @@ msgstr "" msgid "%pB: gotoff relocation against dynamic symbol %s" msgstr "" -#: elf32-or1k.c:1573 elf32-or1k.c:1588 elf64-alpha.c:4409 elf64-alpha.c:4553 +#: elf32-or1k.c:1573 elf32-or1k.c:1588 elf64-alpha.c:4412 elf64-alpha.c:4556 #, c-format msgid "%pB: pc-relative relocation against dynamic symbol %s" msgstr "" @@ -3332,7 +3363,7 @@ msgstr "" msgid "%pB: bad relocation section name `%s'" msgstr "" -#: elf32-or1k.c:3312 +#: elf32-or1k.c:3313 #, c-format msgid "%pB: %s flag mismatch with previous modules" msgstr "" @@ -3431,7 +3462,7 @@ msgstr "" msgid "bss-plt forced by profiling" msgstr "" -#: elf32-ppc.c:4606 elf64-ppc.c:8516 +#: elf32-ppc.c:4606 elf64-ppc.c:8517 msgid "%H: warning: %s unexpected insn %#x.\n" msgstr "" @@ -3439,45 +3470,45 @@ msgstr "" #. could just mark this symbol to exclude it #. from tls optimization but it's safer to skip #. the entire optimization. -#: elf32-ppc.c:4636 elf64-ppc.c:8581 +#: elf32-ppc.c:4636 elf64-ppc.c:8582 #, c-format msgid "%H arg lost __tls_get_addr, TLS optimization disabled\n" msgstr "" -#: elf32-ppc.c:5564 elf32-sh.c:3018 elf32-tilepro.c:2245 elfxx-sparc.c:2454 -#: elfxx-tilegx.c:2494 +#: elf32-ppc.c:5565 elf32-sh.c:3019 elf32-tilepro.c:2246 elfxx-sparc.c:2464 +#: elfxx-tilegx.c:2495 #, c-format msgid "%pB: dynamic relocation in read-only section `%pA'\n" msgstr "" -#: elf32-ppc.c:6510 +#: elf32-ppc.c:6512 msgid "%pB: Adjusting branch at 0x%V towards \"%s\" in section %s\n" msgstr "" -#: elf32-ppc.c:7463 +#: elf32-ppc.c:7454 msgid "%P: %H: error: %s with unexpected instruction %x\n" msgstr "" -#: elf32-ppc.c:7501 +#: elf32-ppc.c:7492 msgid "%H: fixup branch overflow\n" msgstr "" -#: elf32-ppc.c:7541 elf32-ppc.c:7579 +#: elf32-ppc.c:7532 elf32-ppc.c:7570 #, c-format msgid "%pB(%pA+%#<PRIx64>): error: %s with unexpected instruction %#x" msgstr "" -#: elf32-ppc.c:7643 +#: elf32-ppc.c:7634 #, c-format msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n" msgstr "" -#: elf32-ppc.c:7679 +#: elf32-ppc.c:7670 #, c-format msgid "%pB: reloc %#x unsupported" msgstr "" -#: elf32-ppc.c:7962 +#: elf32-ppc.c:7953 #, c-format msgid "%H: non-zero addend on %s reloc against `%s'\n" msgstr "" @@ -3490,54 +3521,54 @@ msgstr "" #. local won't have the +32k reloc addend trick marking #. -fPIC code, so the linker won't know whether r30 is #. _GLOBAL_OFFSET_TABLE_ or pointing into a .got2 section. -#: elf32-ppc.c:7994 +#: elf32-ppc.c:7985 #, c-format msgid "%X%H: @local call to ifunc %s\n" msgstr "" -#: elf32-ppc.c:8172 +#: elf32-ppc.c:8163 #, c-format msgid "%H: relocation %s for indirect function %s unsupported\n" msgstr "" -#: elf32-ppc.c:8510 elf32-ppc.c:8541 elf32-ppc.c:8644 elf32-ppc.c:8744 +#: elf32-ppc.c:8501 elf32-ppc.c:8532 elf32-ppc.c:8635 elf32-ppc.c:8735 #, c-format msgid "" "%pB: the target (%s) of a %s relocation is in the wrong output section (%s)" msgstr "" -#: elf32-ppc.c:8922 elf32-ppc.c:8943 +#: elf32-ppc.c:8913 elf32-ppc.c:8934 msgid "%X%P: %H: %s relocation unsupported for bss-plt\n" msgstr "" -#: elf32-ppc.c:9025 +#: elf32-ppc.c:9016 #, c-format msgid "%H: error: %s against `%s' not a multiple of %u\n" msgstr "" -#: elf32-ppc.c:9054 +#: elf32-ppc.c:9045 #, c-format msgid "%H: unresolvable %s relocation against symbol `%s'\n" msgstr "" -#: elf32-ppc.c:9136 +#: elf32-ppc.c:9127 #, c-format msgid "%H: %s reloc against `%s': error %d\n" msgstr "" -#: elf32-ppc.c:10018 +#: elf32-ppc.c:10009 msgid "" "%X%P: text relocations and GNU indirect functions will result in a segfault " "at runtime\n" msgstr "" -#: elf32-ppc.c:10022 elf64-ppc.c:18320 +#: elf32-ppc.c:10013 elf64-ppc.c:18330 msgid "" "%P: warning: text relocations and GNU indirect functions may result in a " "segfault at runtime\n" msgstr "" -#: elf32-ppc.c:10067 +#: elf32-ppc.c:10058 #, c-format msgid "%s not defined in linker created %pA" msgstr "" @@ -3661,12 +3692,12 @@ msgstr "" msgid "%pB:%pA: %s and %s must be in the same input section" msgstr "" -#: elf32-s390.c:2005 elf64-s390.c:1974 +#: elf32-s390.c:2007 elf64-s390.c:2242 #, c-format msgid "%pB(%pA+%#<PRIx64>): invalid instruction for TLS relocation %s" msgstr "" -#: elf32-score.c:1505 elf32-score7.c:1368 elfxx-mips.c:3868 +#: elf32-score.c:1505 elf32-score7.c:1368 elfxx-mips.c:3914 msgid "not enough GOT space for local GOT entries" msgstr "" @@ -3684,22 +3715,22 @@ msgstr "" msgid "%pB: CALL15 reloc at %#<PRIx64> not against global symbol" msgstr "" -#: elf32-score.c:3481 elf32-score7.c:3292 elfxx-mips.c:11175 +#: elf32-score.c:3483 elf32-score7.c:3294 elfxx-mips.c:11260 #, c-format msgid "%pB: cannot handle more than %d dynamic symbols" msgstr "" -#: elf32-score.c:3987 elf32-score7.c:3794 +#: elf32-score.c:3989 elf32-score7.c:3796 #, c-format msgid " [pic]" msgstr "" -#: elf32-score.c:3991 elf32-score7.c:3798 +#: elf32-score.c:3993 elf32-score7.c:3800 #, c-format msgid " [fix dep]" msgstr "" -#: elf32-score.c:4038 elf32-score7.c:3845 +#: elf32-score.c:4040 elf32-score7.c:3847 #, c-format msgid "%pB: warning: linking PIC files with non-PIC files" msgstr "" @@ -3709,40 +3740,40 @@ msgstr "" msgid "%pB: %#<PRIx64>: warning: R_SH_USES points to unrecognized insn 0x%x" msgstr "" -#: elf32-sh.c:3753 +#: elf32-sh.c:3755 #, c-format msgid "" "%pB: %#<PRIx64>: fatal: unaligned branch target for relax-support relocation" msgstr "" -#: elf32-sh.c:3783 elf32-sh.c:3799 +#: elf32-sh.c:3785 elf32-sh.c:3801 #, c-format msgid "%pB: %#<PRIx64>: fatal: unaligned %s relocation %#<PRIx64>" msgstr "" -#: elf32-sh.c:3815 +#: elf32-sh.c:3817 #, c-format msgid "" "%pB: %#<PRIx64>: fatal: R_SH_PSHA relocation %<PRId64> not in range -32..32" msgstr "" -#: elf32-sh.c:3831 +#: elf32-sh.c:3833 #, c-format msgid "" "%pB: %#<PRIx64>: fatal: R_SH_PSHL relocation %<PRId64> not in range -32..32" msgstr "" -#: elf32-sh.c:3961 elf32-sh.c:4356 +#: elf32-sh.c:3963 elf32-sh.c:4358 #, c-format msgid "%pB(%pA+%#<PRIx64>): cannot emit fixup to `%s' in read-only section" msgstr "" -#: elf32-sh.c:4459 +#: elf32-sh.c:4461 #, c-format msgid "%pB(%pA+%#<PRIx64>): %s relocation against external symbol \"%s\"" msgstr "" -#: elf32-sh.c:4578 +#: elf32-sh.c:4580 #, c-format msgid "" "%pB(%pA): offset in relocation for GD->LE translation is too small: %" @@ -3750,125 +3781,125 @@ msgid "" msgstr "" #. The backslash is to prevent bogus trigraph detection. -#: elf32-sh.c:4596 +#: elf32-sh.c:4598 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd4??)" msgstr "" -#: elf32-sh.c:4604 +#: elf32-sh.c:4606 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xc7??)" msgstr "" -#: elf32-sh.c:4611 +#: elf32-sh.c:4613 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd1??)" msgstr "" -#: elf32-sh.c:4618 +#: elf32-sh.c:4620 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x310c)" msgstr "" -#: elf32-sh.c:4625 +#: elf32-sh.c:4627 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x410b)" msgstr "" -#: elf32-sh.c:4632 +#: elf32-sh.c:4634 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x34cc)" msgstr "" -#: elf32-sh.c:4667 +#: elf32-sh.c:4669 #, c-format msgid "" "%pB(%pA): offset in relocation for IE->LE translation is too small: %" "#<PRIx64>" msgstr "" -#: elf32-sh.c:4685 +#: elf32-sh.c:4687 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0xd0??: mov.l)" msgstr "" -#: elf32-sh.c:4694 +#: elf32-sh.c:4696 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?12: stc)" msgstr "" -#: elf32-sh.c:4701 +#: elf32-sh.c:4703 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): unexpected instruction %#04X (expected 0x0?ce: mov.l)" msgstr "" -#: elf32-sh.c:4816 +#: elf32-sh.c:4818 #, c-format msgid "" "%pB(%pA): offset in relocation for GD->IE translation is too small: %" "#<PRIx64>" msgstr "" -#: elf32-sh.c:4884 +#: elf32-sh.c:4886 #, c-format msgid "" "%pB(%pA): offset in relocation for LD->LE translation is too small: %" "#<PRIx64>" msgstr "" -#: elf32-sh.c:5012 +#: elf32-sh.c:5014 #, c-format msgid "%X%H: relocation to \"%s\" references a different segment\n" msgstr "" -#: elf32-sh.c:5019 +#: elf32-sh.c:5021 #, c-format msgid "%H: warning: relocation to \"%s\" references a different segment\n" msgstr "" -#: elf32-sh.c:5487 elf32-sh.c:5569 +#: elf32-sh.c:5489 elf32-sh.c:5571 #, c-format msgid "%pB: `%s' accessed both as normal and FDPIC symbol" msgstr "" -#: elf32-sh.c:5493 elf32-sh.c:5574 +#: elf32-sh.c:5495 elf32-sh.c:5576 #, c-format msgid "%pB: `%s' accessed both as FDPIC and thread local symbol" msgstr "" -#: elf32-sh.c:5524 +#: elf32-sh.c:5526 #, c-format msgid "%pB: Function descriptor relocation with non-zero addend" msgstr "" -#: elf32-sh.c:5731 elf64-alpha.c:4645 +#: elf32-sh.c:5733 elf64-alpha.c:4648 #, c-format msgid "%pB: TLS local exec code cannot be linked into shared objects" msgstr "" -#: elf32-sh.c:5846 +#: elf32-sh.c:5848 #, c-format msgid "%pB: uses %s instructions while previous modules use %s instructions" msgstr "" -#: elf32-sh.c:5858 +#: elf32-sh.c:5860 #, c-format msgid "" "internal error: merge of architecture '%s' with architecture '%s' produced " "unknown architecture" msgstr "" -#: elf32-sh.c:5899 +#: elf32-sh.c:5901 #, c-format msgid "" "%pB: uses instructions which are incompatible with instructions used in " "previous modules" msgstr "" -#: elf32-sh.c:5912 +#: elf32-sh.c:5914 #, c-format msgid "%pB: attempt to mix FDPIC and non-FDPIC objects" msgstr "" @@ -3889,142 +3920,142 @@ msgid "" "%pB: unhandled sparc machine value '%lu' detected during write processing" msgstr "" -#: elf32-spu.c:733 +#: elf32-spu.c:734 msgid "%X%P: overlay section %pA does not start on a cache line\n" msgstr "" -#: elf32-spu.c:741 +#: elf32-spu.c:742 msgid "%X%P: overlay section %pA is larger than a cache line\n" msgstr "" -#: elf32-spu.c:761 +#: elf32-spu.c:762 msgid "%X%P: overlay section %pA is not in cache area\n" msgstr "" -#: elf32-spu.c:802 +#: elf32-spu.c:803 #, c-format msgid "%X%P: overlay sections %pA and %pA do not start at the same address\n" msgstr "" -#: elf32-spu.c:1028 +#: elf32-spu.c:1029 #, c-format msgid "warning: call to non-function symbol %s defined in %pB" msgstr "" -#: elf32-spu.c:1378 +#: elf32-spu.c:1379 #, c-format msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" msgstr "" -#: elf32-spu.c:1908 +#: elf32-spu.c:1909 #, c-format msgid "%pB is not allowed to define %s" msgstr "" -#: elf32-spu.c:1916 +#: elf32-spu.c:1917 #, c-format msgid "you are not allowed to define %s in a script" msgstr "" -#: elf32-spu.c:1950 +#: elf32-spu.c:1951 #, c-format msgid "%s in overlay section" msgstr "" -#: elf32-spu.c:1979 +#: elf32-spu.c:1981 msgid "overlay stub relocation overflow" msgstr "" -#: elf32-spu.c:1988 elf64-ppc.c:15362 +#: elf32-spu.c:1990 elf64-ppc.c:15372 msgid "stubs don't match calculated size" msgstr "" -#: elf32-spu.c:2571 +#: elf32-spu.c:2575 #, c-format msgid "warning: %s overlaps %s\n" msgstr "" -#: elf32-spu.c:2587 +#: elf32-spu.c:2591 #, c-format msgid "warning: %s exceeds section size\n" msgstr "" -#: elf32-spu.c:2619 +#: elf32-spu.c:2623 #, c-format msgid "%pA:0x%v not found in function table\n" msgstr "" -#: elf32-spu.c:2760 +#: elf32-spu.c:2764 #, c-format msgid "%pB(%pA+0x%v): call to non-code section %pB(%pA), analysis incomplete\n" msgstr "" -#: elf32-spu.c:3326 +#: elf32-spu.c:3330 #, c-format msgid "stack analysis will ignore the call from %s to %s\n" msgstr "" -#: elf32-spu.c:4023 +#: elf32-spu.c:4027 msgid " calls:\n" msgstr "" -#: elf32-spu.c:4338 +#: elf32-spu.c:4342 #, c-format msgid "%s duplicated in %s\n" msgstr "" -#: elf32-spu.c:4342 +#: elf32-spu.c:4346 #, c-format msgid "%s duplicated\n" msgstr "" -#: elf32-spu.c:4349 +#: elf32-spu.c:4353 msgid "sorry, no support for duplicate object files in auto-overlay script\n" msgstr "" -#: elf32-spu.c:4391 +#: elf32-spu.c:4395 #, c-format msgid "" "non-overlay size of 0x%v plus maximum overlay size of 0x%v exceeds local " "store\n" msgstr "" -#: elf32-spu.c:4547 +#: elf32-spu.c:4551 #, c-format msgid "%pB:%pA%s exceeds overlay size\n" msgstr "" -#: elf32-spu.c:4688 -msgid "%F%P: auto overlay error: %E\n" +#: elf32-spu.c:4692 +msgid "%P: auto overlay error: %E\n" msgstr "" -#: elf32-spu.c:4709 +#: elf32-spu.c:4712 msgid "Stack size for call graph root nodes.\n" msgstr "" -#: elf32-spu.c:4710 +#: elf32-spu.c:4713 msgid "" "\n" "Stack size for functions. Annotations: '*' max stack, 't' tail call\n" msgstr "" -#: elf32-spu.c:4720 +#: elf32-spu.c:4723 msgid "Maximum stack required is 0x%v\n" msgstr "" -#: elf32-spu.c:4739 +#: elf32-spu.c:4742 msgid "%X%P: stack/lrlive analysis error: %E\n" msgstr "" -#: elf32-spu.c:4742 -msgid "%F%P: can not build overlay stubs: %E\n" +#: elf32-spu.c:4745 +msgid "%P: can not build overlay stubs: %E\n" msgstr "" -#: elf32-spu.c:4811 +#: elf32-spu.c:4814 msgid "fatal error while creating .fixup" msgstr "" -#: elf32-spu.c:5047 +#: elf32-spu.c:5050 #, c-format msgid "%pB(%s+%#<PRIx64>): unresolvable %s relocation against symbol `%s'" msgstr "" @@ -4042,51 +4073,51 @@ msgstr "" msgid "%pB: SB-relative relocation but __c6xabi_DSBT_BASE not defined" msgstr "" -#: elf32-tic6x.c:3490 +#: elf32-tic6x.c:3492 #, c-format msgid "%pB: error: unknown mandatory EABI object attribute %d" msgstr "" -#: elf32-tic6x.c:3499 +#: elf32-tic6x.c:3501 #, c-format msgid "%pB: warning: unknown EABI object attribute %d" msgstr "" -#: elf32-tic6x.c:3617 elf32-tic6x.c:3626 +#: elf32-tic6x.c:3619 elf32-tic6x.c:3628 #, c-format msgid "error: %pB requires more stack alignment than %pB preserves" msgstr "" -#: elf32-tic6x.c:3636 elf32-tic6x.c:3645 +#: elf32-tic6x.c:3638 elf32-tic6x.c:3647 #, c-format msgid "error: unknown Tag_ABI_array_object_alignment value in %pB" msgstr "" -#: elf32-tic6x.c:3654 elf32-tic6x.c:3663 +#: elf32-tic6x.c:3656 elf32-tic6x.c:3665 #, c-format msgid "error: unknown Tag_ABI_array_object_align_expected value in %pB" msgstr "" -#: elf32-tic6x.c:3672 elf32-tic6x.c:3680 +#: elf32-tic6x.c:3674 elf32-tic6x.c:3682 #, c-format msgid "error: %pB requires more array alignment than %pB preserves" msgstr "" -#: elf32-tic6x.c:3703 +#: elf32-tic6x.c:3705 #, c-format msgid "warning: %pB and %pB differ in wchar_t size" msgstr "" -#: elf32-tic6x.c:3722 +#: elf32-tic6x.c:3724 #, c-format msgid "warning: %pB and %pB differ in whether code is compiled for DSBT" msgstr "" -#: elf32-tilepro.c:3624 elfxx-tilegx.c:4017 elfxx-x86.c:2773 -#: elfnn-aarch64.c:10343 -#: elfnn-kvx.c:4628 -#: elfnn-loongarch.c:6062 -#: elfnn-riscv.c:3615 +#: elf32-tilepro.c:3626 elfxx-tilegx.c:4019 elfxx-x86.c:2762 +#: elfnn-aarch64.c:10375 +#: elfnn-kvx.c:4631 +#: elfnn-loongarch.c:6379 +#: elfnn-riscv.c:3801 #, c-format msgid "discarded output section: `%pA'" msgstr "" @@ -4136,174 +4167,174 @@ msgstr "" msgid "could not locate special linker symbol __ctbp" msgstr "" -#: elf32-v850.c:2538 +#: elf32-v850.c:2539 #, c-format msgid "error: %pB needs 8-byte alignment but %pB is set for 4-byte alignment" msgstr "" -#: elf32-v850.c:2554 +#: elf32-v850.c:2555 #, c-format msgid "error: %pB uses 64-bit doubles but %pB uses 32-bit doubles" msgstr "" -#: elf32-v850.c:2569 +#: elf32-v850.c:2570 #, c-format msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0" msgstr "" -#: elf32-v850.c:2601 +#: elf32-v850.c:2602 #, c-format msgid " alignment of 8-byte entities: " msgstr "" -#: elf32-v850.c:2604 +#: elf32-v850.c:2605 #, c-format msgid "4-byte" msgstr "" -#: elf32-v850.c:2605 +#: elf32-v850.c:2606 #, c-format msgid "8-byte" msgstr "" -#: elf32-v850.c:2606 elf32-v850.c:2618 +#: elf32-v850.c:2607 elf32-v850.c:2619 #, c-format msgid "not set" msgstr "" -#: elf32-v850.c:2607 elf32-v850.c:2619 elf32-v850.c:2631 elf32-v850.c:2642 -#: elf32-v850.c:2653 elf32-v850.c:2664 +#: elf32-v850.c:2608 elf32-v850.c:2620 elf32-v850.c:2632 elf32-v850.c:2643 +#: elf32-v850.c:2654 elf32-v850.c:2665 #, c-format msgid "unknown: %x" msgstr "" -#: elf32-v850.c:2613 +#: elf32-v850.c:2614 #, c-format msgid " size of doubles: " msgstr "" -#: elf32-v850.c:2616 +#: elf32-v850.c:2617 #, c-format msgid "4-bytes" msgstr "" -#: elf32-v850.c:2617 +#: elf32-v850.c:2618 #, c-format msgid "8-bytes" msgstr "" -#: elf32-v850.c:2625 +#: elf32-v850.c:2626 #, c-format msgid " FPU support required: " msgstr "" -#: elf32-v850.c:2628 +#: elf32-v850.c:2629 #, c-format msgid "FPU-2.0" msgstr "" -#: elf32-v850.c:2629 +#: elf32-v850.c:2630 #, c-format msgid "FPU-3.0" msgstr "" -#: elf32-v850.c:2630 +#: elf32-v850.c:2631 #, c-format msgid "none" msgstr "" -#: elf32-v850.c:2637 +#: elf32-v850.c:2638 #, c-format msgid "SIMD use: " msgstr "" -#: elf32-v850.c:2640 elf32-v850.c:2651 elf32-v850.c:2662 +#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663 #, c-format msgid "yes" msgstr "" -#: elf32-v850.c:2641 elf32-v850.c:2652 elf32-v850.c:2663 +#: elf32-v850.c:2642 elf32-v850.c:2653 elf32-v850.c:2664 #, c-format msgid "no" msgstr "" -#: elf32-v850.c:2648 +#: elf32-v850.c:2649 #, c-format msgid "CACHE use: " msgstr "" -#: elf32-v850.c:2659 +#: elf32-v850.c:2660 #, c-format msgid "MMU use: " msgstr "" -#: elf32-v850.c:2826 elf32-v850.c:2882 +#: elf32-v850.c:2827 elf32-v850.c:2883 #, c-format msgid "%pB: architecture mismatch with previous modules" msgstr "" #. xgettext:c-format. -#: elf32-v850.c:2900 +#: elf32-v850.c:2901 #, c-format msgid "private flags = %lx: " msgstr "" -#: elf32-v850.c:2905 +#: elf32-v850.c:2906 #, c-format msgid "unknown v850 architecture" msgstr "" -#: elf32-v850.c:2907 +#: elf32-v850.c:2908 #, c-format msgid "v850 E3 architecture" msgstr "" -#: elf32-v850.c:2909 elf32-v850.c:2916 +#: elf32-v850.c:2910 elf32-v850.c:2917 #, c-format msgid "v850 architecture" msgstr "" -#: elf32-v850.c:2917 +#: elf32-v850.c:2918 #, c-format msgid "v850e architecture" msgstr "" -#: elf32-v850.c:2918 +#: elf32-v850.c:2919 #, c-format msgid "v850e1 architecture" msgstr "" -#: elf32-v850.c:2919 +#: elf32-v850.c:2920 #, c-format msgid "v850e2 architecture" msgstr "" -#: elf32-v850.c:2920 +#: elf32-v850.c:2921 #, c-format msgid "v850e2v3 architecture" msgstr "" -#: elf32-v850.c:2921 +#: elf32-v850.c:2922 #, c-format msgid "v850e3v5 architecture" msgstr "" -#: elf32-v850.c:3595 elf32-v850.c:3834 +#: elf32-v850.c:3596 elf32-v850.c:3835 #, c-format msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insns" msgstr "" -#: elf32-v850.c:3605 elf32-v850.c:3844 +#: elf32-v850.c:3606 elf32-v850.c:3845 #, c-format msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized insn %#x" msgstr "" -#: elf32-v850.c:3651 elf32-v850.c:3879 +#: elf32-v850.c:3652 elf32-v850.c:3880 #, c-format msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc" msgstr "" -#: elf32-v850.c:3691 +#: elf32-v850.c:3692 #, c-format msgid "%pB: %#<PRIx64>: warning: %s points to unrecognized reloc %#<PRIx64>" msgstr "" @@ -4330,17 +4361,17 @@ msgid "" "addend of %<PRId64>" msgstr "" -#: elf32-vax.c:1387 +#: elf32-vax.c:1389 #, c-format msgid "%pB: warning: PLT addend of %<PRId64> to `%s' from %pA section ignored" msgstr "" -#: elf32-vax.c:1513 +#: elf32-vax.c:1515 #, c-format msgid "%pB: warning: %s relocation against symbol `%s' from %pA section" msgstr "" -#: elf32-vax.c:1520 +#: elf32-vax.c:1522 #, c-format msgid "%pB: warning: %s relocation to %#<PRIx64> from %pA section" msgstr "" @@ -4361,7 +4392,7 @@ msgstr "" msgid "error reading cpu type from elf private data" msgstr "" -#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2076 +#: elf32-xstormy16.c:457 elf64-ia64-vms.c:2077 #: elfnn-ia64.c:2345 msgid "non-zero addend in @fptr reloc" msgstr "" @@ -4371,55 +4402,55 @@ msgstr "" msgid "%pB(%pA): invalid property table" msgstr "" -#: elf32-xtensa.c:2730 +#: elf32-xtensa.c:2732 #, c-format msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)" msgstr "" -#: elf32-xtensa.c:2813 elf32-xtensa.c:2936 +#: elf32-xtensa.c:2815 elf32-xtensa.c:2938 msgid "dynamic relocation in read-only section" msgstr "" -#: elf32-xtensa.c:2913 +#: elf32-xtensa.c:2915 msgid "TLS relocation invalid without dynamic sections" msgstr "" -#: elf32-xtensa.c:3126 +#: elf32-xtensa.c:3128 msgid "internal inconsistency in size of .got.loc section" msgstr "" -#: elf32-xtensa.c:3432 +#: elf32-xtensa.c:3434 #, c-format msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x" msgstr "" -#: elf32-xtensa.c:4731 elf32-xtensa.c:4739 +#: elf32-xtensa.c:4733 elf32-xtensa.c:4741 msgid "attempt to convert L32R/CALLX to CALL failed" msgstr "" -#: elf32-xtensa.c:6567 elf32-xtensa.c:6646 elf32-xtensa.c:8072 +#: elf32-xtensa.c:6569 elf32-xtensa.c:6648 elf32-xtensa.c:8074 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): could not decode instruction; possible configuration " "mismatch" msgstr "" -#: elf32-xtensa.c:7813 +#: elf32-xtensa.c:7815 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY " "relocation; possible configuration mismatch" msgstr "" -#: elf32-xtensa.c:9671 +#: elf32-xtensa.c:9673 msgid "invalid relocation address" msgstr "" -#: elf32-xtensa.c:9762 +#: elf32-xtensa.c:9764 msgid "overflow after relaxation" msgstr "" -#: elf32-xtensa.c:10908 +#: elf32-xtensa.c:10910 #, c-format msgid "%pB(%pA+%#<PRIx64>): unexpected fix for %s relocation" msgstr "" @@ -4454,57 +4485,57 @@ msgstr "" msgid "%pB: .got subsegment exceeds 64K (size %d)" msgstr "" -#: elf64-alpha.c:2678 elflink.c:15697 -#: elfnn-kvx.c:4015 -#: elfnn-loongarch.c:2007 +#: elf64-alpha.c:2679 elflink.c:15752 +#: elfnn-kvx.c:4016 +#: elfnn-loongarch.c:2016 #, c-format msgid "%pB: dynamic relocation against `%pT' in read-only section `%pA'\n" msgstr "" -#: elf64-alpha.c:2974 elf64-alpha.c:3169 +#: elf64-alpha.c:2977 elf64-alpha.c:3172 #, c-format msgid "%pB: %pA+%#<PRIx64>: warning: %s relocation against unexpected insn" msgstr "" -#: elf64-alpha.c:4369 elf64-alpha.c:4382 +#: elf64-alpha.c:4372 elf64-alpha.c:4385 #, c-format msgid "%pB: gp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-alpha.c:4438 +#: elf64-alpha.c:4441 #, c-format msgid "%pB: change in gp: BRSGP %s" msgstr "" -#: elf64-alpha.c:4463 mach-o.c:625 -#: elfnn-loongarch.c:908 -#: elfnn-riscv.c:724 -#: elfnn-riscv.c:929 -#: elfnn-riscv.c:971 +#: elf64-alpha.c:4466 mach-o.c:627 +#: elfnn-loongarch.c:917 +#: elfnn-riscv.c:917 +#: elfnn-riscv.c:1122 +#: elfnn-riscv.c:1164 msgid "<unknown>" msgstr "" -#: elf64-alpha.c:4469 +#: elf64-alpha.c:4472 #, c-format msgid "%pB: !samegp reloc against symbol without .prologue: %s" msgstr "" -#: elf64-alpha.c:4527 +#: elf64-alpha.c:4530 #, c-format msgid "%pB: unhandled dynamic relocation against %s" msgstr "" -#: elf64-alpha.c:4562 +#: elf64-alpha.c:4565 #, c-format msgid "%pB: pc-relative relocation against undefined weak symbol %s" msgstr "" -#: elf64-alpha.c:4628 +#: elf64-alpha.c:4631 #, c-format msgid "%pB: dtp-relative relocation against dynamic symbol %s" msgstr "" -#: elf64-alpha.c:4653 +#: elf64-alpha.c:4656 #, c-format msgid "%pB: tp-relative relocation against dynamic symbol %s" msgstr "" @@ -4519,12 +4550,12 @@ msgstr "" msgid "%pB: Relocations in generic ELF (EM: %d)" msgstr "" -#: elf64-hppa.c:2035 +#: elf64-hppa.c:2037 #, c-format msgid "stub entry for %s cannot load .plt, dp offset = %<PRId64>" msgstr "" -#: elf64-hppa.c:3239 +#: elf64-hppa.c:3241 #, c-format msgid "%pB(%pA+%#<PRIx64>): cannot reach %s" msgstr "" @@ -4537,123 +4568,123 @@ msgid "" "indirect branch" msgstr "" -#: elf64-ia64-vms.c:2031 +#: elf64-ia64-vms.c:2032 #: elfnn-ia64.c:2293 msgid "@pltoff reloc against local symbol" msgstr "" -#: elf64-ia64-vms.c:3278 -#: elfnn-ia64.c:3671 +#: elf64-ia64-vms.c:3280 +#: elfnn-ia64.c:3673 #, c-format msgid "%pB: short data segment overflowed (%#<PRIx64> >= 0x400000)" msgstr "" -#: elf64-ia64-vms.c:3288 -#: elfnn-ia64.c:3681 +#: elf64-ia64-vms.c:3290 +#: elfnn-ia64.c:3683 #, c-format msgid "%pB: __gp does not cover short data segment" msgstr "" -#: elf64-ia64-vms.c:3558 -#: elfnn-ia64.c:3954 +#: elf64-ia64-vms.c:3560 +#: elfnn-ia64.c:3956 #, c-format msgid "%pB: non-pic code with imm relocation against dynamic symbol `%s'" msgstr "" -#: elf64-ia64-vms.c:3622 -#: elfnn-ia64.c:4022 +#: elf64-ia64-vms.c:3624 +#: elfnn-ia64.c:4024 #, c-format msgid "%pB: @gprel relocation against dynamic symbol %s" msgstr "" -#: elf64-ia64-vms.c:3681 -#: elfnn-ia64.c:4085 +#: elf64-ia64-vms.c:3683 +#: elfnn-ia64.c:4087 #, c-format msgid "%pB: linking non-pic code in a position independent executable" msgstr "" -#: elf64-ia64-vms.c:3783 -#: elfnn-ia64.c:4223 +#: elf64-ia64-vms.c:3785 +#: elfnn-ia64.c:4225 #, c-format msgid "%pB: @internal branch to dynamic symbol %s" msgstr "" -#: elf64-ia64-vms.c:3786 -#: elfnn-ia64.c:4226 +#: elf64-ia64-vms.c:3788 +#: elfnn-ia64.c:4228 #, c-format msgid "%pB: speculation fixup to dynamic symbol %s" msgstr "" -#: elf64-ia64-vms.c:3789 -#: elfnn-ia64.c:4229 +#: elf64-ia64-vms.c:3791 +#: elfnn-ia64.c:4231 #, c-format msgid "%pB: @pcrel relocation against dynamic symbol %s" msgstr "" -#: elf64-ia64-vms.c:3913 -#: elfnn-ia64.c:4426 +#: elf64-ia64-vms.c:3915 +#: elfnn-ia64.c:4428 msgid "unsupported reloc" msgstr "" -#: elf64-ia64-vms.c:3950 -#: elfnn-ia64.c:4464 +#: elf64-ia64-vms.c:3952 +#: elfnn-ia64.c:4466 #, c-format msgid "" "%pB: missing TLS section for relocation %s against `%s' at %#<PRIx64> in " "section `%pA'." msgstr "" -#: elf64-ia64-vms.c:3967 -#: elfnn-ia64.c:4481 +#: elf64-ia64-vms.c:3969 +#: elfnn-ia64.c:4483 #, c-format msgid "" "%pB: Can't relax br (%s) to `%s' at %#<PRIx64> in section `%pA' with size %" "#<PRIx64> (> 0x1000000)." msgstr "" -#: elf64-ia64-vms.c:4261 -#: elfnn-ia64.c:4740 +#: elf64-ia64-vms.c:4263 +#: elfnn-ia64.c:4742 #, c-format msgid "%pB: linking trap-on-NULL-dereference with non-trapping files" msgstr "" -#: elf64-ia64-vms.c:4270 -#: elfnn-ia64.c:4749 +#: elf64-ia64-vms.c:4272 +#: elfnn-ia64.c:4751 #, c-format msgid "%pB: linking big-endian files with little-endian files" msgstr "" -#: elf64-ia64-vms.c:4279 -#: elfnn-ia64.c:4758 +#: elf64-ia64-vms.c:4281 +#: elfnn-ia64.c:4760 #, c-format msgid "%pB: linking 64-bit files with 32-bit files" msgstr "" -#: elf64-ia64-vms.c:4288 -#: elfnn-ia64.c:4767 +#: elf64-ia64-vms.c:4290 +#: elfnn-ia64.c:4769 #, c-format msgid "%pB: linking constant-gp files with non-constant-gp files" msgstr "" -#: elf64-ia64-vms.c:4298 -#: elfnn-ia64.c:4777 +#: elf64-ia64-vms.c:4300 +#: elfnn-ia64.c:4779 #, c-format msgid "%pB: linking auto-pic files with non-auto-pic files" msgstr "" -#: elf64-ia64-vms.c:5148 elflink.c:5491 +#: elf64-ia64-vms.c:5150 elflink.c:5518 #, c-format msgid "" "warning: alignment %u of common symbol `%s' in %pB is greater than the " "alignment (%u) of its section %pA" msgstr "" -#: elf64-ia64-vms.c:5155 +#: elf64-ia64-vms.c:5157 #, c-format msgid "warning: alignment %u of symbol `%s' in %pB is smaller than %u in %pB" msgstr "" -#: elf64-ia64-vms.c:5171 elflink.c:5520 +#: elf64-ia64-vms.c:5173 elflink.c:5547 #, c-format msgid "" "warning: size of symbol `%s' changed from %<PRIu64> in %pB to %<PRIu64> in %" @@ -4730,7 +4761,7 @@ msgstr "" msgid "register section has contents\n" msgstr "" -#: elf64-mmix.c:2398 +#: elf64-mmix.c:2399 #, c-format msgid "" "internal inconsistency: remaining %lu != max %lu; please report this bug" @@ -4775,33 +4806,33 @@ msgstr "" msgid " [abiv%ld]" msgstr "" -#: elf64-ppc.c:6844 +#: elf64-ppc.c:6845 msgid "" "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting " "LD_BIND_NOW=1 or upgrade gcc\n" msgstr "" -#: elf64-ppc.c:7111 +#: elf64-ppc.c:7112 #, c-format msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation" msgstr "" -#: elf64-ppc.c:7362 +#: elf64-ppc.c:7363 #, c-format msgid "dynreloc miscount for %pB, section %pA" msgstr "" -#: elf64-ppc.c:7453 +#: elf64-ppc.c:7454 #, c-format msgid "%pB: .opd is not a regular array of opd entries" msgstr "" -#: elf64-ppc.c:7463 +#: elf64-ppc.c:7464 #, c-format msgid "%pB: unexpected reloc type %u in .opd section" msgstr "" -#: elf64-ppc.c:7485 +#: elf64-ppc.c:7486 #, c-format msgid "%pB: undefined sym `%s' in .opd section" msgstr "" @@ -4813,86 +4844,86 @@ msgstr "" #. __glink_PLTresolve save of r2 is incompatible with code #. making tail calls, because the tail call might go via the #. resolver and thus overwrite the proper saved r2. -#: elf64-ppc.c:7986 +#: elf64-ppc.c:7987 msgid "warning: --plt-localentry is incompatible with power10 pc-relative code" msgstr "" -#: elf64-ppc.c:7994 +#: elf64-ppc.c:7995 msgid "" "warning: --plt-localentry is especially dangerous without ld.so support to " "detect ABI violations" msgstr "" -#: elf64-ppc.c:8310 +#: elf64-ppc.c:8311 msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n" msgstr "" -#: elf64-ppc.c:8745 elf64-ppc.c:9461 +#: elf64-ppc.c:8746 elf64-ppc.c:9462 #, c-format msgid "%s defined on removed toc entry" msgstr "" -#: elf64-ppc.c:9418 +#: elf64-ppc.c:9419 #, c-format msgid "%H: %s references optimized away TOC entry\n" msgstr "" -#: elf64-ppc.c:9639 +#: elf64-ppc.c:9640 #, c-format msgid "%H: got/toc optimization is not supported for %s instruction\n" msgstr "" -#: elf64-ppc.c:10534 +#: elf64-ppc.c:10536 #, c-format msgid "warning: discarding dynamic section %s" msgstr "" -#: elf64-ppc.c:11687 +#: elf64-ppc.c:11692 msgid "%P: cannot find opd entry toc for `%pT'\n" msgstr "" -#: elf64-ppc.c:11837 +#: elf64-ppc.c:11842 #, c-format msgid "long branch stub `%s' offset overflow" msgstr "" -#: elf64-ppc.c:11864 +#: elf64-ppc.c:11869 #, c-format msgid "can't find branch stub `%s'" msgstr "" -#: elf64-ppc.c:11925 elf64-ppc.c:12177 elf64-ppc.c:14742 +#: elf64-ppc.c:11930 elf64-ppc.c:12182 elf64-ppc.c:14748 #, c-format msgid "%P: linkage table error against `%pT'\n" msgstr "" -#: elf64-ppc.c:12376 +#: elf64-ppc.c:12381 #, c-format msgid "can't build branch stub `%s'" msgstr "" -#: elf64-ppc.c:13407 +#: elf64-ppc.c:13412 #, c-format msgid "%pB section %pA exceeds stub group size" msgstr "" -#: elf64-ppc.c:14923 +#: elf64-ppc.c:14929 msgid "__tls_get_addr call offset overflow" msgstr "" -#: elf64-ppc.c:15263 elf64-ppc.c:15282 +#: elf64-ppc.c:15272 elf64-ppc.c:15291 #, c-format msgid "%s offset too large for .eh_frame sdata4 encoding" msgstr "" -#: elf64-ppc.c:15370 +#: elf64-ppc.c:15380 #, c-format msgid "linker stubs in %u group" msgid_plural "linker stubs in %u groups" msgstr[0] "" msgstr[1] "" -#: elf64-ppc.c:15377 +#: elf64-ppc.c:15387 #, c-format msgid "" "%s, iter %u\n" @@ -4902,74 +4933,75 @@ msgid "" " global entry %lu" msgstr "" -#: elf64-ppc.c:15759 +#: elf64-ppc.c:15769 #, c-format msgid "%H: %s used with TLS symbol `%pT'\n" msgstr "" -#: elf64-ppc.c:15761 +#: elf64-ppc.c:15771 #, c-format msgid "%H: %s used with non-TLS symbol `%pT'\n" msgstr "" -#: elf64-ppc.c:16545 +#: elf64-ppc.c:16555 #, c-format msgid "%H: call to `%pT' lacks nop, can't restore toc; (plt call stub)\n" msgstr "" -#: elf64-ppc.c:16551 +#: elf64-ppc.c:16561 #, c-format msgid "" "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n" msgstr "" -#: elf64-ppc.c:17202 +#: elf64-ppc.c:17212 #, c-format msgid "%H: %s against %pT is not supported\n" msgstr "" -#: elf64-ppc.c:17478 +#: elf64-ppc.c:17488 #, c-format msgid "%H: %s for indirect function `%pT' unsupported\n" msgstr "" -#: elf64-ppc.c:17565 +#: elf64-ppc.c:17575 #, c-format msgid "" "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocation\n" msgstr "" -#: elf64-ppc.c:17620 +#: elf64-ppc.c:17630 #, c-format msgid "%P: %pB: %s is not supported for `%pT'\n" msgstr "" -#: elf64-ppc.c:17889 +#: elf64-ppc.c:17899 #, c-format msgid "%H: error: %s not a multiple of %u\n" msgstr "" -#: elf64-ppc.c:17912 +#: elf64-ppc.c:17922 #, c-format msgid "%H: unresolvable %s against `%pT'\n" msgstr "" -#: elf64-ppc.c:18057 +#: elf64-ppc.c:18067 #, c-format msgid "%H: %s against `%pT': error %d\n" msgstr "" -#: elf64-s390.c:2490 +#: elf64-s390.c:2752 #, c-format msgid "" "%pB: `%s' non-PLT reloc for symbol defined in shared library and accessed " "from executable (rebuild file with -fPIC ?)" msgstr "" -#: elf64-s390.c:3153 +#: elf64-s390.c:3415 #, c-format msgid "" -"%pB(%pA+%#<PRIx64>): misaligned symbol `%s' (%#<PRIx64>) for relocation %s" +"%pB(%pA+%#<PRIx64>): relocation %s against misaligned symbol `%s' (%" +"#<PRIx64>) in %pB" msgstr "" #: elf64-sparc.c:134 elfcode.h:1601 @@ -5002,122 +5034,134 @@ msgstr "" msgid "%pB: linking UltraSPARC specific with HAL specific code" msgstr "" -#: elf64-x86-64.c:1660 +#: elf64-x86-64.c:1690 msgid "hidden symbol " msgstr "" -#: elf64-x86-64.c:1663 +#: elf64-x86-64.c:1693 msgid "internal symbol " msgstr "" -#: elf64-x86-64.c:1666 elf64-x86-64.c:1670 +#: elf64-x86-64.c:1696 elf64-x86-64.c:1700 msgid "protected symbol " msgstr "" -#: elf64-x86-64.c:1672 +#: elf64-x86-64.c:1702 msgid "symbol " msgstr "" -#: elf64-x86-64.c:1678 +#: elf64-x86-64.c:1708 msgid "undefined " msgstr "" -#: elf64-x86-64.c:1688 -#: elfnn-loongarch.c:892 +#: elf64-x86-64.c:1718 +#: elfnn-loongarch.c:901 msgid "a shared object" msgstr "" -#: elf64-x86-64.c:1690 +#: elf64-x86-64.c:1720 msgid "; recompile with -fPIC" msgstr "" -#: elf64-x86-64.c:1695 -#: elfnn-loongarch.c:898 +#: elf64-x86-64.c:1725 +#: elfnn-loongarch.c:907 msgid "a PIE object" msgstr "" -#: elf64-x86-64.c:1697 -#: elfnn-loongarch.c:900 +#: elf64-x86-64.c:1727 +#: elfnn-loongarch.c:909 msgid "a PDE object" msgstr "" -#: elf64-x86-64.c:1699 +#: elf64-x86-64.c:1729 msgid "; recompile with -fPIE" msgstr "" -#: elf64-x86-64.c:1703 +#: elf64-x86-64.c:1733 #, c-format msgid "%pB: relocation %s against %s%s`%s' can not be used when making %s%s" msgstr "" -#: elf64-x86-64.c:2239 +#: elf64-x86-64.c:2566 +#, c-format +msgid "%pB: bad reloc offset (%#<PRIx64> > %#<PRIx64>) for section `%pA'" +msgstr "" + +#: elf64-x86-64.c:2630 #, c-format msgid "%pB: relocation %s against symbol `%s' isn't supported in x32 mode" msgstr "" -#: elf64-x86-64.c:2394 +#: elf64-x86-64.c:2791 #, c-format msgid "%pB: '%s' accessed both as normal and thread local symbol" msgstr "" -#: elf64-x86-64.c:2652 +#: elf64-x86-64.c:3046 #, c-format msgid "%pB: unsupported relocation %s against symbol `%s'" msgstr "" -#: elf64-x86-64.c:3076 -#: elfnn-aarch64.c:5766 -#: elfnn-riscv.c:2374 +#: elf64-x86-64.c:3472 +#: elfnn-aarch64.c:5784 +#: elfnn-riscv.c:2572 #, c-format msgid "" "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' has non-zero addend: %" "<PRId64>" msgstr "" -#: elf64-x86-64.c:3339 +#: elf64-x86-64.c:3741 #, c-format msgid "" "%pB: relocation R_X86_64_GOTOFF64 against undefined %s `%s' can not be used " "when making a shared object" msgstr "" -#: elf64-x86-64.c:3353 +#: elf64-x86-64.c:3755 #, c-format msgid "" "%pB: relocation R_X86_64_GOTOFF64 against protected %s `%s' can not be used " "when making a shared object" msgstr "" -#: elf64-x86-64.c:3643 +#: elf64-x86-64.c:4045 #, c-format msgid "" "%pB: addend %s%#x in relocation %s against symbol `%s' at %#<PRIx64> in " "section `%pA' is out of range" msgstr "" -#: elf64-x86-64.c:3794 elflink.c:14005 -msgid "%F%P: corrupt input: %pB\n" +#: elf64-x86-64.c:4197 +msgid "%P: corrupt input: %pB\n" msgstr "" -#: elf64-x86-64.c:4605 +#: elf64-x86-64.c:5066 #, c-format msgid "" " failed to convert GOTPCREL relocation against '%s'; relink with --no-relax\n" msgstr "" -#: elf64-x86-64.c:4764 +#: elf64-x86-64.c:5225 +#, c-format +msgid "%pB: PC-relative offset overflow in PLT entry for `%s'\n" +msgstr "" + +#: elf64-x86-64.c:5301 #, c-format -msgid "%F%pB: PC-relative offset overflow in PLT entry for `%s'\n" +msgid "%pB: branch displacement overflow in PLT entry for `%s'\n" msgstr "" -#: elf64-x86-64.c:4837 +#: elf64-x86-64.c:5354 #, c-format -msgid "%F%pB: branch displacement overflow in PLT entry for `%s'\n" +msgid "%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n" msgstr "" -#: elf64-x86-64.c:4890 +#: elf64-x86-64.c:5505 #, c-format -msgid "%F%pB: PC-relative offset overflow in GOT PLT entry for `%s'\n" +msgid "" +"%pB: Unable to generate dynamic relocs because a suitable section does not " +"exist\n" msgstr "" #: elfcode.h:342 @@ -5150,368 +5194,373 @@ msgstr "" msgid "warning: %pB has a segment extending past end of file" msgstr "" -#: elflink.c:1438 +#: elflink.c:1477 #, c-format msgid "" "%s: TLS definition in %pB section %pA mismatches non-TLS definition in %pB " "section %pA" msgstr "" -#: elflink.c:1444 +#: elflink.c:1483 #, c-format msgid "%s: TLS reference in %pB mismatches non-TLS reference in %pB" msgstr "" -#: elflink.c:1450 +#: elflink.c:1489 #, c-format msgid "" "%s: TLS definition in %pB section %pA mismatches non-TLS reference in %pB" msgstr "" -#: elflink.c:1456 +#: elflink.c:1495 #, c-format msgid "" "%s: TLS reference in %pB mismatches non-TLS definition in %pB section %pA" msgstr "" -#: elflink.c:2168 +#: elflink.c:2207 #, c-format msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'" msgstr "" -#: elflink.c:2681 +#: elflink.c:2720 #, c-format msgid "%pB: version node not found for symbol %s" msgstr "" -#: elflink.c:2780 +#: elflink.c:2819 #, c-format msgid "" "%pB: bad reloc symbol index (%#<PRIx64> >= %#lx) for offset %#<PRIx64> in " "section `%pA'" msgstr "" -#: elflink.c:2792 +#: elflink.c:2831 #, c-format msgid "" "%pB: non-zero symbol index (%#<PRIx64>) for offset %#<PRIx64> in section `%" "pA' when the object file has no symbol table" msgstr "" -#: elflink.c:2989 +#: elflink.c:3017 #, c-format msgid "%pB: relocation size mismatch in %pB section %pA" msgstr "" -#: elflink.c:3322 +#: elflink.c:3350 #, c-format msgid "warning: type and size of dynamic symbol `%s' are not defined" msgstr "" -#: elflink.c:3382 +#: elflink.c:3407 msgid "%P: copy reloc against protected `%pT' is dangerous\n" msgstr "" -#: elflink.c:4338 -msgid "%F%P: %pB: failed to add %s to first hash\n" +#: elflink.c:4363 +msgid "%P: %pB: failed to add %s to first hash\n" msgstr "" -#: elflink.c:4406 -msgid "%F%P: first_hash failed to create: %E\n" +#: elflink.c:4431 +msgid "%P: first_hash failed to create: %E\n" msgstr "" -#: elflink.c:4437 +#: elflink.c:4462 #, c-format msgid "alternate ELF machine code found (%d) in %pB, expecting %d" msgstr "" -#: elflink.c:4920 +#: elflink.c:4945 #, c-format msgid "%pB: invalid version offset %lx (max %lx)" msgstr "" -#: elflink.c:4989 +#: elflink.c:5015 #, c-format msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)" msgstr "" -#: elflink.c:5137 +#: elflink.c:5164 #, c-format msgid "%pB: not enough version information" msgstr "" -#: elflink.c:5175 +#: elflink.c:5202 #, c-format msgid "%pB: %s: invalid version %u (max %d)" msgstr "" -#: elflink.c:5212 +#: elflink.c:5239 #, c-format msgid "%pB: %s: invalid needed version %d" msgstr "" -#: elflink.c:5498 +#: elflink.c:5525 #, c-format msgid "" "warning: alignment %u of normal symbol `%s' in %pB is smaller than %u used " "by the common definition in %pB" msgstr "" -#: elflink.c:5505 +#: elflink.c:5532 msgid "" "warning: NOTE: alignment discrepancies can cause real problems. " "Investigation is advised." msgstr "" -#: elflink.c:5527 +#: elflink.c:5554 msgid "" "warning: NOTE: size discrepancies can cause real problems. Investigation is " "advised." msgstr "" -#: elflink.c:5670 +#: elflink.c:5697 #, c-format msgid "%pB: undefined reference to symbol '%s'" msgstr "" -#: elflink.c:6759 +#: elflink.c:6812 #, c-format msgid "%pB: stack size specified and %s set" msgstr "" -#: elflink.c:6763 +#: elflink.c:6816 #, c-format msgid "%pB: %s not absolute" msgstr "" -#: elflink.c:6975 +#: elflink.c:7028 #, c-format msgid "%s: undefined version: %s" msgstr "" -#: elflink.c:7364 +#: elflink.c:7419 msgid "" "error: creating an executable stack because of -z execstack command line " "option" msgstr "" -#: elflink.c:7370 +#: elflink.c:7425 msgid "" "warning: enabling an executable stack because of -z execstack command line " "option" msgstr "" -#: elflink.c:7432 +#: elflink.c:7487 #, c-format msgid "" "error: %s: is triggering the generation of an executable stack (because it " "has an executable .note.GNU-stack section)" msgstr "" -#: elflink.c:7438 +#: elflink.c:7493 #, c-format msgid "" "warning: %s: requires executable stack (because the .note.GNU-stack section " "is executable)" msgstr "" -#: elflink.c:7446 +#: elflink.c:7501 #, c-format msgid "" "error: %s: is triggering the generation of an executable stack because it " "does not have a .note.GNU-stack section" msgstr "" -#: elflink.c:7452 +#: elflink.c:7507 #, c-format msgid "warning: %s: missing .note.GNU-stack section implies executable stack" msgstr "" -#: elflink.c:7455 +#: elflink.c:7510 msgid "" "NOTE: This behaviour is deprecated and will be removed in a future version " "of the linker" msgstr "" -#: elflink.c:7609 +#: elflink.c:7664 #, c-format msgid "%pB: .preinit_array section is not allowed in DSO" msgstr "" -#: elflink.c:9218 +#: elflink.c:9284 #, c-format msgid "undefined %s reference in complex symbol: %s" msgstr "" -#: elflink.c:9381 elflink.c:9389 +#: elflink.c:9447 elflink.c:9455 msgid "division by zero" msgstr "" -#: elflink.c:9403 +#: elflink.c:9469 #, c-format msgid "unknown operator '%c' in complex symbol" msgstr "" #. PR 21524: Let the user know if a symbol was removed by garbage collection. -#: elflink.c:9739 +#: elflink.c:9805 #, c-format msgid "" "%pB:%pA: error: relocation references symbol %s which was removed by garbage " "collection" msgstr "" -#: elflink.c:9742 +#: elflink.c:9808 #, c-format msgid "%pB:%pA: error: try relinking with --gc-keep-exported enabled" msgstr "" -#: elflink.c:9993 elflink.c:10011 elflink.c:10050 elflink.c:10068 +#: elflink.c:10059 elflink.c:10077 elflink.c:10116 elflink.c:10134 #, c-format msgid "%pB: unable to sort relocs - they are in more than one size" msgstr "" #. The section size is not divisible by either - #. something is wrong. -#: elflink.c:10027 elflink.c:10084 +#: elflink.c:10093 elflink.c:10150 #, c-format msgid "%pB: unable to sort relocs - they are of an unknown size" msgstr "" -#: elflink.c:10136 +#: elflink.c:10202 msgid "not enough memory to sort relocations" msgstr "" -#: elflink.c:10470 +#: elflink.c:10536 #, c-format msgid "%pB: too many sections: %d (>= %d)" msgstr "" -#: elflink.c:10746 +#: elflink.c:10812 #, c-format msgid "%pB: internal symbol `%s' in %pB is referenced by DSO" msgstr "" -#: elflink.c:10749 +#: elflink.c:10815 #, c-format msgid "%pB: hidden symbol `%s' in %pB is referenced by DSO" msgstr "" -#: elflink.c:10752 +#: elflink.c:10818 #, c-format msgid "%pB: local symbol `%s' in %pB is referenced by DSO" msgstr "" -#: elflink.c:10845 +#: elflink.c:10911 #, c-format msgid "%pB: could not find output section %pA for input section %pA" msgstr "" -#: elflink.c:11003 +#: elflink.c:11069 #, c-format msgid "%pB: protected symbol `%s' isn't defined" msgstr "" -#: elflink.c:11006 +#: elflink.c:11072 #, c-format msgid "%pB: internal symbol `%s' isn't defined" msgstr "" -#: elflink.c:11009 +#: elflink.c:11075 #, c-format msgid "%pB: hidden symbol `%s' isn't defined" msgstr "" -#: elflink.c:11041 +#: elflink.c:11107 #, c-format msgid "%pB: no symbol version section for versioned symbol `%s'" msgstr "" -#: elflink.c:11723 +#: elflink.c:11649 +#, c-format +msgid "error: %pB: unable to create group section symbol" +msgstr "" + +#: elflink.c:11798 #, c-format msgid "" -"error: %pB contains a reloc (%#<PRIx64>) for section %pA that references a " +"error: %pB contains a reloc (%#<PRIx64>) for section '%pA' that references a " "non-existent global symbol" msgstr "" -#: elflink.c:12193 +#: elflink.c:12264 #, c-format msgid "error: %pB: size of section %pA is not multiple of address size" msgstr "" -#: elflink.c:12473 +#: elflink.c:12544 #, c-format msgid "%pB: no symbol found for import library" msgstr "" -#: elflink.c:13078 -msgid "%F%P: %pB: failed to finish relative relocations\n" +#: elflink.c:13150 +msgid "%P: %pB: failed to finish relative relocations\n" msgstr "" -#: elflink.c:13155 +#: elflink.c:13227 #, c-format msgid "%pB: file class %s incompatible with %s" msgstr "" -#: elflink.c:13377 +#: elflink.c:13449 #, c-format msgid "%pB: failed to generate import library" msgstr "" -#: elflink.c:13538 +#: elflink.c:13610 #, c-format msgid "warning: %s section has zero size" msgstr "" -#: elflink.c:13586 +#: elflink.c:13658 #, c-format msgid "warning: section '%s' is being made into a note" msgstr "" -#: elflink.c:13680 +#: elflink.c:13752 msgid "%P%X: read-only segment has dynamic relocations\n" msgstr "" -#: elflink.c:13683 +#: elflink.c:13755 msgid "%P: warning: creating DT_TEXTREL in a shared object\n" msgstr "" -#: elflink.c:13686 +#: elflink.c:13758 msgid "%P: warning: creating DT_TEXTREL in a PDE\n" msgstr "" -#: elflink.c:13689 +#: elflink.c:13761 msgid "%P: warning: creating DT_TEXTREL in a PIE\n" msgstr "" -#: elflink.c:13825 +#: elflink.c:13890 msgid "%P%X: can not read symbols: %E\n" msgstr "" -#: elflink.c:14258 -msgid "%F%P: %pB(%pA): error: need linked-to section for --gc-sections\n" +#: elflink.c:14312 +msgid "%P: %pB(%pA): error: need linked-to section for --gc-sections\n" msgstr "" -#: elflink.c:14738 +#: elflink.c:14793 #, c-format msgid "%pB: %pA+%#<PRIx64>: no symbol found for INHERIT" msgstr "" -#: elflink.c:14779 +#: elflink.c:14834 #, c-format msgid "%pB: section '%pA': corrupt VTENTRY entry" msgstr "" -#: elflink.c:14922 +#: elflink.c:14977 #, c-format msgid "unrecognized INPUT_SECTION_FLAG %s\n" msgstr "" -#: elflink.c:15703 +#: elflink.c:15758 #, c-format msgid "%P: %pB: warning: relocation against `%s' in read-only section `%pA'\n" msgstr "" -#: elflink.c:15792 +#: elflink.c:15847 msgid "" "%P: warning: GNU indirect functions with DT_TEXTREL may result in a segfault " "at runtime; recompile with %s\n" @@ -5523,64 +5572,64 @@ msgid "" "%pB: warning: Weak TLS is implementation defined and may not work as expected" msgstr "" -#: elfxx-aarch64.c:773 +#: elfxx-aarch64.c:786 #, c-format msgid "" "%Xerror: found a total of %d inputs incompatible with BTI requirements.\n" msgstr "" -#: elfxx-aarch64.c:775 +#: elfxx-aarch64.c:788 #, c-format msgid "" "warning: found a total of %d inputs incompatible with BTI requirements.\n" msgstr "" -#: elfxx-aarch64.c:785 +#: elfxx-aarch64.c:798 #, c-format msgid "" "%Xerror: found a total of %d inputs incompatible with GCS requirements.\n" msgstr "" -#: elfxx-aarch64.c:787 +#: elfxx-aarch64.c:800 #, c-format msgid "" "warning: found a total of %d inputs incompatible with GCS requirements.\n" msgstr "" -#: elfxx-aarch64.c:797 +#: elfxx-aarch64.c:810 #, c-format msgid "" "%Xerror: found a total of %d dynamically-linked objects incompatible with " "GCS requirements.\n" msgstr "" -#: elfxx-aarch64.c:799 +#: elfxx-aarch64.c:812 #, c-format msgid "" "warning: found a total of %d dynamically-linked objects incompatible with " "GCS requirements.\n" msgstr "" -#: elfxx-aarch64.c:960 +#: elfxx-aarch64.c:971 #, c-format msgid "error: %pB: <corrupt AArch64 used size: 0x%x>" msgstr "" -#: elfxx-aarch64.c:1104 +#: elfxx-aarch64.c:1115 #, c-format msgid "" "%pB: warning: BTI is required by -z force-bti, but this input object file " "lacks the necessary property note.\n" msgstr "" -#: elfxx-aarch64.c:1106 +#: elfxx-aarch64.c:1117 #, c-format msgid "" "%X%pB: error: BTI is required by -z force-bti, but this input object file " "lacks the necessary property note.\n" msgstr "" -#: elfxx-aarch64.c:1138 +#: elfxx-aarch64.c:1149 #, c-format msgid "" "%pB: warning: GCS is required by -z gcs, but this shared library lacks the " @@ -5589,7 +5638,7 @@ msgid "" "marking.\n" msgstr "" -#: elfxx-aarch64.c:1142 +#: elfxx-aarch64.c:1153 #, c-format msgid "" "%X%pB: error: GCS is required by -z gcs, but this shared library lacks the " @@ -5598,14 +5647,14 @@ msgid "" "marking.\n" msgstr "" -#: elfxx-aarch64.c:1148 +#: elfxx-aarch64.c:1159 #, c-format msgid "" "%pB: warning: GCS is required by -z gcs, but this input object file lacks " "the necessary property note.\n" msgstr "" -#: elfxx-aarch64.c:1150 +#: elfxx-aarch64.c:1161 #, c-format msgid "" "%X%pB: error: GCS is required by -z gcs, but this input object file lacks " @@ -5636,819 +5685,862 @@ msgstr "" msgid "static procedure (no name)" msgstr "" -#: elfxx-mips.c:5849 +#: elfxx-mips.c:5895 msgid "MIPS16 and microMIPS functions cannot call each other" msgstr "" -#: elfxx-mips.c:6619 +#: elfxx-mips.c:6665 msgid "%X%H: unsupported JALX to the same ISA mode\n" msgstr "" -#: elfxx-mips.c:6652 +#: elfxx-mips.c:6698 msgid "" "%X%H: unsupported jump between ISA modes; consider recompiling with " "interlinking enabled\n" msgstr "" -#: elfxx-mips.c:6697 +#: elfxx-mips.c:6743 msgid "" "%X%H: cannot convert branch between ISA modes to JALX: relocation out of " "range\n" msgstr "" -#: elfxx-mips.c:6709 +#: elfxx-mips.c:6755 msgid "%X%H: unsupported branch between ISA modes\n" msgstr "" -#: elfxx-mips.c:7355 +#: elfxx-mips.c:7401 #, c-format msgid "" "%pB: incorrect `.reginfo' section size; expected %<PRIu64>, got %<PRIu64>" msgstr "" -#: elfxx-mips.c:7399 +#: elfxx-mips.c:7445 #, c-format msgid "%pB: warning: bad `%s' option size %u smaller than its header" msgstr "" -#: elfxx-mips.c:7635 +#: elfxx-mips.c:7681 #, c-format msgid "%pB: warning: truncated `%s' option" msgstr "" -#: elfxx-mips.c:8453 elfxx-mips.c:8579 +#: elfxx-mips.c:8533 elfxx-mips.c:8659 #, c-format msgid "" "%pB: warning: cannot determine the target function for stub section `%s'" msgstr "" -#: elfxx-mips.c:8711 +#: elfxx-mips.c:8791 #, c-format msgid "%pB: malformed reloc detected for section %s" msgstr "" -#: elfxx-mips.c:8811 +#: elfxx-mips.c:8891 #, c-format msgid "%pB: GOT reloc at %#<PRIx64> not expected in executables" msgstr "" -#: elfxx-mips.c:8951 +#: elfxx-mips.c:9031 #, c-format msgid "%pB: CALL16 reloc at %#<PRIx64> not against global symbol" msgstr "" -#: elfxx-mips.c:9254 +#: elfxx-mips.c:9334 #, c-format msgid "" "%X%H: relocation %s against `%s' cannot be used when making a shared object; " "recompile with -fPIC\n" msgstr "" -#: elfxx-mips.c:9380 +#: elfxx-mips.c:9460 #, c-format msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported" msgstr "" -#: elfxx-mips.c:9383 +#: elfxx-mips.c:9463 #, c-format msgid "non-dynamic symbol %s in dynamic symbol table" msgstr "" -#: elfxx-mips.c:9603 +#: elfxx-mips.c:9683 #, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" msgstr "" -#: elfxx-mips.c:10523 +#: elfxx-mips.c:10606 #, c-format msgid "" "%pB: can't find matching LO16 reloc against `%s' for %s at %#<PRIx64> in " "section `%pA'" msgstr "" -#: elfxx-mips.c:10663 +#: elfxx-mips.c:10748 msgid "" "small-data section too large; lower small-data size limit (see option -G)" msgstr "" -#: elfxx-mips.c:10682 +#: elfxx-mips.c:10767 msgid "cannot convert a jump to JALX for a non-word-aligned address" msgstr "" -#: elfxx-mips.c:10685 +#: elfxx-mips.c:10770 msgid "jump to a non-word-aligned address" msgstr "" -#: elfxx-mips.c:10686 +#: elfxx-mips.c:10771 msgid "jump to a non-instruction-aligned address" msgstr "" -#: elfxx-mips.c:10689 +#: elfxx-mips.c:10774 msgid "cannot convert a branch to JALX for a non-word-aligned address" msgstr "" -#: elfxx-mips.c:10691 +#: elfxx-mips.c:10776 msgid "branch to a non-instruction-aligned address" msgstr "" -#: elfxx-mips.c:10693 +#: elfxx-mips.c:10778 msgid "PC-relative load from unaligned address" msgstr "" -#: elfxx-mips.c:10993 +#: elfxx-mips.c:11078 #, c-format msgid "" "%pB: `%pA' entry VMA of %#<PRIx64> outside the 32-bit range supported; " "consider using `-Ttext-segment=...'" msgstr "" -#: elfxx-mips.c:11108 elfxx-mips.c:11701 +#: elfxx-mips.c:11193 elfxx-mips.c:11786 #, c-format msgid "%pB: `%pA' offset of %<PRId64> from `%pA' beyond the range of ADDIUPC" msgstr "" -#: elfxx-mips.c:11673 +#: elfxx-mips.c:11758 #, c-format msgid "" "%pB: `%pA' start VMA of %#<PRIx64> outside the 32-bit range supported; " "consider using `-Ttext-segment=...'" msgstr "" -#: elfxx-mips.c:13418 reloc.c:8518 +#: elfxx-mips.c:13503 reloc.c:8524 #, c-format msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n" msgstr "" -#: elfxx-mips.c:14729 +#: elfxx-mips.c:14814 #, c-format msgid "%pB: unknown architecture %s" msgstr "" -#: elfxx-mips.c:15257 +#: elfxx-mips.c:15342 #, c-format msgid "%pB: illegal section name `%pA'" msgstr "" -#: elfxx-mips.c:15534 +#: elfxx-mips.c:15620 #, c-format msgid "%pB: warning: linking abicalls files with non-abicalls files" msgstr "" -#: elfxx-mips.c:15551 +#: elfxx-mips.c:15637 #, c-format msgid "%pB: linking 32-bit code with 64-bit code" msgstr "" -#: elfxx-mips.c:15583 elfxx-mips.c:15649 elfxx-mips.c:15664 +#: elfxx-mips.c:15669 elfxx-mips.c:15735 elfxx-mips.c:15750 #, c-format msgid "%pB: linking %s module with previous %s modules" msgstr "" -#: elfxx-mips.c:15607 +#: elfxx-mips.c:15693 #, c-format msgid "%pB: ABI mismatch: linking %s module with previous %s modules" msgstr "" -#: elfxx-mips.c:15632 +#: elfxx-mips.c:15718 #, c-format msgid "%pB: ASE mismatch: linking %s module with previous %s modules" msgstr "" -#: elfxx-mips.c:15766 +#: elfxx-mips.c:15852 #, c-format msgid "" "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses " "unknown floating point ABI %d" msgstr "" -#: elfxx-mips.c:15772 +#: elfxx-mips.c:15858 #, c-format msgid "" "warning: %pB uses unknown floating point ABI %d (set by %pB), %pB uses %s" msgstr "" -#: elfxx-mips.c:15778 +#: elfxx-mips.c:15864 #, c-format msgid "" "warning: %pB uses %s (set by %pB), %pB uses unknown floating point ABI %d" msgstr "" -#: elfxx-mips.c:15792 +#: elfxx-mips.c:15878 #, c-format msgid "warning: %pB uses %s (set by %pB), %pB uses %s" msgstr "" -#: elfxx-mips.c:15811 +#: elfxx-mips.c:15897 #, c-format msgid "warning: %pB uses %s (set by %pB), %pB uses unknown MSA ABI %d" msgstr "" -#: elfxx-mips.c:15823 +#: elfxx-mips.c:15909 #, c-format msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses %s" msgstr "" -#: elfxx-mips.c:15832 +#: elfxx-mips.c:15918 #, c-format msgid "" "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA ABI %" "d" msgstr "" -#: elfxx-mips.c:15894 +#: elfxx-mips.c:15980 #, c-format msgid "%pB: endianness incompatible with that of the selected emulation" msgstr "" -#: elfxx-mips.c:15908 +#: elfxx-mips.c:15994 #, c-format msgid "%pB: ABI is incompatible with that of the selected emulation" msgstr "" -#: elfxx-mips.c:15961 +#: elfxx-mips.c:16047 #, c-format msgid "%pB: warning: inconsistent ISA between e_flags and .MIPS.abiflags" msgstr "" -#: elfxx-mips.c:15966 +#: elfxx-mips.c:16052 #, c-format msgid "" "%pB: warning: inconsistent FP ABI between .gnu.attributes and .MIPS.abiflags" msgstr "" -#: elfxx-mips.c:15970 +#: elfxx-mips.c:16056 #, c-format msgid "%pB: warning: inconsistent ASEs between e_flags and .MIPS.abiflags" msgstr "" -#: elfxx-mips.c:15977 +#: elfxx-mips.c:16063 #, c-format msgid "" "%pB: warning: inconsistent ISA extensions between e_flags and .MIPS.abiflags" msgstr "" -#: elfxx-mips.c:15981 +#: elfxx-mips.c:16067 #, c-format msgid "" "%pB: warning: unexpected flag in the flags2 field of .MIPS.abiflags (0x%lx)" msgstr "" -#: elfxx-mips.c:16172 +#: elfxx-mips.c:16258 msgid "-mips32r2 -mfp64 (12 callee-saved)" msgstr "" -#: elfxx-mips.c:16234 elfxx-mips.c:16245 +#: elfxx-mips.c:16320 elfxx-mips.c:16331 msgid "None" msgstr "" -#: elfxx-mips.c:16236 elfxx-mips.c:16305 +#: elfxx-mips.c:16322 elfxx-mips.c:16391 msgid "Unknown" msgstr "" -#: elfxx-mips.c:16316 +#: elfxx-mips.c:16402 #, c-format msgid "Hard or soft float\n" msgstr "" -#: elfxx-mips.c:16319 +#: elfxx-mips.c:16405 #, c-format msgid "Hard float (double precision)\n" msgstr "" -#: elfxx-mips.c:16322 +#: elfxx-mips.c:16408 #, c-format msgid "Hard float (single precision)\n" msgstr "" -#: elfxx-mips.c:16325 +#: elfxx-mips.c:16411 #, c-format msgid "Soft float\n" msgstr "" -#: elfxx-mips.c:16328 +#: elfxx-mips.c:16414 #, c-format msgid "Hard float (MIPS32r2 64-bit FPU 12 callee-saved)\n" msgstr "" -#: elfxx-mips.c:16331 +#: elfxx-mips.c:16417 #, c-format msgid "Hard float (32-bit CPU, Any FPU)\n" msgstr "" -#: elfxx-mips.c:16334 +#: elfxx-mips.c:16420 #, c-format msgid "Hard float (32-bit CPU, 64-bit FPU)\n" msgstr "" -#: elfxx-mips.c:16337 +#: elfxx-mips.c:16423 #, c-format msgid "Hard float compat (32-bit CPU, 64-bit FPU)\n" msgstr "" -#: elfxx-mips.c:16369 +#: elfxx-mips.c:16455 #, c-format msgid " [abi=O32]" msgstr "" -#: elfxx-mips.c:16371 +#: elfxx-mips.c:16457 #, c-format msgid " [abi=O64]" msgstr "" -#: elfxx-mips.c:16373 +#: elfxx-mips.c:16459 #, c-format msgid " [abi=EABI32]" msgstr "" -#: elfxx-mips.c:16375 +#: elfxx-mips.c:16461 #, c-format msgid " [abi=EABI64]" msgstr "" -#: elfxx-mips.c:16377 +#: elfxx-mips.c:16463 #, c-format msgid " [abi unknown]" msgstr "" -#: elfxx-mips.c:16379 +#: elfxx-mips.c:16465 #, c-format msgid " [abi=N32]" msgstr "" -#: elfxx-mips.c:16381 +#: elfxx-mips.c:16467 #, c-format msgid " [abi=64]" msgstr "" -#: elfxx-mips.c:16383 +#: elfxx-mips.c:16469 #, c-format msgid " [no abi set]" msgstr "" -#: elfxx-mips.c:16408 +#: elfxx-mips.c:16494 #, c-format msgid " [unknown ISA]" msgstr "" -#: elfxx-mips.c:16428 +#: elfxx-mips.c:16514 #, c-format msgid " [not 32bitmode]" msgstr "" -#: elfxx-riscv.c:1827 +#: elfxx-riscv.c:1950 #, c-format msgid "x ISA extension `%s' must be set with the versions" msgstr "" -#: elfxx-riscv.c:1833 +#: elfxx-riscv.c:1956 #, c-format msgid "cannot find default versions of the ISA extension `%s'" msgstr "" -#: elfxx-riscv.c:1939 +#: elfxx-riscv.c:2063 #, c-format msgid "%s: first ISA extension must be `e', `i' or `g'" msgstr "" -#: elfxx-riscv.c:1963 +#: elfxx-riscv.c:2087 #, c-format msgid "%s: unknown standard ISA extension or prefix class `%c'" msgstr "" -#: elfxx-riscv.c:1999 +#: elfxx-riscv.c:2123 #, c-format msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p" msgstr "" -#: elfxx-riscv.c:2023 +#: elfxx-riscv.c:2147 #, c-format msgid "%s: unknown prefixed ISA extension `%s'" msgstr "" -#: elfxx-riscv.c:2047 +#: elfxx-riscv.c:2171 #, c-format msgid "%s: prefixed ISA extension must separate with _" msgstr "" -#: elfxx-riscv.c:2087 +#: elfxx-riscv.c:2211 #, c-format msgid "rv%de does not support the `h' extension" msgstr "" -#: elfxx-riscv.c:2095 +#: elfxx-riscv.c:2219 #, c-format msgid "rv%d does not support the `q' extension" msgstr "" -#: elfxx-riscv.c:2102 -msgid "zcmp' is incompatible with `d/zcd' extension" +#: elfxx-riscv.c:2226 +msgid "zcmp' is incompatible with `d' and `c', or `zcd' extension" msgstr "" -#: elfxx-riscv.c:2109 +#: elfxx-riscv.c:2233 #, c-format msgid "rv%d does not support the `zcf' extension" msgstr "" -#: elfxx-riscv.c:2116 +#: elfxx-riscv.c:2240 msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension" msgstr "" -#: elfxx-riscv.c:2123 -msgid "`xtheadvector' is conflict with the `v' extension" +#: elfxx-riscv.c:2247 +msgid "`xtheadvector' is conflict with the `v/zve32x' extension" +msgstr "" + +#: elfxx-riscv.c:2256 +msgid "`zclsd' is conflict with the `c+f'/ `zcf' extension" +msgstr "" + +#: elfxx-riscv.c:2261 +#, c-format +msgid "rv%d does not support the `ssnpm' extension" +msgstr "" + +#: elfxx-riscv.c:2267 +#, c-format +msgid "rv%d does not support the `smnpm' extension" +msgstr "" + +#: elfxx-riscv.c:2273 +#, c-format +msgid "rv%d does not support the `smmpm' extension" msgstr "" -#: elfxx-riscv.c:2144 +#: elfxx-riscv.c:2279 +#, c-format +msgid "rv%d does not support the `sspm' extension" +msgstr "" + +#: elfxx-riscv.c:2285 +#, c-format +msgid "rv%d does not support the `supm' extension" +msgstr "" + +#: elfxx-riscv.c:2307 msgid "zvl*b extensions need to enable either `v' or `zve' extension" msgstr "" -#: elfxx-riscv.c:2206 +#: elfxx-riscv.c:2364 +msgid "Warning: should use \"_\" to contact Profiles with other extensions" +msgstr "" + +#: elfxx-riscv.c:2405 #, c-format msgid "%s: ISA string cannot contain uppercase letters" msgstr "" -#: elfxx-riscv.c:2234 +#: elfxx-riscv.c:2439 #, c-format -msgid "%s: ISA string must begin with rv32 or rv64" +msgid "%s: ISA string must begin with rv32, rv64 or Profiles" msgstr "" -#: elfxx-riscv.c:2417 +#: elfxx-riscv.c:2629 msgid "internal: " msgstr "" -#: elfxx-riscv.c:2471 +#: elfxx-riscv.c:2683 #, c-format msgid "%sinvalid ISA extension ends with <number>p in %s `%s'" msgstr "" -#: elfxx-riscv.c:2494 +#: elfxx-riscv.c:2706 #, c-format msgid "%sunknown ISA extension `%s' in %s `%s'" msgstr "" -#: elfxx-riscv.c:2506 +#: elfxx-riscv.c:2717 +#, c-format +msgid "%sdeprecated - extension `%s' in %s `%s'" +msgstr "" + +#: elfxx-riscv.c:2727 #, c-format -msgid "%scannot + or - base extension `%s' in %s `%s'" +msgid "%scannot + base extension `%s' in %s `%s'" msgstr "" -#: elfxx-riscv.c:2817 elfxx-riscv.c:3112 +#: elfxx-riscv.c:3059 elfxx-riscv.c:3343 msgid "internal: unreachable INSN_CLASS_*" msgstr "" -#: elfxx-riscv.c:2851 +#: elfxx-riscv.c:3093 msgid "zicfiss' and `zcmop" msgstr "" -#: elfxx-riscv.c:2865 +#: elfxx-riscv.c:3106 msgid "zihintntl' and `c', or `zihintntl' and `zca" msgstr "" -#: elfxx-riscv.c:2870 elfxx-riscv.c:2896 +#: elfxx-riscv.c:3111 elfxx-riscv.c:3137 msgid "c' or `zca" msgstr "" -#: elfxx-riscv.c:2878 +#: elfxx-riscv.c:3119 msgid "m' or `zmmul" msgstr "" -#: elfxx-riscv.c:2902 -msgid "f' and `c', or `f' and `zcf" +#: elfxx-riscv.c:3139 +msgid "f' and `c', or `zcf" msgstr "" -#: elfxx-riscv.c:2907 -msgid "c' or `zcf" +#: elfxx-riscv.c:3141 +msgid "d' and `c', or `zcd" msgstr "" -#: elfxx-riscv.c:2913 -msgid "d' and `c', or `d' and `zcd" -msgstr "" - -#: elfxx-riscv.c:2918 -msgid "c' or `zcd" -msgstr "" - -#: elfxx-riscv.c:2920 +#: elfxx-riscv.c:3143 msgid "f' or `zfinx" msgstr "" -#: elfxx-riscv.c:2922 +#: elfxx-riscv.c:3145 msgid "d' or `zdinx" msgstr "" -#: elfxx-riscv.c:2924 +#: elfxx-riscv.c:3147 msgid "q' or `zqinx" msgstr "" -#: elfxx-riscv.c:2926 +#: elfxx-riscv.c:3149 msgid "zfh' or `zhinx" msgstr "" -#: elfxx-riscv.c:2930 +#: elfxx-riscv.c:3153 msgid "zfhmin' or `zhinxmin" msgstr "" -#: elfxx-riscv.c:2941 +#: elfxx-riscv.c:3164 msgid "zfhmin' and `d', or `zhinxmin' and `zdinx" msgstr "" -#: elfxx-riscv.c:2952 +#: elfxx-riscv.c:3175 msgid "zfhmin' and `q', or `zhinxmin' and `zqinx" msgstr "" -#: elfxx-riscv.c:2960 +#: elfxx-riscv.c:3183 msgid "d' and `zfa" msgstr "" -#: elfxx-riscv.c:2968 +#: elfxx-riscv.c:3191 msgid "q' and `zfa" msgstr "" -#: elfxx-riscv.c:2976 +#: elfxx-riscv.c:3199 msgid "zfh' and `zfa" msgstr "" -#: elfxx-riscv.c:2986 +#: elfxx-riscv.c:3209 msgid "zfh' and `zfa', or `zvfh' and `zfa" msgstr "" -#: elfxx-riscv.c:2991 +#: elfxx-riscv.c:3214 msgid "zfh' or `zvfh" msgstr "" -#: elfxx-riscv.c:3007 +#: elfxx-riscv.c:3230 msgid "zbb' or `zbkb" msgstr "" -#: elfxx-riscv.c:3009 +#: elfxx-riscv.c:3232 msgid "zbc' or `zbkc" msgstr "" -#: elfxx-riscv.c:3017 +#: elfxx-riscv.c:3240 msgid "zknd' or `zkne" msgstr "" -#: elfxx-riscv.c:3023 +#: elfxx-riscv.c:3246 msgid "v' or `zve64x' or `zve32x" msgstr "" -#: elfxx-riscv.c:3025 +#: elfxx-riscv.c:3248 msgid "v' or `zve64d' or `zve64f' or `zve32f" msgstr "" -#: elfxx-riscv.c:3027 +#: elfxx-riscv.c:3250 msgid "zvbb" msgstr "" -#: elfxx-riscv.c:3029 +#: elfxx-riscv.c:3252 msgid "zvbc" msgstr "" -#: elfxx-riscv.c:3035 +#: elfxx-riscv.c:3258 msgid "zvkb" msgstr "" -#: elfxx-riscv.c:3037 +#: elfxx-riscv.c:3260 msgid "zvkg" msgstr "" -#: elfxx-riscv.c:3039 +#: elfxx-riscv.c:3262 msgid "zvkned" msgstr "" -#: elfxx-riscv.c:3041 +#: elfxx-riscv.c:3264 msgid "zvknha' or `zvknhb" msgstr "" -#: elfxx-riscv.c:3043 +#: elfxx-riscv.c:3266 msgid "zvksed" msgstr "" -#: elfxx-riscv.c:3045 +#: elfxx-riscv.c:3268 msgid "zvksh" msgstr "" -#: elfxx-riscv.c:3049 +#: elfxx-riscv.c:3272 msgid "zcb' and `zba" msgstr "" -#: elfxx-riscv.c:3051 +#: elfxx-riscv.c:3274 msgid "zcb' and `zbb" msgstr "" -#: elfxx-riscv.c:3053 +#: elfxx-riscv.c:3276 msgid "zcb' and `zmmul', or `zcb' and `m" msgstr "" -#: elfxx-riscv.c:3061 +#: elfxx-riscv.c:3284 msgid "smctr' or `ssctr" msgstr "" -#: elfxx-riscv.c:3065 +#: elfxx-riscv.c:3294 msgid "h" msgstr "" -#: elfxx-sparc.c:3017 -#: elfnn-aarch64.c:5750 +#: elfxx-riscv.c:3441 +msgid "%F%P: failed to create GNU property section\n" +msgstr "" + +#: elfxx-riscv.c:3485 +#, c-format +msgid "error: %pB: <corrupt RISC-V used size: 0x%x>" +msgstr "" + +#: elfxx-sparc.c:3028 +#: elfnn-aarch64.c:5768 #, c-format msgid "" "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" msgstr "" -#: elfxx-tilegx.c:4126 +#: elfxx-tilegx.c:4128 #, c-format msgid "%pB: cannot link together %s and %s objects" msgstr "" -#: elfxx-x86.c:534 elfxx-x86.c:3597 +#: elfxx-x86.c:534 elfxx-x86.c:3586 #, c-format msgid "" -"%F%P: %pB: copy relocation against non-copyable protected symbol `%s' in %" -"pB\n" +"%P: %pB: copy relocation against non-copyable protected symbol `%s' in %pB\n" msgstr "" -#: elfxx-x86.c:1044 +#: elfxx-x86.c:1027 #, c-format -msgid "%F%P: %pB: failed to allocate relative reloc record\n" +msgid "%P: %pB: failed to allocate relative reloc record\n" msgstr "" -#: elfxx-x86.c:1403 +#: elfxx-x86.c:1388 #, c-format -msgid "%F%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n" +msgid "%P: %pB: failed to allocate 64-bit DT_RELR bitmap\n" msgstr "" -#: elfxx-x86.c:1439 +#: elfxx-x86.c:1424 #, c-format -msgid "%F%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n" +msgid "%P: %pB: failed to allocate 32-bit DT_RELR bitmap\n" msgstr "" -#: elfxx-x86.c:1578 +#: elfxx-x86.c:1563 #, c-format -msgid "%F%P: %pB: failed to allocate memory for section `%pA'\n" +msgid "%P: %pB: failed to allocate memory for section `%pA'\n" msgstr "" -#: elfxx-x86.c:1765 +#: elfxx-x86.c:1750 #, c-format msgid "" -"%F%P: %pB: size of compact relative reloc section is changed: new (%lu) != " -"old (%lu)\n" +"%P: %pB: size of compact relative reloc section is changed: new (%lu) != old " +"(%lu)\n" msgstr "" -#: elfxx-x86.c:1787 +#: elfxx-x86.c:1772 #, c-format -msgid "%F%P: %pB: failed to allocate compact relative reloc section\n" +msgid "%P: %pB: failed to allocate compact relative reloc section\n" msgstr "" -#: elfxx-x86.c:2256 +#: elfxx-x86.c:2243 #, c-format msgid "" -"%F%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is " +"%P: %pB: relocation %s against absolute symbol `%s' in section `%pA' is " "disallowed\n" msgstr "" -#: elfxx-x86.c:2338 +#: elfxx-x86.c:2325 msgid "%P: %pB: warning: relocation in read-only section `%pA'\n" msgstr "" -#: elfxx-x86.c:3265 +#: elfxx-x86.c:3254 msgid "" "%pB: %s (offset: 0x%v, info: 0x%v, addend: 0x%v) against '%s' for section '%" "pA' in %pB\n" msgstr "" -#: elfxx-x86.c:3271 +#: elfxx-x86.c:3260 msgid "" "%pB: %s (offset: 0x%v, info: 0x%v) against '%s' for section '%pA' in %pB\n" msgstr "" -#: elfxx-x86.c:3307 +#: elfxx-x86.c:3296 #, c-format msgid "" "%pB: TLS transition from %s to %s against `%s' at 0x%v in section `%pA' " "failed\n" msgstr "" -#: elfxx-x86.c:3316 +#: elfxx-x86.c:3305 #, c-format -msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD only\n" +msgid "" +"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n" msgstr "" -#: elfxx-x86.c:3324 +#: elfxx-x86.c:3313 #, c-format msgid "" -"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOV only\n" +"%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD or MOVRS only\n" msgstr "" -#: elfxx-x86.c:3332 +#: elfxx-x86.c:3321 #, c-format msgid "" "%pB(%pA+0x%v): relocation %s against `%s' must be used in ADD, SUB or MOV " "only\n" msgstr "" -#: elfxx-x86.c:3340 +#: elfxx-x86.c:3329 #, c-format msgid "" "%pB(%pA+0x%v): relocation %s against `%s' must be used in indirect CALL with " "%s register only\n" msgstr "" -#: elfxx-x86.c:3349 +#: elfxx-x86.c:3338 #, c-format msgid "%pB(%pA+0x%v): relocation %s against `%s' must be used in LEA only\n" msgstr "" -#: elfxx-x86.c:3976 +#: elfxx-x86.c:3965 #, c-format msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>" msgstr "" -#: elfxx-x86.c:4189 +#: elfxx-x86.c:4178 #, c-format msgid "%pB: x86 ISA needed: " msgstr "" -#: elfxx-x86.c:4191 +#: elfxx-x86.c:4180 #, c-format msgid "%pB: x86 ISA used: " msgstr "" -#: elfxx-x86.c:4213 +#: elfxx-x86.c:4202 #, c-format msgid "<unknown: %x>" msgstr "" -#: elfxx-x86.c:4368 +#: elfxx-x86.c:4338 +msgid "%P: failed to create %sn" +msgstr "" + +#: elfxx-x86.c:4352 msgid "%P: %pB: warning: missing %s\n" msgstr "" -#: elfxx-x86.c:4369 +#: elfxx-x86.c:4353 msgid "%X%P: %pB: error: missing %s\n" msgstr "" -#: elfxx-x86.c:4475 +#: elfxx-x86.c:4459 msgid "IBT and SHSTK properties" msgstr "" -#: elfxx-x86.c:4477 +#: elfxx-x86.c:4461 msgid "IBT property" msgstr "" -#: elfxx-x86.c:4479 +#: elfxx-x86.c:4463 msgid "SHSTK property" msgstr "" -#: elfxx-x86.c:4484 +#: elfxx-x86.c:4468 msgid "LAM_U48 property" msgstr "" -#: elfxx-x86.c:4489 +#: elfxx-x86.c:4473 msgid "LAM_U57 property" msgstr "" -#: elfxx-x86.c:4667 -msgid "%F%P: failed to create VxWorks dynamic sections\n" +#: elfxx-x86.c:4651 +msgid "%P: failed to create VxWorks dynamic sections\n" msgstr "" -#: elfxx-x86.c:4676 -msgid "%F%P: failed to create GOT sections\n" +#: elfxx-x86.c:4660 +msgid "%P: failed to create GOT sections\n" msgstr "" -#: elfxx-x86.c:4694 -msgid "%F%P: failed to create ifunc sections\n" +#: elfxx-x86.c:4678 +msgid "%P: failed to create ifunc sections\n" msgstr "" -#: elfxx-x86.c:4731 -msgid "%F%P: failed to create GOT PLT section\n" +#: elfxx-x86.c:4717 +msgid "%P: failed to create GOT PLT section\n" msgstr "" -#: elfxx-x86.c:4750 -msgid "%F%P: failed to create IBT-enabled PLT section\n" +#: elfxx-x86.c:4734 +msgid "%P: failed to create IBT-enabled PLT section\n" msgstr "" -#: elfxx-x86.c:4770 -msgid "%F%P: failed to create PLT .eh_frame section\n" +#: elfxx-x86.c:4752 +msgid "%P: failed to create PLT .eh_frame section\n" msgstr "" -#: elfxx-x86.c:4783 -msgid "%F%P: failed to create GOT PLT .eh_frame section\n" +#: elfxx-x86.c:4763 +msgid "%P: failed to create GOT PLT .eh_frame section\n" msgstr "" -#: elfxx-x86.c:4797 -msgid "%F%P: failed to create the second PLT .eh_frame section\n" +#: elfxx-x86.c:4775 +msgid "%P: failed to create the second PLT .eh_frame section\n" msgstr "" -#: elfxx-x86.c:4817 -msgid "%F%P: failed to create PLT .sframe section\n" +#: elfxx-x86.c:4790 +msgid "%P: failed to create PLT .sframe section\n" msgstr "" -#: elfxx-x86.c:4832 -msgid "%F%P: failed to create second PLT .sframe section\n" +#: elfxx-x86.c:4806 +msgid "%P: failed to create second PLT .sframe section\n" msgstr "" -#: elfxx-x86.c:4844 -msgid "%F%P: failed to create PLT GOT .sframe section\n" +#: elfxx-x86.c:4819 +msgid "%P: failed to create PLT GOT .sframe section\n" msgstr "" -#: elfxx-x86.c:4883 +#: elfxx-x86.c:4859 msgid "%X%P: attempted static link of dynamic object `%pB'\n" msgstr "" @@ -6517,48 +6609,48 @@ msgstr "" msgid "%pB: mapped section %pA has non-NULL buffer" msgstr "" -#: linker.c:1731 +#: linker.c:1749 #, c-format msgid "%pB: indirect symbol `%s' to `%s' is a loop" msgstr "" -#: linker.c:1811 +#: linker.c:1829 msgid "" "%P: %pB: note: the message above does not take linker garbage collection " "into account\n" msgstr "" -#: linker.c:2617 +#: linker.c:2663 #, c-format msgid "attempt to do relocatable link with %s input and %s output" msgstr "" -#: linker.c:2896 +#: linker.c:2942 #, c-format msgid "%pB: ignoring duplicate section `%pA'\n" msgstr "" -#: linker.c:2906 linker.c:2916 +#: linker.c:2952 linker.c:2962 #, c-format msgid "%pB: duplicate section `%pA' has different size\n" msgstr "" -#: linker.c:2930 linker.c:2938 +#: linker.c:2976 linker.c:2984 #, c-format msgid "%pB: could not read contents of section `%pA'\n" msgstr "" -#: linker.c:2947 +#: linker.c:2993 #, c-format msgid "%pB: duplicate section `%pA' has different contents\n" msgstr "" -#: linker.c:3466 +#: linker.c:3517 #, c-format msgid "%pB: compiled for a big endian system and target is little endian" msgstr "" -#: linker.c:3469 +#: linker.c:3520 #, c-format msgid "%pB: compiled for a little endian system and target is big endian" msgstr "" @@ -6597,151 +6689,151 @@ msgstr "" msgid "malformed mach-o ARM reloc: unknown reloc type: %d" msgstr "" -#: mach-o.c:640 +#: mach-o.c:642 #, c-format msgid "<unknown mask flags>" msgstr "" -#: mach-o.c:695 +#: mach-o.c:697 msgid " (<unknown>)" msgstr "" -#: mach-o.c:707 +#: mach-o.c:709 #, c-format msgid " MACH-O header:\n" msgstr "" -#: mach-o.c:708 +#: mach-o.c:710 #, c-format msgid " magic: %#lx\n" msgstr "" -#: mach-o.c:709 +#: mach-o.c:711 #, c-format msgid " cputype: %#lx (%s)\n" msgstr "" -#: mach-o.c:711 +#: mach-o.c:713 #, c-format msgid " cpusubtype: %#lx%s\n" msgstr "" -#: mach-o.c:713 +#: mach-o.c:715 #, c-format msgid " filetype: %#lx\n" msgstr "" -#: mach-o.c:714 +#: mach-o.c:716 #, c-format msgid " ncmds: %#lx\n" msgstr "" -#: mach-o.c:715 +#: mach-o.c:717 #, c-format msgid " sizeocmds: %#lx\n" msgstr "" -#: mach-o.c:716 +#: mach-o.c:718 #, c-format msgid " flags: %#lx\n" msgstr "" -#: mach-o.c:717 +#: mach-o.c:719 #, c-format msgid " version: %x\n" msgstr "" #. Urg - what has happened ? -#: mach-o.c:752 +#: mach-o.c:754 #, c-format msgid "incompatible cputypes in mach-o files: %ld vs %ld" msgstr "" -#: mach-o.c:921 +#: mach-o.c:923 msgid "bfd_mach_o_canonicalize_symtab: unable to load symbols" msgstr "" -#: mach-o.c:1513 +#: mach-o.c:1515 msgid "" "malformed mach-o reloc: section index is greater than the number of sections" msgstr "" -#: mach-o.c:2155 +#: mach-o.c:2157 msgid "" "sorry: modtab, toc and extrefsyms are not yet implemented for dysymtab " "commands." msgstr "" -#: mach-o.c:2603 +#: mach-o.c:2605 #, c-format msgid "mach-o: there are too many sections (%u) maximum is 255,\n" msgstr "" -#: mach-o.c:2695 +#: mach-o.c:2697 #, c-format msgid "unable to allocate data for load command %#x" msgstr "" -#: mach-o.c:2800 +#: mach-o.c:2802 #, c-format msgid "unable to write unknown load command %#x" msgstr "" -#: mach-o.c:2984 +#: mach-o.c:2986 #, c-format msgid "section address (%#<PRIx64>) below start of segment (%#<PRIx64>)" msgstr "" -#: mach-o.c:3126 +#: mach-o.c:3128 #, c-format msgid "unable to layout unknown load command %#x" msgstr "" -#: mach-o.c:3652 +#: mach-o.c:3654 #, c-format msgid "bfd_mach_o_read_section_32: overlarge alignment value: %#lx" msgstr "" -#: mach-o.c:3695 +#: mach-o.c:3697 #, c-format msgid "bfd_mach_o_read_section_64: overlarge alignment value: %#lx" msgstr "" -#: mach-o.c:3746 +#: mach-o.c:3748 #, c-format msgid "bfd_mach_o_read_symtab_symbol: unable to read %d bytes at %u" msgstr "" -#: mach-o.c:3765 +#: mach-o.c:3767 #, c-format msgid "bfd_mach_o_read_symtab_symbol: name out of range (%lu >= %u)" msgstr "" -#: mach-o.c:3848 +#: mach-o.c:3850 #, c-format msgid "" "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid section %d " "(max %lu): setting to undefined" msgstr "" -#: mach-o.c:3867 +#: mach-o.c:3869 #, c-format msgid "" "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field 0x%" "x: setting to undefined" msgstr "" -#: mach-o.c:5066 +#: mach-o.c:5068 #, c-format msgid "%pB: unknown load command %#x" msgstr "" -#: mach-o.c:5264 +#: mach-o.c:5266 #, c-format msgid "bfd_mach_o_scan: unknown architecture 0x%lx/0x%lx" msgstr "" -#: mach-o.c:5389 +#: mach-o.c:5391 #, c-format msgid "unknown header byte-order value %#x" msgstr "" @@ -6914,57 +7006,57 @@ msgstr "" msgid "bfd_pef_scan: unknown architecture 0x%lx" msgstr "" -#: pei-x86_64.c:174 pei-x86_64.c:228 pei-x86_64.c:238 pei-x86_64.c:263 -#: pei-x86_64.c:275 pei-x86_64.c:289 pei-x86_64.c:307 pei-x86_64.c:319 -#: pei-x86_64.c:331 +#: pei-x86_64.c:176 pei-x86_64.c:230 pei-x86_64.c:240 pei-x86_64.c:265 +#: pei-x86_64.c:277 pei-x86_64.c:291 pei-x86_64.c:309 pei-x86_64.c:321 +#: pei-x86_64.c:333 #, c-format msgid "warning: corrupt unwind data\n" msgstr "" #. PR 17512: file: 2245-7442-0.004. -#: pei-x86_64.c:352 +#: pei-x86_64.c:354 #, c-format msgid "Unknown: %x" msgstr "" -#: pei-x86_64.c:403 pei-x86_64.c:413 pei-x86_64.c:422 +#: pei-x86_64.c:405 pei-x86_64.c:415 pei-x86_64.c:424 #, c-format msgid "warning: xdata section corrupt\n" msgstr "" -#: pei-x86_64.c:477 +#: pei-x86_64.c:479 #, c-format msgid "Too many unwind codes (%ld)\n" msgstr "" -#: pei-x86_64.c:563 +#: pei-x86_64.c:565 #, c-format msgid "Warning: %s section size (%ld) is not a multiple of %d\n" msgstr "" -#: pei-x86_64.c:570 +#: pei-x86_64.c:572 #, c-format msgid "Warning: %s section size is zero\n" msgstr "" -#: pei-x86_64.c:585 +#: pei-x86_64.c:587 #, c-format msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n" msgstr "" -#: pei-x86_64.c:594 +#: pei-x86_64.c:596 #, c-format msgid "" "\n" "The Function Table (interpreted %s section contents)\n" msgstr "" -#: pei-x86_64.c:597 +#: pei-x86_64.c:599 #, c-format msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" msgstr "" -#: pei-x86_64.c:722 +#: pei-x86_64.c:724 #, c-format msgid "" "\n" @@ -6986,74 +7078,74 @@ msgstr "" msgid "%pB: unrecognized import name type; %x" msgstr "" -#: peicode.h:1298 +#: peicode.h:1299 #, c-format msgid "%pB: unrecognised machine type (0x%x) in Import Library Format archive" msgstr "" -#: peicode.h:1311 +#: peicode.h:1312 #, c-format msgid "" "%pB: recognised but unhandled machine type (0x%x) in Import Library Format " "archive" msgstr "" -#: peicode.h:1329 +#: peicode.h:1330 #, c-format msgid "%pB: size field is zero in Import Library Format header" msgstr "" -#: peicode.h:1355 +#: peicode.h:1356 #, c-format msgid "%pB: string not null terminated in ILF object file" msgstr "" -#: peicode.h:1426 +#: peicode.h:1427 #, c-format msgid "%pB: error: debug data ends beyond end of debug directory" msgstr "" -#: peicode.h:1598 +#: peicode.h:1599 #, c-format msgid "%pB: adjusting invalid SectionAlignment" msgstr "" -#: peicode.h:1608 +#: peicode.h:1609 #, c-format msgid "%pB: adjusting invalid FileAlignment" msgstr "" -#: peicode.h:1616 +#: peicode.h:1617 #, c-format msgid "%pB: invalid NumberOfRvaAndSizes" msgstr "" -#: plugin.c:197 +#: plugin.c:195 #, c-format msgid "%s: failed to open to extract object only section: %s" msgstr "" -#: plugin.c:214 +#: plugin.c:212 #, c-format msgid "%pB: invalid file to extract object only section: %s" msgstr "" -#: plugin.c:227 +#: plugin.c:225 #, c-format msgid "%pB: failed to extract object only section: %s" msgstr "" -#: plugin.c:247 +#: plugin.c:245 #, c-format msgid "%pB: failed to open object only section: %s" msgstr "" -#: plugin.c:257 +#: plugin.c:255 #, c-format msgid "%pB: failed to get symbol table in object only section: %s" msgstr "" -#: plugin.c:413 +#: plugin.c:411 msgid "" "plugin framework: out of file descriptors. Try using fewer objects/archives\n" msgstr "" @@ -7107,17 +7199,17 @@ msgstr "" msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "" -#: reloc.c:8417 +#: reloc.c:8423 msgid "INPUT_SECTION_FLAGS are not supported" msgstr "" -#: reloc.c:8683 +#: reloc.c:8689 #, c-format msgid "%pB: unrecognized relocation type %#x in section `%pA'" msgstr "" #. PR 21803: Suggest the most likely cause of this error. -#: reloc.c:8687 +#: reloc.c:8693 #, c-format msgid "is this version of the linker - %s - out of date ?" msgstr "" @@ -7143,14 +7235,14 @@ msgstr "" msgid "%pB[%pA]: no output section for space %pA" msgstr "" -#: som.c:5449 +#: som.c:5450 #, c-format msgid "" "\n" "Exec Auxiliary Header\n" msgstr "" -#: som.c:5758 +#: som.c:5759 msgid "som_sizeof_headers unimplemented" msgstr "" @@ -7174,7 +7266,7 @@ msgstr "" msgid "%pB(%pA+%#lx): stabs entry has invalid string index" msgstr "" -#: syms.c:1120 +#: syms.c:1121 msgid "unsupported .stab relocation" msgstr "" @@ -9179,11 +9271,11 @@ msgstr "" #. FIXME: we do not yet support relocatable link. It is not obvious #. how to do it for debug infos. -#: vms-alpha.c:9570 +#: vms-alpha.c:9571 msgid "%P: relocatable link is not supported\n" msgstr "" -#: vms-alpha.c:9641 +#: vms-alpha.c:9642 #, c-format msgid "%P: multiple entry points: in modules %pB and %pB\n" msgstr "" @@ -9201,122 +9293,122 @@ msgstr "" msgid "_bfd_vms_output_counted called with too many bytes" msgstr "" -#: xcofflink.c:462 +#: xcofflink.c:505 #, c-format msgid "%pB: warning: illegal symbol index %lu in relocs" msgstr "" -#: xcofflink.c:881 +#: xcofflink.c:924 #, c-format msgid "%pB: XCOFF shared object when not producing XCOFF output" msgstr "" -#: xcofflink.c:902 +#: xcofflink.c:945 #, c-format msgid "%pB: dynamic object with no .loader section" msgstr "" -#: xcofflink.c:1484 +#: xcofflink.c:1527 #, c-format msgid "%pB: `%s' has line numbers but no enclosing section" msgstr "" -#: xcofflink.c:1540 +#: xcofflink.c:1583 #, c-format msgid "%pB: class %d symbol `%s' has no aux entries" msgstr "" -#: xcofflink.c:1563 +#: xcofflink.c:1606 #, c-format msgid "%pB: symbol `%s' has unrecognized csect type %d" msgstr "" -#: xcofflink.c:1576 +#: xcofflink.c:1619 #, c-format msgid "%pB: bad XTY_ER symbol `%s': class %d scnum %d scnlen %<PRId64>" msgstr "" -#: xcofflink.c:1607 +#: xcofflink.c:1650 #, c-format msgid "%pB: XMC_TC0 symbol `%s' is class %d scnlen %<PRIu64>" msgstr "" -#: xcofflink.c:1742 +#: xcofflink.c:1785 #, c-format msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself" msgstr "" -#: xcofflink.c:1776 +#: xcofflink.c:1819 #, c-format msgid "%pB: csect `%s' not in enclosing section" msgstr "" -#: xcofflink.c:1885 +#: xcofflink.c:1928 #, c-format msgid "%pB: misplaced XTY_LD `%s'" msgstr "" -#: xcofflink.c:2228 +#: xcofflink.c:2271 #, c-format msgid "%pB: reloc %s:%<PRId64> not in csect" msgstr "" -#: xcofflink.c:3337 +#: xcofflink.c:3380 #, c-format msgid "%pB: cannot export internal symbol `%s`." msgstr "" -#: xcofflink.c:3385 +#: xcofflink.c:3428 #, c-format msgid "%s: no such symbol" msgstr "" -#: xcofflink.c:3494 +#: xcofflink.c:3537 #, c-format msgid "warning: attempt to export undefined symbol `%s'" msgstr "" -#: xcofflink.c:3842 +#: xcofflink.c:3885 msgid "error: undefined symbol __rtinit" msgstr "" -#: xcofflink.c:4855 +#: xcofflink.c:4902 #, c-format msgid "" "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> " "targeting'%s'" msgstr "" -#: xcofflink.c:4884 +#: xcofflink.c:4931 #, c-format msgid "%pB: Cannot create stub entry '%s'" msgstr "" -#: xcofflink.c:5004 +#: xcofflink.c:5051 msgid "TOC overflow during stub generation; try -mminimal-toc when compiling" msgstr "" -#: xcofflink.c:5072 +#: xcofflink.c:5119 #, c-format msgid "%pB: loader reloc in unrecognized section `%s'" msgstr "" -#: xcofflink.c:5084 +#: xcofflink.c:5131 #, c-format msgid "%pB: `%s' in loader reloc but not loader sym" msgstr "" -#: xcofflink.c:5101 +#: xcofflink.c:5148 #, c-format msgid "%pB: loader reloc in read-only section %pA" msgstr "" -#: xcofflink.c:6180 +#: xcofflink.c:6227 #, c-format msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling" msgstr "" -#: xcofflink.c:7296 +#: xcofflink.c:7343 #, c-format msgid "Unable to link input file: %s" msgstr "" @@ -9341,23 +9433,23 @@ msgid "%s is defined but plugin support is disabled" msgstr "" #. Not fatal, this callback cannot fail. -#: elfnn-aarch64.c:2878 -#: elfnn-riscv.c:5739 +#: elfnn-aarch64.c:2889 +#: elfnn-riscv.c:5940 #, c-format msgid "unknown attribute for symbol `%s': 0x%02x" msgstr "" -#: elfnn-aarch64.c:5468 +#: elfnn-aarch64.c:5486 #, c-format msgid "%pB: error: erratum 835769 stub out of range (input file too large)" msgstr "" -#: elfnn-aarch64.c:5560 +#: elfnn-aarch64.c:5578 #, c-format msgid "%pB: error: erratum 843419 stub out of range (input file too large)" msgstr "" -#: elfnn-aarch64.c:5573 +#: elfnn-aarch64.c:5591 #, c-format msgid "" "%pB: error: erratum 843419 immediate 0x%<PRIx64> out of range for ADR (input " @@ -9365,257 +9457,264 @@ msgid "" "fix-cortex-a53-843419=full instead" msgstr "" -#: elfnn-aarch64.c:6116 +#: elfnn-aarch64.c:6134 #, c-format msgid "" "%pB: relocation %s against symbol `%s' which may bind externally can not be " "used when making a shared object; recompile with -fPIC" msgstr "" -#: elfnn-aarch64.c:6136 +#: elfnn-aarch64.c:6154 #, c-format msgid "%pB: conditional branch to undefined symbol `%s' not allowed" msgstr "" -#: elfnn-aarch64.c:6224 -#: elfnn-kvx.c:2381 +#: elfnn-aarch64.c:6242 +#: elfnn-kvx.c:2382 #, c-format msgid "" "%pB: local symbol descriptor table be NULL when applying relocation %s " "against local symbol" msgstr "" -#: elfnn-aarch64.c:6338 -#: elfnn-aarch64.c:6375 +#: elfnn-aarch64.c:6356 +#: elfnn-aarch64.c:6393 #, c-format msgid "%pB: TLS relocation %s against undefined symbol `%s'" msgstr "" -#: elfnn-aarch64.c:7366 +#: elfnn-aarch64.c:7384 msgid "too many GOT entries for -fpic, please recompile with -fPIC" msgstr "" -#: elfnn-aarch64.c:7394 +#: elfnn-aarch64.c:7412 msgid "" "one possible cause of this error is that the symbol is being referenced in " "the indicated code as if it had a larger alignment than was declared where " "it was defined" msgstr "" -#: elfnn-aarch64.c:7961 +#: elfnn-aarch64.c:7979 #, c-format msgid "" "%pB: relocation %s against `%s' can not be used when making a shared object" msgstr "" -#: elfnn-aarch64.c:8922 +#: elfnn-aarch64.c:8940 #, c-format -msgid "%F%P: %pB: copy relocation against non-copyable protected symbol `%s'\n" +msgid "%P: %pB: copy relocation against non-copyable protected symbol `%s'\n" msgstr "" #: elfnn-kvx.c:929 msgid "" -"%F%P: Could not assign '%pA' to an output section. Retry without --enable-" -"non-contiguous-regions.\n" +"%P: Could not assign '%pA' to an output section. Retry without --enable-non-" +"contiguous-regions.\n" msgstr "" -#: elfnn-kvx.c:2126 +#: elfnn-kvx.c:2127 #, c-format msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'" msgstr "" -#: elfnn-kvx.c:2850 +#: elfnn-kvx.c:2851 #, c-format msgid "%s: Bad ELF id: `%d'" msgstr "" -#: elfnn-kvx.c:2905 +#: elfnn-kvx.c:2906 #, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" msgstr "" -#: elfnn-kvx.c:2908 +#: elfnn-kvx.c:2909 #, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" msgstr "" -#: elfnn-kvx.c:2910 +#: elfnn-kvx.c:2911 #, c-format msgid "%s: object size does not match that of target %s" msgstr "" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. -#: elfnn-kvx.c:2998 +#: elfnn-kvx.c:2999 #, c-format msgid "Private flags = 0x%lx : " msgstr "" -#: elfnn-kvx.c:3002 +#: elfnn-kvx.c:3003 #, c-format msgid "Coolidge (kv3) V1 64 bits" msgstr "" -#: elfnn-kvx.c:3004 +#: elfnn-kvx.c:3005 #, c-format msgid "Coolidge (kv3) V2 64 bits" msgstr "" -#: elfnn-kvx.c:3006 +#: elfnn-kvx.c:3007 #, c-format msgid "Coolidge (kv4) V1 64 bits" msgstr "" -#: elfnn-kvx.c:3011 +#: elfnn-kvx.c:3012 #, c-format msgid "Coolidge (kv3) V1 32 bits" msgstr "" -#: elfnn-kvx.c:3013 +#: elfnn-kvx.c:3014 #, c-format msgid "Coolidge (kv3) V2 32 bits" msgstr "" -#: elfnn-kvx.c:3015 +#: elfnn-kvx.c:3016 #, c-format msgid "Coolidge (kv4) V1 32 bits" msgstr "" -#: elfnn-kvx.c:3847 +#: elfnn-kvx.c:3848 #, c-format msgid "relocation against `%s' has faulty GOT type " msgstr "" -#: elfnn-loongarch.c:294 -#: elfnn-loongarch.c:346 +#: elfnn-loongarch.c:303 +#: elfnn-loongarch.c:355 #, c-format msgid "%#<PRIx64> invaild imm" msgstr "" -#: elfnn-loongarch.c:528 -#: elfnn-riscv.c:4182 +#: elfnn-loongarch.c:537 +#: elfnn-riscv.c:4383 #, c-format msgid "" "%pB: ABI is incompatible with that of the selected emulation:\n" " target emulation `%s' does not match `%s'" msgstr "" -#: elfnn-loongarch.c:583 +#: elfnn-loongarch.c:592 #, c-format msgid "%pB: can't link different ABI object." msgstr "" -#: elfnn-loongarch.c:726 +#: elfnn-loongarch.c:735 msgid "Internal error: unreachable." msgstr "" -#: elfnn-loongarch.c:906 +#: elfnn-loongarch.c:915 #, c-format msgid "" "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s; " "recompile with %s%s" msgstr "" -#: elfnn-loongarch.c:910 +#: elfnn-loongarch.c:919 msgid " and check the symbol visibility" msgstr "" -#: elfnn-loongarch.c:1036 +#: elfnn-loongarch.c:1045 #, c-format msgid "" "%pB: stack based reloc type (%u) is not supported with -z pack-relative-" "relocs" msgstr "" -#: elfnn-loongarch.c:1231 +#: elfnn-loongarch.c:1240 #, c-format msgid "" "%pB: relocation R_LARCH_32 against non-absolute symbol `%s' cannot be used " "in ELFCLASS64 when making a shared object or PIE" msgstr "" -#: elfnn-loongarch.c:1296 +#: elfnn-loongarch.c:1305 #, c-format msgid "" "%pB: R_LARCH_ALIGN with offset %<PRId64> not aligned to instruction boundary" msgstr "" -#: elfnn-loongarch.c:4174 +#: elfnn-loongarch.c:4196 msgid "" "cannot resolve R_LARCH_PCREL20_S2 against undefined weak symbol with addend " "out of [-2048, 2048)" msgstr "" -#: elfnn-loongarch.c:4684 +#: elfnn-loongarch.c:4706 msgid "recompile with 'gcc -mno-relax' or 'as -mno-relax' or 'ld --no-relax'" msgstr "" -#: elfnn-loongarch.c:5301 -#: elfnn-riscv.c:4967 +#: elfnn-loongarch.c:5584 +#: elfnn-riscv.c:5168 #, c-format msgid "" "%pB(%pA+%#<PRIx64>): %<PRId64> bytes required for alignment to %<PRId64>-" "byte boundary, but only %<PRId64> present" msgstr "" -#: elfnn-riscv.c:329 -#: elfnn-riscv.c:364 +#: elfnn-riscv.c:385 +#: elfnn-riscv.c:436 +#: elfnn-riscv.c:484 +#: elfnn-riscv.c:520 #, c-format msgid "%pB: warning: RVE PLT generation not supported" msgstr "" -#: elfnn-riscv.c:927 +#: elfnn-riscv.c:675 +#, c-format +msgid "%pB: error: unsupported PLT type: %u" +msgstr "" + +#: elfnn-riscv.c:1120 #, c-format msgid "" "%pB: relocation %s against absolute symbol `%s' can not be used when making " "a shared object" msgstr "" -#: elfnn-riscv.c:969 +#: elfnn-riscv.c:1162 #, c-format msgid "" "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV32 " "when making a shared object" msgstr "" -#: elfnn-riscv.c:1898 +#: elfnn-riscv.c:2095 #, c-format msgid "" "final size of uleb128 value at offset 0x%lx in %pA from %pB exceeds " "available space" msgstr "" -#: elfnn-riscv.c:2140 +#: elfnn-riscv.c:2337 #, c-format msgid "%pcrel_lo missing matching %pcrel_hi" msgstr "" -#: elfnn-riscv.c:2143 +#: elfnn-riscv.c:2340 #, c-format msgid "%pcrel_lo with addend isn't allowed for R_RISCV_GOT_HI20" msgstr "" #. Check the overflow when adding reloc addend. -#: elfnn-riscv.c:2148 +#: elfnn-riscv.c:2345 #, c-format msgid "" "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64> " "without any addend, but may be 0x%<PRIx64> after adding the %%pcrel_lo addend" msgstr "" -#: elfnn-riscv.c:2156 +#: elfnn-riscv.c:2353 #, c-format msgid "%pcrel_lo overflow with an addend" msgstr "" -#: elfnn-riscv.c:2639 +#: elfnn-riscv.c:2843 #, c-format msgid "" "%pB: warning: R_RISCV_SUB_ULEB128 with non-zero addend, please rebuild by " "binutils 2.42 or up" msgstr "" -#: elfnn-riscv.c:2719 +#: elfnn-riscv.c:2923 msgid "The addend isn't allowed for R_RISCV_GOT_HI20" msgstr "" @@ -9633,99 +9732,99 @@ msgstr "" #. #. Perhaps we also need the similar checks for the #. R_RISCV_BRANCH and R_RISCV_RVC_BRANCH relocations. -#: elfnn-riscv.c:2820 +#: elfnn-riscv.c:3022 #, c-format msgid "" "%%X%%P: relocation %s against `%s' which may bind externally can not be used " "when making a shared object; recompile with -fPIC\n" msgstr "" -#: elfnn-riscv.c:2902 +#: elfnn-riscv.c:3103 #, c-format msgid "%pcrel_lo section symbol with an addend" msgstr "" -#: elfnn-riscv.c:2923 +#: elfnn-riscv.c:3124 #, c-format msgid "%tlsdesc_lo with addend" msgstr "" -#: elfnn-riscv.c:3156 +#: elfnn-riscv.c:3357 #, c-format msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n" msgstr "" -#: elfnn-riscv.c:3191 +#: elfnn-riscv.c:3392 msgid "%X%P: internal error: out of range error\n" msgstr "" -#: elfnn-riscv.c:3196 +#: elfnn-riscv.c:3397 msgid "%X%P: internal error: unsupported relocation error\n" msgstr "" -#: elfnn-riscv.c:3202 +#: elfnn-riscv.c:3403 msgid "dangerous relocation error" msgstr "" -#: elfnn-riscv.c:3208 +#: elfnn-riscv.c:3409 msgid "%X%P: internal error: unknown error\n" msgstr "" -#: elfnn-riscv.c:3785 +#: elfnn-riscv.c:3982 #, c-format msgid "" "error: %pB: corrupted ISA string '%s'. First letter should be 'i' or 'e' " "but got '%s'" msgstr "" -#: elfnn-riscv.c:3828 +#: elfnn-riscv.c:4025 #, c-format msgid "error: %pB: mis-matched ISA string to merge '%s' and '%s'" msgstr "" -#: elfnn-riscv.c:3965 +#: elfnn-riscv.c:4162 #, c-format msgid "error: %pB: ISA string of input (%s) doesn't match output (%s)" msgstr "" -#: elfnn-riscv.c:3985 +#: elfnn-riscv.c:4182 #, c-format msgid "error: %pB: XLEN of input (%u) doesn't match output (%u)" msgstr "" -#: elfnn-riscv.c:3993 +#: elfnn-riscv.c:4190 #, c-format msgid "error: %pB: unsupported XLEN (%u), you might be using wrong emulation" msgstr "" -#: elfnn-riscv.c:4113 +#: elfnn-riscv.c:4314 msgid "" "warning: privileged spec version 1.9.1 can not be linked with other spec " "versions" msgstr "" -#: elfnn-riscv.c:4141 +#: elfnn-riscv.c:4342 #, c-format msgid "" "error: %pB use %u-byte stack aligned but the output use %u-byte stack aligned" msgstr "" -#: elfnn-riscv.c:4238 +#: elfnn-riscv.c:4439 #, c-format msgid "%pB: can't link %s modules with %s modules" msgstr "" -#: elfnn-riscv.c:4248 +#: elfnn-riscv.c:4449 #, c-format msgid "%pB: can't link RVE with other target" msgstr "" -#: elfnn-riscv.c:4272 +#: elfnn-riscv.c:4473 #, c-format msgid "warning: %pB: unknown RISCV ABI object attribute %d" msgstr "" -#: elfnn-riscv.c:969 +#: elfnn-riscv.c:1162 #, c-format msgid "" "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV64 " @@ -9747,175 +9846,175 @@ msgstr "" msgid "%pB: unable to create fake empty section" msgstr "" -#: peXXigen.c:924 peXXigen.c:924 +#: peXXigen.c:928 peXXigen.c:928 #, c-format msgid "%pB:%.8s: section below image base" msgstr "" -#: peXXigen.c:929 peXXigen.c:929 +#: peXXigen.c:933 peXXigen.c:933 #, c-format msgid "%pB:%.8s: RVA truncated" msgstr "" -#: peXXigen.c:1061 peXXigen.c:1061 +#: peXXigen.c:1066 peXXigen.c:1066 #, c-format msgid "%pB: line number overflow: 0x%lx > 0xffff" msgstr "" -#: peXXigen.c:1227 peXXigen.c:1227 +#: peXXigen.c:1232 peXXigen.c:1232 msgid "Export Directory [.edata (or where ever we found it)]" msgstr "" -#: peXXigen.c:1228 peXXigen.c:1228 +#: peXXigen.c:1233 peXXigen.c:1233 msgid "Import Directory [parts of .idata]" msgstr "" -#: peXXigen.c:1229 peXXigen.c:1229 +#: peXXigen.c:1234 peXXigen.c:1234 msgid "Resource Directory [.rsrc]" msgstr "" -#: peXXigen.c:1230 peXXigen.c:1230 +#: peXXigen.c:1235 peXXigen.c:1235 msgid "Exception Directory [.pdata]" msgstr "" -#: peXXigen.c:1231 peXXigen.c:1231 +#: peXXigen.c:1236 peXXigen.c:1236 msgid "Security Directory" msgstr "" -#: peXXigen.c:1232 peXXigen.c:1232 +#: peXXigen.c:1237 peXXigen.c:1237 msgid "Base Relocation Directory [.reloc]" msgstr "" -#: peXXigen.c:1233 peXXigen.c:1233 +#: peXXigen.c:1238 peXXigen.c:1238 msgid "Debug Directory" msgstr "" -#: peXXigen.c:1234 peXXigen.c:1234 +#: peXXigen.c:1239 peXXigen.c:1239 msgid "Description Directory" msgstr "" -#: peXXigen.c:1235 peXXigen.c:1235 +#: peXXigen.c:1240 peXXigen.c:1240 msgid "Special Directory" msgstr "" -#: peXXigen.c:1236 peXXigen.c:1236 +#: peXXigen.c:1241 peXXigen.c:1241 msgid "Thread Storage Directory [.tls]" msgstr "" -#: peXXigen.c:1237 peXXigen.c:1237 +#: peXXigen.c:1242 peXXigen.c:1242 msgid "Load Configuration Directory" msgstr "" -#: peXXigen.c:1238 peXXigen.c:1238 +#: peXXigen.c:1243 peXXigen.c:1243 msgid "Bound Import Directory" msgstr "" -#: peXXigen.c:1239 peXXigen.c:1239 +#: peXXigen.c:1244 peXXigen.c:1244 msgid "Import Address Table Directory" msgstr "" -#: peXXigen.c:1240 peXXigen.c:1240 +#: peXXigen.c:1245 peXXigen.c:1245 msgid "Delay Import Directory" msgstr "" -#: peXXigen.c:1241 peXXigen.c:1241 +#: peXXigen.c:1246 peXXigen.c:1246 msgid "CLR Runtime Header" msgstr "" -#: peXXigen.c:1242 peXXigen.c:1242 +#: peXXigen.c:1247 peXXigen.c:1247 msgid "Reserved" msgstr "" -#: peXXigen.c:1307 peXXigen.c:1307 +#: peXXigen.c:1312 peXXigen.c:1312 #, c-format msgid "" "\n" "There is an import table, but the section containing it could not be found\n" msgstr "" -#: peXXigen.c:1313 peXXigen.c:1313 +#: peXXigen.c:1318 peXXigen.c:1318 #, c-format msgid "" "\n" "There is an import table in %s, but that section has no contents\n" msgstr "" -#: peXXigen.c:1320 peXXigen.c:1320 +#: peXXigen.c:1325 peXXigen.c:1325 #, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" msgstr "" -#: peXXigen.c:1326 peXXigen.c:1326 +#: peXXigen.c:1331 peXXigen.c:1331 #, c-format msgid "" "\n" "The Import Tables (interpreted %s section contents)\n" msgstr "" -#: peXXigen.c:1329 peXXigen.c:1329 +#: peXXigen.c:1334 peXXigen.c:1334 #, c-format msgid "" " vma: Hint Time Forward DLL First\n" " Table Stamp Chain Name Thunk\n" msgstr "" -#: peXXigen.c:1378 peXXigen.c:1378 +#: peXXigen.c:1383 peXXigen.c:1383 #, c-format msgid "" "\n" "\tDLL Name: %.*s\n" msgstr "" -#: peXXigen.c:1394 peXXigen.c:1394 +#: peXXigen.c:1399 peXXigen.c:1399 #, c-format msgid "\tvma: Ordinal Hint Member-Name Bound-To\n" msgstr "" -#: peXXigen.c:1419 peXXigen.c:1419 +#: peXXigen.c:1424 peXXigen.c:1424 #, c-format msgid "" "\n" "There is a first thunk, but the section containing it could not be found\n" msgstr "" -#: peXXigen.c:1469 -#: peXXigen.c:1514 peXXigen.c:1469 -#: peXXigen.c:1514 +#: peXXigen.c:1474 +#: peXXigen.c:1519 peXXigen.c:1474 +#: peXXigen.c:1519 #, c-format msgid "\t<corrupt: 0x%08lx>" msgstr "" -#: peXXigen.c:1608 peXXigen.c:1608 +#: peXXigen.c:1613 peXXigen.c:1613 #, c-format msgid "" "\n" "There is an export table, but the section containing it could not be found\n" msgstr "" -#: peXXigen.c:1621 peXXigen.c:1621 +#: peXXigen.c:1626 peXXigen.c:1626 #, c-format msgid "" "\n" "There is an export table in %s, but it is too small (%d)\n" msgstr "" -#: peXXigen.c:1629 peXXigen.c:1629 +#: peXXigen.c:1634 peXXigen.c:1634 #, c-format msgid "" "\n" "There is an export table in %s, but contents cannot be read\n" msgstr "" -#: peXXigen.c:1635 peXXigen.c:1635 +#: peXXigen.c:1640 peXXigen.c:1640 #, c-format msgid "" "\n" "There is an export table in %s at 0x%lx\n" msgstr "" -#: peXXigen.c:1666 peXXigen.c:1666 +#: peXXigen.c:1671 peXXigen.c:1671 #, c-format msgid "" "\n" @@ -9923,149 +10022,149 @@ msgid "" "\n" msgstr "" -#: peXXigen.c:1670 peXXigen.c:1670 +#: peXXigen.c:1675 peXXigen.c:1675 #, c-format msgid "Export Flags \t\t\t%lx\n" msgstr "" -#: peXXigen.c:1673 peXXigen.c:1673 +#: peXXigen.c:1678 peXXigen.c:1678 #, c-format msgid "Time/Date stamp \t\t%lx\n" msgstr "" -#: peXXigen.c:1677 peXXigen.c:1677 +#: peXXigen.c:1682 peXXigen.c:1682 #, c-format msgid "Major/Minor \t\t\t%d/%d\n" msgstr "" -#: peXXigen.c:1680 peXXigen.c:1680 +#: peXXigen.c:1685 peXXigen.c:1685 #, c-format msgid "Name \t\t\t\t" msgstr "" -#: peXXigen.c:1691 peXXigen.c:1691 +#: peXXigen.c:1696 peXXigen.c:1696 #, c-format msgid "Ordinal Base \t\t\t%ld\n" msgstr "" -#: peXXigen.c:1694 peXXigen.c:1694 +#: peXXigen.c:1699 peXXigen.c:1699 #, c-format msgid "Number in:\n" msgstr "" -#: peXXigen.c:1697 peXXigen.c:1697 +#: peXXigen.c:1702 peXXigen.c:1702 #, c-format msgid "\tExport Address Table \t\t%08lx\n" msgstr "" -#: peXXigen.c:1701 peXXigen.c:1701 +#: peXXigen.c:1706 peXXigen.c:1706 #, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" msgstr "" -#: peXXigen.c:1704 peXXigen.c:1704 +#: peXXigen.c:1709 peXXigen.c:1709 #, c-format msgid "Table Addresses\n" msgstr "" -#: peXXigen.c:1707 peXXigen.c:1707 +#: peXXigen.c:1712 peXXigen.c:1712 #, c-format msgid "\tExport Address Table \t\t" msgstr "" -#: peXXigen.c:1712 peXXigen.c:1712 +#: peXXigen.c:1717 peXXigen.c:1717 #, c-format msgid "\tName Pointer Table \t\t" msgstr "" -#: peXXigen.c:1717 peXXigen.c:1717 +#: peXXigen.c:1722 peXXigen.c:1722 #, c-format msgid "\tOrdinal Table \t\t\t" msgstr "" -#: peXXigen.c:1731 peXXigen.c:1731 +#: peXXigen.c:1736 peXXigen.c:1736 #, c-format msgid "" "\n" "Export Address Table -- Ordinal Base %ld\n" msgstr "" -#: peXXigen.c:1741 peXXigen.c:1741 +#: peXXigen.c:1746 peXXigen.c:1746 #, c-format msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n" msgstr "" -#: peXXigen.c:1760 peXXigen.c:1760 +#: peXXigen.c:1765 peXXigen.c:1765 msgid "Forwarder RVA" msgstr "" -#: peXXigen.c:1772 peXXigen.c:1772 +#: peXXigen.c:1777 peXXigen.c:1777 msgid "Export RVA" msgstr "" -#: peXXigen.c:1779 peXXigen.c:1779 +#: peXXigen.c:1784 peXXigen.c:1784 #, c-format msgid "" "\n" "[Ordinal/Name Pointer] Table -- Ordinal Base %ld\n" msgstr "" -#: peXXigen.c:1789 peXXigen.c:1789 +#: peXXigen.c:1794 peXXigen.c:1794 #, c-format msgid "\tInvalid Name Pointer Table rva (0x%lx) or entry count (0x%lx)\n" msgstr "" -#: peXXigen.c:1796 peXXigen.c:1796 +#: peXXigen.c:1801 peXXigen.c:1801 #, c-format msgid "\tInvalid Ordinal Table rva (0x%lx) or entry count (0x%lx)\n" msgstr "" -#: peXXigen.c:1810 peXXigen.c:1810 +#: peXXigen.c:1815 peXXigen.c:1815 #, c-format msgid "\t[%4ld] +base[%4ld] %04lx <corrupt offset: %lx>\n" msgstr "" -#: peXXigen.c:1867 -#: peXXigen.c:2037 peXXigen.c:1867 -#: peXXigen.c:2037 +#: peXXigen.c:1872 +#: peXXigen.c:2042 peXXigen.c:1872 +#: peXXigen.c:2042 #, c-format msgid "warning, .pdata section size (%ld) is not a multiple of %d\n" msgstr "" -#: peXXigen.c:1871 -#: peXXigen.c:2041 peXXigen.c:1871 -#: peXXigen.c:2041 +#: peXXigen.c:1876 +#: peXXigen.c:2046 peXXigen.c:1876 +#: peXXigen.c:2046 #, c-format msgid "" "\n" "The Function Table (interpreted .pdata section contents)\n" msgstr "" -#: peXXigen.c:1874 peXXigen.c:1874 +#: peXXigen.c:1879 peXXigen.c:1879 #, c-format msgid " vma:\t\t\tBegin Address End Address Unwind Info\n" msgstr "" -#: peXXigen.c:1876 peXXigen.c:1876 +#: peXXigen.c:1881 peXXigen.c:1881 #, c-format msgid "" " vma:\t\tBegin End EH EH PrologEnd Exception\n" " \t\tAddress Address Handler Data Address Mask\n" msgstr "" -#: peXXigen.c:1889 peXXigen.c:1889 +#: peXXigen.c:1894 peXXigen.c:1894 #, c-format msgid "Virtual size of .pdata section (%ld) larger than real size (%ld)\n" msgstr "" -#: peXXigen.c:2043 peXXigen.c:2043 +#: peXXigen.c:2048 peXXigen.c:2048 #, c-format msgid "" " vma:\t\tBegin Prolog Function Flags Exception EH\n" " \t\tAddress Length Length 32b exc Handler Data\n" msgstr "" -#: peXXigen.c:2168 peXXigen.c:2168 +#: peXXigen.c:2173 peXXigen.c:2173 #, c-format msgid "" "\n" @@ -10073,86 +10172,86 @@ msgid "" "PE File Base Relocations (interpreted .reloc section contents)\n" msgstr "" -#: peXXigen.c:2197 peXXigen.c:2197 +#: peXXigen.c:2202 peXXigen.c:2202 #, c-format msgid "" "\n" "Virtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld\n" msgstr "" -#: peXXigen.c:2215 peXXigen.c:2215 +#: peXXigen.c:2220 peXXigen.c:2220 #, c-format msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "" -#: peXXigen.c:2276 peXXigen.c:2276 +#: peXXigen.c:2281 peXXigen.c:2281 #, c-format msgid "%03x %*.s Entry: " msgstr "" -#: peXXigen.c:2300 peXXigen.c:2300 +#: peXXigen.c:2305 peXXigen.c:2305 #, c-format msgid "name: [val: %08lx len %d]: " msgstr "" -#: peXXigen.c:2320 peXXigen.c:2320 +#: peXXigen.c:2325 peXXigen.c:2325 #, c-format msgid "<corrupt string length: %#x>\n" msgstr "" -#: peXXigen.c:2330 peXXigen.c:2330 +#: peXXigen.c:2335 peXXigen.c:2335 #, c-format msgid "<corrupt string offset: %#lx>\n" msgstr "" -#: peXXigen.c:2335 peXXigen.c:2335 +#: peXXigen.c:2340 peXXigen.c:2340 #, c-format msgid "ID: %#08lx" msgstr "" -#: peXXigen.c:2338 peXXigen.c:2338 +#: peXXigen.c:2343 peXXigen.c:2343 #, c-format msgid ", Value: %#08lx\n" msgstr "" -#: peXXigen.c:2360 peXXigen.c:2360 +#: peXXigen.c:2365 peXXigen.c:2365 #, c-format msgid "%03x %*.s Leaf: Addr: %#08lx, Size: %#08lx, Codepage: %d\n" msgstr "" -#: peXXigen.c:2402 peXXigen.c:2402 +#: peXXigen.c:2407 peXXigen.c:2407 #, c-format msgid "<unknown directory type: %d>\n" msgstr "" -#: peXXigen.c:2410 peXXigen.c:2410 +#: peXXigen.c:2415 peXXigen.c:2415 #, c-format msgid " Table: Char: %d, Time: %08lx, Ver: %d/%d, Num Names: %d, IDs: %d\n" msgstr "" -#: peXXigen.c:2498 peXXigen.c:2498 +#: peXXigen.c:2503 peXXigen.c:2503 #, c-format msgid "Corrupt .rsrc section detected!\n" msgstr "" -#: peXXigen.c:2522 peXXigen.c:2522 +#: peXXigen.c:2527 peXXigen.c:2527 #, c-format msgid "" "\n" "WARNING: Extra data in .rsrc section - it will be ignored by Windows:\n" msgstr "" -#: peXXigen.c:2528 peXXigen.c:2528 +#: peXXigen.c:2533 peXXigen.c:2533 #, c-format msgid " String table starts at offset: %#03x\n" msgstr "" -#: peXXigen.c:2531 peXXigen.c:2531 +#: peXXigen.c:2536 peXXigen.c:2536 #, c-format msgid " Resources start at offset: %#03x\n" msgstr "" -#: peXXigen.c:2588 peXXigen.c:2588 +#: peXXigen.c:2593 peXXigen.c:2593 #, c-format msgid "" "\n" @@ -10160,14 +10259,14 @@ msgid "" "found\n" msgstr "" -#: peXXigen.c:2594 peXXigen.c:2594 +#: peXXigen.c:2599 peXXigen.c:2599 #, c-format msgid "" "\n" "There is a debug directory in %s, but that section has no contents\n" msgstr "" -#: peXXigen.c:2601 peXXigen.c:2601 +#: peXXigen.c:2606 peXXigen.c:2606 #, c-format msgid "" "\n" @@ -10175,7 +10274,7 @@ msgid "" "small\n" msgstr "" -#: peXXigen.c:2606 peXXigen.c:2606 +#: peXXigen.c:2611 peXXigen.c:2611 #, c-format msgid "" "\n" @@ -10183,23 +10282,23 @@ msgid "" "\n" msgstr "" -#: peXXigen.c:2613 peXXigen.c:2613 +#: peXXigen.c:2618 peXXigen.c:2618 #, c-format msgid "" "The debug data size field in the data directory is too big for the section" msgstr "" -#: peXXigen.c:2618 peXXigen.c:2618 +#: peXXigen.c:2623 peXXigen.c:2623 #, c-format msgid "Type Size Rva Offset\n" msgstr "" -#: peXXigen.c:2666 peXXigen.c:2666 +#: peXXigen.c:2671 peXXigen.c:2671 #, c-format msgid "(format %c%c%c%c signature %s age %ld pdb %s)\n" msgstr "" -#: peXXigen.c:2678 peXXigen.c:2678 +#: peXXigen.c:2683 peXXigen.c:2683 #, c-format msgid "" "The debug directory size is not a multiple of the debug directory entry " @@ -10209,100 +10308,101 @@ msgstr "" #. The MS dumpbin program reportedly ands with 0xff0f before #. printing the characteristics field. Not sure why. No reason to #. emulate it here. -#: peXXigen.c:2762 peXXigen.c:2762 +#: peXXigen.c:2767 peXXigen.c:2767 #, c-format msgid "" "\n" "Characteristics 0x%x\n" msgstr "" -#: peXXigen.c:3047 peXXigen.c:3047 +#: peXXigen.c:3052 peXXigen.c:3052 #, c-format msgid "" "%pB: Data Directory (%lx bytes at %<PRIx64>) extends across section boundary " "at %<PRIx64>" msgstr "" -#: peXXigen.c:3088 peXXigen.c:3088 +#: peXXigen.c:3093 peXXigen.c:3093 msgid "failed to update file offsets in debug directory" msgstr "" -#: peXXigen.c:3097 peXXigen.c:3097 +#: peXXigen.c:3102 peXXigen.c:3102 #, c-format msgid "%pB: failed to read debug data section" msgstr "" -#: peXXigen.c:3900 peXXigen.c:3900 +#: peXXigen.c:3907 peXXigen.c:3907 #, c-format msgid ".rsrc merge failure: duplicate string resource: %d" msgstr "" -#: peXXigen.c:4035 peXXigen.c:4035 +#: peXXigen.c:4042 peXXigen.c:4042 msgid ".rsrc merge failure: multiple non-default manifests" msgstr "" -#: peXXigen.c:4053 peXXigen.c:4053 +#: peXXigen.c:4060 peXXigen.c:4060 msgid ".rsrc merge failure: a directory matches a leaf" msgstr "" -#: peXXigen.c:4095 peXXigen.c:4095 +#: peXXigen.c:4102 peXXigen.c:4102 msgid ".rsrc merge failure: duplicate leaf" msgstr "" -#: peXXigen.c:4100 peXXigen.c:4100 +#: peXXigen.c:4107 peXXigen.c:4107 #, c-format msgid ".rsrc merge failure: duplicate leaf: %s" msgstr "" -#: peXXigen.c:4167 peXXigen.c:4167 +#: peXXigen.c:4174 peXXigen.c:4174 msgid ".rsrc merge failure: dirs with differing characteristics" msgstr "" -#: peXXigen.c:4174 peXXigen.c:4174 +#: peXXigen.c:4181 peXXigen.c:4181 msgid ".rsrc merge failure: differing directory versions" msgstr "" #. Corrupted .rsrc section - cannot merge. -#: peXXigen.c:4286 peXXigen.c:4286 +#: peXXigen.c:4293 peXXigen.c:4293 #, c-format msgid "%pB: .rsrc merge failure: corrupt .rsrc section" msgstr "" -#: peXXigen.c:4294 peXXigen.c:4294 +#: peXXigen.c:4301 peXXigen.c:4301 #, c-format msgid "%pB: .rsrc merge failure: unexpected .rsrc size" msgstr "" -#: peXXigen.c:4433 peXXigen.c:4433 -#, c-format -msgid "%pB: unable to fill in DataDictionary[1] because .idata$2 is missing" -msgstr "" - -#: peXXigen.c:4453 peXXigen.c:4453 +#: peXXigen.c:4441 +#: peXXigen.c:4461 +#: peXXigen.c:4482 +#: peXXigen.c:4502 peXXigen.c:4441 +#: peXXigen.c:4461 peXXigen.c:4482 peXXigen.c:4502 #, c-format -msgid "%pB: unable to fill in DataDictionary[1] because .idata$4 is missing" +msgid "%pB: unable to fill in DataDirectory[%d]: %s is missing" msgstr "" -#: peXXigen.c:4474 peXXigen.c:4474 +#: peXXigen.c:4544 +#: peXXigen.c:4590 +#: peXXigen.c:4614 +#: peXXigen.c:4698 peXXigen.c:4544 +#: peXXigen.c:4590 peXXigen.c:4614 peXXigen.c:4698 #, c-format -msgid "%pB: unable to fill in DataDictionary[12] because .idata$5 is missing" +msgid "%pB: unable to fill in DataDirectory[%d]: %s not defined correctly" msgstr "" -#: peXXigen.c:4494 peXXigen.c:4494 +#: peXXigen.c:4651 peXXigen.c:4651 #, c-format -msgid "" -"%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE (12)] because ." -"idata$6 is missing" +msgid "%pB: unable to fill in DataDirectory[%d]: %s not properly aligned" msgstr "" -#: peXXigen.c:4536 peXXigen.c:4536 +#: peXXigen.c:4682 peXXigen.c:4682 #, c-format msgid "" -"%pB: unable to fill in DataDictionary[PE_IMPORT_ADDRESS_TABLE(12)] because ." -"idata$6 is missing" +"%pB: unable to fill in DataDirectory[%d]: size too large for the containing " +"section" msgstr "" -#: peXXigen.c:4561 peXXigen.c:4561 +#: peXXigen.c:4690 peXXigen.c:4690 #, c-format -msgid "%pB: unable to fill in DataDictionary[9] because __tls_used is missing" +msgid "%pB: unable to fill in DataDirectory[%d]: size can't be read from %s" msgstr "" diff --git a/bfd/po/ms.po b/bfd/po/ms.po index 415065a..89e2760 100644 --- a/bfd/po/ms.po +++ b/bfd/po/ms.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: bfd 2.43.90\n" "Report-Msgid-Bugs-To: https://sourceware.org/bugzilla/\n" "POT-Creation-Date: 2025-01-19 12:19+0000\n" -"PO-Revision-Date: 2025-02-25 23:26+0800\n" +"PO-Revision-Date: 2025-07-04 21:09+0800\n" "Last-Translator: Sharuzzaman Ahmat Raslan <sharuzzaman@gmail.com>\n" "Language-Team: Malay <translation-team-ms@lists.sourceforge.net>\n" "Language: ms\n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -"X-Generator: Poedit 3.5\n" +"X-Generator: Poedit 3.6\n" #: aout-cris.c:196 #, c-format @@ -35,9 +35,9 @@ msgid "%pB: bad relocation record imported: %d" msgstr "" #: aoutx.h:444 pdp11.c:481 -#, c-format +#, fuzzy, c-format msgid "%pB: %#<PRIx64> overflows header %s field" -msgstr "" +msgstr "Badan mesej adalah kosong tetapi tanda tangan dalam medan pengepala ialah \"(%s)\"" #: aoutx.h:1269 aoutx.h:1598 pdp11.c:1246 pdp11.c:1495 #, c-format @@ -70,9 +70,9 @@ msgid "%pB: attempt to write out unknown reloc type" msgstr "" #: aoutx.h:4047 pdp11.c:3409 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported relocation type" -msgstr "" +msgstr "Jenis _MIME tidak disokong %s" #. Unknown relocation. #: aoutx.h:4367 coff-alpha.c:601 coff-mips.c:356 coff-rs6000.c:3037 @@ -105,14 +105,14 @@ msgstr "" #: elfxx-ia64.c:324 elfxx-loongarch.c:1897 elfxx-riscv.c:1062 elfxx-sparc.c:589 #: elfxx-sparc.c:639 elfxx-tilegx.c:907 elfxx-tilegx.c:947 elfnn-aarch64.c:2215 #: elfnn-aarch64.c:2313 elfnn-ia64.c:214 elfnn-ia64.c:3821 elfnn-kvx.c:259 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported relocation type %#x" -msgstr "" +msgstr "TYPE(x)" #: aoutx.h:5387 pdp11.c:3825 -#, c-format +#, fuzzy, c-format msgid "%pB: relocatable link from %s to %s not supported" -msgstr "" +msgstr "Pertukaran dari set aksara \"%s\" ke \"UTF-8\" tidak disokong" #: arc-got.h:69 #, c-format @@ -133,32 +133,38 @@ msgid "%pB: plugin needed to handle lto object" msgstr "" #: archive.c:2644 +#, fuzzy msgid "Reading archive file mod timestamp" -msgstr "" +msgstr "Setem masa penciptaan fail imej tidak ditetapkan dalam fail" #: archive.c:2675 +#, fuzzy msgid "Writing updated armap timestamp" -msgstr "" +msgstr "Dikemaskini" #: bfd.c:777 msgid "no error" msgstr "tiada ralat" #: bfd.c:778 +#, fuzzy msgid "system call error" -msgstr "" +msgstr "panggilan sistem fork() gagal" #: bfd.c:779 +#, fuzzy msgid "invalid bfd target" -msgstr "" +msgstr "Nilai sasaran tak sah." #: bfd.c:780 +#, fuzzy msgid "file in wrong format" -msgstr "" +msgstr "Format fail:" #: bfd.c:781 +#, fuzzy msgid "archive object file in wrong format" -msgstr "" +msgstr "Cipta arkib dengan objek terpilih" #: bfd.c:782 #, fuzzy @@ -166,9 +172,8 @@ msgid "invalid operation" msgstr "Operasi tidak sah %d\n" #: bfd.c:783 -#, fuzzy msgid "memory exhausted" -msgstr "memori keletihan" +msgstr "kehabisan memori" #: bfd.c:784 #, fuzzy @@ -180,32 +185,41 @@ msgid "archive has no index; run ranlib to add one" msgstr "" #: bfd.c:786 +#, fuzzy msgid "no more archived files" -msgstr "" +msgstr "Diarkib" #: bfd.c:787 +#, fuzzy msgid "malformed archive" -msgstr "" +msgstr "Respon cacat" #: bfd.c:788 +#, fuzzy msgid "DSO missing from command line" -msgstr "" +msgstr "Alatan KDE untuk pembukaan URL daripada baris arahan" #: bfd.c:789 +#, fuzzy msgid "file format not recognized" -msgstr "" +msgstr "PNM: Format fail tidak dikenal." #: bfd.c:790 +#, fuzzy msgid "file format is ambiguous" -msgstr "" +msgstr "Format Fail" #: bfd.c:791 +#, fuzzy msgid "section has no contents" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: bfd.c:792 +#, fuzzy msgid "nonrepresentable section on output" -msgstr "" +msgstr "&Seksyen:" #: bfd.c:793 msgid "symbol needs debug section which does not exist" @@ -217,8 +231,9 @@ msgid "bad value" msgstr "nilai salah untuk maklumat keadaan ikon terlabuh %s" #: bfd.c:795 +#, fuzzy msgid "file truncated" -msgstr "" +msgstr "PNM: Fail seperti dipotong." #: bfd.c:796 #, fuzzy @@ -226,8 +241,9 @@ msgid "file too big" msgstr "Fail terlalu besar." #: bfd.c:797 +#, fuzzy msgid "sorry, cannot handle this file" -msgstr "" +msgstr "pluma tidak dapat mengendali lokasi ini." #: bfd.c:798 #, fuzzy, c-format @@ -235,23 +251,24 @@ msgid "error reading %s: %s" msgstr "Ralat membaca %s: %s" #: bfd.c:799 +#, fuzzy msgid "#<invalid error code>" -msgstr "" +msgstr "kod kesalahan" #: bfd.c:2242 -#, c-format +#, fuzzy, c-format msgid "BFD %s assertion fail %s:%d" -msgstr "" +msgstr "Gagal sebelum mengembalikan media kepada pengguna: %s" #: bfd.c:2255 -#, c-format +#, fuzzy, c-format msgid "%s: BFD %s internal error, aborting at %s:%d in %s\n" -msgstr "" +msgstr "RALAT DALAMAN pada %s:%d: regex hilang atau tidak sah" #: bfd.c:2259 -#, c-format +#, fuzzy, c-format msgid "%s: BFD %s internal error, aborting at %s:%d\n" -msgstr "" +msgstr "RALAT DALAMAN pada %s:%d: regex hilang atau tidak sah" #: bfd.c:2262 #, fuzzy, c-format @@ -264,9 +281,9 @@ msgid "warning: writing section `%pA' at huge (ie negative) file offset" msgstr "" #: cache.c:290 -#, c-format +#, fuzzy, c-format msgid "reopening %pB: %s" -msgstr "" +msgstr "PB" #: coff-alpha.c:450 #, c-format @@ -295,8 +312,9 @@ msgid "%X%P: %pB(%pA): relocation \"%pR\" returns an unrecognized value %x\n" msgstr "" #: coff-alpha.c:1489 +#, fuzzy msgid "using multiple gp values" -msgstr "" +msgstr "Muat P_GP" #: coff-alpha.c:1987 #, c-format @@ -334,9 +352,9 @@ msgid "%pB: TOC reloc at %#<PRIx64> to symbol `%s' with no TOC entry" msgstr "" #: coff-rs6000.c:3251 coff64-rs6000.c:848 -#, c-format +#, fuzzy, c-format msgid "Unable to find the stub entry targeting %s" -msgstr "" +msgstr "Tak dapat hantar kemasukan senaraimain \"%s\"" #: coff-rs6000.c:3366 #, c-format @@ -389,9 +407,9 @@ msgid "%pB: %#<PRIx64>: warning: could not find expected COUNT reloc" msgstr "" #: coff-sh.c:983 elf32-sh.c:738 -#, c-format +#, fuzzy, c-format msgid "%pB: %#<PRIx64>: warning: bad count" -msgstr "" +msgstr "Amaran: Tandatangan rosak." #: coff-sh.c:1349 coff-sh.c:2636 elf32-sh.c:1138 elf32-sh.c:1506 #, c-format @@ -415,8 +433,9 @@ msgid "%pB: warning: illegal symbol index %ld in relocs" msgstr "" #: coff-x86_64.c:147 +#, fuzzy msgid "R_AMD64_IMAGEBASE with __ImageBase undefined" -msgstr "" +msgstr "Tidak ditakrif" #: coff64-rs6000.c:447 coff64-rs6000.c:554 #, c-format @@ -439,9 +458,9 @@ msgid "%pB: unable to load COMDAT section name" msgstr "" #: coffcode.h:976 -#, c-format +#, fuzzy, c-format msgid "%pB: warning: no symbol for section '%s' found" -msgstr "" +msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s" #: coffcode.h:1148 #, c-format @@ -487,9 +506,9 @@ msgid "%pB: reloc against a non-existent symbol index: %ld" msgstr "" #: coffcode.h:3162 -#, c-format +#, fuzzy, c-format msgid "%pB: too many sections (%d)" -msgstr "" +msgstr "Terlalu banyak titik henti. Maksimum ialah %d." #: coffcode.h:3690 #, c-format @@ -537,14 +556,14 @@ msgid "%pB: illegal relocation type %d at address %#<PRIx64>" msgstr "" #: coffgen.c:255 elf.c:1033 -#, c-format +#, fuzzy, c-format msgid "%pB: unable to compress section %s" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: coffgen.c:265 elf.c:1043 -#, c-format +#, fuzzy, c-format msgid "%pB: unable to decompress section %s" -msgstr "" +msgstr "Sumber pada \"%s\" gagal dinyahmampatkan" #: coffgen.c:1778 #, c-format @@ -558,9 +577,9 @@ msgid "<corrupt>" msgstr "Fail rosak?" #: coffgen.c:2191 -#, c-format +#, fuzzy, c-format msgid "<corrupt info> %s" -msgstr "" +msgstr "PNG imej kenit rosak: '%s'" #: coffgen.c:2797 elflink.c:15435 linker.c:3011 msgid "%F%P: already_linked_table: %E\n" @@ -572,8 +591,12 @@ msgid "removing unused section '%pA' in file '%pB'" msgstr "" #: coffgen.c:3216 elflink.c:14606 +#, fuzzy msgid "warning: gc-sections option ignored" msgstr "" +"Amaran mengenai %(cleaner)s - %(option)s:\n" +"\n" +"%(warning)s" #: cofflink.c:398 #, c-format @@ -586,9 +609,11 @@ msgid "warning: type of symbol `%s' changed from %d to %d in %pB" msgstr "" #: cofflink.c:2340 -#, c-format +#, fuzzy, c-format msgid "%pB: relocs in section `%pA', but it has no contents" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: cofflink.c:2403 elflink.c:11809 #, c-format @@ -631,20 +656,22 @@ msgid "warning: unable to update contents of %s section in %pB" msgstr "" #: dwarf2.c:702 -#, c-format +#, fuzzy, c-format msgid "DWARF error: can't find %s section." -msgstr "" +msgstr "%s: tidak dapat mencari seksyen .text dalam %s\n" #: dwarf2.c:710 -#, c-format +#, fuzzy, c-format msgid "DWARF error: section %s has no contents" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #. PR 26946 #: dwarf2.c:719 -#, c-format +#, fuzzy, c-format msgid "DWARF error: section %s is too big" -msgstr "" +msgstr "Ralat: Saiz mesej %d terlalu besar\n" #: dwarf2.c:754 #, c-format @@ -665,8 +692,9 @@ msgid "DWARF error: mangled line number section (bad file number)" msgstr "" #: dwarf2.c:2614 +#, fuzzy msgid "DWARF error: zero format count" -msgstr "" +msgstr "Sembunyi kiraan bila kosong:" #: dwarf2.c:2624 #, c-format @@ -762,58 +790,58 @@ msgid "%pB: warning: isymMax (%ld) is greater than ifdMax (%ld)" msgstr "" #: ecoff.c:1313 -#, c-format +#, fuzzy, c-format msgid "unknown basic type %d" -msgstr "" +msgstr "Jenis bus %d tidak diketahui" #: ecoff.c:1571 -#, c-format +#, fuzzy, c-format msgid "" "\n" " End+1 symbol: %ld" -msgstr "" +msgstr "Tetapkan alamat &akhir simbol" #: ecoff.c:1578 ecoff.c:1581 -#, c-format +#, fuzzy, c-format msgid "" "\n" " First symbol: %ld" -msgstr "" +msgstr "Memadam fail %ld drpd %ld" #: ecoff.c:1596 -#, c-format +#, fuzzy, c-format msgid "" "\n" " End+1 symbol: %-7ld Type: %s" -msgstr "" +msgstr "jenis <%s> digunakan, tetapi tidak dihubungkan ke sebarang simbol" #: ecoff.c:1604 -#, c-format +#, fuzzy, c-format msgid "" "\n" " Local symbol: %ld" -msgstr "" +msgstr "Memadam fail %ld drpd %ld" #: ecoff.c:1612 -#, c-format +#, fuzzy, c-format msgid "" "\n" " struct; End+1 symbol: %ld" -msgstr "" +msgstr "Lumpuhkan simbol _akhir baris" #: ecoff.c:1617 -#, c-format +#, fuzzy, c-format msgid "" "\n" " union; End+1 symbol: %ld" -msgstr "" +msgstr "Lumpuhkan simbol _akhir baris" #: ecoff.c:1622 -#, c-format +#, fuzzy, c-format msgid "" "\n" " enum; End+1 symbol: %ld" -msgstr "" +msgstr "Lumpuhkan simbol _akhir baris" #: ecoff.c:1630 #, fuzzy, c-format @@ -823,8 +851,9 @@ msgid "" msgstr "Indeks tidak sah untuk jenis %s untuk jenis asa %s" #: elf-attrs.c:417 elf-attrs.c:447 elf-attrs.c:623 +#, fuzzy msgid "error adding attribute" -msgstr "" +msgstr "Ralat ketika menambah hubungan" #: elf-attrs.c:503 #, c-format @@ -866,9 +895,9 @@ msgid "further warnings about FDE encoding preventing .eh_frame_hdr generation d msgstr "" #: elf-eh-frame.c:1872 -#, c-format +#, fuzzy, c-format msgid "%pB: %pA not in order" -msgstr "" +msgstr "PA=" #: elf-eh-frame.c:1886 #, c-format @@ -890,13 +919,14 @@ msgid "invalid output section for .eh_frame_entry: %pA" msgstr "" #: elf-eh-frame.c:2340 -#, c-format +#, fuzzy, c-format msgid "invalid contents in %pA section" -msgstr "" +msgstr "PA=" #: elf-eh-frame.c:2496 +#, fuzzy msgid ".eh_frame_hdr entry overflow" -msgstr "" +msgstr "Lukis bingkai disekeliling masukan" #: elf-eh-frame.c:2498 msgid ".eh_frame_hdr refers to overlapping FDEs" @@ -917,8 +947,9 @@ msgstr "" #: elf32-or1k.c:1895 elf32-score.c:2724 elf32-score7.c:2535 elf32-spu.c:5081 #: elf32-tilepro.c:3369 elf32-v850.c:2297 elf32-visium.c:680 #: elf32-xstormy16.c:930 elf64-bpf.c:339 elf64-mmix.c:1537 elfxx-tilegx.c:3742 +#, fuzzy msgid "internal error: out of range error" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elf-m10200.c:438 elf-m10300.c:2150 elf32-bfin.c:3136 elf32-cr16.c:1433 #: elf32-cris.c:2037 elf32-crx.c:926 elf32-d10v.c:514 elf32-fr30.c:598 @@ -929,15 +960,17 @@ msgstr "" #: elf32-score7.c:2539 elf32-spu.c:5085 elf32-tilepro.c:3373 elf32-v850.c:2301 #: elf32-visium.c:684 elf32-xstormy16.c:934 elf64-mmix.c:1541 #: elfxx-mips.c:10642 elfxx-tilegx.c:3746 +#, fuzzy msgid "internal error: unsupported relocation error" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elf-m10200.c:442 elf32-cr16.c:1437 elf32-crx.c:930 elf32-d10v.c:518 #: elf32-h8300.c:531 elf32-lm32.c:1077 elf32-m32r.c:2845 elf32-m68hc1x.c:1278 #: elf32-microblaze.c:1685 elf32-nds32.c:6100 elf32-score.c:2732 #: elf32-score7.c:2543 elf32-spu.c:5089 +#, fuzzy msgid "internal error: dangerous error" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elf-m10200.c:446 elf-m10300.c:2167 elf32-bfin.c:3144 elf32-cr16.c:1441 #: elf32-cris.c:2045 elf32-crx.c:934 elf32-d10v.c:522 elf32-epiphany.c:578 @@ -1062,18 +1095,19 @@ msgid "%F%P: failed to create GNU property section\n" msgstr "" #: elf-properties.c:644 elfxx-aarch64.c:752 elfxx-x86.c:4353 -#, c-format +#, fuzzy, c-format msgid "%F%pA: failed to align section\n" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #. Merge .note.gnu.property sections. #: elf-properties.c:749 elf-properties.c:751 msgid "\n" -msgstr "" +msgstr "\n" #: elf-properties.c:750 +#, fuzzy msgid "Merging program properties\n" -msgstr "" +msgstr "Tiada Penggabungan" #: elf-sframe.c:239 #, c-format @@ -1089,9 +1123,9 @@ msgid "input SFrame sections with different format versions prevent .sframe gene msgstr "" #: elf.c:299 -#, c-format +#, fuzzy, c-format msgid "%pB: string table [%u] is corrupt" -msgstr "" +msgstr "Fail nampaknya rosak. Melangkau jadual. " #. PR 17512: file: f057ec89. #: elf.c:328 @@ -1111,9 +1145,9 @@ msgid "%pB symbol number %lu references nonexistent SHT_SYMTAB_SHNDX section" msgstr "" #: elf.c:614 -#, c-format +#, fuzzy, c-format msgid "%pB: could not read contents of group [%u]" -msgstr "" +msgstr "Tidak dapat membaca kandungan folder" #: elf.c:645 #, c-format @@ -1146,52 +1180,52 @@ msgid "%pB: invalid sh_link field (%d) in section number %d" msgstr "" #: elf.c:1253 -#, c-format +#, fuzzy, c-format msgid "%pB: failed to find link section for section %d" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: elf.c:1280 -#, c-format +#, fuzzy, c-format msgid "%pB: failed to find info section for section %d" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: elf.c:1457 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Program Header:\n" -msgstr "" +msgstr "Program" #: elf.c:1499 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Dynamic Section:\n" -msgstr "" +msgstr "dinamik" #: elf.c:1638 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Version definitions:\n" -msgstr "" +msgstr "Sedang mentakrifkan item..." #: elf.c:1663 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Version References:\n" -msgstr "" +msgstr "Rujukan:" #: elf.c:1668 -#, c-format +#, fuzzy, c-format msgid " required from %s:\n" -msgstr "" +msgstr "diperlukan=%s" #: elf.c:1917 -#, c-format +#, fuzzy, c-format msgid "%pB: DT_STRTAB table is corrupt" -msgstr "" +msgstr "Fail nampaknya rosak. Melangkau jadual. " #: elf.c:2426 #, c-format @@ -1219,9 +1253,9 @@ msgid "%pB: warning: secondary relocation section '%s' for section %pA found - i msgstr "" #: elf.c:2879 elf.c:2893 elf.c:2904 elf.c:2917 -#, c-format +#, fuzzy, c-format msgid "%pB: unknown type [%#x] section `%s'" -msgstr "" +msgstr "Seksyen tidak diketahui: %s" #: elf.c:3586 #, c-format @@ -1234,9 +1268,9 @@ msgid "warning: section `%pA' type changed to PROGBITS" msgstr "" #: elf.c:4130 -#, c-format +#, fuzzy, c-format msgid "%pB: too many sections: %u" -msgstr "" +msgstr "Terlalu banyak klien. Sambungan daripada %s:%u ditolak." #: elf.c:4216 #, c-format @@ -1258,19 +1292,19 @@ msgid "%F%P: failed to size relative relocations\n" msgstr "" #: elf.c:5440 -#, c-format +#, fuzzy, c-format msgid "%pB: TLS sections are not adjacent:" -msgstr "" +msgstr "PB" #: elf.c:5447 #, c-format msgid "\t TLS: %pA" -msgstr "" +msgstr "\t TLS: %pA" #: elf.c:5451 -#, c-format +#, fuzzy, c-format msgid "\tnon-TLS: %pA" -msgstr "" +msgstr "PA=" #: elf.c:6075 #, c-format @@ -1316,14 +1350,14 @@ msgid "%pB: error: non-load segment %d includes file header and/or program heade msgstr "" #: elf.c:6862 -#, c-format +#, fuzzy, c-format msgid "error: %pB has a TLS segment with execute permission" -msgstr "" +msgstr "Proses mempunyai keizinan untuk melakukan arahan yang terkandung di dalam segmen ingatan." #: elf.c:6868 -#, c-format +#, fuzzy, c-format msgid "warning: %pB has a TLS segment with execute permission" -msgstr "" +msgstr "Proses mempunyai keizinan untuk melakukan arahan yang terkandung di dalam segmen ingatan." #: elf.c:6883 #, c-format @@ -1336,9 +1370,9 @@ msgid "warning: %pB has a LOAD segment with RWX permissions" msgstr "" #: elf.c:7284 -#, c-format +#, fuzzy, c-format msgid "%pB: symbol `%s' required but not present" -msgstr "" +msgstr "Satu unsur (%s) diperlukan tidak hadir." #: elf.c:7661 #, c-format @@ -1361,14 +1395,14 @@ msgid "unable to find equivalent output section for symbol '%s' from section '%s msgstr "" #: elf.c:9300 -#, c-format +#, fuzzy, c-format msgid "%pB: .gnu.version_r invalid entry" -msgstr "" +msgstr "Masukan rangkaian tidak sah." #: elf.c:9478 -#, c-format +#, fuzzy, c-format msgid "%pB: .gnu.version_d invalid entry" -msgstr "" +msgstr "%d masukan" #: elf.c:9981 #, c-format @@ -1382,9 +1416,9 @@ msgstr "" #: elf.c:10108 elf32-mcore.c:100 elf32-mcore.c:455 elf32-ppc.c:7675 #: elf32-ppc.c:8863 elf64-ppc.c:16860 -#, c-format +#, fuzzy, c-format msgid "%pB: %s unsupported" -msgstr "" +msgstr "PB" #: elf.c:10923 #, c-format @@ -1484,9 +1518,9 @@ msgstr "" #: elf32-arc.c:454 elf32-arm.c:15194 elf32-frv.c:6612 elf32-iq2000.c:868 #: elf32-m32c.c:914 elf32-mt.c:560 elf32-rl78.c:1275 elf32-rx.c:3218 #: elf32-visium.c:844 elf64-ppc.c:5531 elfnn-aarch64.c:7573 -#, c-format +#, fuzzy, c-format msgid "private flags = 0x%lx:" -msgstr "" +msgstr "[find_call] %s: 0x%lx ke 0x%lx\n" #: elf32-arc.c:641 #, c-format @@ -1514,14 +1548,14 @@ msgid "error: %pB: cannot mix rf16 with full register set %pB" msgstr "" #: elf32-arc.c:789 -#, c-format +#, fuzzy, c-format msgid "error: %pB: conflicting attributes %s: %s with %s" -msgstr "" +msgstr "keluaran berkonflik kepada fail %s" #: elf32-arc.c:816 -#, c-format +#, fuzzy, c-format msgid "error: %pB: conflicting attributes %s" -msgstr "" +msgstr "Konflik tindakan untuk %s" #: elf32-arc.c:921 #, c-format @@ -1535,8 +1569,9 @@ msgid "%pB: uses different e_flags (%#x) fields than previous modules (%#x)" msgstr "" #: elf32-arc.c:1026 +#, fuzzy msgid "error: the ARC4 architecture is no longer supported" -msgstr "" +msgstr "%s: -c tidak disokong pada rekabentuk %s\n" #: elf32-arc.c:1032 msgid "warning: unset or old architecture flags; use default machine" @@ -1562,9 +1597,9 @@ msgid "%pB(%pA): warning: unaligned access to symbol '%s' in the small data area msgstr "" #: elf32-arc.c:1926 elf32-rx.c:1491 -#, c-format +#, fuzzy, c-format msgid "%pB(%pA): internal error: out of range error" -msgstr "" +msgstr "Ralat kaji hurai: Nombor terkeluar dari Julat (mesti kecil daripada %1)" #: elf32-arc.c:1931 elf32-rx.c:1496 #, c-format @@ -1577,9 +1612,9 @@ msgid "%pB(%pA): internal error: dangerous relocation" msgstr "" #: elf32-arc.c:1941 elf32-rx.c:1506 -#, c-format +#, fuzzy, c-format msgid "%pB(%pA): internal error: unknown error" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elf32-arc.c:2035 elf32-arc.c:2103 elf32-arm.c:15637 elf32-metag.c:2250 #: elf32-nds32.c:5542 elfnn-aarch64.c:7980 elfnn-riscv.c:722 @@ -1620,9 +1655,9 @@ msgstr "" #: elf32-arm.c:4854 elf32-arm.c:7003 elf32-csky.c:3385 elf32-hppa.c:581 #: elf32-m68hc1x.c:163 elf32-metag.c:1179 elf64-ppc.c:3902 elf64-ppc.c:14175 #: elfnn-aarch64.c:3188 elfnn-kvx.c:894 -#, c-format +#, fuzzy, c-format msgid "%pB: cannot create stub entry %s" -msgstr "" +msgstr "%s: Tak dapat mencipta symlink ke %s" #: elf32-arm.c:5075 elf32-csky.c:3727 elf32-hppa.c:731 elf32-hppa.c:760 #: elf32-hppa.c:841 elf32-m68hc11.c:422 elf32-m68hc12.c:542 elf32-metag.c:3344 @@ -1646,9 +1681,9 @@ msgid "%pB: invalid standard symbol `%s'; it must be a global or weak function s msgstr "" #: elf32-arm.c:6100 -#, c-format +#, fuzzy, c-format msgid "%pB: absent standard symbol `%s'" -msgstr "" +msgstr "%s: tiada simbol sedemikian" #: elf32-arm.c:6112 #, c-format @@ -1656,14 +1691,14 @@ msgid "%pB: `%s' and its special symbol are in different sections" msgstr "" #: elf32-arm.c:6124 -#, c-format +#, fuzzy, c-format msgid "%pB: entry function `%s' not output" -msgstr "" +msgstr "Gagal mencari fungsi titik masukan \"%s\" dalam \"%s\": %s" #: elf32-arm.c:6131 -#, c-format +#, fuzzy, c-format msgid "%pB: entry function `%s' is empty" -msgstr "" +msgstr "Fungsi kosong" #: elf32-arm.c:6260 #, c-format @@ -1681,19 +1716,19 @@ msgid "entry function `%s' disappeared from secure code" msgstr "" #: elf32-arm.c:6355 -#, c-format +#, fuzzy, c-format msgid "`%s' refers to a non entry function" -msgstr "" +msgstr "Tuju atau hubungan merujuk pada anak yang tidak wujud" #: elf32-arm.c:6370 -#, c-format +#, fuzzy, c-format msgid "%pB: visibility of symbol `%s' has changed" -msgstr "" +msgstr "Format mel setempat Evolution telah berubah." #: elf32-arm.c:6379 -#, c-format +#, fuzzy, c-format msgid "%pB: incorrect size for symbol `%s'" -msgstr "" +msgstr "Tetapkan &saiz simbol" #: elf32-arm.c:6398 #, c-format @@ -1710,9 +1745,9 @@ msgid "start address of `%s' is different from previous link" msgstr "" #: elf32-arm.c:7137 elf32-arm.c:7175 -#, c-format +#, fuzzy, c-format msgid "unable to find %s glue '%s' for '%s'" -msgstr "" +msgstr "Tak menjumpai fail include: \"%s\"" #: elf32-arm.c:7886 #, c-format @@ -1731,9 +1766,9 @@ msgid "%pB: warning: selected STM32L4XX erratum workaround is not necessary for msgstr "" #: elf32-arm.c:8677 elf32-arm.c:8697 elf32-arm.c:8764 elf32-arm.c:8783 -#, c-format +#, fuzzy, c-format msgid "%pB: unable to find %s veneer `%s'" -msgstr "" +msgstr "Tidak dapat mencari \"%s\"" #: elf32-arm.c:8990 #, c-format @@ -1741,9 +1776,9 @@ msgid "%pB(%pA+%#x): error: multiple load detected in non-last IT block instruct msgstr "" #: elf32-arm.c:9088 -#, c-format +#, fuzzy, c-format msgid "invalid TARGET2 relocation type '%s'" -msgstr "" +msgstr "Indeks tidak sah untuk jenis %s untuk jenis asa %s" #. FIXME: We ought to be able to generate thumb-1 PLT #. instructions... @@ -1778,12 +1813,14 @@ msgid "(%s): Unknown destination type (ARM/Thumb) in %pB" msgstr "" #: elf32-arm.c:10615 +#, fuzzy msgid "shared object" -msgstr "" +msgstr "objek memori terkongsi" #: elf32-arm.c:10618 +#, fuzzy msgid "PIE executable" -msgstr "" +msgstr "Pai" #: elf32-arm.c:10621 #, c-format @@ -1826,20 +1863,24 @@ msgid "%pB(%pA+%#<PRIx64>): overflow whilst splitting %#<PRIx64> for group reloc msgstr "" #: elf32-arm.c:12704 elf32-arm.c:12863 +#, fuzzy msgid "local symbol index too big" -msgstr "" +msgstr "Tiada simbol untuk indeks" #: elf32-arm.c:12714 elf32-arm.c:12748 +#, fuzzy msgid "no dynamic index information available" -msgstr "" +msgstr "Tidak tersedia bila menggunakan senarai main dinamik" #: elf32-arm.c:12756 +#, fuzzy msgid "invalid dynamic index" -msgstr "" +msgstr "ICO: Indeks ikon tidak sah." #: elf32-arm.c:12873 +#, fuzzy msgid "dynamic index information not available" -msgstr "" +msgstr "Tidak tersedia bila menggunakan senarai main dinamik" #: elf32-arm.c:13304 elf32-sh.c:3566 #, c-format @@ -1865,8 +1906,9 @@ msgstr "Diluar Julat" #: elf32-arm.c:13506 elf32-pru.c:936 elf32-tic6x.c:2645 elfnn-aarch64.c:7411 #: elfnn-kvx.c:2801 +#, fuzzy msgid "unsupported relocation" -msgstr "" +msgstr " (tidak disokong)" #: elf32-arm.c:13514 elf32-pru.c:946 elf32-tic6x.c:2653 elfnn-aarch64.c:7419 #: elfnn-kvx.c:2809 @@ -1899,9 +1941,9 @@ msgid "warning: %pB: unknown EABI object attribute %d" msgstr "" #: elf32-arm.c:14470 -#, c-format +#, fuzzy, c-format msgid "error: %pB: unknown CPU architecture" -msgstr "" +msgstr "Ralat tidak diketahui" #: elf32-arm.c:14508 #, c-format @@ -1929,14 +1971,14 @@ msgid "error: %pB: conflicting architecture profiles %c/%c" msgstr "" #: elf32-arm.c:14977 -#, c-format +#, fuzzy, c-format msgid "warning: %pB: conflicting platform configuration" -msgstr "" +msgstr "Kunci berkonflik dari Conflict1 yang sepatutnya beri satu amaran" #: elf32-arm.c:14986 -#, c-format +#, fuzzy, c-format msgid "error: %pB: conflicting use of R9" -msgstr "" +msgstr "Kunci berkonflik dengan julat 0~5 yang sepatutnya berikan satu ralat" #: elf32-arm.c:14998 #, c-format @@ -1969,44 +2011,44 @@ msgid "%pB has both the current and legacy Tag_MPextension_use attributes" msgstr "" #: elf32-arm.c:15203 -#, c-format +#, fuzzy, c-format msgid " [interworking enabled]" -msgstr "" +msgstr "tidak dihidupkan" #: elf32-arm.c:15211 -#, c-format +#, fuzzy, c-format msgid " [VFP float format]" -msgstr "" +msgstr "apung" #: elf32-arm.c:15213 -#, c-format +#, fuzzy, c-format msgid " [FPA float format]" -msgstr "" +msgstr "apung" #: elf32-arm.c:15216 -#, c-format +#, fuzzy, c-format msgid " [floats passed in float registers]" -msgstr "" +msgstr "&Daftar" #: elf32-arm.c:15219 elf32-arm.c:15304 -#, c-format +#, fuzzy, c-format msgid " [position independent]" -msgstr "" +msgstr "Dokumen bebas" #: elf32-arm.c:15222 -#, c-format +#, fuzzy, c-format msgid " [new ABI]" -msgstr "" +msgstr "Baharu" #: elf32-arm.c:15225 -#, c-format +#, fuzzy, c-format msgid " [old ABI]" -msgstr "" +msgstr " tua " #: elf32-arm.c:15228 -#, c-format +#, fuzzy, c-format msgid " [software FP]" -msgstr "" +msgstr "Segerak FP dibenarkan" #: elf32-arm.c:15236 #, c-format @@ -2014,14 +2056,14 @@ msgid " [Version1 EABI]" msgstr "" #: elf32-arm.c:15239 elf32-arm.c:15250 -#, c-format +#, fuzzy, c-format msgid " [sorted symbol table]" -msgstr "" +msgstr "Simbol" #: elf32-arm.c:15241 elf32-arm.c:15252 -#, c-format +#, fuzzy, c-format msgid " [unsorted symbol table]" -msgstr "" +msgstr "Tidak Diisih" #: elf32-arm.c:15247 #, c-format @@ -2029,14 +2071,14 @@ msgid " [Version2 EABI]" msgstr "" #: elf32-arm.c:15255 -#, c-format +#, fuzzy, c-format msgid " [dynamic symbols use segment index]" -msgstr "" +msgstr "Guna kodek bab ditemui dalam segmen." #: elf32-arm.c:15258 -#, c-format +#, fuzzy, c-format msgid " [mapping symbols precede others]" -msgstr "" +msgstr "Simbol" #: elf32-arm.c:15265 #, c-format @@ -2054,53 +2096,55 @@ msgid " [Version5 EABI]" msgstr "" #: elf32-arm.c:15276 -#, c-format +#, fuzzy, c-format msgid " [soft-float ABI]" -msgstr "" +msgstr "Soft" #: elf32-arm.c:15279 -#, c-format +#, fuzzy, c-format msgid " [hard-float ABI]" -msgstr "" +msgstr "Sukar" #: elf32-arm.c:15285 #, c-format msgid " [BE8]" -msgstr "" +msgstr " [BE8]" #: elf32-arm.c:15288 #, c-format msgid " [LE8]" -msgstr "" +msgstr " [LE8]" #: elf32-arm.c:15294 -#, c-format +#, fuzzy, c-format msgid " <EABI version unrecognised>" msgstr "" +"perintah tidak dikenali: %s\n" +"\n" #: elf32-arm.c:15301 -#, c-format +#, fuzzy, c-format msgid " [relocatable executable]" -msgstr "" +msgstr "Skema boleh letak semula" #: elf32-arm.c:15307 -#, c-format +#, fuzzy, c-format msgid " [FDPIC ABI supplement]" -msgstr "" +msgstr "Latin-1 Tambahan" #: elf32-arm.c:15312 elfnn-aarch64.c:7576 -#, c-format +#, fuzzy, c-format msgid " <Unrecognised flag bits set>" -msgstr "" +msgstr "Alamat mempunyai set bit melangkaui panjang awalan" #: elf32-arm.c:15420 elf32-arm.c:15554 elf32-i386.c:1545 elf32-s390.c:921 #: elf32-tic6x.c:2716 elf32-tilepro.c:1433 elf32-xtensa.c:1088 elf64-s390.c:843 #: elf64-x86-64.c:2173 elfxx-sparc.c:1385 elfxx-tilegx.c:1661 elfxx-x86.c:971 #: elfnn-aarch64.c:7847 elfnn-kvx.c:3247 elfnn-loongarch.c:952 #: elfnn-riscv.c:766 -#, c-format +#, fuzzy, c-format msgid "%pB: bad symbol index: %d" -msgstr "" +msgstr "Tiada simbol untuk indeks" #: elf32-arm.c:15810 #, c-format @@ -2108,14 +2152,14 @@ msgid "FDPIC does not yet support %s relocation to become dynamic for executable msgstr "" #: elf32-arm.c:17072 -#, c-format +#, fuzzy, c-format msgid "errors encountered processing file %pB" -msgstr "" +msgstr "end-of-file tak matang berlaku" #: elf32-arm.c:17442 elflink.c:13533 elflink.c:13580 -#, c-format +#, fuzzy, c-format msgid "could not find section %s" -msgstr "" +msgstr "Gagal mencipta sesi sftp: %s" #: elf32-arm.c:18397 #, c-format @@ -2135,9 +2179,9 @@ msgid "%pB: error: Cortex-A8 erratum stub out of range (input file too large)" msgstr "" #: elf32-arm.c:19509 elf32-arm.c:19531 -#, c-format +#, fuzzy, c-format msgid "%pB: error: VFP11 veneer out of range" -msgstr "" +msgstr "Ralat kaji hurai: Nombor terkeluar dari Julat (mesti kecil daripada %1)" #: elf32-arm.c:19582 #, c-format @@ -2145,9 +2189,9 @@ msgid "%pB(%#<PRIx64>): error: cannot create STM32L4XX veneer; jump out of range msgstr "" #: elf32-arm.c:19621 -#, c-format +#, fuzzy, c-format msgid "%pB: error: cannot create STM32L4XX veneer" -msgstr "" +msgstr "Ralat: Tidak dapat cipta fail sementara: %s\n" #: elf32-arm.c:20704 #, c-format @@ -2212,13 +2256,14 @@ msgid "%X%H: %s against `%s': internal error: unexpected relocation result %d\n" msgstr "" #: elf32-avr.c:3335 elfnn-aarch64.c:3219 -#, c-format +#, fuzzy, c-format msgid "cannot create stub entry %s" -msgstr "" +msgstr "Tidak dapat cipta folder '%s'" #: elf32-bfin.c:107 elf32-bfin.c:364 +#, fuzzy msgid "relocation should be even number" -msgstr "" +msgstr "Jumlah aksara genap diperlukan" #: elf32-bfin.c:1589 #, c-format @@ -2237,16 +2282,18 @@ msgid "%pB: relocation at `%pA+%#<PRIx64>' references symbol `%s' with nonzero a msgstr "" #: elf32-bfin.c:2663 +#, fuzzy msgid "relocation references symbol not defined in the module" -msgstr "" +msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum" #: elf32-bfin.c:2761 msgid "R_BFIN_FUNCDESC references dynamic symbol with nonzero addend" msgstr "" #: elf32-bfin.c:2801 elf32-bfin.c:2922 +#, fuzzy msgid "cannot emit fixups in read-only section" -msgstr "" +msgstr "Peristiwa tidak boleh disunting, kerana kalendar terpilih adalah baca sahaja" #: elf32-bfin.c:2831 elf32-bfin.c:2959 elf32-lm32.c:1006 elf32-sh.c:4384 msgid "cannot emit dynamic relocations in read-only section" @@ -2257,8 +2304,9 @@ msgid "R_BFIN_FUNCDESC_VALUE references dynamic symbol with nonzero addend" msgstr "" #: elf32-bfin.c:3044 +#, fuzzy msgid "relocations between different segments are not supported" -msgstr "" +msgstr "Operasi tidak disokong, fail berada pada lekap berbeza" #: elf32-bfin.c:3045 msgid "warning: relocation references a different segment" @@ -2270,16 +2318,17 @@ msgstr "" #: elf32-msp430.c:1514 elf32-mt.c:406 elf32-or1k.c:1903 elf32-tilepro.c:3377 #: elf32-v850.c:2305 elf32-visium.c:688 elf32-xstormy16.c:938 elf64-bpf.c:348 #: elf64-mmix.c:1545 elfxx-tilegx.c:3750 +#, fuzzy msgid "internal error: dangerous relocation" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #. Ignore init flag - it may not be set, despite the flags field containing valid data. #: elf32-bfin.c:4728 elf32-cris.c:3860 elf32-m68hc1x.c:1414 elf32-m68k.c:1264 #: elf32-score.c:3984 elf32-score7.c:3791 elf32-vax.c:534 elf32-xgate.c:494 #: elfxx-mips.c:16366 -#, c-format +#, fuzzy, c-format msgid "private flags = %lx:" -msgstr "" +msgstr "Persendirian" #: elf32-bfin.c:4779 elf32-frv.c:6585 #, c-format @@ -2292,17 +2341,18 @@ msgid "%pB: cannot link fdpic object file into non-fdpic executable" msgstr "" #: elf32-bfin.c:4919 -#, c-format +#, fuzzy, c-format msgid "*** check this relocation %s" -msgstr "" +msgstr "Tidak dapat memeriksa folder: %s: %s" #: elf32-bfin.c:5034 msgid "the bfin target does not currently support the generation of copy relocations" msgstr "" #: elf32-bfin.c:5329 elf32-cr16.c:2720 elf32-m68k.c:4420 +#, fuzzy msgid "unsupported relocation type" -msgstr "" +msgstr "Jenis Python tidak disokong: %s" #: elf32-cris.c:1119 #, c-format @@ -2321,8 +2371,9 @@ msgstr "" #: elf32-cris.c:1193 elf32-cris.c:1326 elf32-cris.c:1591 elf32-cris.c:1674 #: elf32-cris.c:1827 elf32-tic6x.c:2552 +#, fuzzy msgid "[whose name is lost]" -msgstr "" +msgstr "Nama '%s' hilang dalam dbus mesej." #: elf32-cris.c:1311 elf32-tic6x.c:2536 #, c-format @@ -2391,13 +2442,14 @@ msgid "%pB, section `%pA', to symbol `%s': relocation %s should not be used in a msgstr "" #: elf32-cris.c:3811 +#, fuzzy msgid "unexpected machine number" -msgstr "" +msgstr "Nombor pemacu %1 tak dijangka." #: elf32-cris.c:3863 -#, c-format +#, fuzzy, c-format msgid " [symbols have a _ prefix]" -msgstr "" +msgstr "Pengenalpasti pulsar mempunyai awalan 'PSR'" #: elf32-cris.c:3866 #, c-format @@ -2407,7 +2459,7 @@ msgstr "" #: elf32-cris.c:3869 #, c-format msgid " [v32]" -msgstr "" +msgstr " [v32]" #: elf32-cris.c:3913 #, c-format @@ -2430,8 +2482,9 @@ msgid "%pB contains non-CRIS-v32 code, incompatible with previous objects" msgstr "" #: elf32-csky.c:2016 +#, fuzzy msgid "GOT table size out of range" -msgstr "" +msgstr "Diluar Julat" #: elf32-csky.c:2826 #, c-format @@ -2439,9 +2492,9 @@ msgid "warning: unrecognized arch eflag '%#lx'" msgstr "" #: elf32-csky.c:2849 -#, c-format +#, fuzzy, c-format msgid "warning: unrecognised arch name '%#x'" -msgstr "" +msgstr "nama (x,y)" #: elf32-csky.c:2914 elf32-csky.c:3074 #, c-format @@ -2475,9 +2528,9 @@ msgstr "" #. The r_type is error, not support it. #: elf32-csky.c:4327 elf32-i386.c:344 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported relocation type: %#x" -msgstr "" +msgstr "TYPE(x)" #: elf32-dlx.c:141 #, c-format @@ -2495,8 +2548,9 @@ msgid "unsupported relocation between data/insn address spaces" msgstr "" #: elf32-frv.c:1452 elf32-frv.c:1603 +#, fuzzy msgid "relocation requires zero addend" -msgstr "" +msgstr "Sifar" #: elf32-frv.c:2832 #, c-format @@ -2573,9 +2627,9 @@ msgid "%H: reloc against `%s' references a different segment\n" msgstr "" #: elf32-frv.c:4068 -#, c-format +#, fuzzy, c-format msgid "%H: reloc against `%s': %s\n" -msgstr "" +msgstr "%s j %s" #: elf32-frv.c:6496 #, c-format @@ -2583,9 +2637,9 @@ msgid "%pB: compiled with %s and linked with modules that use non-pic relocation msgstr "" #: elf32-frv.c:6550 elf32-iq2000.c:830 elf32-m32c.c:876 -#, c-format +#, fuzzy, c-format msgid "%pB: compiled with %s and linked with modules compiled with %s" -msgstr "" +msgstr "Dia Versi %s dikompil %s, %s\n" #: elf32-frv.c:6563 #, c-format @@ -2608,9 +2662,9 @@ msgid "%pB: relocation %s can not be used when making a shared object; recompile msgstr "" #: elf32-hppa.c:2579 -#, c-format +#, fuzzy, c-format msgid "%pB: duplicate export stub %s" -msgstr "" +msgstr "%s Pb" #: elf32-hppa.c:3235 #, c-format @@ -2638,9 +2692,9 @@ msgid "%pB:%s has both normal and TLS relocs" msgstr "" #: elf32-hppa.c:4166 -#, c-format +#, fuzzy, c-format msgid "%pB(%pA+%#<PRIx64>): cannot handle %s for %s" -msgstr "" +msgstr "Caja tidak dapat mengendali lokasi \"%s\"." #: elf32-hppa.c:4470 msgid ".got section not immediately after .plt section" @@ -2676,9 +2730,9 @@ msgstr "" #: elf32-i386.c:2452 elf32-i386.c:3752 elf32-i386.c:3900 elf64-x86-64.c:3107 #: elf64-x86-64.c:4790 elf64-x86-64.c:4958 elfnn-riscv.c:2406 #: elfnn-riscv.c:3318 elfnn-riscv.c:3392 -#, c-format +#, fuzzy, c-format msgid "Local IFUNC function `%s' in %pB\n" -msgstr "" +msgstr "%s Pb" #: elf32-i386.c:2630 #, c-format @@ -2686,16 +2740,19 @@ msgid "%pB: direct GOT relocation %s against `%s' without base register can not msgstr "" #: elf32-i386.c:2665 elf64-x86-64.c:3324 +#, fuzzy msgid "hidden symbol" -msgstr "" +msgstr "Tersembunyi" #: elf32-i386.c:2668 elf64-x86-64.c:3327 +#, fuzzy msgid "internal symbol" -msgstr "" +msgstr "Dalaman" #: elf32-i386.c:2671 elf64-x86-64.c:3330 +#, fuzzy msgid "protected symbol" -msgstr "" +msgstr "Dilindungi" #: elf32-i386.c:2674 elf64-x86-64.c:3333 #, fuzzy @@ -2743,9 +2800,9 @@ msgid "global pointer relative address out of range" msgstr "" #: elf32-lm32.c:959 -#, c-format +#, fuzzy, c-format msgid "internal error: addend should be zero for %s" -msgstr "" +msgstr "Ralat Dalaman, kiraan bukan-sifar" #: elf32-m32r.c:1461 msgid "SDA relocation when _SDA_BASE_ not defined" @@ -2762,24 +2819,24 @@ msgid "%pB: instruction set mismatch with previous modules" msgstr "" #: elf32-m32r.c:3298 elf32-nds32.c:6899 -#, c-format +#, fuzzy, c-format msgid "private flags = %lx" -msgstr "" +msgstr "Persendirian" #: elf32-m32r.c:3303 -#, c-format +#, fuzzy, c-format msgid ": m32r instructions" -msgstr "" +msgstr "Arahan" #: elf32-m32r.c:3304 -#, c-format +#, fuzzy, c-format msgid ": m32rx instructions" -msgstr "" +msgstr "Arahan" #: elf32-m32r.c:3305 -#, c-format +#, fuzzy, c-format msgid ": m32r2 instructions" -msgstr "" +msgstr "Arahan" #: elf32-m68hc1x.c:1134 #, c-format @@ -2822,54 +2879,54 @@ msgid "%pB: linking files compiled for HCS12 with others compiled for HC12" msgstr "" #: elf32-m68hc1x.c:1417 elf32-xgate.c:497 -#, c-format +#, fuzzy, c-format msgid "[abi=32-bit int, " -msgstr "" +msgstr "32-bit" #: elf32-m68hc1x.c:1419 elf32-xgate.c:499 -#, c-format +#, fuzzy, c-format msgid "[abi=16-bit int, " -msgstr "" +msgstr "16-bit" #: elf32-m68hc1x.c:1422 elf32-xgate.c:502 -#, c-format +#, fuzzy, c-format msgid "64-bit double, " -msgstr "" +msgstr "64-bit" #: elf32-m68hc1x.c:1424 elf32-xgate.c:504 -#, c-format +#, fuzzy, c-format msgid "32-bit double, " -msgstr "" +msgstr "32-bit" #: elf32-m68hc1x.c:1427 #, c-format msgid "cpu=HC11]" -msgstr "" +msgstr "cpu=HC11]" #: elf32-m68hc1x.c:1429 #, c-format msgid "cpu=HCS12]" -msgstr "" +msgstr "cpu=HCS12]" #: elf32-m68hc1x.c:1431 #, c-format msgid "cpu=HC12]" -msgstr "" +msgstr "cpu=HC12]" #: elf32-m68hc1x.c:1434 -#, c-format +#, fuzzy, c-format msgid " [memory=bank-model]" -msgstr "" +msgstr "Bank" #: elf32-m68hc1x.c:1436 -#, c-format +#, fuzzy, c-format msgid " [memory=flat]" -msgstr "" +msgstr "Rata." #: elf32-m68hc1x.c:1439 -#, c-format +#, fuzzy, c-format msgid " [XGATE RAM offsetting]" -msgstr "" +msgstr "Kayu pelantak." #: elf32-m68k.c:1156 elf32-m68k.c:1164 elf32-ppc.c:3570 elf32-ppc.c:3578 #, c-format @@ -2877,7 +2934,6 @@ msgid "%pB uses hard float, %pB uses soft float" msgstr "" #: elf32-m68k.c:1279 elf32-m68k.c:1280 vms-alpha.c:8089 vms-alpha.c:8105 -#, fuzzy msgid "unknown" msgstr "tidak diketahui" @@ -2893,29 +2949,32 @@ msgstr "" #. Pacify gcc -Wall. #: elf32-mep.c:139 -#, c-format +#, fuzzy, c-format msgid "mep: no reloc for code %d" -msgstr "" +msgstr "%d kod kemunculan" #: elf32-mep.c:146 -#, c-format +#, fuzzy, c-format msgid "MeP: howto %d has type %d" -msgstr "" +msgstr "$$ untuk hukum pertengahan pada $%d bagi %s tidak mempunyai jenis yang diisytiharkan" #: elf32-mep.c:618 -#, c-format +#, fuzzy, c-format msgid "%pB and %pB are for different cores" -msgstr "" +msgstr "%1 PB" #: elf32-mep.c:637 -#, c-format +#, fuzzy, c-format msgid "%pB and %pB are for different configurations" -msgstr "" +msgstr "%1 PB" #: elf32-mep.c:675 -#, c-format +#, fuzzy, c-format msgid "private flags = 0x%lx" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: elf32-metag.c:1856 #, c-format @@ -2929,13 +2988,14 @@ msgstr "" #: elf32-microblaze.c:1590 elf32-tilepro.c:3018 elfxx-sparc.c:3442 #: elfxx-tilegx.c:3415 -#, c-format +#, fuzzy, c-format msgid "%pB: probably compiled without -fPIC?" -msgstr "" +msgstr "Boxes telah dikompil tanpa sokongan RDP" #: elf32-mips.c:1776 elf64-mips.c:3515 elfn32-mips.c:3334 +#, fuzzy msgid "literal relocation occurs for an external symbol" -msgstr "" +msgstr "rentetan literal %s tidak dikepilkan pada simbol" #: elf32-mips.c:1827 elf32-score.c:563 elf32-score7.c:465 elf64-mips.c:3558 #: elfn32-mips.c:3376 @@ -2996,9 +3056,9 @@ msgid "error: %pB can use the upper region for data, but %pB assumes data is exc msgstr "" #: elf32-nds32.c:3673 -#, c-format +#, fuzzy, c-format msgid "error: can't find symbol: %s" -msgstr "" +msgstr "Kami tidak menemui simbol \"%s\"" #: elf32-nds32.c:5572 #, c-format @@ -3051,14 +3111,14 @@ msgid "%pB: warning: incompatible elf-versions %s and %s" msgstr "" #: elf32-nds32.c:6905 -#, c-format +#, fuzzy, c-format msgid ": n1 instructions" -msgstr "" +msgstr "Arahan" #: elf32-nds32.c:6908 -#, c-format +#, fuzzy, c-format msgid ": n1h instructions" -msgstr "" +msgstr "Arahan" #: elf32-nds32.c:9357 #, c-format @@ -3086,9 +3146,9 @@ msgid "%pB: Cannot handle relocation value size of %d" msgstr "" #: elf32-or1k.c:1375 -#, c-format +#, fuzzy, c-format msgid "%pB: unknown relocation type %d" -msgstr "" +msgstr "Jenis objek tak diketahui %d\n" #: elf32-or1k.c:1429 #, c-format @@ -3116,9 +3176,9 @@ msgid "%pB: non-pic relocation against symbol %s" msgstr "" #: elf32-or1k.c:1686 -#, c-format +#, fuzzy, c-format msgid "%pB: support for local dynamic not implemented" -msgstr "" +msgstr "Fail yang mengandungi berkas sokongan akan dimuat turun ke sistem domestik." #: elf32-or1k.c:1865 #, c-format @@ -3126,9 +3186,9 @@ msgid "%pB: will not resolve runtime TLS relocation" msgstr "" #: elf32-or1k.c:2199 -#, c-format +#, fuzzy, c-format msgid "%pB: bad relocation section name `%s'" -msgstr "" +msgstr "Nama petimel teruk untuk tapisan: %s" #: elf32-or1k.c:3312 #, c-format @@ -3136,19 +3196,19 @@ msgid "%pB: %s flag mismatch with previous modules" msgstr "" #: elf32-ppc.c:990 elf64-ppc.c:1753 -#, c-format +#, fuzzy, c-format msgid "generic linker can't handle %s" -msgstr "" +msgstr "Tidak boleh mengendalikan lokasi \"%s:\"." #: elf32-ppc.c:1627 -#, c-format +#, fuzzy, c-format msgid "corrupt %s section in %pB" -msgstr "" +msgstr "%s Pb" #: elf32-ppc.c:1646 -#, c-format +#, fuzzy, c-format msgid "unable to read in %s section from %pB" -msgstr "" +msgstr "Tidak boleh baca dari: %s" #: elf32-ppc.c:1688 #, c-format @@ -3160,12 +3220,14 @@ msgid "failed to allocate space for new APUinfo section" msgstr "" #: elf32-ppc.c:1756 +#, fuzzy msgid "failed to compute new APUinfo section" -msgstr "" +msgstr "Anda tidak boleh menambah direktori baru pada seksyen ini." #: elf32-ppc.c:1759 +#, fuzzy msgid "failed to install new APUinfo section" -msgstr "" +msgstr "Gagal memasang: pengesahihan tidak sah" #: elf32-ppc.c:2867 #, c-format @@ -3223,8 +3285,9 @@ msgid "bss-plt forced due to %pB" msgstr "" #: elf32-ppc.c:4028 +#, fuzzy msgid "bss-plt forced by profiling" -msgstr "" +msgstr "Paksa Dihidupkan" #: elf32-ppc.c:4606 elf64-ppc.c:8516 msgid "%H: warning: %s unexpected insn %#x.\n" @@ -3254,8 +3317,9 @@ msgid "%P: %H: error: %s with unexpected instruction %x\n" msgstr "" #: elf32-ppc.c:7501 +#, fuzzy msgid "%H: fixup branch overflow\n" -msgstr "" +msgstr "Rekod melimpah" #: elf32-ppc.c:7541 elf32-ppc.c:7579 #, c-format @@ -3268,9 +3332,9 @@ msgid "%X%H: unsupported bss-plt -fPIC ifunc %s\n" msgstr "" #: elf32-ppc.c:7679 -#, c-format +#, fuzzy, c-format msgid "%pB: reloc %#x unsupported" -msgstr "" +msgstr "%1 PB" #: elf32-ppc.c:7962 #, c-format @@ -3305,9 +3369,9 @@ msgid "%X%P: %H: %s relocation unsupported for bss-plt\n" msgstr "" #: elf32-ppc.c:9025 -#, c-format +#, fuzzy, c-format msgid "%H: error: %s against `%s' not a multiple of %u\n" -msgstr "" +msgstr "Kod ralat %u ketika menyisip satu masukan: %s" #: elf32-ppc.c:9054 #, c-format @@ -3315,9 +3379,11 @@ msgid "%H: unresolvable %s relocation against symbol `%s'\n" msgstr "" #: elf32-ppc.c:9136 -#, c-format +#, fuzzy, c-format msgid "%H: %s reloc against `%s': error %d\n" msgstr "" +"\n" +"%02d h %02d j %02d min pada: %s" #: elf32-ppc.c:10018 msgid "%X%P: text relocations and GNU indirect functions will result in a segfault at runtime\n" @@ -3328,9 +3394,9 @@ msgid "%P: warning: text relocations and GNU indirect functions may result in a msgstr "" #: elf32-ppc.c:10067 -#, c-format +#, fuzzy, c-format msgid "%s not defined in linker created %pA" -msgstr "" +msgstr "Port %s/%s tidak dinyatakan" #: elf32-pru.c:582 elf32-pru.c:1477 #, c-format @@ -3338,32 +3404,39 @@ msgid "error: %pB: old incompatible object file detected" msgstr "" #: elf32-pru.c:931 +#, fuzzy msgid "relocation out of range" -msgstr "" +msgstr "Diluar Julat" #: elf32-pru.c:941 elf32-tic6x.c:2649 +#, fuzzy msgid "dangerous relocation" -msgstr "" +msgstr "Cuba Sekat _Tapak Sesawang Merbahaya" #: elf32-rl78.c:551 +#, fuzzy msgid "RL78 reloc stack overflow/underflow" -msgstr "" +msgstr "tindanan melimpah" #: elf32-rl78.c:555 +#, fuzzy msgid "RL78 reloc divide by zero" -msgstr "" +msgstr "Bahagi [/]" #: elf32-rl78.c:1069 +#, fuzzy msgid "warning: RL78_SYM reloc with an unknown symbol" -msgstr "" +msgstr "Jenis amaran tidak diketahui" #: elf32-rl78.c:1115 +#, fuzzy msgid "%H: %s out of range\n" -msgstr "" +msgstr "integer diluar julat: %s" #: elf32-rl78.c:1122 +#, fuzzy msgid "%H: relocation type %u is not supported\n" -msgstr "" +msgstr "%U pada %h" #: elf32-rl78.c:1134 msgid "%H: relocation %s returns an unrecognized value %x\n" @@ -3384,14 +3457,14 @@ msgid "RL78 merge conflict: cannot link 32-bit and 64-bit objects together" msgstr "" #: elf32-rl78.c:1250 elf32-rl78.c:1254 -#, c-format +#, fuzzy, c-format msgid "- %pB is 64-bit, %pB is not" -msgstr "" +msgstr "%1 PB" #: elf32-rl78.c:1281 -#, c-format +#, fuzzy, c-format msgid " [64-bit doubles]" -msgstr "" +msgstr "64-bit" #: elf32-rx.c:618 #, c-format @@ -3432,14 +3505,14 @@ msgid "there is a conflict merging the ELF header flags from %pB" msgstr "" #: elf32-rx.c:3188 -#, c-format +#, fuzzy, c-format msgid " the input file's flags: %s" -msgstr "" +msgstr "%s: fail input adalah fail output" #: elf32-rx.c:3190 -#, c-format +#, fuzzy, c-format msgid " the output file's flags: %s" -msgstr "" +msgstr "%s: fail input adalah fail output" #: elf32-rx.c:3797 #, c-format @@ -3461,8 +3534,9 @@ msgid "not enough GOT space for local GOT entries" msgstr "" #: elf32-score.c:2737 +#, fuzzy msgid "address not word aligned" -msgstr "" +msgstr "_Biar Dijajar" #: elf32-score.c:2818 elf32-score7.c:2625 #, c-format @@ -3485,9 +3559,9 @@ msgid " [pic]" msgstr "" #: elf32-score.c:3991 elf32-score7.c:3798 -#, c-format +#, fuzzy, c-format msgid " [fix dep]" -msgstr "" +msgstr "A-DEP" #: elf32-score.c:4038 elf32-score7.c:3845 #, c-format @@ -3688,37 +3762,39 @@ msgid "%pA:0x%v lrlive .brinfo (%u) differs from analysis (%u)\n" msgstr "" #: elf32-spu.c:1908 -#, c-format +#, fuzzy, c-format msgid "%pB is not allowed to define %s" -msgstr "" +msgstr "PB" #: elf32-spu.c:1916 -#, c-format +#, fuzzy, c-format msgid "you are not allowed to define %s in a script" -msgstr "" +msgstr "pembolehubah %%define %s ditakrif semula" #: elf32-spu.c:1950 -#, c-format +#, fuzzy, c-format msgid "%s in overlay section" -msgstr "" +msgstr "Tiada seksyen sebegitu: %s" #: elf32-spu.c:1979 +#, fuzzy msgid "overlay stub relocation overflow" -msgstr "" +msgstr "Stab" #: elf32-spu.c:1988 elf64-ppc.c:15362 +#, fuzzy msgid "stubs don't match calculated size" -msgstr "" +msgstr "Jika pola diatas tidak sepadan:" #: elf32-spu.c:2571 -#, c-format +#, fuzzy, c-format msgid "warning: %s overlaps %s\n" -msgstr "" +msgstr "%s: Amaran: Tak dapat %s" #: elf32-spu.c:2587 -#, c-format +#, fuzzy, c-format msgid "warning: %s exceeds section size\n" -msgstr "" +msgstr "Bahagian" #: elf32-spu.c:2619 #, c-format @@ -3741,14 +3817,14 @@ msgid " calls:\n" msgstr "Tiada panggilan" #: elf32-spu.c:4338 -#, c-format +#, fuzzy, c-format msgid "%s duplicated in %s\n" -msgstr "" +msgstr "\"%s\" diduplikasi" #: elf32-spu.c:4342 -#, c-format +#, fuzzy, c-format msgid "%s duplicated\n" -msgstr "" +msgstr "Satu unsur tunggal (%s) mempunyai pendua." #: elf32-spu.c:4349 msgid "sorry, no support for duplicate object files in auto-overlay script\n" @@ -3791,8 +3867,9 @@ msgid "%F%P: can not build overlay stubs: %E\n" msgstr "" #: elf32-spu.c:4811 +#, fuzzy msgid "fatal error while creating .fixup" -msgstr "" +msgstr "Ralat ketika mencipta pautan ke %s." #: elf32-spu.c:5047 #, c-format @@ -3855,9 +3932,9 @@ msgstr "" #: elf32-tilepro.c:3624 elfxx-tilegx.c:4017 elfxx-x86.c:2773 #: elfnn-aarch64.c:10343 elfnn-kvx.c:4628 elfnn-loongarch.c:6062 #: elfnn-riscv.c:3615 -#, c-format +#, fuzzy, c-format msgid "discarded output section: `%pA'" -msgstr "" +msgstr "Bahagian" #: elf32-v850.c:152 #, c-format @@ -3885,8 +3962,9 @@ msgid "variable `%s' cannot be in both zero and tiny data regions simultaneously msgstr "" #: elf32-v850.c:466 +#, fuzzy msgid "failed to find previous HI16 reloc" -msgstr "" +msgstr "Cari terdahulu" #: elf32-v850.c:2309 msgid "could not locate special linker symbol __gp" @@ -3916,9 +3994,9 @@ msgid "error: %pB uses FPU-3.0 but %pB only supports FPU-2.0" msgstr "" #: elf32-v850.c:2601 -#, c-format +#, fuzzy, c-format msgid " alignment of 8-byte entities: " -msgstr "" +msgstr "Salin semula entiti sedia ada" #: elf32-v850.c:2604 #, c-format @@ -3937,9 +4015,9 @@ msgstr "tidak ditetapkan" #: elf32-v850.c:2607 elf32-v850.c:2619 elf32-v850.c:2631 elf32-v850.c:2642 #: elf32-v850.c:2653 elf32-v850.c:2664 -#, c-format +#, fuzzy, c-format msgid "unknown: %x" -msgstr "" +msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)" #: elf32-v850.c:2613 #, c-format @@ -3957,9 +4035,9 @@ msgid "8-bytes" msgstr "" #: elf32-v850.c:2625 -#, c-format +#, fuzzy, c-format msgid " FPU support required: " -msgstr "" +msgstr "Periksa sama ada alatan sokongan yang diperlukan tersedia" #: elf32-v850.c:2628 #, c-format @@ -3977,9 +4055,9 @@ msgid "none" msgstr "tiada" #: elf32-v850.c:2637 -#, c-format +#, fuzzy, c-format msgid "SIMD use: " -msgstr "" +msgstr "_Guna sebagaimana ia" #: elf32-v850.c:2640 elf32-v850.c:2651 elf32-v850.c:2662 #, c-format @@ -3992,14 +4070,16 @@ msgid "no" msgstr "" #: elf32-v850.c:2648 -#, c-format +#, fuzzy, c-format msgid "CACHE use: " msgstr "" +"Tiada fail indeks tema dalam \"%s\".\n" +"Jika anda pasti mahu mencipta satu cache ikon di sini, guna -ignore-theme-index.\n" #: elf32-v850.c:2659 -#, c-format +#, fuzzy, c-format msgid "MMU use: " -msgstr "" +msgstr "Benarkan MMU" #: elf32-v850.c:2826 elf32-v850.c:2882 #, c-format @@ -4008,49 +4088,49 @@ msgstr "" #. xgettext:c-format. #: elf32-v850.c:2900 -#, c-format +#, fuzzy, c-format msgid "private flags = %lx: " -msgstr "" +msgstr "Persendirian" #: elf32-v850.c:2905 -#, c-format +#, fuzzy, c-format msgid "unknown v850 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2907 -#, c-format +#, fuzzy, c-format msgid "v850 E3 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2909 elf32-v850.c:2916 -#, c-format +#, fuzzy, c-format msgid "v850 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2917 -#, c-format +#, fuzzy, c-format msgid "v850e architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2918 -#, c-format +#, fuzzy, c-format msgid "v850e1 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2919 -#, c-format +#, fuzzy, c-format msgid "v850e2 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2920 -#, c-format +#, fuzzy, c-format msgid "v850e2v3 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:2921 -#, c-format +#, fuzzy, c-format msgid "v850e3v5 architecture" -msgstr "" +msgstr "S_eni Bina" #: elf32-v850.c:3595 elf32-v850.c:3834 #, c-format @@ -4078,14 +4158,14 @@ msgid " [nonpic]" msgstr "" #: elf32-vax.c:540 -#, c-format +#, fuzzy, c-format msgid " [d-float]" -msgstr "" +msgstr "apung" #: elf32-vax.c:543 -#, c-format +#, fuzzy, c-format msgid " [g-float]" -msgstr "" +msgstr "apung" #: elf32-vax.c:629 #, c-format @@ -4113,9 +4193,9 @@ msgid "%pB: compiled %s -mtune=%s and linked with modules compiled %s -mtune=%s" msgstr "" #: elf32-xgate.c:506 -#, c-format +#, fuzzy, c-format msgid "cpu=XGATE]" -msgstr "" +msgstr "% CPU" #: elf32-xgate.c:508 #, c-format @@ -4123,13 +4203,14 @@ msgid "error reading cpu type from elf private data" msgstr "" #: elf32-xstormy16.c:457 elf64-ia64-vms.c:2076 elfnn-ia64.c:2345 +#, fuzzy msgid "non-zero addend in @fptr reloc" -msgstr "" +msgstr "Ralat Dalaman, kiraan bukan-sifar" #: elf32-xtensa.c:996 -#, c-format +#, fuzzy, c-format msgid "%pB(%pA): invalid property table" -msgstr "" +msgstr "Jadual pemampasan paparan tidak sah" #: elf32-xtensa.c:2730 #, c-format @@ -4137,8 +4218,9 @@ msgid "%pB(%pA+%#<PRIx64>): relocation offset out of range (size=%#<PRIx64>)" msgstr "" #: elf32-xtensa.c:2813 elf32-xtensa.c:2936 +#, fuzzy msgid "dynamic relocation in read-only section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: elf32-xtensa.c:2913 msgid "TLS relocation invalid without dynamic sections" @@ -4154,8 +4236,9 @@ msgid "%pB: incompatible machine type; output is 0x%x; input is 0x%x" msgstr "" #: elf32-xtensa.c:4731 elf32-xtensa.c:4739 +#, fuzzy msgid "attempt to convert L32R/CALLX to CALL failed" -msgstr "" +msgstr "Percubaan dailan telah gagal" #: elf32-xtensa.c:6567 elf32-xtensa.c:6646 elf32-xtensa.c:8072 #, c-format @@ -4168,12 +4251,14 @@ msgid "%pB(%pA+%#<PRIx64>): could not decode instruction for XTENSA_ASM_SIMPLIFY msgstr "" #: elf32-xtensa.c:9671 +#, fuzzy msgid "invalid relocation address" -msgstr "" +msgstr "Alamat IP tidak sah" #: elf32-xtensa.c:9762 +#, fuzzy msgid "overflow after relaxation" -msgstr "" +msgstr "nombor baris melimpah" #: elf32-xtensa.c:10908 #, c-format @@ -4186,14 +4271,14 @@ msgid "%pB: unsupported bfd mach %#lx" msgstr "" #: elf32-z80.c:518 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported mach %#x" -msgstr "" +msgstr "%1 PB" #: elf32-z80.c:546 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported arch %#x" -msgstr "" +msgstr "PB" #: elf64-alpha.c:472 msgid "GPDISP relocation did not find ldah and lda instructions" @@ -4225,13 +4310,12 @@ msgid "%pB: gp-relative relocation against dynamic symbol %s" msgstr "" #: elf64-alpha.c:4438 -#, c-format +#, fuzzy, c-format msgid "%pB: change in gp: BRSGP %s" -msgstr "" +msgstr "%s Pb" #: elf64-alpha.c:4463 mach-o.c:625 elfnn-loongarch.c:908 elfnn-riscv.c:724 #: elfnn-riscv.c:929 elfnn-riscv.c:971 -#, fuzzy msgid "<unknown>" msgstr "<tidak diketahui>" @@ -4262,8 +4346,9 @@ msgstr "" #. Only if it's not an unresolved symbol. #: elf64-bpf.c:344 +#, fuzzy msgid "internal error: relocation not supported" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elf64-gen.c:71 #, c-format @@ -4315,14 +4400,14 @@ msgid "%pB: linking non-pic code in a position independent executable" msgstr "" #: elf64-ia64-vms.c:3783 elfnn-ia64.c:4223 -#, c-format +#, fuzzy, c-format msgid "%pB: @internal branch to dynamic symbol %s" -msgstr "" +msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik" #: elf64-ia64-vms.c:3786 elfnn-ia64.c:4226 -#, c-format +#, fuzzy, c-format msgid "%pB: speculation fixup to dynamic symbol %s" -msgstr "" +msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik" #: elf64-ia64-vms.c:3789 elfnn-ia64.c:4229 #, c-format @@ -4330,8 +4415,9 @@ msgid "%pB: @pcrel relocation against dynamic symbol %s" msgstr "" #: elf64-ia64-vms.c:3913 elfnn-ia64.c:4426 +#, fuzzy msgid "unsupported reloc" -msgstr "" +msgstr " (tidak disokong)" #: elf64-ia64-vms.c:3950 elfnn-ia64.c:4464 #, c-format @@ -4439,8 +4525,11 @@ msgid "%pB: error: multiple definition of `%s'; start of %s is set in a earlier msgstr "" #: elf64-mmix.c:2208 +#, fuzzy msgid "register section has contents\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: elf64-mmix.c:2398 #, c-format @@ -4448,9 +4537,9 @@ msgid "internal inconsistency: remaining %lu != max %lu; please report this bug" msgstr "" #: elf64-ppc.c:1361 -#, c-format +#, fuzzy, c-format msgid "warning: %s should be used rather than %s" -msgstr "" +msgstr "Baca jalur %s berbanding %s!" #: elf64-ppc.c:4302 #, c-format @@ -4468,8 +4557,9 @@ msgid "%H: %s reloc unsupported in shared libraries and PIEs\n" msgstr "" #: elf64-ppc.c:5277 +#, fuzzy msgid "%H: %s reloc unsupported here\n" -msgstr "" +msgstr "%s berada di sini" #: elf64-ppc.c:5500 #, c-format @@ -4482,23 +4572,23 @@ msgid "%pB: ABI version %ld is not compatible with ABI version %ld output" msgstr "" #: elf64-ppc.c:5535 -#, c-format +#, fuzzy, c-format msgid " [abiv%ld]" -msgstr "" +msgstr "%ld:%02ld" #: elf64-ppc.c:6844 msgid "%P: copy reloc against `%pT' requires lazy plt linking; avoid setting LD_BIND_NOW=1 or upgrade gcc\n" msgstr "" #: elf64-ppc.c:7111 -#, c-format +#, fuzzy, c-format msgid "%pB: undefined symbol on R_PPC64_TOCSAVE relocation" -msgstr "" +msgstr "simbol permulaan %s tidak ditakrifkan" #: elf64-ppc.c:7362 -#, c-format +#, fuzzy, c-format msgid "dynreloc miscount for %pB, section %pA" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: elf64-ppc.c:7453 #, c-format @@ -4535,9 +4625,9 @@ msgid "%H __tls_get_addr lost arg, TLS optimization disabled\n" msgstr "" #: elf64-ppc.c:8745 elf64-ppc.c:9461 -#, c-format +#, fuzzy, c-format msgid "%s defined on removed toc entry" -msgstr "" +msgstr "Sistem mungkin tidak berfungsi dengan baik jika masukan ini diubah suai atau dibuang." #: elf64-ppc.c:9418 #, c-format @@ -4550,9 +4640,9 @@ msgid "%H: got/toc optimization is not supported for %s instruction\n" msgstr "" #: elf64-ppc.c:10534 -#, c-format +#, fuzzy, c-format msgid "warning: discarding dynamic section %s" -msgstr "" +msgstr "Bahagian" #: elf64-ppc.c:11687 msgid "%P: cannot find opd entry toc for `%pT'\n" @@ -4564,9 +4654,9 @@ msgid "long branch stub `%s' offset overflow" msgstr "" #: elf64-ppc.c:11864 -#, c-format +#, fuzzy, c-format msgid "can't find branch stub `%s'" -msgstr "" +msgstr "Gagal mencari posisi semasa dalam fail '%s'" #: elf64-ppc.c:11925 elf64-ppc.c:12177 elf64-ppc.c:14742 #, c-format @@ -4574,9 +4664,9 @@ msgid "%P: linkage table error against `%pT'\n" msgstr "" #: elf64-ppc.c:12376 -#, c-format +#, fuzzy, c-format msgid "can't build branch stub `%s'" -msgstr "" +msgstr "Gabung %s ke dalam cabang %s" #: elf64-ppc.c:13407 #, c-format @@ -4593,10 +4683,10 @@ msgid "%s offset too large for .eh_frame sdata4 encoding" msgstr "" #: elf64-ppc.c:15370 -#, c-format +#, fuzzy, c-format msgid "linker stubs in %u group" msgid_plural "linker stubs in %u groups" -msgstr[0] "" +msgstr[0] "Pemaut" #: elf64-ppc.c:15377 #, c-format @@ -4609,9 +4699,9 @@ msgid "" msgstr "" #: elf64-ppc.c:15759 -#, c-format +#, fuzzy, c-format msgid "%H: %s used with TLS symbol `%pT'\n" -msgstr "" +msgstr "simbol %s digunakan lebih dari sekali sebagai rentetan perkataan" #: elf64-ppc.c:15761 #, c-format @@ -4629,9 +4719,9 @@ msgid "%H: call to `%pT' lacks nop, can't restore toc; (toc save/adjust stub)\n" msgstr "" #: elf64-ppc.c:17202 -#, c-format +#, fuzzy, c-format msgid "%H: %s against %pT is not supported\n" -msgstr "" +msgstr "%s pt" #: elf64-ppc.c:17478 #, c-format @@ -4644,24 +4734,26 @@ msgid "%X%P: %pB: %s against %pT is not supported by glibc as a dynamic relocati msgstr "" #: elf64-ppc.c:17620 -#, c-format +#, fuzzy, c-format msgid "%P: %pB: %s is not supported for `%pT'\n" -msgstr "" +msgstr "%s Pb" #: elf64-ppc.c:17889 -#, c-format +#, fuzzy, c-format msgid "%H: error: %s not a multiple of %u\n" -msgstr "" +msgstr "Kod ralat %u ketika mengesahihkan: %s" #: elf64-ppc.c:17912 -#, c-format +#, fuzzy, c-format msgid "%H: unresolvable %s against `%pT'\n" -msgstr "" +msgstr "%s pt" #: elf64-ppc.c:18057 -#, c-format +#, fuzzy, c-format msgid "%H: %s against `%pT': error %d\n" msgstr "" +"\n" +"%02d h %02d j %02d min pada: %s" #: elf64-s390.c:2490 #, c-format @@ -4704,16 +4796,19 @@ msgid "%pB: linking UltraSPARC specific with HAL specific code" msgstr "" #: elf64-x86-64.c:1660 +#, fuzzy msgid "hidden symbol " -msgstr "" +msgstr "Tersembunyi" #: elf64-x86-64.c:1663 +#, fuzzy msgid "internal symbol " -msgstr "" +msgstr "Dalaman" #: elf64-x86-64.c:1666 elf64-x86-64.c:1670 +#, fuzzy msgid "protected symbol " -msgstr "" +msgstr "Dilindungi" #: elf64-x86-64.c:1672 #, fuzzy @@ -4726,20 +4821,23 @@ msgid "undefined " msgstr "Tidak ditakrif" #: elf64-x86-64.c:1688 elfnn-loongarch.c:892 +#, fuzzy msgid "a shared object" -msgstr "" +msgstr "objek memori terkongsi" #: elf64-x86-64.c:1690 msgid "; recompile with -fPIC" msgstr "" #: elf64-x86-64.c:1695 elfnn-loongarch.c:898 +#, fuzzy msgid "a PIE object" -msgstr "" +msgstr "Pai" #: elf64-x86-64.c:1697 elfnn-loongarch.c:900 +#, fuzzy msgid "a PDE object" -msgstr "" +msgstr "Tiada objek sebegitu" #: elf64-x86-64.c:1699 msgid "; recompile with -fPIE" @@ -4865,9 +4963,9 @@ msgid "%pB: unexpected redefinition of indirect versioned symbol `%s'" msgstr "" #: elflink.c:2681 -#, c-format +#, fuzzy, c-format msgid "%pB: version node not found for symbol %s" -msgstr "" +msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s" #: elflink.c:2780 #, c-format @@ -4917,9 +5015,9 @@ msgid "%pB: %s local symbol at index %lu (>= sh_info of %lu)" msgstr "" #: elflink.c:5137 -#, c-format +#, fuzzy, c-format msgid "%pB: not enough version information" -msgstr "" +msgstr "Maklumat versi" #: elflink.c:5175 #, c-format @@ -4927,9 +5025,9 @@ msgid "%pB: %s: invalid version %u (max %d)" msgstr "" #: elflink.c:5212 -#, c-format +#, fuzzy, c-format msgid "%pB: %s: invalid needed version %d" -msgstr "" +msgstr "keperluan versi tidak sah: %s" #: elflink.c:5498 #, c-format @@ -4945,24 +5043,24 @@ msgid "warning: NOTE: size discrepancies can cause real problems. Investigation msgstr "" #: elflink.c:5670 -#, c-format +#, fuzzy, c-format msgid "%pB: undefined reference to symbol '%s'" -msgstr "" +msgstr "simbol permulaan %s tidak ditakrifkan" #: elflink.c:6759 -#, c-format +#, fuzzy, c-format msgid "%pB: stack size specified and %s set" -msgstr "" +msgstr "Fail %s tidak wujud dan tiada saiz dinyatakan.\n" #: elflink.c:6763 -#, c-format +#, fuzzy, c-format msgid "%pB: %s not absolute" -msgstr "" +msgstr "PB" #: elflink.c:6975 -#, c-format +#, fuzzy, c-format msgid "%s: undefined version: %s" -msgstr "" +msgstr "%s: pembolehubah %s %%define tidak ditakrifkan" #: elflink.c:7364 msgid "error: creating an executable stack because of -z execstack command line option" @@ -5002,18 +5100,18 @@ msgid "%pB: .preinit_array section is not allowed in DSO" msgstr "" #: elflink.c:9218 -#, c-format +#, fuzzy, c-format msgid "undefined %s reference in complex symbol: %s" -msgstr "" +msgstr "simbol permulaan %s tidak ditakrifkan" #: elflink.c:9381 elflink.c:9389 msgid "division by zero" msgstr "dibahagi dengan sifar" #: elflink.c:9403 -#, c-format +#, fuzzy, c-format msgid "unknown operator '%c' in complex symbol" -msgstr "" +msgstr "Pilihan tidak diketahui '-%c'\n" #. PR 21524: Let the user know if a symbol was removed by garbage collection. #: elflink.c:9739 @@ -5039,13 +5137,14 @@ msgid "%pB: unable to sort relocs - they are of an unknown size" msgstr "" #: elflink.c:10136 +#, fuzzy msgid "not enough memory to sort relocations" -msgstr "" +msgstr "GIF: memori tidak mencukupi." #: elflink.c:10470 -#, c-format +#, fuzzy, c-format msgid "%pB: too many sections: %d (>= %d)" -msgstr "" +msgstr "Terlalu banyak titik henti. Maksimum ialah %d." #: elflink.c:10746 #, c-format @@ -5068,19 +5167,19 @@ msgid "%pB: could not find output section %pA for input section %pA" msgstr "" #: elflink.c:11003 -#, c-format +#, fuzzy, c-format msgid "%pB: protected symbol `%s' isn't defined" -msgstr "" +msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum" #: elflink.c:11006 -#, c-format +#, fuzzy, c-format msgid "%pB: internal symbol `%s' isn't defined" -msgstr "" +msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum" #: elflink.c:11009 -#, c-format +#, fuzzy, c-format msgid "%pB: hidden symbol `%s' isn't defined" -msgstr "" +msgstr "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai hukum" #: elflink.c:11041 #, c-format @@ -5098,28 +5197,28 @@ msgid "error: %pB: size of section %pA is not multiple of address size" msgstr "" #: elflink.c:12473 -#, c-format +#, fuzzy, c-format msgid "%pB: no symbol found for import library" -msgstr "" +msgstr "Pustaka \"%1\" tidak dijumpai" #: elflink.c:13078 msgid "%F%P: %pB: failed to finish relative relocations\n" msgstr "" #: elflink.c:13155 -#, c-format +#, fuzzy, c-format msgid "%pB: file class %s incompatible with %s" -msgstr "" +msgstr "%s: tidak sepadan dengan fail gmon pertama\n" #: elflink.c:13377 -#, c-format +#, fuzzy, c-format msgid "%pB: failed to generate import library" -msgstr "" +msgstr "Pustaka yang digunakan untuk menjana lakaran kenit" #: elflink.c:13538 -#, c-format +#, fuzzy, c-format msgid "warning: %s section has zero size" -msgstr "" +msgstr "Imej GIF yang terhasil bersaiz sifar" #: elflink.c:13586 #, c-format @@ -5161,9 +5260,9 @@ msgid "%pB: section '%pA': corrupt VTENTRY entry" msgstr "" #: elflink.c:14922 -#, c-format +#, fuzzy, c-format msgid "unrecognized INPUT_SECTION_FLAG %s\n" -msgstr "" +msgstr "%s: pilihan '--%s' tidak dikenali\n" #: elflink.c:15703 #, c-format @@ -5245,9 +5344,9 @@ msgid "%X%pB: error: GCS is required by -z gcs, but this input object file lacks msgstr "" #: elfxx-loongarch.c:1911 -#, c-format +#, fuzzy, c-format msgid "%pB: unsupported relocation type %s" -msgstr "" +msgstr "%s Pb" #: elfxx-loongarch.c:1939 #, c-format @@ -5260,13 +5359,14 @@ msgid "%pB: relocation %s right shift %d error 0x%lx" msgstr "" #: elfxx-loongarch.c:2032 -#, c-format +#, fuzzy, c-format msgid "%pB: relocation %s overflow 0x%lx" -msgstr "" +msgstr "[find_call] %s: 0x%lx ke 0x%lx\n" #: elfxx-mips.c:1534 +#, fuzzy msgid "static procedure (no name)" -msgstr "" +msgstr "nama prosedur tiada" #: elfxx-mips.c:5849 msgid "MIPS16 and microMIPS functions cannot call each other" @@ -5299,9 +5399,12 @@ msgid "%pB: warning: bad `%s' option size %u smaller than its header" msgstr "" #: elfxx-mips.c:7635 -#, c-format +#, fuzzy, c-format msgid "%pB: warning: truncated `%s' option" msgstr "" +"Amaran mengenai %(cleaner)s - %(option)s:\n" +"\n" +"%(warning)s" #: elfxx-mips.c:8453 elfxx-mips.c:8579 #, c-format @@ -5334,14 +5437,14 @@ msgid "IFUNC symbol %s in dynamic symbol table - IFUNCS are not supported" msgstr "" #: elfxx-mips.c:9383 -#, c-format +#, fuzzy, c-format msgid "non-dynamic symbol %s in dynamic symbol table" -msgstr "" +msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik" #: elfxx-mips.c:9603 -#, c-format +#, fuzzy, c-format msgid "non-dynamic relocations refer to dynamic symbol %s" -msgstr "" +msgstr "Gagal menemui simbol '%s' dalam pustaka dinamik" #: elfxx-mips.c:10523 #, c-format @@ -5397,14 +5500,14 @@ msgid "%X%P: %pB(%pA): error: relocation for offset %V has no value\n" msgstr "" #: elfxx-mips.c:14729 -#, c-format +#, fuzzy, c-format msgid "%pB: unknown architecture %s" -msgstr "" +msgstr "%s: -c tidak disokong pada rekabentuk %s\n" #: elfxx-mips.c:15257 -#, c-format +#, fuzzy, c-format msgid "%pB: illegal section name `%pA'" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: elfxx-mips.c:15534 #, c-format @@ -5467,14 +5570,14 @@ msgid "warning: %pB uses unknown MSA ABI %d (set by %pB), %pB uses unknown MSA A msgstr "" #: elfxx-mips.c:15894 -#, c-format +#, fuzzy, c-format msgid "%pB: endianness incompatible with that of the selected emulation" -msgstr "" +msgstr "Kekunci DSA yang diberikan tidak serasi dengan protokol TLS yang dipilih." #: elfxx-mips.c:15908 -#, c-format +#, fuzzy, c-format msgid "%pB: ABI is incompatible with that of the selected emulation" -msgstr "" +msgstr "Kekunci DSA yang diberikan tidak serasi dengan protokol TLS yang dipilih." #: elfxx-mips.c:15961 #, c-format @@ -5506,34 +5609,32 @@ msgid "-mips32r2 -mfp64 (12 callee-saved)" msgstr "" #: elfxx-mips.c:16234 elfxx-mips.c:16245 -#, fuzzy msgid "None" msgstr "Tiada" #: elfxx-mips.c:16236 elfxx-mips.c:16305 -#, fuzzy msgid "Unknown" msgstr "Tidak Diketahui" #: elfxx-mips.c:16316 -#, c-format +#, fuzzy, c-format msgid "Hard or soft float\n" -msgstr "" +msgstr "apung" #: elfxx-mips.c:16319 -#, c-format +#, fuzzy, c-format msgid "Hard float (double precision)\n" -msgstr "" +msgstr "Kepersisan" #: elfxx-mips.c:16322 -#, c-format +#, fuzzy, c-format msgid "Hard float (single precision)\n" -msgstr "" +msgstr "Volum audio jitu tunggal" #: elfxx-mips.c:16325 -#, c-format +#, fuzzy, c-format msgid "Soft float\n" -msgstr "" +msgstr "Soft" #: elfxx-mips.c:16328 #, c-format @@ -5576,9 +5677,9 @@ msgid " [abi=EABI64]" msgstr "" #: elfxx-mips.c:16377 -#, c-format +#, fuzzy, c-format msgid " [abi unknown]" -msgstr "" +msgstr "Tidak diketahui " #: elfxx-mips.c:16379 #, c-format @@ -5588,17 +5689,17 @@ msgstr "" #: elfxx-mips.c:16381 #, c-format msgid " [abi=64]" -msgstr "" +msgstr " [abi=64]" #: elfxx-mips.c:16383 -#, c-format +#, fuzzy, c-format msgid " [no abi set]" -msgstr "" +msgstr "tidak ditetapkan" #: elfxx-mips.c:16408 -#, c-format +#, fuzzy, c-format msgid " [unknown ISA]" -msgstr "" +msgstr "Tidak diketahui " #: elfxx-mips.c:16428 #, c-format @@ -5631,9 +5732,9 @@ msgid "%s: invalid prefixed ISA extension `%s' ends with <number>p" msgstr "" #: elfxx-riscv.c:2023 -#, c-format +#, fuzzy, c-format msgid "%s: unknown prefixed ISA extension `%s'" -msgstr "" +msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n" #: elfxx-riscv.c:2047 #, c-format @@ -5641,31 +5742,32 @@ msgid "%s: prefixed ISA extension must separate with _" msgstr "" #: elfxx-riscv.c:2087 -#, c-format +#, fuzzy, c-format msgid "rv%de does not support the `h' extension" -msgstr "" +msgstr "Sambungan tidak menyokong versi shell" #: elfxx-riscv.c:2095 -#, c-format +#, fuzzy, c-format msgid "rv%d does not support the `q' extension" -msgstr "" +msgstr "Sambungan tidak menyokong versi shell" #: elfxx-riscv.c:2102 msgid "zcmp' is incompatible with `d/zcd' extension" msgstr "" #: elfxx-riscv.c:2109 -#, c-format +#, fuzzy, c-format msgid "rv%d does not support the `zcf' extension" -msgstr "" +msgstr "Sambungan tidak menyokong versi shell" #: elfxx-riscv.c:2116 msgid "`zfinx' is conflict with the `f/d/q/zfh/zfhmin' extension" msgstr "" #: elfxx-riscv.c:2123 +#, fuzzy msgid "`xtheadvector' is conflict with the `v' extension" -msgstr "" +msgstr "V" #: elfxx-riscv.c:2144 msgid "zvl*b extensions need to enable either `v' or `zve' extension" @@ -5692,62 +5794,73 @@ msgid "%sinvalid ISA extension ends with <number>p in %s `%s'" msgstr "" #: elfxx-riscv.c:2494 -#, c-format +#, fuzzy, c-format msgid "%sunknown ISA extension `%s' in %s `%s'" -msgstr "" +msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n" #: elfxx-riscv.c:2506 -#, c-format +#, fuzzy, c-format msgid "%scannot + or - base extension `%s' in %s `%s'" -msgstr "" +msgstr "%s\t\tSambungan tidak diketahui %s (%s):\n" #: elfxx-riscv.c:2817 elfxx-riscv.c:3112 +#, fuzzy msgid "internal: unreachable INSN_CLASS_*" -msgstr "" +msgstr "KELAS" #: elfxx-riscv.c:2851 msgid "zicfiss' and `zcmop" msgstr "" #: elfxx-riscv.c:2865 +#, fuzzy msgid "zihintntl' and `c', or `zihintntl' and `zca" -msgstr "" +msgstr "_C/C++" #: elfxx-riscv.c:2870 elfxx-riscv.c:2896 +#, fuzzy msgid "c' or `zca" -msgstr "" +msgstr "_C/C++" #: elfxx-riscv.c:2878 +#, fuzzy msgid "m' or `zmmul" -msgstr "" +msgstr "%a dari %m" #: elfxx-riscv.c:2902 +#, fuzzy msgid "f' and `c', or `f' and `zcf" -msgstr "" +msgstr "F" #: elfxx-riscv.c:2907 +#, fuzzy msgid "c' or `zcf" -msgstr "" +msgstr "_C/C++" #: elfxx-riscv.c:2913 +#, fuzzy msgid "d' and `c', or `d' and `zcd" -msgstr "" +msgstr "Volum %d%c (disenyapkan)" #: elfxx-riscv.c:2918 +#, fuzzy msgid "c' or `zcd" -msgstr "" +msgstr "_C/C++" #: elfxx-riscv.c:2920 +#, fuzzy msgid "f' or `zfinx" -msgstr "" +msgstr "%.f%%" #: elfxx-riscv.c:2922 +#, fuzzy msgid "d' or `zdinx" -msgstr "" +msgstr "%d × %d" #: elfxx-riscv.c:2924 +#, fuzzy msgid "q' or `zqinx" -msgstr "" +msgstr "\t\tQ: " #: elfxx-riscv.c:2926 msgid "zfh' or `zhinx" @@ -5758,20 +5871,24 @@ msgid "zfhmin' or `zhinxmin" msgstr "" #: elfxx-riscv.c:2941 +#, fuzzy msgid "zfhmin' and `d', or `zhinxmin' and `zdinx" -msgstr "" +msgstr "%d × %d" #: elfxx-riscv.c:2952 +#, fuzzy msgid "zfhmin' and `q', or `zhinxmin' and `zqinx" -msgstr "" +msgstr " q, Q, Esc Keluar" #: elfxx-riscv.c:2960 +#, fuzzy msgid "d' and `zfa" -msgstr "" +msgstr "%d × %d" #: elfxx-riscv.c:2968 +#, fuzzy msgid "q' and `zfa" -msgstr "" +msgstr "\t\tQ: " #: elfxx-riscv.c:2976 msgid "zfh' and `zfa" @@ -5798,12 +5915,14 @@ msgid "zknd' or `zkne" msgstr "" #: elfxx-riscv.c:3023 +#, fuzzy msgid "v' or `zve64x' or `zve32x" -msgstr "" +msgstr "Ctrl+V" #: elfxx-riscv.c:3025 +#, fuzzy msgid "v' or `zve64d' or `zve64f' or `zve32f" -msgstr "" +msgstr "Ctrl+V" #: elfxx-riscv.c:3027 msgid "zvbb" @@ -5846,15 +5965,15 @@ msgid "zcb' and `zbb" msgstr "" #: elfxx-riscv.c:3053 +#, fuzzy msgid "zcb' and `zmmul', or `zcb' and `m" -msgstr "" +msgstr "Mod:" #: elfxx-riscv.c:3061 msgid "smctr' or `ssctr" msgstr "" #: elfxx-riscv.c:3065 -#, fuzzy msgid "h" msgstr "h" @@ -5864,9 +5983,9 @@ msgid "%pB: relocation %s against STT_GNU_IFUNC symbol `%s' isn't handled by %s" msgstr "" #: elfxx-tilegx.c:4126 -#, c-format +#, fuzzy, c-format msgid "%pB: cannot link together %s and %s objects" -msgstr "" +msgstr "%s: Tak dapat memaut keras ke %s" #: elfxx-x86.c:534 elfxx-x86.c:3597 #, c-format @@ -5956,47 +6075,54 @@ msgid "error: %pB: <corrupt x86 property (0x%x) size: 0x%x>" msgstr "" #: elfxx-x86.c:4189 -#, c-format +#, fuzzy, c-format msgid "%pB: x86 ISA needed: " -msgstr "" +msgstr "Sistem x86 32-bit" #: elfxx-x86.c:4191 -#, c-format +#, fuzzy, c-format msgid "%pB: x86 ISA used: " -msgstr "" +msgstr "Sistem x86 32-bit" #: elfxx-x86.c:4213 -#, c-format +#, fuzzy, c-format msgid "<unknown: %x>" -msgstr "" +msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)" #: elfxx-x86.c:4368 +#, fuzzy msgid "%P: %pB: warning: missing %s\n" -msgstr "" +msgstr "%s Pb" #: elfxx-x86.c:4369 +#, fuzzy msgid "%X%P: %pB: error: missing %s\n" -msgstr "" +msgstr "Ralat dalam alamat \"%s\"— atribut hos hilang atau cacat" #: elfxx-x86.c:4475 +#, fuzzy msgid "IBT and SHSTK properties" -msgstr "" +msgstr "&Sifat…" #: elfxx-x86.c:4477 +#, fuzzy msgid "IBT property" -msgstr "" +msgstr "Si_fat:" #: elfxx-x86.c:4479 +#, fuzzy msgid "SHSTK property" -msgstr "" +msgstr "Si_fat:" #: elfxx-x86.c:4484 +#, fuzzy msgid "LAM_U48 property" -msgstr "" +msgstr "Si_fat:" #: elfxx-x86.c:4489 +#, fuzzy msgid "LAM_U57 property" -msgstr "" +msgstr "Si_fat:" #: elfxx-x86.c:4667 msgid "%F%P: failed to create VxWorks dynamic sections\n" @@ -6082,14 +6208,14 @@ msgid "%pB:%u: unrecognized ihex type %u in Intel Hex file" msgstr "" #: ihex.c:580 -#, c-format +#, fuzzy, c-format msgid "%pB: internal error in ihex_read_section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: ihex.c:613 -#, c-format +#, fuzzy, c-format msgid "%pB: bad section length in ihex_read_section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: ihex.c:784 #, c-format @@ -6126,9 +6252,9 @@ msgid "attempt to do relocatable link with %s input and %s output" msgstr "" #: linker.c:2896 -#, c-format +#, fuzzy, c-format msgid "%pB: ignoring duplicate section `%pA'\n" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: linker.c:2906 linker.c:2916 #, c-format @@ -6136,9 +6262,9 @@ msgid "%pB: duplicate section `%pA' has different size\n" msgstr "" #: linker.c:2930 linker.c:2938 -#, c-format +#, fuzzy, c-format msgid "%pB: could not read contents of section `%pA'\n" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: linker.c:2947 #, c-format @@ -6190,9 +6316,9 @@ msgid "malformed mach-o ARM reloc: unknown reloc type: %d" msgstr "" #: mach-o.c:640 -#, c-format +#, fuzzy, c-format msgid "<unknown mask flags>" -msgstr "" +msgstr "Bendera" #: mach-o.c:695 #, fuzzy @@ -6200,49 +6326,61 @@ msgid " (<unknown>)" msgstr "Tidak diketahui " #: mach-o.c:707 -#, c-format +#, fuzzy, c-format msgid " MACH-O header:\n" -msgstr "" +msgstr "Output:" #: mach-o.c:708 -#, c-format +#, fuzzy, c-format msgid " magic: %#lx\n" -msgstr "" +msgstr "Ajaib" #: mach-o.c:709 -#, c-format +#, fuzzy, c-format msgid " cputype: %#lx (%s)\n" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: mach-o.c:711 -#, c-format +#, fuzzy, c-format msgid " cpusubtype: %#lx%s\n" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: mach-o.c:713 -#, c-format +#, fuzzy, c-format msgid " filetype: %#lx\n" -msgstr "" +msgstr "Tiada jenis fail" #: mach-o.c:714 -#, c-format +#, fuzzy, c-format msgid " ncmds: %#lx\n" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: mach-o.c:715 -#, c-format +#, fuzzy, c-format msgid " sizeocmds: %#lx\n" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: mach-o.c:716 -#, c-format +#, fuzzy, c-format msgid " flags: %#lx\n" -msgstr "" +msgstr "Bendera" #: mach-o.c:717 -#, c-format +#, fuzzy, c-format msgid " version: %x\n" -msgstr "" +msgstr "Versi" #. Urg - what has happened ? #: mach-o.c:752 @@ -6268,9 +6406,9 @@ msgid "mach-o: there are too many sections (%u) maximum is 255,\n" msgstr "" #: mach-o.c:2695 -#, c-format +#, fuzzy, c-format msgid "unable to allocate data for load command %#x" -msgstr "" +msgstr "Tidak boleh muatkan data imej" #: mach-o.c:2800 #, c-format @@ -6318,9 +6456,9 @@ msgid "bfd_mach_o_read_symtab_symbol: symbol \"%s\" specified invalid type field msgstr "" #: mach-o.c:5066 -#, c-format +#, fuzzy, c-format msgid "%pB: unknown load command %#x" -msgstr "" +msgstr "Arahan tak diketahui '%1'" #: mach-o.c:5264 #, c-format @@ -6485,25 +6623,25 @@ msgstr "" #: pei-x86_64.c:174 pei-x86_64.c:228 pei-x86_64.c:238 pei-x86_64.c:263 #: pei-x86_64.c:275 pei-x86_64.c:289 pei-x86_64.c:307 pei-x86_64.c:319 #: pei-x86_64.c:331 -#, c-format +#, fuzzy, c-format msgid "warning: corrupt unwind data\n" -msgstr "" +msgstr "Data piksel imej rosak" #. PR 17512: file: 2245-7442-0.004. #: pei-x86_64.c:352 -#, c-format +#, fuzzy, c-format msgid "Unknown: %x" -msgstr "" +msgstr "(Kod mekanisma GSSAPI tidak diketahui: %x)" #: pei-x86_64.c:403 pei-x86_64.c:413 pei-x86_64.c:422 -#, c-format +#, fuzzy, c-format msgid "warning: xdata section corrupt\n" -msgstr "" +msgstr "Bahagian .rsrc yang rosak dikesan!\n" #: pei-x86_64.c:477 -#, c-format +#, fuzzy, c-format msgid "Too many unwind codes (%ld)\n" -msgstr "" +msgstr "Terlalu banyak rujukan dalam jadual" #: pei-x86_64.c:563 #, c-format @@ -6511,9 +6649,11 @@ msgid "Warning: %s section size (%ld) is not a multiple of %d\n" msgstr "" #: pei-x86_64.c:570 -#, c-format +#, fuzzy, c-format msgid "Warning: %s section size is zero\n" msgstr "" +"Terima Sifar\n" +"Saiz" #: pei-x86_64.c:585 #, c-format @@ -6521,11 +6661,13 @@ msgid "Warning: %s section size (%ld) is smaller than virtual size (%ld)\n" msgstr "" #: pei-x86_64.c:594 -#, c-format +#, fuzzy, c-format msgid "" "\n" "The Function Table (interpreted %s section contents)\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: pei-x86_64.c:597 #, c-format @@ -6533,16 +6675,16 @@ msgid "vma:\t\t\tBeginAddress\t EndAddress\t UnwindData\n" msgstr "" #: pei-x86_64.c:722 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Dump of %s\n" -msgstr "" +msgstr "Longgok Ingatan..." #: peicode.h:823 -#, c-format +#, fuzzy, c-format msgid "%pB: unrecognized import type; %x" -msgstr "" +msgstr "Tidak boleh menyalin jenis widget yang tidak dikenali." #: peicode.h:840 #, c-format @@ -6580,19 +6722,19 @@ msgid "%pB: error: debug data ends beyond end of debug directory" msgstr "" #: peicode.h:1598 -#, c-format +#, fuzzy, c-format msgid "%pB: adjusting invalid SectionAlignment" -msgstr "" +msgstr "Pelarasan" #: peicode.h:1608 -#, c-format +#, fuzzy, c-format msgid "%pB: adjusting invalid FileAlignment" -msgstr "" +msgstr "Pelarasan" #: peicode.h:1616 -#, c-format +#, fuzzy, c-format msgid "%pB: invalid NumberOfRvaAndSizes" -msgstr "" +msgstr "%1 PB" #: plugin.c:197 #, c-format @@ -6624,31 +6766,31 @@ msgid "plugin framework: out of file descriptors. Try using fewer objects/archiv msgstr "" #: ppcboot.c:392 -#, c-format +#, fuzzy, c-format msgid "" "\n" "ppcboot header:\n" -msgstr "" +msgstr "_Pengepala" #: ppcboot.c:393 -#, c-format +#, fuzzy, c-format msgid "Entry offset = 0x%.8lx (%ld)\n" -msgstr "" +msgstr "offset fail zip kepada masukan rosak" #: ppcboot.c:395 -#, c-format +#, fuzzy, c-format msgid "Length = 0x%.8lx (%ld)\n" -msgstr "" +msgstr "Memadam fail %ld drpd %ld" #: ppcboot.c:399 -#, c-format +#, fuzzy, c-format msgid "Flag field = 0x%.2x\n" -msgstr "" +msgstr "2x" #: ppcboot.c:405 -#, c-format +#, fuzzy, c-format msgid "Partition name = \"%s\"\n" -msgstr "" +msgstr "Ralat menetapkan nama sekatan" #: ppcboot.c:425 #, c-format @@ -6673,8 +6815,9 @@ msgid "Partition[%d] length = 0x%.8lx (%ld)\n" msgstr "" #: reloc.c:8417 +#, fuzzy msgid "INPUT_SECTION_FLAGS are not supported" -msgstr "" +msgstr "Bendera terima tidak disokong" #: reloc.c:8683 #, c-format @@ -6683,14 +6826,14 @@ msgstr "" #. PR 21803: Suggest the most likely cause of this error. #: reloc.c:8687 -#, c-format +#, fuzzy, c-format msgid "is this version of the linker - %s - out of date ?" -msgstr "" +msgstr "Pralihat sudah ketinggalan zaman" #: rs6000-core.c:471 -#, c-format +#, fuzzy, c-format msgid "%pB: warning core file truncated" -msgstr "" +msgstr "Abai dan tinggalkan fail core" #: som.c:3002 #, c-format @@ -6709,15 +6852,16 @@ msgid "%pB[%pA]: no output section for space %pA" msgstr "" #: som.c:5449 -#, c-format +#, fuzzy, c-format msgid "" "\n" "Exec Auxiliary Header\n" -msgstr "" +msgstr "Jalankan" #: som.c:5758 +#, fuzzy msgid "som_sizeof_headers unimplemented" -msgstr "" +msgstr "Tak diimplementasi" #: srec.c:260 #, c-format @@ -6725,14 +6869,14 @@ msgid "%pB:%d: unexpected character `%s' in S-record file" msgstr "" #: srec.c:488 -#, c-format +#, fuzzy, c-format msgid "%pB:%d: byte count %d too small" -msgstr "" +msgstr "Saiz atom QTIF terlalu besar (%d bait)" #: srec.c:580 srec.c:614 -#, c-format +#, fuzzy, c-format msgid "%pB:%d: bad checksum in S-record file" -msgstr "" +msgstr "%s: %s: tag buruk %d dijumpai (fail rosak?)\n" #: stabs.c:308 #, c-format @@ -6740,12 +6884,14 @@ msgid "%pB(%pA+%#lx): stabs entry has invalid string index" msgstr "" #: syms.c:1120 +#, fuzzy msgid "unsupported .stab relocation" -msgstr "" +msgstr " (tidak disokong)" #: vms-alpha.c:479 +#, fuzzy msgid "corrupt EIHD record - size is too small" -msgstr "" +msgstr "Gagal menentukan saiz lightmap. Saiz lightmap maksimum terlalu kecil?" #: vms-alpha.c:665 #, c-format @@ -6777,9 +6923,9 @@ msgid "corrupt EGSD record: its psindx field is too big (%#lx)" msgstr "" #: vms-alpha.c:1441 -#, c-format +#, fuzzy, c-format msgid "unknown EGSD subtype %d" -msgstr "" +msgstr "Subjenis spline tak diketahui: %d\n" #: vms-alpha.c:1474 #, c-format @@ -6787,37 +6933,40 @@ msgid "stack overflow (%d) in _bfd_vms_push" msgstr "" #: vms-alpha.c:1488 +#, fuzzy msgid "stack underflow in _bfd_vms_pop" -msgstr "" +msgstr "tindanan bawah aliran\n" #: vms-alpha.c:1562 -#, c-format +#, fuzzy, c-format msgid "dst_define_location %u too large" -msgstr "" +msgstr "Mesej terlalu besar untuk sambungan DTLS; maksimum ialah %u bait" #. These names have not yet been added to this switch statement. #: vms-alpha.c:1765 -#, c-format +#, fuzzy, c-format msgid "unknown ETIR command %d" -msgstr "" +msgstr "tidak diketahui-%d" #: vms-alpha.c:1796 +#, fuzzy msgid "corrupt vms value" -msgstr "" +msgstr "Takat rosak" #: vms-alpha.c:1927 +#, fuzzy msgid "corrupt ETIR record encountered" -msgstr "" +msgstr "Fail rosak?" #: vms-alpha.c:1989 -#, c-format +#, fuzzy, c-format msgid "bad section index in %s" -msgstr "" +msgstr "Nilai magik buruk dalam profile_section_t" #: vms-alpha.c:2003 -#, c-format +#, fuzzy, c-format msgid "unsupported STA cmd %s" -msgstr "" +msgstr "Tema tidak disokong '%s'." #. Insert field. #. Unsigned shift. @@ -6842,27 +6991,29 @@ msgstr "%s tidak sah - %s" #. Divide by zero is supposed to give a result of zero, #. and a non-fatal warning message. #: vms-alpha.c:2457 -#, c-format +#, fuzzy, c-format msgid "%s divide by zero" -msgstr "" +msgstr "Bahagi [/]" #: vms-alpha.c:2523 -#, c-format +#, fuzzy, c-format msgid "invalid use of %s with contexts" -msgstr "" +msgstr "Tidak dapat menyenaraikan konteks fail" #: vms-alpha.c:2581 -#, c-format +#, fuzzy, c-format msgid "reserved cmd %d" -msgstr "" +msgstr "Simpanan" #: vms-alpha.c:2665 +#, fuzzy msgid "corrupt EEOM record - size is too small" -msgstr "" +msgstr "Gagal menentukan saiz lightmap. Saiz lightmap maksimum terlalu kecil?" #: vms-alpha.c:2674 +#, fuzzy msgid "object module not error-free !" -msgstr "" +msgstr "Ralat: Laluan objek tidak dinyatakan\n" #: vms-alpha.c:4006 #, c-format @@ -6870,23 +7021,23 @@ msgid "SEC_RELOC with no relocs in section %pA" msgstr "" #: vms-alpha.c:4058 vms-alpha.c:4286 -#, c-format +#, fuzzy, c-format msgid "size error in section %pA" -msgstr "" +msgstr "Ralat sintaks dalam pengepala seksyen profil" #: vms-alpha.c:4229 msgid "spurious ALPHA_R_BSR reloc" msgstr "" #: vms-alpha.c:4272 -#, c-format +#, fuzzy, c-format msgid "unhandled relocation %s" -msgstr "" +msgstr "Pengecualian tidak dikendalikan berlaku: %s" #: vms-alpha.c:4637 -#, c-format +#, fuzzy, c-format msgid "unknown source command %d" -msgstr "" +msgstr "tidak diketahui-%d" #: vms-alpha.c:4789 vms-alpha.c:4794 vms-alpha.c:4799 vms-alpha.c:4804 #: vms-alpha.c:4809 vms-alpha.c:4832 vms-alpha.c:4837 vms-alpha.c:4842 @@ -6896,122 +7047,125 @@ msgid "%s not implemented" msgstr "%s tidak dilaksanakan" #: vms-alpha.c:4883 -#, c-format +#, fuzzy, c-format msgid "unknown line command %d" -msgstr "" +msgstr "Nilai data tridak diketahui \"%s\" pada baris %d. Diabaikan." #: vms-alpha.c:5322 +#, fuzzy msgid "corrupt reloc record" -msgstr "" +msgstr "Fail rosak?" #: vms-alpha.c:5352 vms-alpha.c:5370 vms-alpha.c:5387 vms-alpha.c:5405 #: vms-alpha.c:5418 vms-alpha.c:5430 vms-alpha.c:5443 -#, c-format +#, fuzzy, c-format msgid "unknown reloc %s + %s" -msgstr "" +msgstr "\t\tSambungan tidak diketahui %s (%s):\n" #: vms-alpha.c:5502 -#, c-format +#, fuzzy, c-format msgid "unknown reloc %s" -msgstr "" +msgstr "\t\tSambungan tidak diketahui %s (%s):\n" #: vms-alpha.c:5516 +#, fuzzy msgid "invalid section index in ETIR" -msgstr "" +msgstr "Objek profile_section tidak sah" #: vms-alpha.c:5525 +#, fuzzy msgid "relocation for non-REL psect" -msgstr "" +msgstr "Direktori-direktori untuk diindeks secara bukan-rekursif" #: vms-alpha.c:5578 -#, c-format +#, fuzzy, c-format msgid "unknown symbol in command %s" -msgstr "" +msgstr "arahan tidak diketahui: '%1$s'" #: vms-alpha.c:5996 -#, c-format +#, fuzzy, c-format msgid "reloc (%d) is *UNKNOWN*" -msgstr "" +msgstr "Mod piksel tidak diketahui: %d\n" #: vms-alpha.c:6113 -#, c-format +#, fuzzy, c-format msgid " EMH %d (len=%u): " -msgstr "" +msgstr "Ralat membaca dari klien, len = %d\n" #: vms-alpha.c:6118 vms-alpha.c:6137 vms-alpha.c:6216 -#, c-format +#, fuzzy, c-format msgid " Error: %s min length is %u\n" -msgstr "" +msgstr "Jarak Fokus Min" #: vms-alpha.c:6141 -#, c-format +#, fuzzy, c-format msgid "Module header\n" -msgstr "" +msgstr "Modul" #: vms-alpha.c:6142 -#, c-format +#, fuzzy, c-format msgid " structure level: %u\n" -msgstr "" +msgstr "Struktur" #: vms-alpha.c:6143 -#, c-format +#, fuzzy, c-format msgid " max record size: %u\n" -msgstr "" +msgstr "Nilai tidak sah bagi record_size" #: vms-alpha.c:6149 -#, c-format +#, fuzzy, c-format msgid " Error: The module name is missing\n" -msgstr "" +msgstr "Nama tidak ditulis" #: vms-alpha.c:6155 -#, c-format +#, fuzzy, c-format msgid " Error: The module name is too long\n" -msgstr "" +msgstr "Nama arkib terlalu panjang." #: vms-alpha.c:6158 -#, c-format +#, fuzzy, c-format msgid " module name : %.*s\n" -msgstr "" +msgstr "Nama Modul Teratas" #: vms-alpha.c:6162 -#, c-format +#, fuzzy, c-format msgid " Error: The module version is missing\n" -msgstr "" +msgstr "Ralat kaji hurai: Ruang Putih Hilang" #: vms-alpha.c:6168 -#, c-format +#, fuzzy, c-format msgid " Error: The module version is too long\n" -msgstr "" +msgstr "Menunggu sistem fail terlalu lama" #: vms-alpha.c:6171 -#, c-format +#, fuzzy, c-format msgid " module version : %.*s\n" -msgstr "" +msgstr "versi modul tidak sepadan dalam `%s'" #: vms-alpha.c:6174 -#, c-format +#, fuzzy, c-format msgid " Error: The compile date is truncated\n" -msgstr "" +msgstr "Kompil ke…" #: vms-alpha.c:6176 -#, c-format +#, fuzzy, c-format msgid " compile date : %.17s\n" -msgstr "" +msgstr "Kompil ke…" #: vms-alpha.c:6181 -#, c-format +#, fuzzy, c-format msgid "Language Processor Name\n" -msgstr "" +msgstr "Bahasa Melayu" #: vms-alpha.c:6182 -#, c-format +#, fuzzy, c-format msgid " language name: %.*s\n" -msgstr "" +msgstr "Bahasa: %s" #: vms-alpha.c:6186 -#, c-format +#, fuzzy, c-format msgid "Source Files Header\n" -msgstr "" +msgstr "Jana pengepala sumber" #: vms-alpha.c:6187 #, fuzzy, c-format @@ -7019,9 +7173,9 @@ msgid " file: %.*s\n" msgstr "Tiada fail %s sebegitu" #: vms-alpha.c:6191 -#, c-format +#, fuzzy, c-format msgid "Title Text Header\n" -msgstr "" +msgstr "Pengepala Tetingkap - Tajuk" #: vms-alpha.c:6192 #, fuzzy, c-format @@ -7037,9 +7191,9 @@ msgstr "" " under lay = %s\n" #: vms-alpha.c:6196 -#, c-format +#, fuzzy, c-format msgid "Copyright Header\n" -msgstr "" +msgstr "Hakcipta" #: vms-alpha.c:6197 #, fuzzy, c-format @@ -7047,39 +7201,39 @@ msgid " copyright: %.*s\n" msgstr "Hakcipta %s." #: vms-alpha.c:6201 -#, c-format +#, fuzzy, c-format msgid "unhandled emh subtype %u\n" -msgstr "" +msgstr "Subjenis" #: vms-alpha.c:6211 -#, c-format +#, fuzzy, c-format msgid " EEOM (len=%u):\n" -msgstr "" +msgstr "LEN(\"hello\") mengembalikan 5" #: vms-alpha.c:6221 -#, c-format +#, fuzzy, c-format msgid " number of cond linkage pairs: %u\n" -msgstr "" +msgstr "bilangan pasangan asas per giliran heliks" #: vms-alpha.c:6223 -#, c-format +#, fuzzy, c-format msgid " completion code: %u\n" -msgstr "" +msgstr "Kod ralat %u ketika mengesahihkan: %s" #: vms-alpha.c:6228 -#, c-format +#, fuzzy, c-format msgid " transfer addr flags: 0x%02x\n" -msgstr "" +msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x." #: vms-alpha.c:6229 -#, c-format +#, fuzzy, c-format msgid " transfer addr psect: %u\n" -msgstr "" +msgstr "%u pemindahan selesai" #: vms-alpha.c:6231 -#, c-format +#, fuzzy, c-format msgid " transfer address : 0x%08x\n" -msgstr "" +msgstr "Pindah" #: vms-alpha.c:6240 #, fuzzy @@ -7087,9 +7241,8 @@ msgid " WEAK" msgstr "Lemah" #: vms-alpha.c:6242 -#, fuzzy msgid " DEF" -msgstr "DEF" +msgstr " DEF" #: vms-alpha.c:6244 #, fuzzy @@ -7173,9 +7326,9 @@ msgid " 64B" msgstr "" #: vms-alpha.c:6294 -#, c-format +#, fuzzy, c-format msgid " EGSD (len=%u):\n" -msgstr "" +msgstr "LEN(\"hello\") mengembalikan 5" #: vms-alpha.c:6309 #, c-format @@ -7183,24 +7336,24 @@ msgid " EGSD entry %2u (type: %u, len: %u): " msgstr "" #: vms-alpha.c:6315 vms-alpha.c:6610 -#, c-format +#, fuzzy, c-format msgid " Erroneous length\n" -msgstr "" +msgstr "Jangka masa" #: vms-alpha.c:6328 -#, c-format +#, fuzzy, c-format msgid "PSC - Program section definition\n" -msgstr "" +msgstr "program tidak dibenarkan dalam seksyen ini" #: vms-alpha.c:6329 vms-alpha.c:6349 -#, c-format +#, fuzzy, c-format msgid " alignment : 2**%u\n" -msgstr "" +msgstr "J&ajaran" #: vms-alpha.c:6330 vms-alpha.c:6350 -#, c-format +#, fuzzy, c-format msgid " flags : 0x%04x" -msgstr "" +msgstr "(0x%04x, '%s'): " #: vms-alpha.c:6334 #, c-format @@ -7210,7 +7363,7 @@ msgstr "" #: vms-alpha.c:6336 vms-alpha.c:6402 vms-alpha.c:6470 #, fuzzy, c-format msgid " name : %.*s\n" -msgstr "Nama: %s, EntitiID: %s" +msgstr " nama: %.*s\n" #: vms-alpha.c:6348 #, c-format @@ -7223,79 +7376,79 @@ msgid " alloc (len) : %u (0x%08x)\n" msgstr "" #: vms-alpha.c:6355 -#, c-format +#, fuzzy, c-format msgid " image offset : 0x%08x\n" -msgstr "" +msgstr "Ofset kawasan imej" #: vms-alpha.c:6357 -#, c-format +#, fuzzy, c-format msgid " symvec offset : 0x%08x\n" -msgstr "" +msgstr "ofset" #: vms-alpha.c:6360 #, fuzzy, c-format msgid " name : %.*s\n" -msgstr "Nama: %s, EntitiID: %s" +msgstr " nama: %.*s\n" #: vms-alpha.c:6376 -#, c-format +#, fuzzy, c-format msgid "SYM - Global symbol definition\n" -msgstr "" +msgstr "Lompat ke takrifan simbol" #: vms-alpha.c:6377 vms-alpha.c:6458 vms-alpha.c:6482 vms-alpha.c:6505 -#, c-format +#, fuzzy, c-format msgid " flags: 0x%04x" -msgstr "" +msgstr "(0x%04x, '%s'): " #: vms-alpha.c:6380 -#, c-format +#, fuzzy, c-format msgid " psect offset: 0x%08x\n" -msgstr "" +msgstr "ofset" #: vms-alpha.c:6384 -#, c-format +#, fuzzy, c-format msgid " code address: 0x%08x\n" -msgstr "" +msgstr "ralat tidak diketahui (kod ralat %08x)." #: vms-alpha.c:6386 -#, c-format +#, fuzzy, c-format msgid " psect index for entry point : %u\n" -msgstr "" +msgstr "Masukan palet %u" #: vms-alpha.c:6389 vms-alpha.c:6489 vms-alpha.c:6512 -#, c-format +#, fuzzy, c-format msgid " psect index : %u\n" -msgstr "" +msgstr "%U" #: vms-alpha.c:6392 vms-alpha.c:6492 vms-alpha.c:6515 #, fuzzy, c-format msgid " name : %.*s\n" -msgstr "Nama: %s, EntitiID: %s" +msgstr " nama: %.*s\n" #: vms-alpha.c:6400 -#, c-format +#, fuzzy, c-format msgid "SYM - Global symbol reference\n" -msgstr "" +msgstr "Simbol" #: vms-alpha.c:6415 -#, c-format +#, fuzzy, c-format msgid "IDC - Ident Consistency check\n" -msgstr "" +msgstr "IDENT: socket() gagal" #: vms-alpha.c:6416 -#, c-format +#, fuzzy, c-format msgid " flags : 0x%08x" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:6420 -#, c-format +#, fuzzy, c-format msgid " id match : %x\n" -msgstr "" +msgstr "Tiada padanan" #: vms-alpha.c:6422 -#, c-format +#, fuzzy, c-format msgid " error severity: %x\n" -msgstr "" +msgstr "ralat dalaman X: %s\n" #: vms-alpha.c:6426 #, fuzzy, c-format @@ -7303,24 +7456,24 @@ msgid " entity name : %.*s\n" msgstr "Nama entiti \"%-.*s\" tidak diketahui" #: vms-alpha.c:6432 -#, c-format +#, fuzzy, c-format msgid " object name : %.*s\n" -msgstr "" +msgstr "Nama Objek" #: vms-alpha.c:6441 -#, c-format +#, fuzzy, c-format msgid " binary ident : 0x%08x\n" -msgstr "" +msgstr "binari" #: vms-alpha.c:6445 -#, c-format +#, fuzzy, c-format msgid " ascii ident : %.*s\n" -msgstr "" +msgstr "IDENT: disambungkan kepada %s:%u" #: vms-alpha.c:6457 -#, c-format +#, fuzzy, c-format msgid "SYMG - Universal symbol definition\n" -msgstr "" +msgstr "Lompat ke takrifan simbol" #: vms-alpha.c:6461 #, c-format @@ -7328,49 +7481,49 @@ msgid " symbol vector offset: 0x%08x\n" msgstr "" #: vms-alpha.c:6463 -#, c-format +#, fuzzy, c-format msgid " entry point: 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:6465 -#, c-format +#, fuzzy, c-format msgid " proc descr : 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:6467 -#, c-format +#, fuzzy, c-format msgid " psect index: %u\n" -msgstr "" +msgstr "%U" #: vms-alpha.c:6481 -#, c-format +#, fuzzy, c-format msgid "SYMV - Vectored symbol definition\n" -msgstr "" +msgstr "Lompat ke takrifan simbol" #: vms-alpha.c:6485 -#, c-format +#, fuzzy, c-format msgid " vector : 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:6487 vms-alpha.c:6510 -#, c-format +#, fuzzy, c-format msgid " psect offset: %u\n" -msgstr "" +msgstr "ofset" #: vms-alpha.c:6504 -#, c-format +#, fuzzy, c-format msgid "SYMM - Global symbol definition with version\n" -msgstr "" +msgstr "Lompat ke takrifan simbol" #: vms-alpha.c:6508 -#, c-format +#, fuzzy, c-format msgid " version mask: 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:6521 -#, c-format +#, fuzzy, c-format msgid "unhandled egsd entry type %u\n" -msgstr "" +msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2" #: vms-alpha.c:6560 #, c-format @@ -7393,34 +7546,34 @@ msgid " psect idx 3: %u, offset 3: 0x%08x %08x\n" msgstr "" #: vms-alpha.c:6580 -#, c-format +#, fuzzy, c-format msgid " global name: %.*s\n" -msgstr "" +msgstr "Tidak boleh bertembung dengan nama pemalar global yang telah wujud." #: vms-alpha.c:6592 -#, c-format +#, fuzzy, c-format msgid " %s (len=%u):\n" -msgstr "" +msgstr "Len Tower" #: vms-alpha.c:6615 -#, c-format +#, fuzzy, c-format msgid " (type: %3u, size: %3u): " -msgstr "" +msgstr "jenis saiz tidak sah `%c'" #: vms-alpha.c:6621 -#, c-format +#, fuzzy, c-format msgid "STA_GBL (stack global) %.*s\n" -msgstr "" +msgstr "Batalkan perincian sejagat untuk repositori \"%s\":" #: vms-alpha.c:6625 -#, c-format +#, fuzzy, c-format msgid "STA_LW (stack longword)" -msgstr "" +msgstr "Tarikh m_ula:" #: vms-alpha.c:6631 -#, c-format +#, fuzzy, c-format msgid "STA_QW (stack quadword)" -msgstr "" +msgstr "Tarikh m_ula:" #: vms-alpha.c:6638 #, c-format @@ -7433,14 +7586,14 @@ msgid " psect: %u, offset: 0x%08x %08x\n" msgstr "" #: vms-alpha.c:6647 -#, c-format +#, fuzzy, c-format msgid "STA_LI (stack literal)\n" -msgstr "" +msgstr "Tarikh m_ula:" #: vms-alpha.c:6650 -#, c-format +#, fuzzy, c-format msgid "STA_MOD (stack module)\n" -msgstr "" +msgstr "Modul %(mod)r tidak dipasang" #: vms-alpha.c:6653 #, c-format @@ -7448,24 +7601,24 @@ msgid "STA_CKARG (compare procedure argument)\n" msgstr "" #: vms-alpha.c:6657 -#, c-format +#, fuzzy, c-format msgid "STO_B (store byte)\n" -msgstr "" +msgstr "bait,bait,B" #: vms-alpha.c:6660 -#, c-format +#, fuzzy, c-format msgid "STO_W (store word)\n" -msgstr "" +msgstr " -W, --word-mode banding perkataan dan bukannya baris\n" #: vms-alpha.c:6663 -#, c-format +#, fuzzy, c-format msgid "STO_LW (store longword)\n" -msgstr "" +msgstr "&Simpan" #: vms-alpha.c:6666 -#, c-format +#, fuzzy, c-format msgid "STO_QW (store quadword)\n" -msgstr "" +msgstr "&Simpan" #: vms-alpha.c:6673 #, c-format @@ -7473,9 +7626,9 @@ msgid "STO_IMMR (store immediate repeat) %u bytes\n" msgstr "" #: vms-alpha.c:6682 -#, c-format +#, fuzzy, c-format msgid "STO_GBL (store global) %.*s\n" -msgstr "" +msgstr "Batalkan perincian sejagat untuk repositori \"%s\":" #: vms-alpha.c:6687 #, c-format @@ -7488,9 +7641,9 @@ msgid "STO_RB (store relative branch)\n" msgstr "" #: vms-alpha.c:6694 -#, c-format +#, fuzzy, c-format msgid "STO_AB (store absolute branch)\n" -msgstr "" +msgstr "Punca simpanan %s bukan laluan mutlak" #: vms-alpha.c:6697 #, c-format @@ -7523,79 +7676,79 @@ msgid "STO_BR_PS (store branch psect + offset) *todo*\n" msgstr "" #: vms-alpha.c:6727 -#, c-format +#, fuzzy, c-format msgid "OPR_NOP (no-operation)\n" -msgstr "" +msgstr "Sisip &nop" #: vms-alpha.c:6730 -#, c-format +#, fuzzy, c-format msgid "OPR_ADD (add)\n" -msgstr "" +msgstr "Tambah" #: vms-alpha.c:6733 -#, c-format +#, fuzzy, c-format msgid "OPR_SUB (subtract)\n" -msgstr "" +msgstr "Tolak [-]" #: vms-alpha.c:6736 -#, c-format +#, fuzzy, c-format msgid "OPR_MUL (multiply)\n" -msgstr "" +msgstr "Darab [*]" #: vms-alpha.c:6739 -#, c-format +#, fuzzy, c-format msgid "OPR_DIV (divide)\n" -msgstr "" +msgstr "Bahagi [/]" #: vms-alpha.c:6742 -#, c-format +#, fuzzy, c-format msgid "OPR_AND (logical and)\n" -msgstr "" +msgstr "logikal not" #: vms-alpha.c:6745 -#, c-format +#, fuzzy, c-format msgid "OPR_IOR (logical inclusive or)\n" -msgstr "" +msgstr "logikal not" #: vms-alpha.c:6748 -#, c-format +#, fuzzy, c-format msgid "OPR_EOR (logical exclusive or)\n" -msgstr "" +msgstr "Boolean Exclusive OR" #: vms-alpha.c:6751 -#, c-format +#, fuzzy, c-format msgid "OPR_NEG (negate)\n" -msgstr "" +msgstr "Sangkal" #: vms-alpha.c:6754 -#, c-format +#, fuzzy, c-format msgid "OPR_COM (complement)\n" -msgstr "" +msgstr "pelengkap" #: vms-alpha.c:6757 -#, c-format +#, fuzzy, c-format msgid "OPR_INSV (insert field)\n" -msgstr "" +msgstr "Selitkan Ke Dalam Medan Edit" #: vms-alpha.c:6760 -#, c-format +#, fuzzy, c-format msgid "OPR_ASH (arithmetic shift)\n" -msgstr "" +msgstr "Abu Gunung Berapi" #: vms-alpha.c:6763 -#, c-format +#, fuzzy, c-format msgid "OPR_USH (unsigned shift)\n" -msgstr "" +msgstr "K_osongkan Peti Keluar" #: vms-alpha.c:6766 -#, c-format +#, fuzzy, c-format msgid "OPR_ROT (rotate)\n" -msgstr "" +msgstr "&Putar..." #: vms-alpha.c:6769 -#, c-format +#, fuzzy, c-format msgid "OPR_SEL (select)\n" -msgstr "" +msgstr "%(sel)s daripada %(cnt)s dipilih" #: vms-alpha.c:6772 #, c-format @@ -7603,9 +7756,9 @@ msgid "OPR_REDEF (redefine symbol to curr location)\n" msgstr "" #: vms-alpha.c:6775 -#, c-format +#, fuzzy, c-format msgid "OPR_REDEF (define a literal)\n" -msgstr "" +msgstr "Bidang perlu menjadi perkataan literal." #: vms-alpha.c:6779 #, c-format @@ -7618,9 +7771,9 @@ msgid "STC_LP_PSB (store cond linkage pair + signature)\n" msgstr "" #: vms-alpha.c:6787 -#, c-format +#, fuzzy, c-format msgid " linkage index: %u, procedure: %.*s\n" -msgstr "" +msgstr "%s bukan objek prosedur" #: vms-alpha.c:6794 #, fuzzy, c-format @@ -7633,9 +7786,9 @@ msgid "STC_GBL (store cond global)\n" msgstr "" #: vms-alpha.c:6803 -#, c-format +#, fuzzy, c-format msgid " linkage index: %u, global: %.*s\n" -msgstr "" +msgstr "Batalkan perincian sejagat untuk repositori \"%s\":" #: vms-alpha.c:6808 #, c-format @@ -7643,9 +7796,9 @@ msgid "STC_GCA (store cond code address)\n" msgstr "" #: vms-alpha.c:6811 -#, c-format +#, fuzzy, c-format msgid " linkage index: %u, procedure name: %.*s\n" -msgstr "" +msgstr "gagal mendapatkan nama untuk platform %u (%s)" #: vms-alpha.c:6816 #, c-format @@ -7718,19 +7871,19 @@ msgid "CTL_AUGRB (augment relocation base) %u\n" msgstr "" #: vms-alpha.c:6879 -#, c-format +#, fuzzy, c-format msgid "CTL_DFLOC (define location)\n" -msgstr "" +msgstr "Lokasi:" #: vms-alpha.c:6882 -#, c-format +#, fuzzy, c-format msgid "CTL_STLOC (set location)\n" -msgstr "" +msgstr "Arahan log keluar belum ditetapkan" #: vms-alpha.c:6885 -#, c-format +#, fuzzy, c-format msgid "CTL_STKDL (stack defined location)\n" -msgstr "" +msgstr "Laluan ke direktori pembayang. Jika tiada laluan ditakrifkan, lokasi lalai akan digunakan." #: vms-alpha.c:6888 vms-alpha.c:7316 vms-alpha.c:7477 #, fuzzy, c-format @@ -7738,9 +7891,9 @@ msgid "*unhandled*\n" msgstr "Ralat tidak boleh kendali" #: vms-alpha.c:6913 -#, c-format +#, fuzzy, c-format msgid "cannot read GST record header\n" -msgstr "" +msgstr "Gagal membaca pengepala QTIF" #. Ill-formed. #: vms-alpha.c:6936 @@ -7749,19 +7902,19 @@ msgid "cannot find EMH in first GST record\n" msgstr "" #: vms-alpha.c:6960 -#, c-format +#, fuzzy, c-format msgid "corrupted GST\n" -msgstr "" +msgstr "profil-gst" #: vms-alpha.c:6973 -#, c-format +#, fuzzy, c-format msgid "cannot read GST record\n" -msgstr "" +msgstr "profil-gst" #: vms-alpha.c:7000 -#, c-format +#, fuzzy, c-format msgid " unhandled EOBJ record type %u\n" -msgstr "" +msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2" #: vms-alpha.c:7025 #, c-format @@ -7774,14 +7927,14 @@ msgid " bitmap: 0x%08x (count: %u):\n" msgstr "" #: vms-alpha.c:7046 -#, fuzzy, c-format +#, c-format msgid " %08x" -msgstr "ralat tidak diketahui (kod ralat %08x)." +msgstr " %08x" #: vms-alpha.c:7073 -#, c-format +#, fuzzy, c-format msgid " image %u (%u entries)\n" -msgstr "" +msgstr "Menyimpan imej “%s” (%u/%u)" #: vms-alpha.c:7079 #, c-format @@ -7789,20 +7942,20 @@ msgid " offset: 0x%08x, val: 0x%08x\n" msgstr "" #: vms-alpha.c:7102 -#, c-format +#, fuzzy, c-format msgid " image %u (%u entries), offsets:\n" -msgstr "" +msgstr "Menyimpan imej “%s” (%u/%u)" #: vms-alpha.c:7109 #, c-format msgid " 0x%08x" -msgstr "" +msgstr " 0x%08x" #. 64 bits. #: vms-alpha.c:7235 -#, c-format +#, fuzzy, c-format msgid "64 bits *unhandled*\n" -msgstr "" +msgstr "64 bit" #: vms-alpha.c:7240 #, c-format @@ -7810,9 +7963,9 @@ msgid "class: %u, dtype: %u, length: %u, pointer: 0x%08x\n" msgstr "" #: vms-alpha.c:7251 -#, c-format +#, fuzzy, c-format msgid "non-contiguous array of %s\n" -msgstr "" +msgstr "data berterusan" #: vms-alpha.c:7258 #, c-format @@ -7835,24 +7988,24 @@ msgid "Bounds:\n" msgstr "Batas Kiri" #: vms-alpha.c:7288 -#, c-format +#, fuzzy, c-format msgid "[%u]: Lower: %u, upper: %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:7302 -#, c-format +#, fuzzy, c-format msgid "unaligned bit-string of %s\n" -msgstr "" +msgstr "Tidak boleh membaca petikan bit: %s\n" #: vms-alpha.c:7309 -#, c-format +#, fuzzy, c-format msgid "base: %u, pos: %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:7335 -#, c-format +#, fuzzy, c-format msgid "vflags: 0x%02x, value: 0x%08x " -msgstr "" +msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x." #: vms-alpha.c:7342 #, fuzzy, c-format @@ -7875,19 +8028,19 @@ msgid "(descriptor)\n" msgstr "Penerang salin" #: vms-alpha.c:7356 -#, c-format +#, fuzzy, c-format msgid "(trailing value)\n" -msgstr "" +msgstr "Slash dibelakang" #: vms-alpha.c:7359 -#, c-format +#, fuzzy, c-format msgid "(value spec follows)\n" -msgstr "" +msgstr "spec RPM" #: vms-alpha.c:7362 -#, c-format +#, fuzzy, c-format msgid "(at bit offset %u)\n" -msgstr "" +msgstr "%u bit" #: vms-alpha.c:7366 #, c-format @@ -7914,14 +8067,14 @@ msgid "reg" msgstr "Reg " #: vms-alpha.c:7403 -#, c-format +#, fuzzy, c-format msgid "len: %2u, kind: %2u " -msgstr "" +msgstr "Len Tower" #: vms-alpha.c:7411 -#, c-format +#, fuzzy, c-format msgid "atomic, type=0x%02x %s\n" -msgstr "" +msgstr "DVDRead tidak dapa membaca blok %d/%d pada 0x%02x." #: vms-alpha.c:7416 #, c-format @@ -7929,44 +8082,44 @@ msgid "indirect, defined at 0x%08x\n" msgstr "" #: vms-alpha.c:7420 -#, c-format +#, fuzzy, c-format msgid "typed pointer\n" -msgstr "" +msgstr "hukum kosong untuk bukan terminal ditaip, dan tiada tindakan" #: vms-alpha.c:7424 -#, fuzzy, c-format +#, c-format msgid "pointer\n" -msgstr "Penuding: %p" +msgstr "penunjuk\n" #: vms-alpha.c:7435 -#, c-format +#, fuzzy, c-format msgid "array, dim: %u, bitmap: " -msgstr "" +msgstr "Tatasusunan" #: vms-alpha.c:7450 -#, c-format +#, fuzzy, c-format msgid "array descriptor:\n" -msgstr "" +msgstr "Penerang salin" #: vms-alpha.c:7461 -#, c-format +#, fuzzy, c-format msgid "type spec for element:\n" -msgstr "" +msgstr "Jenis tidak dikenali \"%s\" pada unsur <%s>" #: vms-alpha.c:7463 -#, c-format +#, fuzzy, c-format msgid "type spec for subscript %u:\n" -msgstr "" +msgstr "spec RPM" #: vms-alpha.c:7488 -#, c-format +#, fuzzy, c-format msgid "Debug symbol table:\n" -msgstr "" +msgstr "nyahpepijat" #: vms-alpha.c:7499 -#, c-format +#, fuzzy, c-format msgid "cannot read DST header\n" -msgstr "" +msgstr "Gagal membaca pengepala QTIF" #: vms-alpha.c:7505 #, c-format @@ -7974,19 +8127,19 @@ msgid " type: %3u, len: %3u (at 0x%08x): " msgstr "" #: vms-alpha.c:7524 -#, c-format +#, fuzzy, c-format msgid "cannot read DST symbol\n" -msgstr "" +msgstr "Tak dalat membaca CD: %s" #: vms-alpha.c:7568 -#, c-format +#, fuzzy, c-format msgid "standard data: %s\n" -msgstr "" +msgstr "Hantar data sebagai &input standard" #: vms-alpha.c:7572 vms-alpha.c:7696 -#, fuzzy, c-format +#, c-format msgid " name: %.*s\n" -msgstr "Nama: %s, EntitiID: %s" +msgstr " nama: %.*s\n" #: vms-alpha.c:7580 #, c-format @@ -7999,14 +8152,14 @@ msgid " flags: %d, language: %u, major: %u, minor: %u\n" msgstr "" #: vms-alpha.c:7594 vms-alpha.c:7963 -#, c-format +#, fuzzy, c-format msgid " module name: %.*s\n" -msgstr "" +msgstr "Nama Modul Teratas" #: vms-alpha.c:7601 -#, fuzzy, c-format +#, c-format msgid " compiler : %.*s\n" -msgstr "Pengkompil: %s\n" +msgstr " pembina : %.*s\n" #: vms-alpha.c:7608 #, c-format @@ -8023,14 +8176,14 @@ msgid " flags: %u, address: 0x%08x, pd-address: 0x%08x\n" msgstr "" #: vms-alpha.c:7628 -#, c-format +#, fuzzy, c-format msgid " routine name: %.*s\n" -msgstr "" +msgstr "Nama: %s, EntitiID: %s" #: vms-alpha.c:7639 -#, c-format +#, fuzzy, c-format msgid "rtnend: size 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:7649 #, c-format @@ -8038,39 +8191,39 @@ msgid "prolog: bkpt address 0x%08x\n" msgstr "" #: vms-alpha.c:7659 -#, c-format +#, fuzzy, c-format msgid "epilog: flags: %u, count: %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:7674 -#, c-format +#, fuzzy, c-format msgid "blkbeg: address: 0x%08x, name: %.*s\n" -msgstr "" +msgstr "%s: nama hos adalah sah tetatpi tidak mempunyai alamat IP." #: vms-alpha.c:7686 -#, c-format +#, fuzzy, c-format msgid "blkend: size: 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:7692 -#, c-format +#, fuzzy, c-format msgid "typspec (len: %u)\n" -msgstr "" +msgstr "LEN(\"hello\") mengembalikan 5" #: vms-alpha.c:7708 -#, c-format +#, fuzzy, c-format msgid "septyp, name: %.*s\n" -msgstr "" +msgstr "Nama: %s, EntitiID: %s" #: vms-alpha.c:7725 -#, c-format +#, fuzzy, c-format msgid "recbeg: name: %.*s\n" -msgstr "" +msgstr "Nama: %s, EntitiID: %s" #: vms-alpha.c:7731 -#, c-format +#, fuzzy, c-format msgid " len: %u bits\n" -msgstr "" +msgstr "%u bit" #: vms-alpha.c:7737 #, c-format @@ -8078,14 +8231,14 @@ msgid "recend\n" msgstr "" #: vms-alpha.c:7742 -#, c-format +#, fuzzy, c-format msgid "enumbeg, len: %u, name: %.*s\n" -msgstr "" +msgstr "gagal mendapatkan nama untuk platform %u (%s)" #: vms-alpha.c:7748 -#, c-format +#, fuzzy, c-format msgid "enumelt, name: %.*s\n" -msgstr "" +msgstr "Nama: %s, EntitiID: %s" #: vms-alpha.c:7754 #, c-format @@ -8093,69 +8246,69 @@ msgid "enumend\n" msgstr "" #: vms-alpha.c:7761 -#, c-format +#, fuzzy, c-format msgid "label, name: %.*s\n" -msgstr "" +msgstr "%s kehilangan nama atau label" #: vms-alpha.c:7764 -#, c-format +#, fuzzy, c-format msgid " address: 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:7776 -#, c-format +#, fuzzy, c-format msgid "discontiguous range (nbr: %u)\n" -msgstr "" +msgstr "Blok buruk %u diluar julat; diabaikan.\n" #: vms-alpha.c:7783 -#, c-format +#, fuzzy, c-format msgid " address: 0x%08x, size: %u\n" -msgstr "" +msgstr "%s: saiz alamat mempunyai nilai %u tidak dijangka\n" #: vms-alpha.c:7794 -#, c-format +#, fuzzy, c-format msgid "line num (len: %u)\n" -msgstr "" +msgstr "%u aksara setiap baris" #: vms-alpha.c:7813 -#, c-format +#, fuzzy, c-format msgid "delta_pc_w %u\n" -msgstr "" +msgstr "PC" #: vms-alpha.c:7822 -#, c-format +#, fuzzy, c-format msgid "incr_linum(b): +%u\n" -msgstr "" +msgstr "%U" #: vms-alpha.c:7830 -#, c-format +#, fuzzy, c-format msgid "incr_linum_w: +%u\n" -msgstr "" +msgstr "%U" #: vms-alpha.c:7838 -#, c-format +#, fuzzy, c-format msgid "incr_linum_l: +%u\n" -msgstr "" +msgstr "Had Laju Muat Naik" #: vms-alpha.c:7846 -#, c-format +#, fuzzy, c-format msgid "set_line_num(w) %u\n" -msgstr "" +msgstr "%u aksara setiap baris" #: vms-alpha.c:7853 -#, c-format +#, fuzzy, c-format msgid "set_line_num_b %u\n" -msgstr "" +msgstr "%u aksara setiap baris" #: vms-alpha.c:7860 -#, c-format +#, fuzzy, c-format msgid "set_line_num_l %u\n" -msgstr "" +msgstr "Kedua-dua L dan U dinyatakan.\n" #: vms-alpha.c:7867 -#, c-format +#, fuzzy, c-format msgid "set_abs_pc: 0x%08x\n" -msgstr "" +msgstr "PC set 1" #: vms-alpha.c:7873 #, c-format @@ -8170,22 +8323,22 @@ msgstr "" #: vms-alpha.c:7882 #, c-format msgid " pc: 0x%08x\n" -msgstr "" +msgstr " pc: 0x%08x\n" #: vms-alpha.c:7889 -#, c-format +#, fuzzy, c-format msgid "term_w: 0x%04x" -msgstr "" +msgstr "(0x%04x, '%s'): " #: vms-alpha.c:7891 #, c-format msgid " pc: 0x%08x\n" -msgstr "" +msgstr " pc: 0x%08x\n" #: vms-alpha.c:7897 -#, c-format +#, fuzzy, c-format msgid "delta pc +%-4d" -msgstr "" +msgstr "PC" #: vms-alpha.c:7901 #, c-format @@ -8193,14 +8346,14 @@ msgid " pc: 0x%08x line: %5u\n" msgstr "" #: vms-alpha.c:7906 -#, c-format +#, fuzzy, c-format msgid " *unhandled* cmd %u\n" -msgstr "" +msgstr "Ralat tidak boleh kendali" #: vms-alpha.c:7921 -#, c-format +#, fuzzy, c-format msgid "source (len: %u)\n" -msgstr "" +msgstr "LEN(\"hello\") mengembalikan 5" #: vms-alpha.c:7940 #, c-format @@ -8213,29 +8366,29 @@ msgid " rms: cdt: 0x%08x %08x, ebk: 0x%08x, ffb: 0x%04x, rfo: %u\n" msgstr "" #: vms-alpha.c:7957 -#, fuzzy, c-format +#, c-format msgid " filename : %.*s\n" -msgstr "Nama fail \"%s\" tidak sah" +msgstr " nama fail : %.*s\n" #: vms-alpha.c:7973 -#, c-format +#, fuzzy, c-format msgid " setfile %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:7980 vms-alpha.c:7987 -#, c-format +#, fuzzy, c-format msgid " setrec %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:7994 vms-alpha.c:8001 -#, c-format +#, fuzzy, c-format msgid " setlnum %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:8008 vms-alpha.c:8015 -#, c-format +#, fuzzy, c-format msgid " deflines %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:8019 #, c-format @@ -8243,43 +8396,42 @@ msgid " formfeed\n" msgstr "" #: vms-alpha.c:8023 -#, c-format +#, fuzzy, c-format msgid " *unhandled* cmd %u\n" -msgstr "" +msgstr "Ralat tidak boleh kendali" #: vms-alpha.c:8035 -#, c-format +#, fuzzy, c-format msgid "*unhandled* dst type %u\n" -msgstr "" +msgstr "Xmpdatum %1 tidak dikendali bagi jenis %2" #: vms-alpha.c:8067 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHD\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8071 -#, c-format +#, fuzzy, c-format msgid "EIHD: (size: %u, nbr blocks: %u)\n" -msgstr "" +msgstr "Blok buruk: %u" #: vms-alpha.c:8075 -#, c-format +#, fuzzy, c-format msgid " majorid: %u, minorid: %u\n" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:8083 -#, fuzzy msgid "executable" -msgstr "Boleh Laku" +msgstr "boleh laksana" #: vms-alpha.c:8086 msgid "linkable image" msgstr "" #: vms-alpha.c:8093 -#, c-format +#, fuzzy, c-format msgid " image type: %u (%s)" -msgstr "" +msgstr "Menyimpan imej “%s” (%u/%u)" #: vms-alpha.c:8099 msgid "native" @@ -8290,9 +8442,9 @@ msgid "CLI" msgstr "CLI" #: vms-alpha.c:8109 -#, c-format +#, fuzzy, c-format msgid ", subtype: %u (%s)\n" -msgstr "" +msgstr "Gagal untuk menambah sub jenis '%s': %s\n" #: vms-alpha.c:8116 #, c-format @@ -8300,21 +8452,21 @@ msgid " offsets: isd: %u, activ: %u, symdbg: %u, imgid: %u, patch: %u\n" msgstr "" #: vms-alpha.c:8120 -#, c-format +#, fuzzy, c-format msgid " fixup info rva: " -msgstr "" +msgstr "Jenis Saiz Rva Offset\n" #: vms-alpha.c:8122 -#, c-format +#, fuzzy, c-format msgid ", symbol vector rva: " -msgstr "" +msgstr "Grafik Vektor" #: vms-alpha.c:8125 -#, c-format +#, fuzzy, c-format msgid "" "\n" " version array off: %u\n" -msgstr "" +msgstr "Menggunakan VTE versi %u.%u.%u" #: vms-alpha.c:8130 #, c-format @@ -8322,9 +8474,9 @@ msgid " img I/O count: %u, nbr channels: %u, req pri: %08x%08x\n" msgstr "" #: vms-alpha.c:8136 -#, c-format +#, fuzzy, c-format msgid " linker flags: %08x:" -msgstr "" +msgstr "Pemaut" #: vms-alpha.c:8167 #, c-format @@ -8332,9 +8484,9 @@ msgid " ident: 0x%08x, sysver: 0x%08x, match ctrl: %u, symvect_size: %u\n" msgstr "" #: vms-alpha.c:8173 -#, c-format +#, fuzzy, c-format msgid " BPAGE: %u" -msgstr "" +msgstr "%u × %u" #: vms-alpha.c:8180 #, c-format @@ -8342,24 +8494,24 @@ msgid ", ext fixup offset: %u, no_opt psect off: %u" msgstr "" #: vms-alpha.c:8183 -#, c-format +#, fuzzy, c-format msgid ", alias: %u\n" -msgstr "" +msgstr "Alias" #: vms-alpha.c:8191 -#, c-format +#, fuzzy, c-format msgid "system version array information:\n" -msgstr "" +msgstr "sistem, maklumat, terperinci, grafik, bunyi, kernel, versi" #: vms-alpha.c:8195 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHVN header\n" -msgstr "" +msgstr "Gagal membaca pengepala QTIF" #: vms-alpha.c:8205 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHVN version\n" -msgstr "" +msgstr "Versi Baca Jenis Doc" #: vms-alpha.c:8208 #, c-format @@ -8379,32 +8531,37 @@ msgid "IO " msgstr "IO " #: vms-alpha.c:8221 +#, fuzzy msgid "FILES_VOLUMES " -msgstr "" +msgstr "_Volum" #: vms-alpha.c:8224 +#, fuzzy msgid "PROCESS_SCHED " -msgstr "" +msgstr "(dalam proses)" #: vms-alpha.c:8227 msgid "SYSGEN " msgstr "" #: vms-alpha.c:8230 +#, fuzzy msgid "CLUSTERS_LOCKMGR " -msgstr "" +msgstr "kelompok" #: vms-alpha.c:8233 +#, fuzzy msgid "LOGICAL_NAMES " -msgstr "" +msgstr "logikal not" #: vms-alpha.c:8236 msgid "SECURITY " msgstr "KESELAMATAN " #: vms-alpha.c:8239 +#, fuzzy msgid "IMAGE_ACTIVATOR " -msgstr "" +msgstr "Bukan imej" #: vms-alpha.c:8242 msgid "NETWORKS " @@ -8439,8 +8596,9 @@ msgid "POSIX " msgstr "POSIX " #: vms-alpha.c:8266 +#, fuzzy msgid "MULTI_PROCESSING " -msgstr "" +msgstr "pelbagai" #: vms-alpha.c:8269 msgid "GALAXY " @@ -8451,14 +8609,14 @@ msgid "*unknown* " msgstr "*tidak diketahui* " #: vms-alpha.c:8288 vms-alpha.c:8575 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHA\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8291 -#, c-format +#, fuzzy, c-format msgid "Image activation: (size=%u)\n" -msgstr "" +msgstr "Saiz blok=%u (log=%u)\n" #: vms-alpha.c:8294 #, c-format @@ -8486,44 +8644,44 @@ msgid " Shared image : 0x%08x 0x%08x\n" msgstr "" #: vms-alpha.c:8321 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHI\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8325 -#, c-format +#, fuzzy, c-format msgid "Image identification: (major: %u, minor: %u)\n" -msgstr "" +msgstr "Menyimpan imej “%s” (%u/%u)" #: vms-alpha.c:8331 -#, c-format +#, fuzzy, c-format msgid " image name : %.*s\n" -msgstr "" +msgstr "Nama peta imej" #: vms-alpha.c:8332 -#, c-format +#, fuzzy, c-format msgid " link time : %s\n" -msgstr "" +msgstr "Pautan %s terpilih %s" #: vms-alpha.c:8337 -#, c-format +#, fuzzy, c-format msgid " image ident : %.*s\n" -msgstr "" +msgstr "IDENT: disambungkan kepada %s:%u" #: vms-alpha.c:8341 -#, c-format +#, fuzzy, c-format msgid " linker ident : %.*s\n" -msgstr "" +msgstr "IDENT: disambungkan kepada %s:%u" #: vms-alpha.c:8345 -#, c-format +#, fuzzy, c-format msgid " image build ident: %.*s\n" -msgstr "" +msgstr "IDENT: disambungkan kepada %s:%u" #: vms-alpha.c:8354 -#, c-format +#, fuzzy, c-format msgid "cannot read EIHS\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8358 #, c-format @@ -8546,9 +8704,9 @@ msgid " debug module table : vbn: %u, size: %u\n" msgstr "" #: vms-alpha.c:8387 -#, c-format +#, fuzzy, c-format msgid "cannot read EISD\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8398 #, c-format @@ -8561,14 +8719,14 @@ msgid " section: base: 0x%08x%08x size: 0x%08x\n" msgstr "" #: vms-alpha.c:8411 -#, c-format +#, fuzzy, c-format msgid " flags: 0x%04x" -msgstr "" +msgstr "(0x%04x, '%s'): " #: vms-alpha.c:8449 -#, c-format +#, fuzzy, c-format msgid " vbn: %u, pfc: %u, matchctl: %u type: %u (" -msgstr "" +msgstr "Satu integer biasa tidak bertanda tangan, jenis 'u'" #: vms-alpha.c:8455 msgid "NORMAL" @@ -8599,24 +8757,24 @@ msgid ")\n" msgstr "" #: vms-alpha.c:8483 -#, c-format +#, fuzzy, c-format msgid " ident: 0x%08x, name: %.*s\n" -msgstr "" +msgstr "IDENT: recvline() gagal: %s." #: vms-alpha.c:8494 -#, c-format +#, fuzzy, c-format msgid "cannot read DMT\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8498 -#, c-format +#, fuzzy, c-format msgid "Debug module table:\n" -msgstr "" +msgstr "Ruang jadual" #: vms-alpha.c:8507 -#, c-format +#, fuzzy, c-format msgid "cannot read DMT header\n" -msgstr "" +msgstr "Gagal membaca pengepala QTIF" #: vms-alpha.c:8513 #, c-format @@ -8624,9 +8782,9 @@ msgid " module offset: 0x%08x, size: 0x%08x, (%u psects)\n" msgstr "" #: vms-alpha.c:8523 -#, c-format +#, fuzzy, c-format msgid "cannot read DMT psect\n" -msgstr "" +msgstr "Tak dalat membaca CD: %s" #: vms-alpha.c:8527 #, c-format @@ -8634,19 +8792,19 @@ msgid " psect start: 0x%08x, length: %u\n" msgstr "" #: vms-alpha.c:8540 -#, c-format +#, fuzzy, c-format msgid "cannot read DST\n" -msgstr "" +msgstr "Tidak Dapat Baca" #: vms-alpha.c:8550 -#, c-format +#, fuzzy, c-format msgid "cannot read GST\n" -msgstr "" +msgstr "profil-gst" #: vms-alpha.c:8554 -#, c-format +#, fuzzy, c-format msgid "Global symbol table:\n" -msgstr "" +msgstr "Simbol" #: vms-alpha.c:8581 #, c-format @@ -8654,14 +8812,14 @@ msgid "Image activator fixup: (major: %u, minor: %u)\n" msgstr "" #: vms-alpha.c:8585 -#, c-format +#, fuzzy, c-format msgid " iaflink : 0x%08x %08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:8589 -#, c-format +#, fuzzy, c-format msgid " fixuplnk: 0x%08x %08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:8592 #, c-format @@ -8669,9 +8827,9 @@ msgid " size : %u\n" msgstr " saiz : %u\n" #: vms-alpha.c:8594 -#, c-format +#, fuzzy, c-format msgid " flags: 0x%08x\n" -msgstr "" +msgstr "Ralat DDE %08x tidak diketahui" #: vms-alpha.c:8599 #, c-format @@ -8704,9 +8862,9 @@ msgid " shlextra : %5u, permctx : %5u\n" msgstr "" #: vms-alpha.c:8622 -#, c-format +#, fuzzy, c-format msgid " base_va : 0x%08x\n" -msgstr "" +msgstr "Penyahkod video VA-API" #: vms-alpha.c:8624 #, c-format @@ -8714,9 +8872,9 @@ msgid " lppsbfixoff: %5u\n" msgstr "" #: vms-alpha.c:8631 -#, c-format +#, fuzzy, c-format msgid " Shareable images:\n" -msgstr "" +msgstr "Senarai Main Boleh Kongsi (%s)" #: vms-alpha.c:8642 #, c-format @@ -8724,14 +8882,14 @@ msgid " %u: size: %u, flags: 0x%02x, name: %.*s\n" msgstr "" #: vms-alpha.c:8649 -#, c-format +#, fuzzy, c-format msgid " quad-word relocation fixups:\n" -msgstr "" +msgstr "Anak Panah Quad" #: vms-alpha.c:8655 -#, c-format +#, fuzzy, c-format msgid " long-word relocation fixups:\n" -msgstr "" +msgstr "perkataan" #: vms-alpha.c:8661 #, c-format @@ -8739,24 +8897,24 @@ msgid " quad-word .address reference fixups:\n" msgstr "" #: vms-alpha.c:8666 -#, c-format +#, fuzzy, c-format msgid " long-word .address reference fixups:\n" -msgstr "" +msgstr "Panjang %u terlalu panjang untuk alamat" #: vms-alpha.c:8671 -#, c-format +#, fuzzy, c-format msgid " Code Address Reference Fixups:\n" -msgstr "" +msgstr "Rujukan(en)" #: vms-alpha.c:8676 -#, c-format +#, fuzzy, c-format msgid " Linkage Pairs Reference Fixups:\n" -msgstr "" +msgstr "Pasangan AT" #: vms-alpha.c:8684 -#, c-format +#, fuzzy, c-format msgid " Change Protection (%u entries):\n" -msgstr "" +msgstr "Sebuah penyimpan buku catatan yang berguna, menyimpan %u masukan." #: vms-alpha.c:8693 #, c-format @@ -8766,8 +8924,9 @@ msgstr "" #. FIXME: we do not yet support relocatable link. It is not obvious #. how to do it for debug infos. #: vms-alpha.c:9570 +#, fuzzy msgid "%P: relocatable link is not supported\n" -msgstr "" +msgstr "Skema boleh letak semula" #: vms-alpha.c:9641 #, c-format @@ -8775,9 +8934,9 @@ msgid "%P: multiple entry points: in modules %pB and %pB\n" msgstr "" #: vms-lib.c:1530 -#, c-format +#, fuzzy, c-format msgid "could not open shared image '%s' from '%s'" -msgstr "" +msgstr "Tidak dapat membuka penukar dari \"%s\" ke \"%s\"" #: vms-misc.c:374 msgid "_bfd_vms_output_counted called with zero bytes" @@ -8798,9 +8957,9 @@ msgid "%pB: XCOFF shared object when not producing XCOFF output" msgstr "" #: xcofflink.c:902 -#, c-format +#, fuzzy, c-format msgid "%pB: dynamic object with no .loader section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: xcofflink.c:1484 #, c-format @@ -8833,19 +8992,19 @@ msgid "%pB: TOC entry `%s' has a R_TLSMLrelocation not targeting itself" msgstr "" #: xcofflink.c:1776 -#, c-format +#, fuzzy, c-format msgid "%pB: csect `%s' not in enclosing section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: xcofflink.c:1885 -#, c-format +#, fuzzy, c-format msgid "%pB: misplaced XTY_LD `%s'" -msgstr "" +msgstr "%s Pb" #: xcofflink.c:2228 -#, c-format +#, fuzzy, c-format msgid "%pB: reloc %s:%<PRId64> not in csect" -msgstr "" +msgstr "%s Pb" #: xcofflink.c:3337 #, c-format @@ -8858,13 +9017,14 @@ msgid "%s: no such symbol" msgstr "%s: tiada simbol sedemikian" #: xcofflink.c:3494 -#, c-format +#, fuzzy, c-format msgid "warning: attempt to export undefined symbol `%s'" -msgstr "" +msgstr "amaran: pembolehubah tidak dinyatakan `%.*s'" #: xcofflink.c:3842 +#, fuzzy msgid "error: undefined symbol __rtinit" -msgstr "" +msgstr "simbol permulaan %s tidak ditakrifkan" #: xcofflink.c:4855 #, c-format @@ -8872,9 +9032,9 @@ msgid "%pB: Unable to find a stub csect in rangeof relocation at %#<PRIx64> targ msgstr "" #: xcofflink.c:4884 -#, c-format +#, fuzzy, c-format msgid "%pB: Cannot create stub entry '%s'" -msgstr "" +msgstr "%s: Tak dapat mencipta symlink ke %s" #: xcofflink.c:5004 msgid "TOC overflow during stub generation; try -mminimal-toc when compiling" @@ -8886,9 +9046,9 @@ msgid "%pB: loader reloc in unrecognized section `%s'" msgstr "" #: xcofflink.c:5084 -#, c-format +#, fuzzy, c-format msgid "%pB: `%s' in loader reloc but not loader sym" -msgstr "" +msgstr "Ralat dalaman pada pemuat GIF (%s)" #: xcofflink.c:5101 #, c-format @@ -8901,34 +9061,35 @@ msgid "TOC overflow: %#<PRIx64> > 0x10000; try -mminimal-toc when compiling" msgstr "" #: xcofflink.c:7296 -#, c-format +#, fuzzy, c-format msgid "Unable to link input file: %s" -msgstr "" +msgstr "menutup fail input %s" #: xtensa-dynconfig.c:60 +#, fuzzy msgid "Unable to load DLL." -msgstr "" +msgstr "Tidak boleh muatkan lokasi" #: xtensa-dynconfig.c:86 -#, c-format +#, fuzzy, c-format msgid "%s is defined but could not be loaded: %s" -msgstr "" +msgstr "Profil tidak dapat dimuatkan: %s" #: xtensa-dynconfig.c:102 -#, c-format +#, fuzzy, c-format msgid "%s is loaded but symbol \"%s\" is not found: %s" -msgstr "" +msgstr "simbol tidak dijumpai di dalam pengeluaran: %.*s" #: xtensa-dynconfig.c:115 -#, c-format +#, fuzzy, c-format msgid "%s is defined but plugin support is disabled" -msgstr "" +msgstr "Gagal memulakan perkhidmatan Penjejak: %s. Pemalam dilumpuhkan." #. Not fatal, this callback cannot fail. #: elfnn-aarch64.c:2878 elfnn-riscv.c:5739 -#, c-format +#, fuzzy, c-format msgid "unknown attribute for symbol `%s': 0x%02x" -msgstr "" +msgstr "Vendor GPU anda tidak diketahui: %s (0x%X)" #: elfnn-aarch64.c:5468 #, c-format @@ -8993,61 +9154,61 @@ msgid "%pB(%pA+%#<PRIx64>): unresolvable %s relocation in section `%s'" msgstr "" #: elfnn-kvx.c:2850 -#, c-format +#, fuzzy, c-format msgid "%s: Bad ELF id: `%d'" -msgstr "" +msgstr "%s: ofset teruk pada halaman %d\n" #: elfnn-kvx.c:2905 -#, c-format +#, fuzzy, c-format msgid "%s: compiled as 32-bit object and %s is 64-bit" -msgstr "" +msgstr "Dikompil oleh %s pada %s (%s)\n" #: elfnn-kvx.c:2908 -#, c-format +#, fuzzy, c-format msgid "%s: compiled as 64-bit object and %s is 32-bit" -msgstr "" +msgstr "Dikompil oleh %s pada %s (%s)\n" #: elfnn-kvx.c:2910 -#, c-format +#, fuzzy, c-format msgid "%s: object size does not match that of target %s" -msgstr "" +msgstr "Direktori sasaran \"%s\" tidak wujud" #. Ignore init flag - it may not be set, despite the flags field #. containing valid data. #: elfnn-kvx.c:2998 -#, c-format +#, fuzzy, c-format msgid "Private flags = 0x%lx : " -msgstr "" +msgstr "[find_call] %s: 0x%lx ke 0x%lx\n" #: elfnn-kvx.c:3002 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv3) V1 64 bits" -msgstr "" +msgstr "64 bit" #: elfnn-kvx.c:3004 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv3) V2 64 bits" -msgstr "" +msgstr "64 bit" #: elfnn-kvx.c:3006 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv4) V1 64 bits" -msgstr "" +msgstr "64 bit" #: elfnn-kvx.c:3011 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv3) V1 32 bits" -msgstr "" +msgstr "Himpun data dengan 32 bit" #: elfnn-kvx.c:3013 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv3) V2 32 bits" -msgstr "" +msgstr "Himpun data dengan 32 bit" #: elfnn-kvx.c:3015 -#, c-format +#, fuzzy, c-format msgid "Coolidge (kv4) V1 32 bits" -msgstr "" +msgstr "Himpun data dengan 32 bit" #: elfnn-kvx.c:3847 #, c-format @@ -9072,8 +9233,9 @@ msgid "%pB: can't link different ABI object." msgstr "" #: elfnn-loongarch.c:726 +#, fuzzy msgid "Internal error: unreachable." -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elfnn-loongarch.c:906 #, c-format @@ -9081,8 +9243,9 @@ msgid "%pB:(%pA+%#lx): relocation %s against `%s` can not be used when making %s msgstr "" #: elfnn-loongarch.c:910 +#, fuzzy msgid " and check the symbol visibility" -msgstr "" +msgstr "Simbol" #: elfnn-loongarch.c:1036 #, c-format @@ -9149,9 +9312,9 @@ msgid "%%pcrel_lo overflow with an addend, the value of %%pcrel_hi is 0x%<PRIx64 msgstr "" #: elfnn-riscv.c:2156 -#, c-format +#, fuzzy, c-format msgid "%pcrel_lo overflow with an addend" -msgstr "" +msgstr "Rekod melimpah" #: elfnn-riscv.c:2639 #, c-format @@ -9187,9 +9350,9 @@ msgid "%pcrel_lo section symbol with an addend" msgstr "" #: elfnn-riscv.c:2923 -#, c-format +#, fuzzy, c-format msgid "%tlsdesc_lo with addend" -msgstr "" +msgstr "Tambah _Lokasi...:" #: elfnn-riscv.c:3156 #, c-format @@ -9197,20 +9360,24 @@ msgid "%%X%%P: unresolvable %s relocation against symbol `%s'\n" msgstr "" #: elfnn-riscv.c:3191 +#, fuzzy msgid "%X%P: internal error: out of range error\n" -msgstr "" +msgstr "ralat dalaman X: %s\n" #: elfnn-riscv.c:3196 +#, fuzzy msgid "%X%P: internal error: unsupported relocation error\n" -msgstr "" +msgstr "ralat dalaman X: %s\n" #: elfnn-riscv.c:3202 +#, fuzzy msgid "dangerous relocation error" -msgstr "" +msgstr "Fail berpontensi bahaya" #: elfnn-riscv.c:3208 +#, fuzzy msgid "%X%P: internal error: unknown error\n" -msgstr "" +msgstr "Ralat dalaman: Ralat tidak diketahui" #: elfnn-riscv.c:3785 #, c-format @@ -9247,9 +9414,9 @@ msgid "error: %pB use %u-byte stack aligned but the output use %u-byte stack ali msgstr "" #: elfnn-riscv.c:4238 -#, c-format +#, fuzzy, c-format msgid "%pB: can't link %s modules with %s modules" -msgstr "" +msgstr "Tidak dapat awalkan modul berdaftar PKCS#11: %s" #: elfnn-riscv.c:4248 #, c-format @@ -9267,9 +9434,9 @@ msgid "%pB: relocation %s against non-absolute symbol `%s' can not be used in RV msgstr "" #: peXXigen.c:161 -#, c-format +#, fuzzy, c-format msgid "%pB: unable to find name for empty section" -msgstr "" +msgstr "Pemasangan: Tidak jumpa nama folder yang sesuai untuk $1" #: peXXigen.c:188 #, c-format @@ -9287,9 +9454,9 @@ msgid "%pB:%.8s: section below image base" msgstr "" #: peXXigen.c:929 -#, c-format +#, fuzzy, c-format msgid "%pB:%.8s: RVA truncated" -msgstr "" +msgstr "DIPANGKAS" #: peXXigen.c:1061 #, c-format @@ -9301,60 +9468,76 @@ msgid "Export Directory [.edata (or where ever we found it)]" msgstr "" #: peXXigen.c:1228 +#, fuzzy msgid "Import Directory [parts of .idata]" -msgstr "" +msgstr "bahagian" #: peXXigen.c:1229 +#, fuzzy msgid "Resource Directory [.rsrc]" -msgstr "" +msgstr "Sumber pada \"%s\" bukan satu direktori" #: peXXigen.c:1230 +#, fuzzy msgid "Exception Directory [.pdata]" -msgstr "" +msgstr "Maklumat pengecualian:" #: peXXigen.c:1231 +#, fuzzy msgid "Security Directory" -msgstr "" +msgstr "KESELAMATAN " #: peXXigen.c:1232 +#, fuzzy msgid "Base Relocation Directory [.reloc]" -msgstr "" +msgstr "_Pangkalan Direktori:" #: peXXigen.c:1233 +#, fuzzy msgid "Debug Directory" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:1234 +#, fuzzy msgid "Description Directory" -msgstr "" +msgstr "Keterangan" #: peXXigen.c:1235 +#, fuzzy msgid "Special Directory" -msgstr "" +msgstr "SPECIAL" #: peXXigen.c:1236 +#, fuzzy msgid "Thread Storage Directory [.tls]" -msgstr "" +msgstr "Gagal memulakan benang: ralat menulis TLS." #: peXXigen.c:1237 +#, fuzzy msgid "Load Configuration Directory" -msgstr "" +msgstr "Muatkan item tambahan konfigurasi" #: peXXigen.c:1238 +#, fuzzy msgid "Bound Import Directory" -msgstr "" +msgstr "Import direktori" #: peXXigen.c:1239 +#, fuzzy msgid "Import Address Table Directory" -msgstr "" +msgstr "Import direktori" #: peXXigen.c:1240 +#, fuzzy msgid "Delay Import Directory" -msgstr "" +msgstr "Import direktori" #: peXXigen.c:1241 +#, fuzzy msgid "CLR Runtime Header" -msgstr "" +msgstr "Masa Jalan" #: peXXigen.c:1242 msgid "Reserved" @@ -9368,25 +9551,29 @@ msgid "" msgstr "" #: peXXigen.c:1313 -#, c-format +#, fuzzy, c-format msgid "" "\n" "There is an import table in %s, but that section has no contents\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:1320 -#, c-format +#, fuzzy, c-format msgid "" "\n" "There is an import table in %s at 0x%lx\n" -msgstr "" +msgstr "[find_call] %s: 0x%lx ke 0x%lx\n" #: peXXigen.c:1326 -#, c-format +#, fuzzy, c-format msgid "" "\n" "The Import Tables (interpreted %s section contents)\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:1329 #, c-format @@ -9396,11 +9583,11 @@ msgid "" msgstr "" #: peXXigen.c:1378 -#, c-format +#, fuzzy, c-format msgid "" "\n" "\tDLL Name: %.*s\n" -msgstr "" +msgstr "Nama: %s, EntitiID: %s" #: peXXigen.c:1394 #, c-format @@ -9415,9 +9602,9 @@ msgid "" msgstr "" #: peXXigen.c:1469 peXXigen.c:1514 -#, c-format +#, fuzzy, c-format msgid "\t<corrupt: 0x%08lx>" -msgstr "" +msgstr "Eksponen: 0x" #: peXXigen.c:1608 #, c-format @@ -9434,41 +9621,43 @@ msgid "" msgstr "" #: peXXigen.c:1629 -#, c-format +#, fuzzy, c-format msgid "" "\n" "There is an export table in %s, but contents cannot be read\n" -msgstr "" +msgstr "Tidak dapat menyediakan kandungan sebagai \"%s\"" #: peXXigen.c:1635 -#, c-format +#, fuzzy, c-format msgid "" "\n" "There is an export table in %s at 0x%lx\n" -msgstr "" +msgstr "[find_call] %s: 0x%lx ke 0x%lx\n" #: peXXigen.c:1666 -#, c-format +#, fuzzy, c-format msgid "" "\n" "The Export Tables (interpreted %s section contents)\n" "\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:1670 -#, c-format +#, fuzzy, c-format msgid "Export Flags \t\t\t%lx\n" -msgstr "" +msgstr "Eksport" #: peXXigen.c:1673 -#, c-format +#, fuzzy, c-format msgid "Time/Date stamp \t\t%lx\n" -msgstr "" +msgstr "Setem Tarikh GPS" #: peXXigen.c:1677 -#, c-format +#, fuzzy, c-format msgid "Major/Minor \t\t\t%d/%d\n" -msgstr "" +msgstr "Penggunaan: %s [OPSYEN]... NAMA JENIS [MAJOR MINOR]\n" #: peXXigen.c:1680 #, c-format @@ -9476,9 +9665,9 @@ msgid "Name \t\t\t\t" msgstr "Nama \t\t\t\t" #: peXXigen.c:1691 -#, c-format +#, fuzzy, c-format msgid "Ordinal Base \t\t\t%ld\n" -msgstr "" +msgstr "ordinal" #: peXXigen.c:1694 #, c-format @@ -9486,34 +9675,34 @@ msgid "Number in:\n" msgstr "Nombor dalam:\n" #: peXXigen.c:1697 -#, c-format +#, fuzzy, c-format msgid "\tExport Address Table \t\t%08lx\n" -msgstr "" +msgstr "Eksport" #: peXXigen.c:1701 -#, c-format +#, fuzzy, c-format msgid "\t[Name Pointer/Ordinal] Table\t%08lx\n" -msgstr "" +msgstr "Nama jadual adalah kosong!" #: peXXigen.c:1704 -#, c-format +#, fuzzy, c-format msgid "Table Addresses\n" -msgstr "" +msgstr "Alamat:" #: peXXigen.c:1707 -#, c-format +#, fuzzy, c-format msgid "\tExport Address Table \t\t" -msgstr "" +msgstr "Eksport" #: peXXigen.c:1712 -#, c-format +#, fuzzy, c-format msgid "\tName Pointer Table \t\t" -msgstr "" +msgstr "Nama jadual adalah kosong!" #: peXXigen.c:1717 -#, c-format +#, fuzzy, c-format msgid "\tOrdinal Table \t\t\t" -msgstr "" +msgstr "ordinal" #: peXXigen.c:1731 #, c-format @@ -9528,12 +9717,14 @@ msgid "\tInvalid Export Address Table rva (0x%lx) or entry count (0x%lx)\n" msgstr "" #: peXXigen.c:1760 +#, fuzzy msgid "Forwarder RVA" -msgstr "" +msgstr "Jenis Saiz Rva Offset\n" #: peXXigen.c:1772 +#, fuzzy msgid "Export RVA" -msgstr "" +msgstr "Jenis Saiz Rva Offset\n" #: peXXigen.c:1779 #, c-format @@ -9614,34 +9805,34 @@ msgid "\treloc %4d offset %4x [%4lx] %s" msgstr "" #: peXXigen.c:2276 -#, c-format +#, fuzzy, c-format msgid "%03x %*.s Entry: " -msgstr "" +msgstr " Sumber bermula pada offset: %#03x\n" #: peXXigen.c:2300 -#, c-format +#, fuzzy, c-format msgid "name: [val: %08lx len %d]: " -msgstr "" +msgstr "Ralat membaca dari klien, len = %d\n" #: peXXigen.c:2320 -#, c-format +#, fuzzy, c-format msgid "<corrupt string length: %#x>\n" -msgstr "" +msgstr "-X <rentetan>" #: peXXigen.c:2330 -#, c-format +#, fuzzy, c-format msgid "<corrupt string offset: %#lx>\n" -msgstr "" +msgstr "ofset" #: peXXigen.c:2335 #, c-format msgid "ID: %#08lx" -msgstr "" +msgstr "ID: %#08lx" #: peXXigen.c:2338 -#, c-format +#, fuzzy, c-format msgid ", Value: %#08lx\n" -msgstr "" +msgstr "nilai" #: peXXigen.c:2360 #, c-format @@ -9651,7 +9842,7 @@ msgstr "" #: peXXigen.c:2402 #, c-format msgid "<unknown directory type: %d>\n" -msgstr "" +msgstr "<jenis direktori tidak diketahui: %d>\n" #: peXXigen.c:2410 #, c-format @@ -9661,7 +9852,7 @@ msgstr "" #: peXXigen.c:2498 #, c-format msgid "Corrupt .rsrc section detected!\n" -msgstr "" +msgstr "Bahagian .rsrc yang rosak dikesan!\n" #: peXXigen.c:2522 #, c-format @@ -9671,21 +9862,23 @@ msgid "" msgstr "" #: peXXigen.c:2528 -#, c-format +#, fuzzy, c-format msgid " String table starts at offset: %#03x\n" -msgstr "" +msgstr " Sumber bermula pada offset: %#03x\n" #: peXXigen.c:2531 #, c-format msgid " Resources start at offset: %#03x\n" -msgstr "" +msgstr " Sumber bermula pada offset: %#03x\n" #: peXXigen.c:2588 -#, c-format +#, fuzzy, c-format msgid "" "\n" "There is a debug directory, but the section containing it could not be found\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:2594 #, c-format @@ -9693,6 +9886,8 @@ msgid "" "\n" "There is a debug directory in %s, but that section has no contents\n" msgstr "" +"\n" +"Terdapat direktori nyahpijat dalam %s, tetapi bahagian itu tidak mempunyai kandungan\n" #: peXXigen.c:2601 #, c-format @@ -9708,6 +9903,9 @@ msgid "" "There is a debug directory in %s at 0x%lx\n" "\n" msgstr "" +"\n" +"Terdapat direktori nyahpepijat dalam %s pada 0x%lx\n" +"\n" #: peXXigen.c:2613 #, c-format @@ -9717,7 +9915,7 @@ msgstr "" #: peXXigen.c:2618 #, c-format msgid "Type Size Rva Offset\n" -msgstr "" +msgstr "Jenis Saiz Rva Offset\n" #: peXXigen.c:2666 #, c-format @@ -9738,6 +9936,8 @@ msgid "" "\n" "Characteristics 0x%x\n" msgstr "" +"\n" +"Ciri-ciri 0x%x\n" #: peXXigen.c:3047 #, c-format @@ -9746,12 +9946,12 @@ msgstr "" #: peXXigen.c:3088 msgid "failed to update file offsets in debug directory" -msgstr "" +msgstr "gagal mengemaskini offset fail dalam direktori nyahpijat" #: peXXigen.c:3097 #, c-format msgid "%pB: failed to read debug data section" -msgstr "" +msgstr "%pB: gagal membaca bahagian data nyahpepijat" #: peXXigen.c:3900 #, c-format @@ -9785,9 +9985,9 @@ msgstr "" #. Corrupted .rsrc section - cannot merge. #: peXXigen.c:4286 -#, c-format +#, fuzzy, c-format msgid "%pB: .rsrc merge failure: corrupt .rsrc section" -msgstr "" +msgstr "Bahagian .rsrc yang rosak dikesan!\n" #: peXXigen.c:4294 #, c-format diff --git a/bfd/ppcboot.c b/bfd/ppcboot.c index b4b59c9..dd70267 100644 --- a/bfd/ppcboot.c +++ b/bfd/ppcboot.c @@ -474,7 +474,6 @@ ppcboot_bfd_print_private_bfd_data (bfd *abfd, void * farg) #define ppcboot_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data #define ppcboot_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data -#define ppcboot_init_private_section_data _bfd_generic_init_private_section_data #define ppcboot_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data #define ppcboot_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data #define ppcboot_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data diff --git a/bfd/reloc.c b/bfd/reloc.c index d3ddafb..c9d53bb 100644 --- a/bfd/reloc.c +++ b/bfd/reloc.c @@ -7419,6 +7419,12 @@ ENUMDOC AArch64 pseudo relocation code to be used internally by the AArch64 assembler and not (currently) written to any object files. ENUM + BFD_RELOC_AARCH64_BRANCH9 +ENUMDOC + AArch64 9 bit pc-relative conditional branch and compare & branch. + The lowest two bits must be zero and are not stored in the + instruction, giving an 11 bit signed byte offset. +ENUM BFD_RELOC_TILEPRO_COPY ENUMX BFD_RELOC_TILEPRO_GLOB_DAT diff --git a/bfd/section.c b/bfd/section.c index 9460ff9..5f0cf6e 100644 --- a/bfd/section.c +++ b/bfd/section.c @@ -1667,7 +1667,8 @@ FUNCTION SYNOPSIS bool bfd_copy_private_section_data - (bfd *ibfd, asection *isec, bfd *obfd, asection *osec); + (bfd *ibfd, asection *isec, bfd *obfd, asection *osec, + struct bfd_link_info *link_info); DESCRIPTION Copy private section information from @var{isec} in the BFD @@ -1678,9 +1679,9 @@ DESCRIPTION o <<bfd_error_no_memory>> - Not enough memory exists to create private data for @var{osec}. -.#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \ +.#define bfd_copy_private_section_data(ibfd, isec, obfd, osec, link_info) \ . BFD_SEND (obfd, _bfd_copy_private_section_data, \ -. (ibfd, isection, obfd, osection)) +. (ibfd, isec, obfd, osec, link_info)) */ /* @@ -5372,17 +5372,17 @@ static bool som_bfd_copy_private_section_data (bfd *ibfd, asection *isection, bfd *obfd, - asection *osection) + asection *osection, + struct bfd_link_info *link_info) { - size_t amt; - /* One day we may try to grok other private data. */ - if (ibfd->xvec->flavour != bfd_target_som_flavour + if (link_info != NULL + || ibfd->xvec->flavour != bfd_target_som_flavour || obfd->xvec->flavour != bfd_target_som_flavour || (!som_is_space (isection) && !som_is_subspace (isection))) return true; - amt = sizeof (struct som_copyable_section_data_struct); + size_t amt = sizeof (struct som_copyable_section_data_struct); som_section_data (osection)->copy_data = bfd_zalloc (obfd, amt); if (som_section_data (osection)->copy_data == NULL) return false; @@ -5401,7 +5401,8 @@ som_bfd_copy_private_section_data (bfd *ibfd, { /* User has specified a subspace without its containing space. */ _bfd_error_handler (_("%pB[%pA]: no output section for space %pA"), - obfd, osection, som_section_data (osection)->copy_data->container); + obfd, osection, + som_section_data (osection)->copy_data->container); return false; } } @@ -6779,7 +6780,6 @@ som_bfd_link_split_section (bfd *abfd ATTRIBUTE_UNUSED, asection *sec) #define som_bfd_link_hide_symbol _bfd_generic_link_hide_symbol #define som_bfd_define_start_stop bfd_generic_define_start_stop #define som_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data -#define som_init_private_section_data _bfd_generic_init_private_section_data #define som_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data #define som_bfd_set_private_flags _bfd_generic_bfd_set_private_flags #define som_find_inliner_info _bfd_nosymbols_find_inliner_info @@ -594,6 +594,7 @@ struct section_to_type adding entries. Since it is so short, a linear search is used. */ static const struct section_to_type stt[] = { + {".didat", 'i'}, /* MSVC's .didat (delay import) section */ {".drectve", 'i'}, /* MSVC's .drective section */ {".edata", 'e'}, /* MSVC's .edata (export) section */ {".idata", 'i'}, /* MSVC's .idata (import) section */ diff --git a/bfd/targets.c b/bfd/targets.c index 18f5782..2333370 100644 --- a/bfd/targets.c +++ b/bfd/targets.c @@ -282,7 +282,6 @@ BFD_JUMP_TABLE macros. .#define BFD_JUMP_TABLE_COPY(NAME) \ . NAME##_bfd_copy_private_bfd_data, \ . NAME##_bfd_merge_private_bfd_data, \ -. NAME##_init_private_section_data, \ . NAME##_bfd_copy_private_section_data, \ . NAME##_bfd_copy_private_symbol_data, \ . NAME##_bfd_copy_private_header_data, \ @@ -295,16 +294,10 @@ BFD_JUMP_TABLE macros. . {* Called to merge BFD general private data from one object file . to a common output file when linking. *} . bool (*_bfd_merge_private_bfd_data) (bfd *, struct bfd_link_info *); -. {* Called to initialize BFD private section data from one object file -. to another. *} -.#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \ -. BFD_SEND (obfd, _bfd_init_private_section_data, \ -. (ibfd, isec, obfd, osec, link_info)) -. bool (*_bfd_init_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr, -. struct bfd_link_info *); . {* Called to copy BFD private section data from one object file . to another. *} -. bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr); +. bool (*_bfd_copy_private_section_data) (bfd *, sec_ptr, bfd *, sec_ptr, +. struct bfd_link_info *); . {* Called to copy BFD private symbol data from one symbol . to another. *} . bool (*_bfd_copy_private_symbol_data) (bfd *, asymbol *, diff --git a/bfd/version.h b/bfd/version.h index d642861..8275029 100644 --- a/bfd/version.h +++ b/bfd/version.h @@ -16,7 +16,7 @@ In releases, the date is not included in either version strings or sonames. */ -#define BFD_VERSION_DATE 20250328 +#define BFD_VERSION_DATE 20250714 #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_package@ @bfd_version_string@ #define REPORT_BUGS_TO @report_bugs_to@ diff --git a/bfd/version.m4 b/bfd/version.m4 index 14f7756..5cb6993 100644 --- a/bfd/version.m4 +++ b/bfd/version.m4 @@ -1 +1 @@ -m4_define([BFD_VERSION], [2.44.50]) +m4_define([BFD_VERSION], [2.45.50]) diff --git a/bfd/vms-alpha.c b/bfd/vms-alpha.c index 548a979..c4b2484 100644 --- a/bfd/vms-alpha.c +++ b/bfd/vms-alpha.c @@ -10156,7 +10156,6 @@ bfd_vms_get_data (bfd *abfd) #define vms_bfd_copy_private_bfd_data _bfd_generic_bfd_copy_private_bfd_data #define vms_bfd_merge_private_bfd_data _bfd_generic_bfd_merge_private_bfd_data -#define vms_init_private_section_data _bfd_generic_init_private_section_data #define vms_bfd_copy_private_section_data _bfd_generic_bfd_copy_private_section_data #define vms_bfd_copy_private_symbol_data _bfd_generic_bfd_copy_private_symbol_data #define vms_bfd_copy_private_header_data _bfd_generic_bfd_copy_private_header_data diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index 446fa5a..b50b17f 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -243,6 +243,55 @@ xcoff_get_section_contents (bfd *abfd, asection *sec) return contents; } +/* Read .loader and swap in the header. Sanity check to prevent + buffer overflows. Don't bother to check for overlap as that sort + of insanity shouldn't lead to incorrect program behaviour. */ + +static bfd_byte * +xcoff_get_ldhdr (bfd *abfd, asection *lsec, struct internal_ldhdr *ldhdr) +{ + bfd_byte *contents = xcoff_get_section_contents (abfd, lsec); + if (contents) + { + bfd_xcoff_swap_ldhdr_in (abfd, contents, ldhdr); + if (ldhdr->l_nsyms != 0) + { + bfd_vma symoff = bfd_xcoff_loader_symbol_offset (abfd, ldhdr); + if (symoff > lsec->size) + goto fail; + bfd_size_type onesym = bfd_xcoff_ldsymsz (abfd); + bfd_size_type syms; + if (_bfd_mul_overflow (ldhdr->l_nsyms, onesym, &syms) + || syms > lsec->size - symoff) + goto fail; + } + if (ldhdr->l_stlen != 0 + && (ldhdr->l_stoff > lsec->size + || ldhdr->l_stlen > lsec->size - ldhdr->l_stoff)) + goto fail; + if (ldhdr->l_nreloc != 0) + { + bfd_vma reloff = bfd_xcoff_loader_reloc_offset (abfd, ldhdr); + if (reloff > lsec->size) + goto fail; + bfd_size_type onerel = bfd_xcoff_ldrelsz (abfd); + bfd_size_type rels; + if (_bfd_mul_overflow (ldhdr->l_nreloc, onerel, &rels) + || rels > lsec->size - reloff) + goto fail; + } + if (ldhdr->l_nimpid != 0 + && (ldhdr->l_impoff > lsec->size + || ldhdr->l_istlen > lsec->size - ldhdr->l_impoff)) + goto fail; + } + return contents; + + fail: + bfd_set_error (bfd_error_file_truncated); + return NULL; +} + /* Get the size required to hold the dynamic symbols. */ long @@ -265,12 +314,10 @@ _bfd_xcoff_get_dynamic_symtab_upper_bound (bfd *abfd) return -1; } - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return -1; - bfd_xcoff_swap_ldhdr_in (abfd, (void *) contents, &ldhdr); - return (ldhdr.l_nsyms + 1) * sizeof (asymbol *); } @@ -299,12 +346,10 @@ _bfd_xcoff_canonicalize_dynamic_symtab (bfd *abfd, asymbol **psyms) return -1; } - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return -1; - bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr); - strings = (char *) contents + ldhdr.l_stoff; symbuf = bfd_zalloc (abfd, ldhdr.l_nsyms * sizeof (* symbuf)); @@ -322,9 +367,7 @@ _bfd_xcoff_canonicalize_dynamic_symtab (bfd *abfd, asymbol **psyms) symbuf->symbol.the_bfd = abfd; - if (ldsym._l._l_l._l_zeroes == 0) - symbuf->symbol.name = strings + ldsym._l._l_l._l_offset; - else + if (ldsym._l._l_l._l_zeroes != 0) { char *c; @@ -335,6 +378,10 @@ _bfd_xcoff_canonicalize_dynamic_symtab (bfd *abfd, asymbol **psyms) c[SYMNMLEN] = '\0'; symbuf->symbol.name = c; } + else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen) + symbuf->symbol.name = strings + ldsym._l._l_l._l_offset; + else + symbuf->symbol.name = _("<corrupt>"); if (ldsym.l_smclas == XMC_XO) symbuf->symbol.section = bfd_abs_section_ptr; @@ -384,12 +431,10 @@ _bfd_xcoff_get_dynamic_reloc_upper_bound (bfd *abfd) return -1; } - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return -1; - bfd_xcoff_swap_ldhdr_in (abfd, (struct external_ldhdr *) contents, &ldhdr); - return (ldhdr.l_nreloc + 1) * sizeof (arelent *); } @@ -419,12 +464,10 @@ _bfd_xcoff_canonicalize_dynamic_reloc (bfd *abfd, return -1; } - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return -1; - bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr); - relbuf = bfd_alloc (abfd, ldhdr.l_nreloc * sizeof (arelent)); if (relbuf == NULL) return -1; @@ -905,7 +948,7 @@ xcoff_link_add_dynamic_symbols (bfd *abfd, struct bfd_link_info *info) return false; } - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return false; @@ -913,8 +956,6 @@ xcoff_link_add_dynamic_symbols (bfd *abfd, struct bfd_link_info *info) included in the link. */ bfd_section_list_clear (abfd); - bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr); - strings = (char *) contents + ldhdr.l_stoff; elsym = contents + bfd_xcoff_loader_symbol_offset(abfd, &ldhdr); @@ -934,14 +975,16 @@ xcoff_link_add_dynamic_symbols (bfd *abfd, struct bfd_link_info *info) if ((ldsym.l_smtype & L_EXPORT) == 0) continue; - if (ldsym._l._l_l._l_zeroes == 0) - name = strings + ldsym._l._l_l._l_offset; - else + if (ldsym._l._l_l._l_zeroes != 0) { memcpy (nambuf, ldsym._l._l_name, SYMNMLEN); nambuf[SYMNMLEN] = '\0'; name = nambuf; } + else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen) + name = strings + ldsym._l._l_l._l_offset; + else + continue; /* Normally we could not call xcoff_link_hash_lookup in an add symbols routine, since we might not be using an XCOFF hash @@ -2368,12 +2411,10 @@ xcoff_link_check_dynamic_ar_symbols (bfd *abfd, /* There are no symbols, so don't try to include it. */ return true; - contents = xcoff_get_section_contents (abfd, lsec); + contents = xcoff_get_ldhdr (abfd, lsec, &ldhdr); if (!contents) return false; - bfd_xcoff_swap_ldhdr_in (abfd, contents, &ldhdr); - strings = (char *) contents + ldhdr.l_stoff; elsym = contents + bfd_xcoff_loader_symbol_offset (abfd, &ldhdr); @@ -2392,14 +2433,16 @@ xcoff_link_check_dynamic_ar_symbols (bfd *abfd, if ((ldsym.l_smtype & L_EXPORT) == 0) continue; - if (ldsym._l._l_l._l_zeroes == 0) - name = strings + ldsym._l._l_l._l_offset; - else + if (ldsym._l._l_l._l_zeroes != 0) { memcpy (nambuf, ldsym._l._l_name, SYMNMLEN); nambuf[SYMNMLEN] = '\0'; name = nambuf; } + else if (ldsym._l._l_l._l_offset < ldhdr.l_stlen) + name = strings + ldsym._l._l_l._l_offset; + else + continue; h = bfd_link_hash_lookup (info->hash, name, false, false, true); |