aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/Makefile.in1
-rw-r--r--bfd/aclocal.m41
-rw-r--r--bfd/aout-target.h13
-rw-r--r--bfd/aoutx.h9
-rw-r--r--bfd/archive.c8
-rw-r--r--bfd/bfd-in2.h45
-rw-r--r--bfd/bfd.c42
-rw-r--r--bfd/coff-alpha.c121
-rw-r--r--bfd/coff-arm.c12
-rw-r--r--bfd/coff-mips.c2
-rw-r--r--bfd/coff-rs6000.c4
-rw-r--r--bfd/coff-sh.c2
-rw-r--r--bfd/coff64-rs6000.c4
-rw-r--r--bfd/coffcode.h23
-rw-r--r--bfd/coffgen.c33
-rw-r--r--bfd/cofflink.c49
-rw-r--r--bfd/compress.c51
-rwxr-xr-xbfd/configure470
-rw-r--r--bfd/configure.ac12
-rw-r--r--bfd/cpu-riscv.c1
-rw-r--r--bfd/cpu-riscv.h1
-rw-r--r--bfd/elf-bfd.h15
-rw-r--r--bfd/elf-eh-frame.c6
-rw-r--r--bfd/elf-sframe.c156
-rw-r--r--bfd/elf.c248
-rw-r--r--bfd/elf32-arm.c3
-rw-r--r--bfd/elf32-mips.c28
-rw-r--r--bfd/elf32-nds32.c18
-rw-r--r--bfd/elf32-sh.c4
-rw-r--r--bfd/elf64-mips.c40
-rw-r--r--bfd/elf64-s390.c280
-rw-r--r--bfd/elf64-x86-64.c52
-rw-r--r--bfd/elflink.c59
-rw-r--r--bfd/elfn32-mips.c40
-rw-r--r--bfd/elfnn-aarch64.c23
-rw-r--r--bfd/elfnn-loongarch.c466
-rw-r--r--bfd/elfnn-riscv.c304
-rw-r--r--bfd/elfxx-aarch64.c34
-rw-r--r--bfd/elfxx-aarch64.h29
-rw-r--r--bfd/elfxx-loongarch.c17
-rw-r--r--bfd/elfxx-mips.c123
-rw-r--r--bfd/elfxx-riscv.c493
-rw-r--r--bfd/elfxx-riscv.h22
-rw-r--r--bfd/elfxx-target.h2
-rw-r--r--bfd/elfxx-x86.c29
-rw-r--r--bfd/format.c45
-rw-r--r--bfd/i386aout.c1
-rw-r--r--bfd/libaout.h7
-rw-r--r--bfd/libbfd-in.h15
-rw-r--r--bfd/libbfd.c10
-rw-r--r--bfd/libbfd.h16
-rw-r--r--bfd/libcoff.h9
-rw-r--r--bfd/libecoff.h3
-rw-r--r--bfd/libpei.h2
-rw-r--r--bfd/linker.c20
-rw-r--r--bfd/mach-o-target.c1
-rw-r--r--bfd/mach-o.c12
-rw-r--r--bfd/mach-o.h3
-rw-r--r--bfd/mmo.c1
-rw-r--r--bfd/pdp11.c9
-rw-r--r--bfd/pe-aarch64.c2
-rw-r--r--bfd/pe-arm.c2
-rw-r--r--bfd/pe-i386.c2
-rw-r--r--bfd/pe-x86_64.c2
-rw-r--r--bfd/peXXigen.c164
-rw-r--r--bfd/pei-aarch64.c2
-rw-r--r--bfd/pei-arm.c2
-rw-r--r--bfd/pei-i386.c2
-rw-r--r--bfd/pei-loongarch64.c2
-rw-r--r--bfd/pei-riscv64.c2
-rw-r--r--bfd/pei-x86_64.c2
-rw-r--r--bfd/plugin.c5
-rw-r--r--bfd/po/bfd.pot2874
-rw-r--r--bfd/po/ms.po2690
-rw-r--r--bfd/ppcboot.c1
-rw-r--r--bfd/reloc.c6
-rw-r--r--bfd/section.c7
-rw-r--r--bfd/som.c14
-rw-r--r--bfd/syms.c1
-rw-r--r--bfd/targets.c11
-rw-r--r--bfd/version.h2
-rw-r--r--bfd/version.m42
-rw-r--r--bfd/vms-alpha.c1
-rw-r--r--bfd/xcofflink.c97
85 files changed, 5560 insertions, 3888 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 6cda73c..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 *,
diff --git a/bfd/bfd.c b/bfd/bfd.c
index a8d1314..858ab5c 100644
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -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-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..2cb732c 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. */
@@ -119,7 +120,6 @@ sframe_decoder_init_func_bfdinfo (bfd *abfd,
if ((sec->flags & SEC_LINKER_CREATED) && cookie->rels == NULL)
return true;
- BFD_ASSERT (cookie->rels + fde_count == cookie->relend);
rel = cookie->rels;
for (i = 0; i < fde_count; i++)
{
@@ -131,6 +131,14 @@ sframe_decoder_init_func_bfdinfo (bfd *abfd,
rel++;
}
+ /* If there are more relocation entries, they must be R_*_NONE which
+ may be generated from relocations against discarded sections by
+ ld -r. */
+ for (; rel < cookie->relend; rel++)
+ if (rel->r_info != 0)
+ break;
+ BFD_ASSERT (rel == cookie->relend);
+
return true;
}
@@ -190,6 +198,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 +232,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 +317,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 +325,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 +349,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 +374,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 +386,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 +446,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 +528,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 +564,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 +688,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);
diff --git a/bfd/elf.c b/bfd/elf.c
index ee89dd9..ba0e313 100644
--- a/bfd/elf.c
+++ b/bfd/elf.c
@@ -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 1aff60a..3627b30 100644
--- a/bfd/elf32-nds32.c
+++ b/bfd/elf32-nds32.c
@@ -2697,7 +2697,8 @@ nds32_elf_do_9_pcrel_reloc (bfd * abfd,
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;
@@ -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 *);
diff --git a/bfd/mmo.c b/bfd/mmo.c
index 1b1eb87..762aeff 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -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))
*/
/*
diff --git a/bfd/som.c b/bfd/som.c
index d3e0876..5c60f60 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -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
diff --git a/bfd/syms.c b/bfd/syms.c
index 95017ba..df2229b 100644
--- a/bfd/syms.c
+++ b/bfd/syms.c
@@ -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 8cb9007..40223be 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 20250403
+#define BFD_VERSION_DATE 20250715
#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);