- Update to version 2.42:
* Add support for many aarch64 extensions: SVE2.1, SME2.1, B16B16, RASv2, LSE128, GCS, CHK, SPECRES2, LRCPC3, THE, ITE, D128, XS and flags to enable them: '+fcma', '+jscvt', '+frintts', '+flagm2', '+rcpc2' and '+wfxt' * Add experimantal support for GAS to synthesize call-frame-info for some hand-written asm (--scfi=experimental) on x86-64. * Add support for more x86-64 extensions: APX: 32 GPRs, NDD, PUSH2/POP2, PUSHP/POPP; USER_MSR, AVX10.1, PBNDKB, SM4, SM3, SHA512, AVX-VNNI-INT16. * Add support for more RISC-V extensions: T-Head v2.3.0, CORE-V v1.0, SiFive VCIX v1.0. * BPF assembler: ';' separates statements now, and does not introduce line comments anymore (use '#' or '//' for this). * x86-64 ld: Add '-z mark-plt/-z nomark-plt' to mark PLT entries with dynamic tags. * risc-v ld: Add '--[no-]check-uleb128'. * New linker script directive: REVERSE, to be combined with SORT_BY_NAME or SORT_BY_INIT_PRIORITY, reverses the generated order. * New linker options --warn-execstack-objects (warn only about execstack when input object files request it), and --error-execstack plus --error-rxw-segments to convert the existing warnings into errors. * objdump: Add -Z/--decompress to be used with -s/--full-contents to decompress section contents before displaying. * readelf: Add --extra-sym-info to be used with --symbols (currently prints section name of references section index). * objcopy: Add --set-section-flags for x86_64 to include SHF_X86_64_LARGE. * s390 disassembly: add target-specific disasm option 'insndesc', as in "objdump -M insndesc" to display an instruction description as comment along with the disassembly. OBS-URL: https://build.opensuse.org/package/show/devel:gcc/binutils?expand=0&rev=458
This commit is contained in:
parent
f30534e59c
commit
98284da2a0
@ -1,207 +0,0 @@
|
|||||||
This is for userspace live patching, adding some space into
|
|
||||||
shared libs or executable (in the .ulp section) when one of the
|
|
||||||
input files contains a section named .ulp.track.
|
|
||||||
|
|
||||||
diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
|
|
||||||
index 101c2fdf50d..f5d9e201fdb 100644
|
|
||||||
--- a/bfd/elf-bfd.h
|
|
||||||
+++ b/bfd/elf-bfd.h
|
|
||||||
@@ -1487,6 +1487,10 @@ struct elf_backend_data
|
|
||||||
(const bfd *ibfd, bfd *obfd, const Elf_Internal_Shdr *isection,
|
|
||||||
Elf_Internal_Shdr *osection);
|
|
||||||
|
|
||||||
+ bool (*elf_backend_is_ulp_enabled) (bfd *abfd);
|
|
||||||
+
|
|
||||||
+ bool (*elf_backend_setup_ulp) (struct bfd_link_info *);
|
|
||||||
+
|
|
||||||
/* Used to handle bad SHF_LINK_ORDER input. */
|
|
||||||
void (*link_order_error_handler) (const char *, ...);
|
|
||||||
|
|
||||||
diff --git a/bfd/elflink.c b/bfd/elflink.c
|
|
||||||
index ce1407fa2dc..5c70bcf6c07 100644
|
|
||||||
--- a/bfd/elflink.c
|
|
||||||
+++ b/bfd/elflink.c
|
|
||||||
@@ -7260,6 +7260,13 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
|
|
||||||
s = bfd_get_linker_section (dynobj, ".gnu.version");
|
|
||||||
s->flags |= SEC_EXCLUDE;
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ if (bed->elf_backend_is_ulp_enabled != NULL
|
|
||||||
+ && bed->elf_backend_setup_ulp != NULL
|
|
||||||
+ && (*bed->elf_backend_is_ulp_enabled) (info->input_bfds))
|
|
||||||
+ {
|
|
||||||
+ (*bed->elf_backend_setup_ulp)(info);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
diff --git a/bfd/elfxx-target.h b/bfd/elfxx-target.h
|
|
||||||
index 4c6b1f20340..1f54509cd08 100644
|
|
||||||
--- a/bfd/elfxx-target.h
|
|
||||||
+++ b/bfd/elfxx-target.h
|
|
||||||
@@ -771,6 +771,14 @@
|
|
||||||
#define elf_backend_copy_special_section_fields _bfd_elf_copy_special_section_fields
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#ifndef elf_backend_is_ulp_enabled
|
|
||||||
+#define elf_backend_is_ulp_enabled NULL
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifndef elf_backend_setup_ulp
|
|
||||||
+#define elf_backend_setup_ulp NULL
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
#ifndef elf_backend_compact_eh_encoding
|
|
||||||
#define elf_backend_compact_eh_encoding NULL
|
|
||||||
#endif
|
|
||||||
@@ -904,6 +912,8 @@ static const struct elf_backend_data elfNN_bed =
|
|
||||||
elf_backend_maybe_function_sym,
|
|
||||||
elf_backend_get_reloc_section,
|
|
||||||
elf_backend_copy_special_section_fields,
|
|
||||||
+ elf_backend_is_ulp_enabled,
|
|
||||||
+ elf_backend_setup_ulp,
|
|
||||||
elf_backend_link_order_error_handler,
|
|
||||||
elf_backend_relplt_name,
|
|
||||||
ELF_MACHINE_ALT1,
|
|
||||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
|
||||||
index 62d516aab8d..c0fb718d85c 100644
|
|
||||||
--- a/bfd/elfxx-x86.c
|
|
||||||
+++ b/bfd/elfxx-x86.c
|
|
||||||
@@ -29,6 +29,8 @@
|
|
||||||
#define ELF64_DYNAMIC_INTERPRETER "/lib/ld64.so.1"
|
|
||||||
#define ELFX32_DYNAMIC_INTERPRETER "/lib/ldx32.so.1"
|
|
||||||
|
|
||||||
+#define ULP_ENTRY_LEN 16
|
|
||||||
+
|
|
||||||
bool
|
|
||||||
_bfd_x86_elf_mkobject (bfd *abfd)
|
|
||||||
{
|
|
||||||
@@ -984,6 +986,64 @@ _bfd_elf_x86_valid_reloc_p (asection *input_section,
|
|
||||||
return valid_p;
|
|
||||||
}
|
|
||||||
|
|
||||||
+/* Check if input bfds are ulp-enabled by containing .ulp.track section */
|
|
||||||
+
|
|
||||||
+bool
|
|
||||||
+_bfd_x86_elf_is_ulp_enabled (struct bfd *input_bfd)
|
|
||||||
+{
|
|
||||||
+ while (input_bfd != NULL)
|
|
||||||
+ for (; input_bfd != NULL; input_bfd = input_bfd->link.next)
|
|
||||||
+ {
|
|
||||||
+ if (input_bfd->section_count == 0) continue;
|
|
||||||
+ if (bfd_get_section_by_name (input_bfd, ".ulp.track")) return true;
|
|
||||||
+ }
|
|
||||||
+ return false;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* To be used by elf_link_hash_traverse when computing the ulp length */
|
|
||||||
+
|
|
||||||
+static bool
|
|
||||||
+bfd_x86_elf_link_compute_ulp (struct elf_link_hash_entry *h, void *data)
|
|
||||||
+{
|
|
||||||
+ unsigned long *ulp_length = (unsigned long *) data;
|
|
||||||
+
|
|
||||||
+ if (h->dynindx != -1 && h->type == STT_FUNC && !h->def_dynamic)
|
|
||||||
+ {
|
|
||||||
+ ++(*ulp_length);
|
|
||||||
+ }
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+/* Fill the user-space live patching section */
|
|
||||||
+
|
|
||||||
+bool
|
|
||||||
+_bfd_x86_elf_setup_ulp (struct bfd_link_info *info)
|
|
||||||
+{
|
|
||||||
+ struct elf_x86_link_hash_table *htab;
|
|
||||||
+ asection *ulp;
|
|
||||||
+ unsigned int ulp_length = 0;
|
|
||||||
+
|
|
||||||
+ htab = elf_x86_hash_table (info, X86_64_ELF_DATA);
|
|
||||||
+
|
|
||||||
+ elf_link_hash_traverse (elf_hash_table (info),
|
|
||||||
+ bfd_x86_elf_link_compute_ulp,
|
|
||||||
+ &ulp_length);
|
|
||||||
+
|
|
||||||
+ ulp = htab->ulp;
|
|
||||||
+
|
|
||||||
+ ulp->size = ulp_length * ULP_ENTRY_LEN;
|
|
||||||
+
|
|
||||||
+ ulp->contents = (bfd_byte *) bfd_malloc (ulp->size);
|
|
||||||
+ if (ulp->contents == NULL)
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
+ if (!ulp->contents)
|
|
||||||
+ return false;
|
|
||||||
+
|
|
||||||
+ memset(ulp->contents, 0x00, ulp->size);
|
|
||||||
+ return true;
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
/* Set the sizes of the dynamic sections. */
|
|
||||||
|
|
||||||
bool
|
|
||||||
@@ -3030,7 +3090,26 @@ _bfd_x86_elf_link_setup_gnu_properties
|
|
||||||
|
|
||||||
htab->plt_second = sec;
|
|
||||||
}
|
|
||||||
- }
|
|
||||||
+
|
|
||||||
+ /* create sections to support user-space live patching */
|
|
||||||
+ if (_bfd_x86_elf_is_ulp_enabled(info->input_bfds))
|
|
||||||
+ {
|
|
||||||
+ flagword flags = (bed->dynamic_sec_flags
|
|
||||||
+ | SEC_ALLOC
|
|
||||||
+ | SEC_CODE
|
|
||||||
+ | SEC_LOAD
|
|
||||||
+ | SEC_READONLY);
|
|
||||||
+
|
|
||||||
+ sec = bfd_make_section_anyway_with_flags (dynobj, ".ulp", flags);
|
|
||||||
+ if (sec == NULL)
|
|
||||||
+ info->callbacks->einfo (_("%F%P: failed to create ULP section\n"));
|
|
||||||
+
|
|
||||||
+ if (!bfd_set_section_alignment (sec, plt_alignment))
|
|
||||||
+ goto error_alignment;
|
|
||||||
+
|
|
||||||
+ htab->ulp = sec;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
|
|
||||||
if (!info->no_ld_generated_unwind_info)
|
|
||||||
{
|
|
||||||
diff --git a/bfd/elfxx-x86.h b/bfd/elfxx-x86.h
|
|
||||||
index db11327e96f..89f51382216 100644
|
|
||||||
--- a/bfd/elfxx-x86.h
|
|
||||||
+++ b/bfd/elfxx-x86.h
|
|
||||||
@@ -607,6 +607,7 @@ struct elf_x86_link_hash_table
|
|
||||||
asection *plt_second_eh_frame;
|
|
||||||
asection *plt_got;
|
|
||||||
asection *plt_got_eh_frame;
|
|
||||||
+ asection *ulp;
|
|
||||||
|
|
||||||
sframe_encoder_ctx *plt_cfe_ctx;
|
|
||||||
asection *plt_sframe;
|
|
||||||
@@ -694,6 +695,12 @@ extern void _bfd_x86_elf_link_report_relative_reloc
|
|
||||||
(struct bfd_link_info *, asection *, struct elf_link_hash_entry *,
|
|
||||||
Elf_Internal_Sym *, const char *, const void *);
|
|
||||||
|
|
||||||
+extern bool _bfd_x86_elf_is_ulp_enabled
|
|
||||||
+ (struct bfd *);
|
|
||||||
+
|
|
||||||
+extern bool _bfd_x86_elf_setup_ulp
|
|
||||||
+ (struct bfd_link_info *);
|
|
||||||
+
|
|
||||||
#define bfd_elf64_mkobject \
|
|
||||||
_bfd_x86_elf_mkobject
|
|
||||||
#define bfd_elf32_mkobject \
|
|
||||||
@@ -907,6 +914,10 @@ extern void _bfd_x86_elf_link_report_relative_reloc
|
|
||||||
_bfd_elf_x86_size_relative_relocs
|
|
||||||
#define elf_backend_finish_relative_relocs \
|
|
||||||
_bfd_elf_x86_finish_relative_relocs
|
|
||||||
+#define elf_backend_is_ulp_enabled \
|
|
||||||
+ _bfd_x86_elf_is_ulp_enabled
|
|
||||||
+#define elf_backend_setup_ulp \
|
|
||||||
+ _bfd_x86_elf_setup_ulp
|
|
||||||
|
|
||||||
#define ELF_P_ALIGN ELF_MINPAGESIZE
|
|
||||||
|
|
BIN
binutils-2.41-branch.diff.gz
(Stored with Git LFS)
BIN
binutils-2.41-branch.diff.gz
(Stored with Git LFS)
Binary file not shown.
BIN
binutils-2.41.tar.bz2
(Stored with Git LFS)
BIN
binutils-2.41.tar.bz2
(Stored with Git LFS)
Binary file not shown.
@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmTGcUQACgkQE/zvid2e
|
|
||||||
PE94TRAAsAGH/rarx1cyAxa8x0yKjcQxERag3KE3NXN+OnRvw2bCOfVx62UA68Dt
|
|
||||||
nTCsJ46MTSECdMnMj+b6wGNXr4JDv57r4lkJxJN8TjAS+gWrouqbjvaTPOkros3L
|
|
||||||
1uElw3JLBznDktYvv2aJxBTLSPRXxaD2gMSjVYSZ5X43/ITbNx8mSToevZf2erXB
|
|
||||||
ev+FY5ROyjPwFZyXTEYqqbbdJ4A6+Fkp1UO9UiQv3leZde29ZSiBbNZUU4u5FH3x
|
|
||||||
qNq9zTd4Wlk72X1IEK/HFIVAcFbV2bV38V/r64tw5WRndYReXejtEQMm4kvzFZP4
|
|
||||||
tcgzlTNViTN8FmVNI3P3pByFxC4VmNEbnNCGTDzltuC/RxypqMHWdkBIFU2Zpk4p
|
|
||||||
oAuRMx+7MJ0MqbZjV+VklZAqbl71oDAtUEi7gwKL/UFsRnmUbjRV00YQrXv1kmm8
|
|
||||||
FAuK3UJbfX95MkMV9RSB4kwAdGTLv9CpWix+NGIQs17bnYXyuZPQ0OFuYM6xBDlo
|
|
||||||
IXTS3kvAgKLRni7EQ0xAh3CqQaE5vsLHf7WwTYvi4rWdt0B1hVpFJtpkAhWRrF/N
|
|
||||||
5Hey/pJgOaS2CqEpbijkfG6mGh/xNYK0T8HnHse1pKjl1U1QEgOtluVI3UF2C/H/
|
|
||||||
FkrlClxbExTt9+UmuF/wdvttVj7hDooI7Hh11uvOVBabtlUc66E=
|
|
||||||
=6jCW
|
|
||||||
-----END PGP SIGNATURE-----
|
|
BIN
binutils-2.42-branch.diff.gz
(Stored with Git LFS)
Normal file
BIN
binutils-2.42-branch.diff.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
binutils-2.42.tar.bz2
(Stored with Git LFS)
Normal file
BIN
binutils-2.42.tar.bz2
(Stored with Git LFS)
Normal file
Binary file not shown.
16
binutils-2.42.tar.bz2.sig
Normal file
16
binutils-2.42.tar.bz2.sig
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEOiS8Ho+0CfqfFDcYE/zvid2ePE8FAmW3wiYACgkQE/zvid2e
|
||||||
|
PE+HQBAAgC3yZJvJBx/0EtNESazNRpUG8G4pnd0505QYiibf+5243xXusDySXVu3
|
||||||
|
iBt2UltDPauPu6eIUC7qY0xaZHhPuxqPHp6oSrB73iHZ7ovTdbZUX2060Ro8KXha
|
||||||
|
xN6+SPBHQGxP8XZw+ezexYNpwHBGM8CUos7UeeLpskuSBRGQC4bEhCOR8wuvU1w9
|
||||||
|
gHTFuOY5zKgzzNMr1fPp/tRqUqZr8A7R1HN6tAs+4N2QWLk9Z/oF7h7Rkrzqe8gY
|
||||||
|
vmaakulfBTiqNIZJyTQhbhPiWrtLdElKyohBa/enqtTrktXoX/gwX21+LMqU+Oh3
|
||||||
|
qE7CicjEZKGK/e8gl0BjcwgMeuUYYpZRUI1+A++YAu+YPSzLQL9iPy1FUovrYhHO
|
||||||
|
Fr/qV156MtnhkoaI7RVDLKl2s3CP451yjHSDcAsB51wq+QophC3z6yoTXKuKW8h6
|
||||||
|
v2yW5ZaG5GfiPmRw+E46qsZWeb2pOUaGVU8ovaYWfLjrZ20WFZwZKLn55ZwZ35eW
|
||||||
|
g3RSff4f0lqr8x7jWDkf+KQMC2K0O6Sl0sgFoFE6PMPFcGe4r6oSIekNygaFgxBv
|
||||||
|
DrL0IA8y1prpmpnJrGbIg1+ciguAJKEBfcV9pNyq1IAHWu3aOMbWKb5pF0ukb0PY
|
||||||
|
OueuuH06uaBa7vgZxvbTiw0j5+PuTlGHa3Bsf4rlkChK2N/6deQ=
|
||||||
|
=5bYR
|
||||||
|
-----END PGP SIGNATURE-----
|
@ -1,131 +0,0 @@
|
|||||||
We need this for libQt5WebEngine on i586. (bsc#1216908)
|
|
||||||
|
|
||||||
From 836654b1177ab305c36fe7319f08f0ad5d4fac1b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Matz <matz@suse.de>
|
|
||||||
Date: Tue, 7 Nov 2023 16:54:44 +0100
|
|
||||||
Subject: ld: Avoid overflows in string merging
|
|
||||||
To: binutils@sourceware.org
|
|
||||||
|
|
||||||
as the bug report shows we had an overflow in the test if
|
|
||||||
hash table resizing is needed. Reorder the expression to avoid
|
|
||||||
that. There's still a bug somewhere in gracefully handling
|
|
||||||
failure in resizing (e.g. out of memory), but this pushes the
|
|
||||||
boundary for that occurring somewhen into the future and
|
|
||||||
immediately helps the reporter.
|
|
||||||
|
|
||||||
bfd/
|
|
||||||
|
|
||||||
PR ld/31009
|
|
||||||
* merge.c (NEEDS_RESIZE): New macro avoiding overflow.
|
|
||||||
(sec_merge_maybe_resize): Use it.
|
|
||||||
(sec_merge_hash_insert): Ditto.
|
|
||||||
---
|
|
||||||
bfd/merge.c | 12 ++++++++----
|
|
||||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/bfd/merge.c b/bfd/merge.c
|
|
||||||
index 722e6659486..61ffab4d706 100644
|
|
||||||
--- a/bfd/merge.c
|
|
||||||
+++ b/bfd/merge.c
|
|
||||||
@@ -94,6 +94,10 @@ struct sec_merge_hash
|
|
||||||
struct sec_merge_hash_entry **values;
|
|
||||||
};
|
|
||||||
|
|
||||||
+/* True when given NEWCOUNT and NBUCKETS indicate that the hash table needs
|
|
||||||
+ resizing. */
|
|
||||||
+#define NEEDS_RESIZE(newcount, nbuckets) ((newcount) > (nbuckets) / 3 * 2)
|
|
||||||
+
|
|
||||||
struct sec_merge_sec_info;
|
|
||||||
|
|
||||||
/* Information per merged blob. This is the unit of merging and is
|
|
||||||
@@ -167,7 +171,7 @@ static bool
|
|
||||||
sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added)
|
|
||||||
{
|
|
||||||
struct bfd_hash_table *bfdtab = &table->table;
|
|
||||||
- if (bfdtab->count + added > table->nbuckets * 2 / 3)
|
|
||||||
+ if (NEEDS_RESIZE (bfdtab->count + added, table->nbuckets))
|
|
||||||
{
|
|
||||||
unsigned i;
|
|
||||||
unsigned long newnb = table->nbuckets * 2;
|
|
||||||
@@ -175,7 +179,7 @@ sec_merge_maybe_resize (struct sec_merge_hash *table, unsigned added)
|
|
||||||
uint64_t *newl;
|
|
||||||
unsigned long alloc;
|
|
||||||
|
|
||||||
- while (bfdtab->count + added > newnb * 2 / 3)
|
|
||||||
+ while (NEEDS_RESIZE (bfdtab->count + added, newnb))
|
|
||||||
{
|
|
||||||
newnb *= 2;
|
|
||||||
if (!newnb)
|
|
||||||
@@ -239,8 +243,8 @@ sec_merge_hash_insert (struct sec_merge_hash *table,
|
|
||||||
hashp->alignment = 0;
|
|
||||||
hashp->u.suffix = NULL;
|
|
||||||
hashp->next = NULL;
|
|
||||||
- // We must not need resizing, otherwise _index is wrong
|
|
||||||
- BFD_ASSERT (bfdtab->count + 1 <= table->nbuckets * 2 / 3);
|
|
||||||
+ // We must not need resizing, otherwise the estimation was wrong
|
|
||||||
+ BFD_ASSERT (!NEEDS_RESIZE (bfdtab->count + 1, table->nbuckets));
|
|
||||||
bfdtab->count++;
|
|
||||||
table->key_lens[_index] = (hash << 32) | (uint32_t)len;
|
|
||||||
table->values[_index] = hashp;
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
||||||
|
|
||||||
From 21160d8a18dc21aafb8ab1026e13e5c524954a46 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Michael Matz <matz@suse.de>
|
|
||||||
Date: Tue, 7 Nov 2023 17:12:46 +0100
|
|
||||||
Subject: bfd: use less memory in string merging
|
|
||||||
To: binutils@sourceware.org
|
|
||||||
|
|
||||||
the offset-to-entry mappings are allocated in blocks, which may
|
|
||||||
become a bit wasteful in case there are extremely many small
|
|
||||||
input files or sections. This made it so that a large project
|
|
||||||
(Qt5WebEngine) didn't build anymore on x86 32bit due to address
|
|
||||||
space limits. It barely fit into address space before the new
|
|
||||||
string merging, and then got pushed over the limit by this.
|
|
||||||
|
|
||||||
So instead of leaving the waste reallocate the maps to their final
|
|
||||||
size once known. Now the link barely fits again.
|
|
||||||
|
|
||||||
bfd/
|
|
||||||
* merge.c (record_section): Reallocate offset maps to their
|
|
||||||
final size.
|
|
||||||
---
|
|
||||||
bfd/merge.c | 14 ++++++++++++++
|
|
||||||
1 file changed, 14 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/bfd/merge.c b/bfd/merge.c
|
|
||||||
index 61ffab4d706..eeaa1a01fe3 100644
|
|
||||||
--- a/bfd/merge.c
|
|
||||||
+++ b/bfd/merge.c
|
|
||||||
@@ -711,6 +711,7 @@ record_section (struct sec_merge_info *sinfo,
|
|
||||||
unsigned int align;
|
|
||||||
bfd_size_type amt;
|
|
||||||
bfd_byte *contents;
|
|
||||||
+ void *tmpptr;
|
|
||||||
|
|
||||||
amt = sec->size;
|
|
||||||
if (sec->flags & SEC_STRINGS)
|
|
||||||
@@ -771,6 +772,19 @@ record_section (struct sec_merge_info *sinfo,
|
|
||||||
|
|
||||||
free (contents);
|
|
||||||
contents = NULL;
|
|
||||||
+
|
|
||||||
+ /* We allocate the ofsmap arrays in blocks of 2048 elements.
|
|
||||||
+ In case we have very many small input files/sections,
|
|
||||||
+ this might waste large amounts of memory, so reallocate these
|
|
||||||
+ arrays here to their true size. */
|
|
||||||
+ amt = secinfo->noffsetmap + 1;
|
|
||||||
+ tmpptr = bfd_realloc (secinfo->map, amt * sizeof(secinfo->map[0]));
|
|
||||||
+ if (tmpptr)
|
|
||||||
+ secinfo->map = tmpptr;
|
|
||||||
+ tmpptr = bfd_realloc (secinfo->map_ofs, amt * sizeof(secinfo->map_ofs[0]));
|
|
||||||
+ if (tmpptr)
|
|
||||||
+ secinfo->map_ofs = tmpptr;
|
|
||||||
+
|
|
||||||
/*printf ("ZZZ %s:%s %u entries\n", sec->owner->filename, sec->name,
|
|
||||||
(unsigned)secinfo->noffsetmap);*/
|
|
||||||
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@ -1,3 +1,45 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 30 13:52:11 UTC 2024 - Michael Matz <matz@suse.com>
|
||||||
|
|
||||||
|
- Update to version 2.42:
|
||||||
|
* Add support for many aarch64 extensions: SVE2.1, SME2.1, B16B16,
|
||||||
|
RASv2, LSE128, GCS, CHK, SPECRES2, LRCPC3, THE, ITE, D128, XS and
|
||||||
|
flags to enable them: '+fcma', '+jscvt', '+frintts', '+flagm2',
|
||||||
|
'+rcpc2' and '+wfxt'
|
||||||
|
* Add experimantal support for GAS to synthesize call-frame-info for
|
||||||
|
some hand-written asm (--scfi=experimental) on x86-64.
|
||||||
|
* Add support for more x86-64 extensions: APX: 32 GPRs, NDD, PUSH2/POP2,
|
||||||
|
PUSHP/POPP; USER_MSR, AVX10.1, PBNDKB, SM4, SM3, SHA512, AVX-VNNI-INT16.
|
||||||
|
* Add support for more RISC-V extensions: T-Head v2.3.0, CORE-V v1.0,
|
||||||
|
SiFive VCIX v1.0.
|
||||||
|
* BPF assembler: ';' separates statements now, and does not introduce
|
||||||
|
line comments anymore (use '#' or '//' for this).
|
||||||
|
* x86-64 ld: Add '-z mark-plt/-z nomark-plt' to mark PLT entries with
|
||||||
|
dynamic tags.
|
||||||
|
* risc-v ld: Add '--[no-]check-uleb128'.
|
||||||
|
* New linker script directive: REVERSE, to be combined with SORT_BY_NAME
|
||||||
|
or SORT_BY_INIT_PRIORITY, reverses the generated order.
|
||||||
|
* New linker options --warn-execstack-objects (warn only about execstack
|
||||||
|
when input object files request it), and --error-execstack plus
|
||||||
|
--error-rxw-segments to convert the existing warnings into errors.
|
||||||
|
* objdump: Add -Z/--decompress to be used with -s/--full-contents to
|
||||||
|
decompress section contents before displaying.
|
||||||
|
* readelf: Add --extra-sym-info to be used with --symbols (currently
|
||||||
|
prints section name of references section index).
|
||||||
|
* objcopy: Add --set-section-flags for x86_64 to include
|
||||||
|
SHF_X86_64_LARGE.
|
||||||
|
* s390 disassembly: add target-specific disasm option 'insndesc',
|
||||||
|
as in "objdump -M insndesc" to display an instruction description
|
||||||
|
as comment along with the disassembly.
|
||||||
|
- Add binutils-2.42-branch.diff.gz.
|
||||||
|
- Rebased s390-biarch.diff.
|
||||||
|
- Removed binutils-2.41-branch.diff.gz, binutils-2.41.tar.bz2,
|
||||||
|
binutils-2.41-branch.diff.gz.
|
||||||
|
- Removed binutils-use-less-memory.diff and riscv-relro.patch
|
||||||
|
(both upstreamed).
|
||||||
|
- Removed add-ulp-section.diff, we use a different mechanism
|
||||||
|
for live patching since a long time.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Nov 9 16:51:13 UTC 2023 - Michael Matz <matz@suse.com>
|
Thu Nov 9 16:51:13 UTC 2023 - Michael Matz <matz@suse.com>
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package binutils
|
# spec file for package binutils
|
||||||
#
|
#
|
||||||
# Copyright (c) 2023 SUSE LLC
|
# Copyright (c) 2024 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@ -64,7 +64,7 @@ BuildRequires: zlib-devel
|
|||||||
%if %{suse_version} > 1500
|
%if %{suse_version} > 1500
|
||||||
BuildRequires: libzstd-devel
|
BuildRequires: libzstd-devel
|
||||||
%endif
|
%endif
|
||||||
Version: 2.41
|
Version: 2.42
|
||||||
Release: 0
|
Release: 0
|
||||||
|
|
||||||
# disable libalternatives for now until it's changed to not
|
# disable libalternatives for now until it's changed to not
|
||||||
@ -131,7 +131,7 @@ Source: binutils-%{version}.tar.bz2
|
|||||||
Source2: binutils-%{version}.tar.bz2.sig
|
Source2: binutils-%{version}.tar.bz2.sig
|
||||||
Source3: binutils.keyring
|
Source3: binutils.keyring
|
||||||
Source4: baselibs.conf
|
Source4: baselibs.conf
|
||||||
Patch1: binutils-2.41-branch.diff.gz
|
Patch1: binutils-2.42-branch.diff.gz
|
||||||
Patch3: binutils-skip-rpaths.patch
|
Patch3: binutils-skip-rpaths.patch
|
||||||
Patch4: s390-biarch.diff
|
Patch4: s390-biarch.diff
|
||||||
Patch5: x86-64-biarch.patch
|
Patch5: x86-64-biarch.patch
|
||||||
@ -154,9 +154,6 @@ Patch42: binutils-compat-old-behaviour.diff
|
|||||||
Patch43: binutils-revert-hlasm-insns.diff
|
Patch43: binutils-revert-hlasm-insns.diff
|
||||||
Patch44: binutils-revert-rela.diff
|
Patch44: binutils-revert-rela.diff
|
||||||
Patch45: binutils-old-makeinfo.diff
|
Patch45: binutils-old-makeinfo.diff
|
||||||
Patch46: riscv-relro.patch
|
|
||||||
Patch47: binutils-use-less-memory.diff
|
|
||||||
Patch100: add-ulp-section.diff
|
|
||||||
Patch90: cross-avr-nesc-as.patch
|
Patch90: cross-avr-nesc-as.patch
|
||||||
Patch92: cross-avr-omit_section_dynsym.patch
|
Patch92: cross-avr-omit_section_dynsym.patch
|
||||||
Patch93: cross-avr-size.patch
|
Patch93: cross-avr-size.patch
|
||||||
@ -285,9 +282,6 @@ cp ld/ldgram.y ld/ldgram.y.orig
|
|||||||
%if %{suse_version} < 1500
|
%if %{suse_version} < 1500
|
||||||
%patch45 -p1
|
%patch45 -p1
|
||||||
%endif
|
%endif
|
||||||
%patch46 -p1
|
|
||||||
%patch47 -p1
|
|
||||||
%patch100 -p1
|
|
||||||
%if "%{TARGET}" == "avr"
|
%if "%{TARGET}" == "avr"
|
||||||
cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
|
cp gas/config/tc-avr.h gas/config/tc-avr-nesc.h
|
||||||
%patch90
|
%patch90
|
||||||
@ -543,6 +537,7 @@ rm -rf %{buildroot}%{_prefix}/%{HOST}/bin
|
|||||||
mkdir -p %{buildroot}%{_prefix}/%{HOST}/bin
|
mkdir -p %{buildroot}%{_prefix}/%{HOST}/bin
|
||||||
ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} %{buildroot}%{_prefix}/%{HOST}/bin
|
ln -sf ../../bin/{ar,as,ld,nm,ranlib,strip} %{buildroot}%{_prefix}/%{HOST}/bin
|
||||||
mv %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
|
mv %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts $RPM_BUILD_ROOT%{_libdir}
|
||||||
|
rm -f $RPM_BUILD_ROOT%{_libdir}/ldscripts/stamp
|
||||||
ln -sf ../../%{_lib}/ldscripts %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts
|
ln -sf ../../%{_lib}/ldscripts %{buildroot}%{_prefix}/%{HOST}/lib/ldscripts
|
||||||
# Install header files
|
# Install header files
|
||||||
make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=%{buildroot}
|
make -C libiberty install_to_libdir target_header_dir=/usr/include DESTDIR=%{buildroot}
|
||||||
|
@ -1,57 +0,0 @@
|
|||||||
From 7345d05aafde53a48d5a587a6d9c1778db78e0f3 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Andreas Schwab <schwab@suse.de>
|
|
||||||
Date: Thu, 21 Sep 2023 16:49:41 +0200
|
|
||||||
Subject: [PATCH] RISC-V: Protect .got with relro
|
|
||||||
|
|
||||||
Move .got before .data so that it can be protected with -zrelro. Also
|
|
||||||
separate .got.plt from .got if -znow is not in effect; the first two words
|
|
||||||
of .got.plt are placed within the relro region.
|
|
||||||
|
|
||||||
ld:
|
|
||||||
PR ld/30877
|
|
||||||
* emulparams/elf32lriscv-defs.sh (DATA_GOT, SEPARATE_GOTPLT):
|
|
||||||
Define.
|
|
||||||
* emulparams/elf64lriscv-defs.sh (SEPARATE_GOTPLT): Define.
|
|
||||||
* testsuite/ld-elf/binutils.exp (binutils_test): Remove riscv*-*-*
|
|
||||||
from relro_got expression.
|
|
||||||
---
|
|
||||||
ld/emulparams/elf32lriscv-defs.sh | 4 ++++
|
|
||||||
ld/emulparams/elf64lriscv-defs.sh | 1 +
|
|
||||||
ld/testsuite/ld-elf/binutils.exp | 1 -
|
|
||||||
3 files changed, 5 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/ld/emulparams/elf32lriscv-defs.sh b/ld/emulparams/elf32lriscv-defs.sh
|
|
||||||
index b823cedacab..016556168c3 100644
|
|
||||||
--- a/ld/emulparams/elf32lriscv-defs.sh
|
|
||||||
+++ b/ld/emulparams/elf32lriscv-defs.sh
|
|
||||||
@@ -47,3 +47,7 @@ INITIAL_READONLY_SECTIONS="${RELOCATING+${CREATE_SHLIB-${INITIAL_READONLY_SECTIO
|
|
||||||
OTHER_END_SYMBOLS="${CREATE_SHLIB-__BSS_END__ = .;
|
|
||||||
__global_pointer$ = MIN(__SDATA_BEGIN__ + 0x800,
|
|
||||||
MAX(__DATA_BEGIN__ + 0x800, __BSS_END__ - 0x800));}"
|
|
||||||
+
|
|
||||||
+# Put .got before .data
|
|
||||||
+DATA_GOT=" "
|
|
||||||
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 8 ? 8 : 0"
|
|
||||||
diff --git a/ld/emulparams/elf64lriscv-defs.sh b/ld/emulparams/elf64lriscv-defs.sh
|
|
||||||
index 84a700a5f58..ca15338428f 100644
|
|
||||||
--- a/ld/emulparams/elf64lriscv-defs.sh
|
|
||||||
+++ b/ld/emulparams/elf64lriscv-defs.sh
|
|
||||||
@@ -1,2 +1,3 @@
|
|
||||||
source_sh ${srcdir}/emulparams/elf32lriscv-defs.sh
|
|
||||||
ELFSIZE=64
|
|
||||||
+SEPARATE_GOTPLT="SIZEOF (.got.plt) >= 16 ? 16 : 0"
|
|
||||||
diff --git a/ld/testsuite/ld-elf/binutils.exp b/ld/testsuite/ld-elf/binutils.exp
|
|
||||||
index 674e8e9a575..b38e29ed6fb 100644
|
|
||||||
--- a/ld/testsuite/ld-elf/binutils.exp
|
|
||||||
+++ b/ld/testsuite/ld-elf/binutils.exp
|
|
||||||
@@ -95,7 +95,6 @@ proc binutils_test { prog_name ld_options test {test_name ""} {readelf_options "
|
|
||||||
|| [istarget "mips*-*-*"] \
|
|
||||||
|| [istarget "nios2*-*-*"] \
|
|
||||||
|| [istarget "or1k-*-*"] \
|
|
||||||
- || [istarget "riscv*-*-*"] \
|
|
||||||
|| [istarget "sh*-*-*"] \
|
|
||||||
|| [istarget "x86_64-*-rdos*"])]
|
|
||||||
# Check if GNU_RELRO segment is generated.
|
|
||||||
--
|
|
||||||
2.42.0
|
|
||||||
|
|
@ -1,11 +1,11 @@
|
|||||||
Index: ld/emulparams/elf_s390.sh
|
Index: ld/emulparams/elf_s390.sh
|
||||||
===================================================================
|
===================================================================
|
||||||
--- ld/emulparams/elf_s390.sh.orig 2019-09-09 18:48:59.000000000 +0200
|
--- ld/emulparams/elf_s390.sh.orig 2024-01-29 01:00:00.000000000 +0100
|
||||||
+++ ld/emulparams/elf_s390.sh 2019-09-09 18:49:02.000000000 +0200
|
+++ ld/emulparams/elf_s390.sh 2024-01-30 14:45:36.996853073 +0100
|
||||||
@@ -12,3 +12,18 @@ GENERATE_SHLIB_SCRIPT=yes
|
@@ -13,3 +13,18 @@ GENERATE_PIE_SCRIPT=yes
|
||||||
GENERATE_PIE_SCRIPT=yes
|
|
||||||
NO_SMALL_DATA=yes
|
NO_SMALL_DATA=yes
|
||||||
IREL_IN_PLT=
|
IREL_IN_PLT=
|
||||||
|
SYMBOL_ABI_ALIGNMENT=2
|
||||||
+
|
+
|
||||||
+# Treat a host that matches the target with the possible exception of "x"
|
+# Treat a host that matches the target with the possible exception of "x"
|
||||||
+# in the name as if it were native.
|
+# in the name as if it were native.
|
||||||
|
Loading…
Reference in New Issue
Block a user