From 9c952780c9e6e2ee26ce7e33c8aa323c77cc4e8d Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 6 May 2022 13:53:51 +0100 Subject: [PATCH] remove unused patches --- binutils-AArch64-EFI.patch | 944 - binutils-CVE-2021-45078.patch | 230 - binutils-bfd-close-fds.patch | 232 - binutils-dwarf-5-dir0.patch | 201 - binutils-empty-MIND-string.patch | 19 - ...as-Use-the-directory-name-in-.file-0.patch | 323 - binutils-gas-multibyte-warnings.patch | 384 - ...ils-ld-default-entry-of-0-for-shared.patch | 98 - binutils-missing-man-pages.patch | 12 - ...nize-FDO-Packaging-Metadata-ELF-note.patch | 78 - binutils.unicode.patch | 32545 ---------------- 11 files changed, 35066 deletions(-) delete mode 100644 binutils-AArch64-EFI.patch delete mode 100644 binutils-CVE-2021-45078.patch delete mode 100644 binutils-bfd-close-fds.patch delete mode 100644 binutils-dwarf-5-dir0.patch delete mode 100644 binutils-empty-MIND-string.patch delete mode 100644 binutils-gas-Use-the-directory-name-in-.file-0.patch delete mode 100644 binutils-gas-multibyte-warnings.patch delete mode 100644 binutils-ld-default-entry-of-0-for-shared.patch delete mode 100644 binutils-missing-man-pages.patch delete mode 100644 binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch delete mode 100644 binutils.unicode.patch diff --git a/binutils-AArch64-EFI.patch b/binutils-AArch64-EFI.patch deleted file mode 100644 index f4b7325..0000000 --- a/binutils-AArch64-EFI.patch +++ /dev/null @@ -1,944 +0,0 @@ -diff -rup binutils.orig/bfd/.gitignore binutils-2.37/bfd/.gitignore ---- binutils.orig/bfd/.gitignore 2021-12-01 13:35:33.826078119 +0000 -+++ binutils-2.37/bfd/.gitignore 2021-12-01 13:35:43.138988270 +0000 -@@ -10,6 +10,7 @@ - /peigen.c - /pepigen.c - /pex64igen.c -+/pe-aarch64igen.c - /stmp-bfd-h - /targmatch.h - -diff -rup binutils.orig/bfd/Makefile.am binutils-2.37/bfd/Makefile.am ---- binutils.orig/bfd/Makefile.am 2021-12-01 13:35:33.817078206 +0000 -+++ binutils-2.37/bfd/Makefile.am 2021-12-01 13:35:43.139988261 +0000 -@@ -567,7 +567,9 @@ BFD64_BACKENDS = \ - mach-o-aarch64.lo \ - mach-o-x86-64.lo \ - mmo.lo \ -+ pe-aarch64igen.lo \ - pe-x86_64.lo \ -+ pei-aarch64lo \ - pei-ia64.lo \ - pei-x86_64.lo \ - pepigen.lo \ -@@ -607,6 +609,7 @@ BFD64_BACKENDS_CFILES = \ - mach-o-x86-64.c \ - mmo.c \ - pe-x86_64.c \ -+ pei-aarch64.c \ - pei-ia64.c \ - pei-x86_64.c \ - vms-alpha.c -@@ -666,7 +669,7 @@ BUILD_CFILES = \ - elf32-aarch64.c elf64-aarch64.c \ - elf32-ia64.c elf64-ia64.c \ - elf32-riscv.c elf64-riscv.c \ -- peigen.c pepigen.c pex64igen.c -+ peigen.c pepigen.c pex64igen.c pe-aarch64igen.c - - CFILES = $(SOURCE_CFILES) $(BUILD_CFILES) - -@@ -862,6 +865,10 @@ pex64igen.c: peXXigen.c - echo "#line 1 \"peXXigen.c\"" > $@ - $(SED) -e s/XX/pex64/g < $< >> $@ - -+pe-aarch64igen.c: peXXigen.c -+ echo "#line 1 \"peXXigen.c\"" > $@ -+ $(SED) -e s/XX/peAArch64/g < $< >> $@ -+ - BFD_H_DEPS= $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h $(INCDIR)/diagnostics.h - LOCAL_H_DEPS= libbfd.h sysdep.h config.h - $(BFD32_LIBS) \ -diff -rup binutils.orig/bfd/Makefile.in binutils-2.37/bfd/Makefile.in ---- binutils.orig/bfd/Makefile.in 2021-12-01 13:35:33.823078148 +0000 -+++ binutils-2.37/bfd/Makefile.in 2021-12-01 13:35:43.139988261 +0000 -@@ -994,7 +994,9 @@ BFD64_BACKENDS = \ - mach-o-aarch64.lo \ - mach-o-x86-64.lo \ - mmo.lo \ -+ pe-aarch64igen.lo \ - pe-x86_64.lo \ -+ pei-aarch64.lo \ - pei-ia64.lo \ - pei-x86_64.lo \ - pepigen.lo \ -@@ -1034,6 +1036,7 @@ BFD64_BACKENDS_CFILES = \ - mach-o-x86-64.c \ - mmo.c \ - pe-x86_64.c \ -+ pei-aarch64.c \ - pei-ia64.c \ - pei-x86_64.c \ - vms-alpha.c -@@ -1092,7 +1095,7 @@ BUILD_CFILES = \ - elf32-aarch64.c elf64-aarch64.c \ - elf32-ia64.c elf64-ia64.c \ - elf32-riscv.c elf64-riscv.c \ -- peigen.c pepigen.c pex64igen.c -+ peigen.c pepigen.c pex64igen.c pe-aarch64igen.c - - CFILES = $(SOURCE_CFILES) $(BUILD_CFILES) - SOURCE_HFILES = \ -@@ -1551,9 +1554,11 @@ distclean-compile: - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-mcore.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-sh.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-x86_64.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pei-aarch64.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peigen.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pepigen.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pex64igen.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pe-aarch64igen.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/plugin.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ppcboot.Plo@am__quote@ - @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@ -@@ -1991,6 +1996,11 @@ pepigen.c : peXXigen.c - pex64igen.c: peXXigen.c - echo "#line 1 \"peXXigen.c\"" > $@ - $(SED) -e s/XX/pex64/g < $< >> $@ -+ -+pe-aarch64igen.c: peXXigen.c -+ echo "#line 1 \"peXXigen.c\"" > $@ -+ $(SED) -e s/XX/peAArch64/g < $< >> $@ -+ - $(BFD32_LIBS) \ - $(BFD64_LIBS) \ - $(ALL_MACHINES) \ -diff -rup binutils.orig/bfd/bfd.c binutils-2.37/bfd/bfd.c ---- binutils.orig/bfd/bfd.c 2021-12-01 13:35:33.821078167 +0000 -+++ binutils-2.37/bfd/bfd.c 2021-12-01 13:35:43.139988261 +0000 -@@ -1735,6 +1735,7 @@ bfd_get_sign_extend_vma (bfd *abfd) - || strcmp (name, "pei-i386") == 0 - || strcmp (name, "pe-x86-64") == 0 - || strcmp (name, "pei-x86-64") == 0 -+ || strcmp (name, "pei-aarch64-little") == 0 - || strcmp (name, "pe-arm-wince-little") == 0 - || strcmp (name, "pei-arm-wince-little") == 0 - || strcmp (name, "aixcoff-rs6000") == 0 -Only in binutils-2.37/bfd: coff-aarch64.c -diff -rup binutils.orig/bfd/coffcode.h binutils-2.37/bfd/coffcode.h ---- binutils.orig/bfd/coffcode.h 2021-12-01 13:35:33.822078158 +0000 -+++ binutils-2.37/bfd/coffcode.h 2021-12-01 13:35:43.140988251 +0000 -@@ -2215,6 +2215,12 @@ coff_set_arch_mach_hook (bfd *abfd, void - } - break; - #endif -+#ifdef AARCH64MAGIC -+ case AARCH64MAGIC: -+ arch = bfd_arch_aarch64; -+ machine = internal_f->f_flags & F_AARCH64_ARCHITECTURE_MASK; -+ break; -+#endif - #ifdef Z80MAGIC - case Z80MAGIC: - arch = bfd_arch_z80; -@@ -2771,6 +2777,12 @@ coff_set_flags (bfd * abfd, - return true; - #endif - -+#ifdef AARCH64MAGIC -+ case bfd_arch_aarch64: -+ * magicp = AARCH64MAGIC; -+ return true; -+#endif -+ - #ifdef ARMMAGIC - case bfd_arch_arm: - #ifdef ARM_WINCE -@@ -3866,7 +3878,7 @@ coff_write_object_contents (bfd * abfd) - internal_f.f_flags |= IMAGE_FILE_LARGE_ADDRESS_AWARE; - #endif - --#ifndef COFF_WITH_pex64 -+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - #ifdef COFF_WITH_PE - internal_f.f_flags |= IMAGE_FILE_32BIT_MACHINE; - #else -@@ -3914,6 +3926,11 @@ coff_write_object_contents (bfd * abfd) - #define __A_MAGIC_SET__ - internal_a.magic = ZMAGIC; - #endif -+ -+#if defined(AARCH64) -+#define __A_MAGIC_SET__ -+ internal_a.magic = ZMAGIC; -+#endif - - #if defined MCORE_PE - #define __A_MAGIC_SET__ -diff -rup binutils.orig/bfd/config.bfd binutils-2.37/bfd/config.bfd ---- binutils.orig/bfd/config.bfd 2021-12-01 13:35:33.833078051 +0000 -+++ binutils-2.37/bfd/config.bfd 2021-12-01 13:35:43.140988251 +0000 -@@ -232,7 +232,7 @@ case "${targ}" in - ;; - aarch64-*-elf | aarch64-*-rtems* | aarch64-*-genode*) - targ_defvec=aarch64_elf64_le_vec -- targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec" -+ targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_vec" - want64=true - ;; - aarch64_be-*-elf) -@@ -257,7 +257,7 @@ case "${targ}" in - ;; - aarch64-*-linux* | aarch64-*-netbsd*) - targ_defvec=aarch64_elf64_le_vec -- targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec" -+ targ_selvecs="aarch64_elf64_be_vec aarch64_elf32_le_vec aarch64_elf32_be_vec arm_elf32_le_vec arm_elf32_be_vec aarch64_pei_vec" - want64=true - ;; - aarch64_be-*-linux* | aarch64_be-*-netbsd*) -diff -rup binutils.orig/bfd/configure binutils-2.37/bfd/configure ---- binutils.orig/bfd/configure 2021-12-01 13:35:33.817078206 +0000 -+++ binutils-2.37/bfd/configure 2021-12-01 13:35:43.141988241 +0000 -@@ -13283,6 +13283,7 @@ do - aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;; -+ aarch64_pei_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; - alpha_ecoff_le_vec) tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;; - alpha_elf64_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; - alpha_elf64_fbsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; -diff -rup binutils.orig/bfd/configure.ac binutils-2.37/bfd/configure.ac ---- binutils.orig/bfd/configure.ac 2021-12-01 13:35:33.829078090 +0000 -+++ binutils-2.37/bfd/configure.ac 2021-12-01 13:35:43.141988241 +0000 -@@ -439,6 +439,7 @@ do - aarch64_elf64_le_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_elf64_le_cloudabi_vec) tb="$tb elf64-aarch64.lo elfxx-aarch64.lo elf-ifunc.lo elf64.lo $elf"; target_size=64 ;; - aarch64_mach_o_vec) tb="$tb mach-o-aarch64.lo"; target_size=64 ;; -+ aarch64_pei_vec) tb="$tb pei-aarch64.lo pe-aarch64igen.lo $coff"; target_size=64 ;; - alpha_ecoff_le_vec) tb="$tb coff-alpha.lo ecoff.lo $ecoff"; target_size=64 ;; - alpha_elf64_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; - alpha_elf64_fbsd_vec) tb="$tb elf64-alpha.lo elf64.lo $elf"; target_size=64 ;; -diff -rup binutils.orig/bfd/libpei.h binutils-2.37/bfd/libpei.h ---- binutils.orig/bfd/libpei.h 2021-12-01 13:35:33.830078081 +0000 -+++ binutils-2.37/bfd/libpei.h 2021-12-01 13:35:43.141988241 +0000 -@@ -275,6 +275,41 @@ - #define _bfd_XXi_write_codeview_record _bfd_pepi_write_codeview_record - #define _bfd_XXi_slurp_codeview_record _bfd_pepi_slurp_codeview_record - -+#elif defined COFF_WITH_peAArch64 -+ -+#define GET_OPTHDR_IMAGE_BASE H_GET_64 -+#define PUT_OPTHDR_IMAGE_BASE H_PUT_64 -+#define GET_OPTHDR_SIZE_OF_STACK_RESERVE H_GET_64 -+#define PUT_OPTHDR_SIZE_OF_STACK_RESERVE H_PUT_64 -+#define GET_OPTHDR_SIZE_OF_STACK_COMMIT H_GET_64 -+#define PUT_OPTHDR_SIZE_OF_STACK_COMMIT H_PUT_64 -+#define GET_OPTHDR_SIZE_OF_HEAP_RESERVE H_GET_64 -+#define PUT_OPTHDR_SIZE_OF_HEAP_RESERVE H_PUT_64 -+#define GET_OPTHDR_SIZE_OF_HEAP_COMMIT H_GET_64 -+#define PUT_OPTHDR_SIZE_OF_HEAP_COMMIT H_PUT_64 -+#define GET_PDATA_ENTRY bfd_get_32 -+ -+#define _bfd_XX_bfd_copy_private_bfd_data_common _bfd_peAArch64_bfd_copy_private_bfd_data_common -+#define _bfd_XX_bfd_copy_private_section_data _bfd_peAArch64_bfd_copy_private_section_data -+#define _bfd_XX_get_symbol_info _bfd_peAArch64_get_symbol_info -+#define _bfd_XX_only_swap_filehdr_out _bfd_peAArch64_only_swap_filehdr_out -+#define _bfd_XX_print_private_bfd_data_common _bfd_peAArch64_print_private_bfd_data_common -+#define _bfd_XXi_final_link_postscript _bfd_peAArch64i_final_link_postscript -+#define _bfd_XXi_only_swap_filehdr_out _bfd_peAArch64i_only_swap_filehdr_out -+#define _bfd_XXi_swap_aouthdr_in _bfd_peAArch64i_swap_aouthdr_in -+#define _bfd_XXi_swap_aouthdr_out _bfd_peAArch64i_swap_aouthdr_out -+#define _bfd_XXi_swap_aux_in _bfd_peAArch64i_swap_aux_in -+#define _bfd_XXi_swap_aux_out _bfd_peAArch64i_swap_aux_out -+#define _bfd_XXi_swap_lineno_in _bfd_peAArch64i_swap_lineno_in -+#define _bfd_XXi_swap_lineno_out _bfd_peAArch64i_swap_lineno_out -+#define _bfd_XXi_swap_scnhdr_out _bfd_peAArch64i_swap_scnhdr_out -+#define _bfd_XXi_swap_sym_in _bfd_peAArch64i_swap_sym_in -+#define _bfd_XXi_swap_sym_out _bfd_peAArch64i_swap_sym_out -+#define _bfd_XXi_swap_debugdir_in _bfd_peAArch64i_swap_debugdir_in -+#define _bfd_XXi_swap_debugdir_out _bfd_peAArch64i_swap_debugdir_out -+#define _bfd_XXi_write_codeview_record _bfd_peAArch64i_write_codeview_record -+#define _bfd_XXi_slurp_codeview_record _bfd_peAArch64i_slurp_codeview_record -+ - #else /* !COFF_WITH_pep */ - - #define GET_OPTHDR_IMAGE_BASE H_GET_32 -@@ -369,5 +404,6 @@ bool _bfd_XX_bfd_copy_private_section_da - bool _bfd_pe_print_ce_compressed_pdata (bfd *, void *); - bool _bfd_pe64_print_ce_compressed_pdata (bfd *, void *); - bool _bfd_pex64_print_ce_compressed_pdata (bfd *, void *); -+bool _bfd_peAArch64_print_ce_compressed_pdata (bfd *, void *); - bool _bfd_pep_print_ce_compressed_pdata (bfd *, void *); - -diff -rup binutils.orig/bfd/peXXigen.c binutils-2.37/bfd/peXXigen.c ---- binutils.orig/bfd/peXXigen.c 2021-12-01 13:35:33.827078110 +0000 -+++ binutils-2.37/bfd/peXXigen.c 2021-12-01 13:35:43.142988232 +0000 -@@ -60,8 +60,9 @@ - on this code has a chance of getting something accomplished without - wasting too much time. */ - --/* This expands into COFF_WITH_pe, COFF_WITH_pep, or COFF_WITH_pex64 -- depending on whether we're compiling for straight PE or PE+. */ -+/* This expands into COFF_WITH_pe, COFF_WITH_pep, COFF_WITH_pex64 or -+ COFF_WITH_peAArch64 depending on whether we're compiling for straight -+ PE or PE+. */ - #define COFF_WITH_XX - - #include "sysdep.h" -@@ -83,6 +84,8 @@ - # include "coff/x86_64.h" - #elif defined COFF_WITH_pep - # include "coff/ia64.h" -+#elif defined COFF_WITH_peAArch64 -+# include "coff/aarch64.h" - #else - # include "coff/i386.h" - #endif -@@ -92,7 +95,7 @@ - #include "libpei.h" - #include "safe-ctype.h" - --#if defined COFF_WITH_pep || defined COFF_WITH_pex64 -+#if defined COFF_WITH_pep || defined COFF_WITH_pex64 || defined COFF_WITH_peAArch64 - # undef AOUTSZ - # define AOUTSZ PEPAOUTSZ - # define PEAOUTHDR PEPAOUTHDR -@@ -469,7 +472,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd, - aouthdr_int->text_start = - GET_AOUTHDR_TEXT_START (abfd, aouthdr_ext->text_start); - --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - /* PE32+ does not have data_start member! */ - aouthdr_int->data_start = - GET_AOUTHDR_DATA_START (abfd, aouthdr_ext->data_start); -@@ -555,7 +558,7 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd, - if (aouthdr_int->entry) - { - aouthdr_int->entry += a->ImageBase; --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - aouthdr_int->entry &= 0xffffffff; - #endif - } -@@ -563,12 +566,12 @@ _bfd_XXi_swap_aouthdr_in (bfd * abfd, - if (aouthdr_int->tsize) - { - aouthdr_int->text_start += a->ImageBase; --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - aouthdr_int->text_start &= 0xffffffff; - #endif - } - --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - /* PE32+ does not have data_start member! */ - if (aouthdr_int->dsize) - { -@@ -628,7 +631,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v - if (aouthdr_in->tsize) - { - aouthdr_in->text_start -= ib; --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - aouthdr_in->text_start &= 0xffffffff; - #endif - } -@@ -636,7 +639,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v - if (aouthdr_in->dsize) - { - aouthdr_in->data_start -= ib; --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - aouthdr_in->data_start &= 0xffffffff; - #endif - } -@@ -644,7 +647,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v - if (aouthdr_in->entry) - { - aouthdr_in->entry -= ib; --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - aouthdr_in->entry &= 0xffffffff; - #endif - } -@@ -748,7 +751,7 @@ _bfd_XXi_swap_aouthdr_out (bfd * abfd, v - PUT_AOUTHDR_TEXT_START (abfd, aouthdr_in->text_start, - aouthdr_out->standard.text_start); - --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - /* PE32+ does not have data_start member! */ - PUT_AOUTHDR_DATA_START (abfd, aouthdr_in->data_start, - aouthdr_out->standard.data_start); -@@ -1800,7 +1803,7 @@ pe_print_edata (bfd * abfd, void * vfile - static bool - pe_print_pdata (bfd * abfd, void * vfile) - { --#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - # define PDATA_ROW_SIZE (3 * 8) - #else - # define PDATA_ROW_SIZE (5 * 4) -@@ -1827,7 +1830,7 @@ pe_print_pdata (bfd * abfd, void * vfile - - fprintf (file, - _("\nThe Function Table (interpreted .pdata section contents)\n")); --#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - fprintf (file, - _(" vma:\t\t\tBegin Address End Address Unwind Info\n")); - #else -@@ -1864,7 +1867,7 @@ pe_print_pdata (bfd * abfd, void * vfile - bfd_vma eh_handler; - bfd_vma eh_data; - bfd_vma prolog_end_addr; --#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) - int em_data; - #endif - -@@ -1882,7 +1885,7 @@ pe_print_pdata (bfd * abfd, void * vfile - /* We are probably into the padding of the section now. */ - break; - --#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) - em_data = ((eh_handler & 0x1) << 2) | (prolog_end_addr & 0x3); - #endif - eh_handler &= ~(bfd_vma) 0x3; -@@ -1893,7 +1896,7 @@ pe_print_pdata (bfd * abfd, void * vfile - bfd_fprintf_vma (abfd, file, begin_addr); fputc (' ', file); - bfd_fprintf_vma (abfd, file, end_addr); fputc (' ', file); - bfd_fprintf_vma (abfd, file, eh_handler); --#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) || defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) - fputc (' ', file); - bfd_fprintf_vma (abfd, file, eh_data); fputc (' ', file); - bfd_fprintf_vma (abfd, file, prolog_end_addr); -@@ -2784,7 +2787,7 @@ _bfd_XX_print_private_bfd_data_common (b - bfd_fprintf_vma (abfd, file, i->AddressOfEntryPoint); - fprintf (file, "\nBaseOfCode\t\t"); - bfd_fprintf_vma (abfd, file, i->BaseOfCode); --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - /* PE32+ does not have BaseOfData member! */ - fprintf (file, "\nBaseOfData\t\t"); - bfd_fprintf_vma (abfd, file, i->BaseOfData); -@@ -3085,7 +3088,7 @@ _bfd_XX_get_symbol_info (bfd * abfd, asy - coff_get_symbol_info (abfd, symbol, ret); - } - --#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64) - static int - sort_x64_pdata (const void *l, const void *r) - { -@@ -4504,7 +4507,7 @@ _bfd_XXi_final_link_postscript (bfd * ab - the TLS data directory consists of 4 pointers, followed - by two 4-byte integer. This implies that the total size - is different for 32-bit and 64-bit executables. */ --#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) -+#if !defined(COFF_WITH_pep) && !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x18; - #else - pe_data (abfd)->pe_opthdr.DataDirectory[PE_TLS_TABLE].Size = 0x28; -@@ -4513,7 +4516,7 @@ _bfd_XXi_final_link_postscript (bfd * ab - - /* 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) -+#if !defined(COFF_WITH_pep) && defined(COFF_WITH_pex64) && defined(COFF_WITH_peAArch64) - { - asection *sec = bfd_get_section_by_name (abfd, ".pdata"); - -Only in binutils-2.37/bfd: pei-aarch64.c -diff -rup binutils.orig/bfd/peicode.h binutils-2.37/bfd/peicode.h ---- binutils.orig/bfd/peicode.h 2021-12-01 13:35:33.829078090 +0000 -+++ binutils-2.37/bfd/peicode.h 2021-12-01 13:35:43.142988232 +0000 -@@ -231,7 +231,7 @@ coff_swap_scnhdr_in (bfd * abfd, void * - { - scnhdr_int->s_vaddr += pe_data (abfd)->pe_opthdr.ImageBase; - /* Do not cut upper 32-bits for 64-bit vma. */ --#ifndef COFF_WITH_pex64 -+#if !defined(COFF_WITH_pex64) && !defined(COFF_WITH_peAArch64) - scnhdr_int->s_vaddr &= 0xffffffff; - #endif - } -@@ -738,6 +738,16 @@ static const jump_table jtab[] = - }, - #endif - -+#ifdef AARCH64MAGIC -+/* We don't currently support jumping to DLLs, so if -+ someone does try emit a runtime trap. Through UDF #0. */ -+ { AARCH64MAGIC, -+ { 0x00, 0x00, 0x00, 0x00 }, -+ 4, 0 -+ }, -+ -+#endif -+ - #ifdef ARMPEMAGIC - { ARMPEMAGIC, - { 0x00, 0xc0, 0x9f, 0xe5, 0x00, 0xf0, -@@ -910,7 +920,7 @@ pe_ILF_build_a_bfd (bfd * abfd, - /* See PR 20907 for a reproducer. */ - goto error_return; - --#ifdef COFF_WITH_pex64 -+#if defined(COFF_WITH_pex64) || defined(COFF_WITH_peAArch64) - ((unsigned int *) id4->contents)[0] = ordinal; - ((unsigned int *) id4->contents)[1] = 0x80000000; - ((unsigned int *) id5->contents)[0] = ordinal; -@@ -1206,6 +1216,12 @@ pe_ILF_object_p (bfd * abfd) - #endif - break; - -+ case IMAGE_FILE_MACHINE_ARM64: -+#ifdef AARCH64MAGIC -+ magic = AARCH64MAGIC; -+#endif -+ break; -+ - case IMAGE_FILE_MACHINE_THUMB: - #ifdef THUMBPEMAGIC - { -diff -rup binutils.orig/bfd/targets.c binutils-2.37/bfd/targets.c ---- binutils.orig/bfd/targets.c 2021-12-01 13:35:33.829078090 +0000 -+++ binutils-2.37/bfd/targets.c 2021-12-01 13:35:43.142988232 +0000 -@@ -679,6 +679,7 @@ extern const bfd_target aarch64_elf64_be - extern const bfd_target aarch64_elf64_le_vec; - extern const bfd_target aarch64_elf64_le_cloudabi_vec; - extern const bfd_target aarch64_mach_o_vec; -+extern const bfd_target aarch64_pei_vec; - extern const bfd_target alpha_ecoff_le_vec; - extern const bfd_target alpha_elf64_vec; - extern const bfd_target alpha_elf64_fbsd_vec; -@@ -991,6 +992,7 @@ static const bfd_target * const _bfd_tar - &aarch64_elf64_le_vec, - &aarch64_elf64_le_cloudabi_vec, - &aarch64_mach_o_vec, -+ &aarch64_pei_vec, - #endif - - #ifdef BFD64 -diff -rup binutils.orig/binutils/NEWS binutils-2.37/binutils/NEWS ---- binutils.orig/binutils/NEWS 2021-12-01 13:35:33.320083001 +0000 -+++ binutils-2.37/binutils/NEWS 2021-12-01 13:35:43.142988232 +0000 -@@ -9,6 +9,9 @@ - using --unicode=highlight will display them as unicode escape sequences - highlighted in red (if supported by the output device). - -+* Support for efi-app-aarch64, efi-rtdrv-aarch64 and efi-bsdrv-aarch64 has been -+ added to objcopy in order to enable UEFI development using binutils. -+ - Changes in 2.37: - - * The readelf tool has a new command line option which can be used to specify -Only in binutils.orig/binutils: NEWS.orig -Only in binutils.orig/binutils: NEWS.rej -Only in binutils.orig/binutils: nm.c.orig -diff -rup binutils.orig/binutils/objcopy.c binutils-2.37/binutils/objcopy.c ---- binutils.orig/binutils/objcopy.c 2021-12-01 13:35:33.302083174 +0000 -+++ binutils-2.37/binutils/objcopy.c 2021-12-01 13:35:43.143988222 +0000 -@@ -4987,6 +4987,13 @@ convert_efi_target (char *efi) - /* Change x86_64 to x86-64. */ - efi[7] = '-'; - } -+ else if (strcmp (efi + 4, "aarch64") == 0) -+ { -+ /* Change aarch64 to aarch64-little. */ -+ efi = (char *) xrealloc (efi, strlen (efi) + 7); -+ char *t = "aarch64-little"; -+ strcpy (efi + 4, t); -+ } - } - - /* Allocate and return a pointer to a struct section_add, initializing the -Only in binutils.orig/binutils: objdump.c.orig -Only in binutils.orig/binutils: objdump.c.rej -Only in binutils.orig/binutils: readelf.c.orig -Only in binutils-2.37/binutils/testsuite/binutils-all/aarch64: pei-aarch64-little.d -Only in binutils-2.37/binutils/testsuite/binutils-all/aarch64: pei-aarch64-little.s -Only in binutils-2.37/include/coff: aarch64.h -diff -rup binutils.orig/include/coff/pe.h binutils-2.37/include/coff/pe.h ---- binutils.orig/include/coff/pe.h 2021-12-01 13:35:33.251083666 +0000 -+++ binutils-2.37/include/coff/pe.h 2021-12-01 13:35:43.143988222 +0000 -@@ -137,6 +137,7 @@ - #define IMAGE_FILE_MACHINE_AM33 0x01d3 - #define IMAGE_FILE_MACHINE_AMD64 0x8664 - #define IMAGE_FILE_MACHINE_ARM 0x01c0 -+#define IMAGE_FILE_MACHINE_ARM64 0xaa64 - #define IMAGE_FILE_MACHINE_AXP64 IMAGE_FILE_MACHINE_ALPHA64 - #define IMAGE_FILE_MACHINE_CEE 0xc0ee - #define IMAGE_FILE_MACHINE_CEF 0x0cef ---- /dev/null 2021-12-01 09:13:46.241760896 +0000 -+++ binutils-2.37/include/coff/aarch64.h 2021-12-01 13:35:43.143988222 +0000 -@@ -0,0 +1,63 @@ -+/* AArch64 COFF support for BFD. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ -+ This file is part of BFD, the Binary File Descriptor library. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software Foundation, -+ Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -+ -+#define COFFAARCH64 1 -+ -+#define L_LNNO_SIZE 2 -+#define INCLUDE_COMDAT_FIELDS_IN_AUXENT -+#include "coff/external.h" -+ -+#define F_AARCH64_ARCHITECTURE_MASK (0x4000) -+ -+#define AARCH64MAGIC 0xaa64 /* From Microsoft specification. */ -+ -+#undef BADMAG -+#define BADMAG(x) ((x).f_magic != AARCH64MAGIC) -+#define AARCH64 1 /* Customize coffcode.h. */ -+ -+#define IMAGE_NT_OPTIONAL_HDR64_MAGIC 0x20b -+ -+#define OMAGIC 0404 /* Object files, eg as output. */ -+#define ZMAGIC IMAGE_NT_OPTIONAL_HDR64_MAGIC /* Demand load format, eg normal ld output 0x10b. */ -+#define STMAGIC 0401 /* Target shlib. */ -+#define SHMAGIC 0443 /* Host shlib. */ -+ -+/* define some NT default values */ -+/* #define NT_IMAGE_BASE 0x400000 moved to internal.h */ -+#define NT_SECTION_ALIGNMENT 0x1000 -+#define NT_FILE_ALIGNMENT 0x200 -+#define NT_DEF_RESERVE 0x100000 -+#define NT_DEF_COMMIT 0x1000 -+ -+/* We use the .rdata section to hold read only data. */ -+#define _LIT ".rdata" -+ -+/********************** RELOCATION DIRECTIVES **********************/ -+struct external_reloc -+{ -+ char r_vaddr[4]; -+ char r_symndx[4]; -+ char r_type[2]; -+ char r_offset[4]; -+}; -+ -+#define RELOC struct external_reloc -+#define RELSZ 14 -+ -+#define ARM_NOTE_SECTION ".note" ---- /dev/null 2021-12-01 09:13:46.241760896 +0000 -+++ binutils-2.37/bfd/coff-aarch64.c 2021-12-01 13:35:43.139988261 +0000 -@@ -0,0 +1,166 @@ -+/* BFD back-end for AArch64 COFF files. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ -+ This file is part of BFD, the Binary File Descriptor library. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, -+ MA 02110-1301, USA. */ -+ -+ -+#ifndef COFF_WITH_peAArch64 -+#define COFF_WITH_peAArch64 -+#endif -+ -+/* Note we have to make sure not to include headers twice. -+ Not all headers are wrapped in #ifdef guards, so we define -+ PEI_HEADERS to prevent double including here. */ -+#ifndef PEI_HEADERS -+#include "sysdep.h" -+#include "bfd.h" -+#include "libbfd.h" -+#include "coff/aarch64.h" -+#include "coff/internal.h" -+#include "coff/pe.h" -+#include "libcoff.h" -+#include "libiberty.h" -+#endif -+ -+#include "libcoff.h" -+ -+/* The page size is a guess based on ELF. */ -+ -+#define COFF_PAGE_SIZE 0x1000 -+ -+/* All users of this file have bfd_octets_per_byte (abfd, sec) == 1. */ -+#define OCTETS_PER_BYTE(ABFD, SEC) 1 -+ -+#ifndef PCRELOFFSET -+#define PCRELOFFSET true -+#endif -+ -+/* Currently we don't handle any relocations. */ -+static reloc_howto_type pe_aarch64_std_reloc_howto[] = -+ { -+ -+ }; -+ -+#define COFF_DEFAULT_SECTION_ALIGNMENT_POWER 2 -+#define COFF_PAGE_SIZE 0x1000 -+ -+#ifndef NUM_ELEM -+#define NUM_ELEM(a) ((sizeof (a)) / sizeof ((a)[0])) -+#endif -+ -+#define NUM_RELOCS NUM_ELEM (pe_aarch64_std_reloc_howto) -+ -+#define RTYPE2HOWTO(cache_ptr, dst) \ -+ (cache_ptr)->howto = NULL -+ -+#ifndef bfd_pe_print_pdata -+#define bfd_pe_print_pdata NULL -+#endif -+ -+/* Return TRUE if this relocation should -+ appear in the output .reloc section. */ -+ -+static bool -+in_reloc_p (bfd * abfd ATTRIBUTE_UNUSED, -+ reloc_howto_type * howto) -+{ -+ return !howto->pc_relative; -+} -+ -+#include "coffcode.h" -+ -+/* Target vectors. */ -+const bfd_target -+#ifdef TARGET_SYM -+ TARGET_SYM = -+#else -+ aarch64_pei_vec = -+#endif -+{ -+#ifdef TARGET_NAME -+ TARGET_NAME, -+#else -+ "pei-aarch64-little", /* Name. */ -+#endif -+ bfd_target_coff_flavour, -+ BFD_ENDIAN_LITTLE, /* Data byte order is little. */ -+ BFD_ENDIAN_LITTLE, /* Header byte order is little. */ -+ -+ (HAS_RELOC | EXEC_P /* Object flags. */ -+ | HAS_LINENO | HAS_DEBUG -+ | HAS_SYMS | HAS_LOCALS | WP_TEXT | D_PAGED | BFD_COMPRESS | BFD_DECOMPRESS), -+ -+ (SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_RELOC /* Section flags. */ -+#if defined(COFF_WITH_PE) -+ | SEC_LINK_ONCE | SEC_LINK_DUPLICATES | SEC_READONLY | SEC_DEBUGGING -+#endif -+ | SEC_CODE | SEC_DATA | SEC_EXCLUDE ), -+ -+#ifdef TARGET_UNDERSCORE -+ TARGET_UNDERSCORE, /* Leading underscore. */ -+#else -+ 0, /* Leading underscore. */ -+#endif -+ '/', /* Ar_pad_char. */ -+ 15, /* Ar_max_namelen. */ -+ 0, /* match priority. */ -+ TARGET_KEEP_UNUSED_SECTION_SYMBOLS, /* keep unused section symbols. */ -+ -+ /* Data conversion functions. */ -+ bfd_getl64, bfd_getl_signed_64, bfd_putl64, -+ bfd_getl32, bfd_getl_signed_32, bfd_putl32, -+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Data. */ -+ /* Header conversion functions. */ -+ bfd_getl64, bfd_getl_signed_64, bfd_putl64, -+ bfd_getl32, bfd_getl_signed_32, bfd_putl32, -+ bfd_getl16, bfd_getl_signed_16, bfd_putl16, /* Hdrs. */ -+ -+ /* Note that we allow an object file to be treated as a core file as well. */ -+ { /* bfd_check_format. */ -+ _bfd_dummy_target, -+ coff_object_p, -+ bfd_generic_archive_p, -+ coff_object_p -+ }, -+ { /* bfd_set_format. */ -+ _bfd_bool_bfd_false_error, -+ coff_mkobject, -+ _bfd_generic_mkarchive, -+ _bfd_bool_bfd_false_error -+ }, -+ { /* bfd_write_contents. */ -+ _bfd_bool_bfd_false_error, -+ coff_write_object_contents, -+ _bfd_write_archive_contents, -+ _bfd_bool_bfd_false_error -+ }, -+ -+ BFD_JUMP_TABLE_GENERIC (coff), -+ BFD_JUMP_TABLE_COPY (coff), -+ BFD_JUMP_TABLE_CORE (_bfd_nocore), -+ BFD_JUMP_TABLE_ARCHIVE (_bfd_archive_coff), -+ BFD_JUMP_TABLE_SYMBOLS (coff), -+ BFD_JUMP_TABLE_RELOCS (coff), -+ BFD_JUMP_TABLE_WRITE (coff), -+ BFD_JUMP_TABLE_LINK (coff), -+ BFD_JUMP_TABLE_DYNAMIC (_bfd_nodynamic), -+ -+ NULL, -+ -+ COFF_SWAP_TABLE -+}; ---- /dev/null 2021-12-01 09:13:46.241760896 +0000 -+++ binutils-2.37/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.s 2021-12-01 13:35:43.143988222 +0000 -@@ -0,0 +1,42 @@ -+ .arch armv8-a -+ .text -+ .align 2 -+ .global foo -+ .type foo, %function -+foo: -+.LFB0: -+ .cfi_startproc -+ sub sp, sp, #16 -+ .cfi_def_cfa_offset 16 -+ str w0, [sp, 12] -+ ldr w0, [sp, 12] -+ mul w0, w0, w0 -+ add sp, sp, 16 -+ .cfi_def_cfa_offset 0 -+ ret -+ .cfi_endproc -+.LFE0: -+ .size foo, .-foo -+ .align 2 -+ .global main -+ .type main, %function -+main: -+.LFB1: -+ .cfi_startproc -+ stp x29, x30, [sp, -16]! -+ .cfi_def_cfa_offset 16 -+ .cfi_offset 29, -16 -+ .cfi_offset 30, -8 -+ mov x29, sp -+ mov w0, 5 -+ bl foo -+ ldp x29, x30, [sp], 16 -+ .cfi_restore 30 -+ .cfi_restore 29 -+ .cfi_def_cfa_offset 0 -+ ret -+ .cfi_endproc -+.LFE1: -+ .size main, .-main -+ .ident "GCC: (fsf-trunk.2870) 12.0.0 20210930 (experimental)" -+ .section .note.GNU-stack,"",@progbits ---- /dev/null 2021-12-01 09:13:46.241760896 +0000 -+++ binutils-2.37/binutils/testsuite/binutils-all/aarch64/pei-aarch64-little.d 2021-12-01 13:35:43.143988222 +0000 -@@ -0,0 +1,16 @@ -+#skip: aarch64_be-*-* -+#ld: -e0 -+#PROG: objcopy -+#objcopy: -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel -j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* -j .reloc --target=efi-app-aarch64 -+#objdump: -h -f -+#name: Check if efi app format is recognized -+ -+.*: file format pei-aarch64-little -+architecture: aarch64, flags 0x00000132: -+EXEC_P, HAS_SYMS, HAS_LOCALS, D_PAGED -+start address 0x0000000000000000 -+ -+Sections: -+Idx Name Size VMA LMA File off Algn -+ 0 \.text 00000030 0[^ ]+ 0[^ ]+ 0[^ ]+ 2\*\*2 -+ CONTENTS, ALLOC, LOAD, READONLY, CODE ---- /dev/null 2021-11-30 07:48:35.901044247 +0000 -+++ binutils-2.35.2/bfd/pei-aarch64.c 2021-11-30 13:38:37.255656936 +0000 -@@ -0,0 +1,75 @@ -+/* BFD back-end for AArch64 PE IMAGE COFF files. -+ Copyright (C) 2021 Free Software Foundation, Inc. -+ -+ This file is part of BFD, the Binary File Descriptor library. -+ -+ This program is free software; you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation; either version 3 of the License, or -+ (at your option) any later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software -+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, -+ MA 02110-1301, USA. */ -+ -+#include "sysdep.h" -+#include "bfd.h" -+ -+#define TARGET_SYM aarch64_pei_vec -+#define TARGET_NAME "pei-aarch64-little" -+#define TARGET_ARCHITECTURE bfd_arch_aarch64 -+#define TARGET_PAGESIZE 4096 -+#define TARGET_BIG_ENDIAN 0 -+#define TARGET_ARCHIVE 0 -+#define TARGET_PRIORITY 0 -+ -+#define COFF_IMAGE_WITH_PE -+/* Rename the above into.. */ -+#define COFF_WITH_peAArch64 -+#define COFF_WITH_PE -+#define PCRELOFFSET true -+ -+/* Long section names not allowed in executable images, only object files. */ -+#define COFF_LONG_SECTION_NAMES 0 -+ -+#define COFF_SECTION_ALIGNMENT_ENTRIES \ -+{ COFF_SECTION_NAME_EXACT_MATCH (".bss"), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ -+{ COFF_SECTION_NAME_EXACT_MATCH (".data"), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ -+{ COFF_SECTION_NAME_EXACT_MATCH (".rdata"), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ -+{ COFF_SECTION_NAME_EXACT_MATCH (".text"), \ -+ 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_EXACT_MATCH (".pdata"), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 2 }, \ -+{ COFF_SECTION_NAME_PARTIAL_MATCH (".debug"), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 }, \ -+{ COFF_SECTION_NAME_PARTIAL_MATCH (".gnu.linkonce.wi."), \ -+ COFF_ALIGNMENT_FIELD_EMPTY, COFF_ALIGNMENT_FIELD_EMPTY, 0 } -+ -+#define PEI_HEADERS -+#include "sysdep.h" -+#include "bfd.h" -+#include "libbfd.h" -+#include "coff/aarch64.h" -+#include "coff/internal.h" -+#include "coff/pe.h" -+#include "libcoff.h" -+#include "libpei.h" -+#include "libiberty.h" -+ -+/* Make sure we're setting a 64-bit format. */ -+#undef AOUTSZ -+#define AOUTSZ PEPAOUTSZ -+#define PEAOUTHDR PEPAOUTHDR -+ -+#include "coff-aarch64.c" diff --git a/binutils-CVE-2021-45078.patch b/binutils-CVE-2021-45078.patch deleted file mode 100644 index 3ce3bcc..0000000 --- a/binutils-CVE-2021-45078.patch +++ /dev/null @@ -1,230 +0,0 @@ ---- binutils.orig/binutils/stabs.c 2021-12-20 12:51:40.953113439 +0000 -+++ binutils-2.37/binutils/stabs.c 2021-12-20 12:56:07.607348945 +0000 -@@ -202,7 +202,7 @@ static debug_type stab_find_type (void * - static bool stab_record_type - (void *, struct stab_handle *, const int *, debug_type); - static debug_type stab_xcoff_builtin_type -- (void *, struct stab_handle *, int); -+ (void *, struct stab_handle *, unsigned int); - static debug_type stab_find_tagged_type - (void *, struct stab_handle *, const char *, int, enum debug_type_kind); - static debug_type *stab_demangle_argtypes -@@ -3496,166 +3496,167 @@ stab_record_type (void *dhandle ATTRIBUT - - static debug_type - stab_xcoff_builtin_type (void *dhandle, struct stab_handle *info, -- int typenum) -+ unsigned int typenum) - { - debug_type rettype; - const char *name; - -- if (typenum >= 0 || typenum < -XCOFF_TYPE_COUNT) -+ typenum = -typenum - 1; -+ if (typenum >= XCOFF_TYPE_COUNT) - { -- fprintf (stderr, _("Unrecognized XCOFF type %d\n"), typenum); -+ fprintf (stderr, _("Unrecognized XCOFF type %d\n"), -typenum - 1); - return DEBUG_TYPE_NULL; - } -- if (info->xcoff_types[-typenum] != NULL) -- return info->xcoff_types[-typenum]; -+ if (info->xcoff_types[typenum] != NULL) -+ return info->xcoff_types[typenum]; - -- switch (-typenum) -+ switch (typenum) - { -- case 1: -+ case 0: - /* The size of this and all the other types are fixed, defined - by the debugging format. */ - name = "int"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 2: -+ case 1: - name = "char"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 3: -+ case 2: - name = "short"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 4: -+ case 3: - name = "long"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 5: -+ case 4: - name = "unsigned char"; - rettype = debug_make_int_type (dhandle, 1, true); - break; -- case 6: -+ case 5: - name = "signed char"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 7: -+ case 6: - name = "unsigned short"; - rettype = debug_make_int_type (dhandle, 2, true); - break; -- case 8: -+ case 7: - name = "unsigned int"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 9: -+ case 8: - name = "unsigned"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 10: -+ case 9: - name = "unsigned long"; - rettype = debug_make_int_type (dhandle, 4, true); - break; -- case 11: -+ case 10: - name = "void"; - rettype = debug_make_void_type (dhandle); - break; -- case 12: -+ case 11: - /* IEEE single precision (32 bit). */ - name = "float"; - rettype = debug_make_float_type (dhandle, 4); - break; -- case 13: -+ case 12: - /* IEEE double precision (64 bit). */ - name = "double"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 14: -+ case 13: - /* This is an IEEE double on the RS/6000, and different machines - with different sizes for "long double" should use different - negative type numbers. See stabs.texinfo. */ - name = "long double"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 15: -+ case 14: - name = "integer"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 16: -+ case 15: - name = "boolean"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 17: -+ case 16: - name = "short real"; - rettype = debug_make_float_type (dhandle, 4); - break; -- case 18: -+ case 17: - name = "real"; - rettype = debug_make_float_type (dhandle, 8); - break; -- case 19: -+ case 18: - /* FIXME */ - name = "stringptr"; - rettype = NULL; - break; -- case 20: -+ case 19: - /* FIXME */ - name = "character"; - rettype = debug_make_int_type (dhandle, 1, true); - break; -- case 21: -+ case 20: - name = "logical*1"; - rettype = debug_make_bool_type (dhandle, 1); - break; -- case 22: -+ case 21: - name = "logical*2"; - rettype = debug_make_bool_type (dhandle, 2); - break; -- case 23: -+ case 22: - name = "logical*4"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 24: -+ case 23: - name = "logical"; - rettype = debug_make_bool_type (dhandle, 4); - break; -- case 25: -+ case 24: - /* Complex type consisting of two IEEE single precision values. */ - name = "complex"; - rettype = debug_make_complex_type (dhandle, 8); - break; -- case 26: -+ case 25: - /* Complex type consisting of two IEEE double precision values. */ - name = "double complex"; - rettype = debug_make_complex_type (dhandle, 16); - break; -- case 27: -+ case 26: - name = "integer*1"; - rettype = debug_make_int_type (dhandle, 1, false); - break; -- case 28: -+ case 27: - name = "integer*2"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 29: -+ case 28: - name = "integer*4"; - rettype = debug_make_int_type (dhandle, 4, false); - break; -- case 30: -+ case 29: - /* FIXME */ - name = "wchar"; - rettype = debug_make_int_type (dhandle, 2, false); - break; -- case 31: -+ case 30: - name = "long long"; - rettype = debug_make_int_type (dhandle, 8, false); - break; -- case 32: -+ case 31: - name = "unsigned long long"; - rettype = debug_make_int_type (dhandle, 8, true); - break; -- case 33: -+ case 32: - name = "logical*8"; - rettype = debug_make_bool_type (dhandle, 8); - break; -- case 34: -+ case 33: - name = "integer*8"; - rettype = debug_make_int_type (dhandle, 8, false); - break; -@@ -3664,9 +3665,7 @@ stab_xcoff_builtin_type (void *dhandle, - } - - rettype = debug_name_type (dhandle, name, rettype); -- -- info->xcoff_types[-typenum] = rettype; -- -+ info->xcoff_types[typenum] = rettype; - return rettype; - } - diff --git a/binutils-bfd-close-fds.patch b/binutils-bfd-close-fds.patch deleted file mode 100644 index 192d4e0..0000000 --- a/binutils-bfd-close-fds.patch +++ /dev/null @@ -1,232 +0,0 @@ -From 1c611b40e6bfc8029bff7696814330b5bc0ee5c0 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Mon, 26 Jul 2021 05:59:55 -0700 -Subject: [PATCH] bfd: Close the file descriptor if there is no archive fd - -Close the file descriptor if there is no archive plugin file descriptor -to avoid running out of file descriptors on thin archives with many -archive members. - -bfd/ - - PR ld/28138 - * plugin.c (bfd_plugin_close_file_descriptor): Close the file - descriptor there is no archive plugin file descriptor. - -ld/ - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run tmpdir/pr28138 only for - native build. - - PR ld/28138 - * testsuite/ld-plugin/lto.exp: Run ld/28138 tests. - * testsuite/ld-plugin/pr28138.c: New file. - * testsuite/ld-plugin/pr28138-1.c: Likewise. - * testsuite/ld-plugin/pr28138-2.c: Likewise. - * testsuite/ld-plugin/pr28138-3.c: Likewise. - * testsuite/ld-plugin/pr28138-4.c: Likewise. - * testsuite/ld-plugin/pr28138-5.c: Likewise. - * testsuite/ld-plugin/pr28138-6.c: Likewise. - * testsuite/ld-plugin/pr28138-7.c: Likewise. - -(cherry picked from commit 5a98fb7513b559e20dfebdbaa2a471afda3b4742) -(cherry picked from commit 7dc37e1e1209c80e0bab784df6b6bac335e836f2) ---- - bfd/plugin.c | 8 +++++++ - ld/testsuite/ld-plugin/lto.exp | 34 ++++++++++++++++++++++++++++++ - ld/testsuite/ld-plugin/pr28138-1.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-2.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-3.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-4.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-5.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-6.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138-7.c | 6 ++++++ - ld/testsuite/ld-plugin/pr28138.c | 20 ++++++++++++++++++ - 10 files changed, 104 insertions(+) - create mode 100644 ld/testsuite/ld-plugin/pr28138-1.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-2.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-3.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-4.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-5.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-6.c - create mode 100644 ld/testsuite/ld-plugin/pr28138-7.c - create mode 100644 ld/testsuite/ld-plugin/pr28138.c - -diff --git a/bfd/plugin.c b/bfd/plugin.c -index 6cfa2b66470..3bab8febe88 100644 ---- a/bfd/plugin.c -+++ b/bfd/plugin.c -@@ -291,6 +291,14 @@ bfd_plugin_close_file_descriptor (bfd *abfd, int fd) - && !bfd_is_thin_archive (abfd->my_archive)) - abfd = abfd->my_archive; - -+ /* Close the file descriptor if there is no archive plugin file -+ descriptor. */ -+ if (abfd->archive_plugin_fd == -1) -+ { -+ close (fd); -+ return; -+ } -+ - abfd->archive_plugin_fd_open_count--; - /* Dup the archive plugin file descriptor for later use, which - will be closed by _bfd_archive_close_and_cleanup. */ -diff --git a/ld/testsuite/ld-plugin/lto.exp b/ld/testsuite/ld-plugin/lto.exp -index def69e43ab3..999d911ce6a 100644 ---- a/ld/testsuite/ld-plugin/lto.exp -+++ b/ld/testsuite/ld-plugin/lto.exp -@@ -687,6 +687,40 @@ if { [is_elf_format] && [check_lto_shared_available] } { - } - } - -+run_cc_link_tests [list \ -+ [list \ -+ "Build pr28138.a" \ -+ "-T" "" \ -+ {pr28138-1.c pr28138-2.c pr28138-3.c pr28138-4.c pr28138-5.c \ -+ pr28138-6.c pr28138-7.c} {} "pr28138.a" \ -+ ] \ -+ [list \ -+ "Build pr28138.o" \ -+ "" "" \ -+ {pr28138.c} {} \ -+ ] \ -+] -+ -+set exec_output [run_host_cmd "sh" \ -+ "-c \"ulimit -n 20; \ -+ $CC -Btmpdir/ld -o tmpdir/pr28138 \ -+ tmpdir/pr28138.o tmpdir/pr28138.a\""] -+set exec_output [prune_warnings $exec_output] -+if [string match "" $exec_output] then { -+ if { [isnative] } { -+ set exec_output [run_host_cmd "tmpdir/pr28138" ""] -+ if [string match "PASS" $exec_output] then { -+ pass "PR ld/28138" -+ } else { -+ fail "PR ld/28138" -+ } -+ } else { -+ pass "PR ld/28138" -+ } -+} else { -+ fail "PR ld/28138" -+} -+ - set testname "Build liblto-11.a" - remote_file host delete "tmpdir/liblto-11.a" - set catch_output [run_host_cmd "$ar" "rc $plug_opt tmpdir/liblto-11.a tmpdir/lto-11a.o tmpdir/lto-11b.o tmpdir/lto-11c.o"] -diff --git a/ld/testsuite/ld-plugin/pr28138-1.c b/ld/testsuite/ld-plugin/pr28138-1.c -new file mode 100644 -index 00000000000..51d119e1642 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-1.c -@@ -0,0 +1,6 @@ -+extern int a0(void); -+int -+a1(void) -+{ -+ return 1 + a0(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-2.c b/ld/testsuite/ld-plugin/pr28138-2.c -new file mode 100644 -index 00000000000..1120cd797e9 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-2.c -@@ -0,0 +1,6 @@ -+extern int a1(void); -+int -+a2(void) -+{ -+ return 1 + a1(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-3.c b/ld/testsuite/ld-plugin/pr28138-3.c -new file mode 100644 -index 00000000000..ec464947ee6 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-3.c -@@ -0,0 +1,6 @@ -+extern int a2(void); -+int -+a3(void) -+{ -+ return 1 + a2(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-4.c b/ld/testsuite/ld-plugin/pr28138-4.c -new file mode 100644 -index 00000000000..475701b2c5c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-4.c -@@ -0,0 +1,6 @@ -+extern int a3(void); -+int -+a4(void) -+{ -+ return 1 + a3(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-5.c b/ld/testsuite/ld-plugin/pr28138-5.c -new file mode 100644 -index 00000000000..e24f86c363e ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-5.c -@@ -0,0 +1,6 @@ -+extern int a4(void); -+int -+a5(void) -+{ -+ return 1 + a4(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-6.c b/ld/testsuite/ld-plugin/pr28138-6.c -new file mode 100644 -index 00000000000..b5b938bdb21 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-6.c -@@ -0,0 +1,6 @@ -+extern int a5(void); -+int -+a6(void) -+{ -+ return 1 + a5(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138-7.c b/ld/testsuite/ld-plugin/pr28138-7.c -new file mode 100644 -index 00000000000..4ef75bf0f0c ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138-7.c -@@ -0,0 +1,6 @@ -+extern int a6(void); -+int -+a7(void) -+{ -+ return 1 + a6(); -+} -diff --git a/ld/testsuite/ld-plugin/pr28138.c b/ld/testsuite/ld-plugin/pr28138.c -new file mode 100644 -index 00000000000..68252c9f382 ---- /dev/null -+++ b/ld/testsuite/ld-plugin/pr28138.c -@@ -0,0 +1,20 @@ -+#include -+ -+extern int a7(void); -+ -+int -+a0(void) -+{ -+ return 0; -+} -+ -+int -+main() -+{ -+ if (a7() == 7) -+ { -+ printf ("PASS\n"); -+ return 0; -+ } -+ return 1; -+} --- -2.27.0 - diff --git a/binutils-dwarf-5-dir0.patch b/binutils-dwarf-5-dir0.patch deleted file mode 100644 index 24233cc..0000000 --- a/binutils-dwarf-5-dir0.patch +++ /dev/null @@ -1,201 +0,0 @@ -diff -rup binutils.orig/gas/dwarf2dbg.c binutils-2.37/gas/dwarf2dbg.c ---- binutils.orig/gas/dwarf2dbg.c 2021-08-09 17:28:17.743318315 +0100 -+++ binutils-2.37/gas/dwarf2dbg.c 2021-08-09 17:28:27.043264112 +0100 -@@ -620,7 +620,22 @@ get_directory_table_entry (const char *d - if (can_use_zero) - { - if (dirs == NULL || dirs[0] == NULL) -- d = 0; -+ { -+ const char * pwd = getpwd (); -+ -+ if (dwarf_level >= 5 && strcmp (dirname, pwd) != 0) -+ { -+ /* In DWARF-5 the 0 entry in the directory table is expected to be -+ the same as the DW_AT_comp_dir (which is set to the current build -+ directory). Since we are about to create a directory entry that -+ is not the same, allocate the current directory first. -+ FIXME: Alternatively we could generate an error message here. */ -+ (void) get_directory_table_entry (pwd, strlen (pwd), true); -+ d = 1; -+ } -+ else -+ d = 0; -+ } - } - else if (d == 0) - d = 1; -@@ -628,8 +643,8 @@ get_directory_table_entry (const char *d - if (d >= dirs_allocated) - { - unsigned int old = dirs_allocated; -- -- dirs_allocated = d + 32; -+#define DIR_TABLE_INCREMENT 32 -+ dirs_allocated = d + DIR_TABLE_INCREMENT; - dirs = XRESIZEVEC (char *, dirs, dirs_allocated); - memset (dirs + old, 0, (dirs_allocated - old) * sizeof (char *)); - } -@@ -779,7 +794,7 @@ allocate_filename_to_slot (const char *d - { - if (dirs == NULL) - { -- dirs_allocated = files[num].dir + 32; -+ dirs_allocated = files[num].dir + DIR_TABLE_INCREMENT; - dirs = XCNEWVEC (char *, dirs_allocated); - } - -@@ -807,7 +822,7 @@ allocate_filename_to_slot (const char *d - { - if (dirs == NULL) - { -- dirs_allocated = files[num].dir + 32; -+ dirs_allocated = files[num].dir + DIR_TABLE_INCREMENT; - dirs = XCNEWVEC (char *, dirs_allocated); - } - -@@ -840,7 +855,7 @@ allocate_filename_to_slot (const char *d - dirlen = strlen (dirname); - file = filename; - } -- -+ - d = get_directory_table_entry (dirname, dirlen, num == 0); - i = num; - -@@ -2082,7 +2097,12 @@ out_dir_and_file_list (segT line_seg, in - Otherwise use pwd as main file directory. */ - if (dirs_in_use > 0 && dirs != NULL && dirs[0] != NULL) - dir = remap_debug_filename (dirs[0]); -- else if (dirs_in_use > 1 && dirs != NULL && dirs[1] != NULL) -+ else if (dirs_in_use > 1 -+ && dirs != NULL -+ && dirs[1] != NULL -+ /* DWARF-5 directory tables expect dir[0] to be the same as -+ DW_AT_comp_dir, which is the same as pwd. */ -+ && dwarf_level < 5) - dir = remap_debug_filename (dirs[1]); - else - dir = remap_debug_filename (getpwd ()); -@@ -2185,8 +2205,8 @@ out_dir_and_file_list (segT line_seg, in - uses slot zero, but that is only set explicitly using a - .file 0 directive. If that isn't used, but file 1 is, - then use that as main file name. */ -- if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1) -- files[0].filename = files[1].filename; -+ if (DWARF2_LINE_VERSION >= 5 && i == 0 && files_in_use >= 1 && files[0].filename == NULL) -+ files[0].filename = files[1].filename; - else - files[i].filename = ""; - if (DWARF2_LINE_VERSION < 5 || i != 0) -Only in binutils-2.37/gas/testsuite/gas/elf: dwarf-5-dir0.d -Only in binutils-2.37/gas/testsuite/gas/elf: dwarf-5-dir0.s -diff -rup binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d binutils-2.37/gas/testsuite/gas/elf/dwarf-5-file0.d ---- binutils.orig/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:28:17.817317884 +0100 -+++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-file0.d 2021-08-09 17:28:27.043264112 +0100 -@@ -3,17 +3,18 @@ - #readelf: -wl - - #... -- The Directory Table \(offset 0x.*, lines 3, columns 1\): -+ The Directory Table \(offset 0x.*, lines 4, columns 1\): - Entry Name -- 0 \(indirect line string, offset: 0x.*\): master directory -- 1 \(indirect line string, offset: 0x.*\): secondary directory -- 2 \(indirect line string, offset: 0x.*\): /tmp -+#... -+ 1 \(indirect line string, offset: 0x.*\): master directory -+ 2 \(indirect line string, offset: 0x.*\): secondary directory -+ 3 \(indirect line string, offset: 0x.*\): /tmp - - The File Name Table \(offset 0x.*, lines 3, columns 3\): - Entry Dir MD5 Name -- 0 0 0x0 \(indirect line string, offset: 0x.*\): master source file -- 1 1 0x0 \(indirect line string, offset: 0x.*\): secondary source file -- 2 2 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c -+ 0 1 0x0 \(indirect line string, offset: 0x.*\): master source file -+ 1 2 0x0 \(indirect line string, offset: 0x.*\): secondary source file -+ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c - #pass - - -diff -rup binutils.orig/gas/testsuite/gas/elf/elf.exp binutils-2.37/gas/testsuite/gas/elf/elf.exp ---- binutils.orig/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:28:17.817317884 +0100 -+++ binutils-2.37/gas/testsuite/gas/elf/elf.exp 2021-08-09 17:28:27.044264106 +0100 -@@ -297,6 +297,7 @@ if { [is_elf_format] } then { - run_dump_test "dwarf2-19" $dump_opts - run_dump_test "dwarf2-20" $dump_opts - run_dump_test "dwarf-5-file0" $dump_opts -+ run_dump_test "dwarf-5-dir0" $dump_opts - run_dump_test "dwarf-4-cu" $dump_opts - run_dump_test "dwarf-5-cu" $dump_opts - run_dump_test "dwarf-5-nop-for-line-table" $dump_opts -diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-1.d ---- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:28:17.782318088 +0100 -+++ binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-1.d 2021-08-09 17:28:27.044264106 +0100 -@@ -33,7 +33,7 @@ Raw dump of debug contents of section \. - - The Directory Table \(offset 0x.*, lines 2, columns 1\): - Entry Name -- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 -+ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite - 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 - - The File Name Table \(offset 0x.*, lines 2, columns 3\): -diff -rup binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-2.d ---- binutils.orig/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:28:17.785318070 +0100 -+++ binutils-2.37/gas/testsuite/gas/i386/dwarf5-line-2.d 2021-08-09 17:28:27.044264106 +0100 -@@ -33,7 +33,7 @@ Raw dump of debug contents of section \. - - The Directory Table \(offset 0x.*, lines 2, columns 1\): - Entry Name -- 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 -+ 0 \(indirect line string, offset: 0x.*\): .*/gas/testsuite - 1 \(indirect line string, offset: 0x.*\): .*/gas/testsuite/gas/i386 - - The File Name Table \(offset 0x.*, lines 1, columns 3\): ---- /dev/null 2021-08-09 07:51:33.817495606 +0100 -+++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-dir0.s 2021-08-09 17:28:54.787102415 +0100 -@@ -0,0 +1,19 @@ -+ .section .debug_info,"",%progbits -+ .4byte 0x8a -+ .2byte 0x2 -+ .4byte .Ldebug_abbrev0 -+ .byte 0x4 -+ .uleb128 0x1 -+ -+ .file 0 "../not-the-build-directory/master-source-file.c" -+ .line 1 -+ .text -+ .octa 0x12345678901234567890123456789012 -+ -+ .file 1 "secondary directory/secondary source file" -+ .line 2 -+ .word 2 -+ -+ .file 2 "/tmp" "foo.c" md5 0x95828e8bc4f7404dbf7526fb7bd0f192 -+ .line 5 -+ .word 6 ---- /dev/null 2021-08-09 07:51:33.817495606 +0100 -+++ binutils-2.37/gas/testsuite/gas/elf/dwarf-5-dir0.d 2021-08-09 17:28:54.787102415 +0100 -@@ -0,0 +1,20 @@ -+#as: --gdwarf-5 -+#name: DWARF5 dir[0] -+#readelf: -wl -+ -+#... -+ The Directory Table \(offset 0x.*, lines 4, columns 1\): -+ Entry Name -+ 0 \(indirect line string, offset: 0x0\): .*/gas/testsuite -+ 1 \(indirect line string, offset: 0x.*\): ../not-the-build-directory -+ 2 \(indirect line string, offset: 0x.*\): secondary directory -+ 3 \(indirect line string, offset: 0x.*\): /tmp -+ -+ The File Name Table \(offset 0x.*, lines 3, columns 3\): -+ Entry Dir MD5 Name -+ 0 1 0x0 \(indirect line string, offset: 0x.*\): master-source-file.c -+ 1 2 0x0 \(indirect line string, offset: 0x.*\): secondary source file -+ 2 3 0x95828e8bc4f7404dbf7526fb7bd0f192 \(indirect line string, offset: 0x.*\): foo.c -+#pass -+ -+ diff --git a/binutils-empty-MIND-string.patch b/binutils-empty-MIND-string.patch deleted file mode 100644 index fe648a5..0000000 --- a/binutils-empty-MIND-string.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- binutils.orig/bfd/linker.c 2021-10-13 13:21:03.125429867 +0100 -+++ binutils-2.37/bfd/linker.c 2021-10-13 13:33:31.328554905 +0100 -@@ -1420,6 +1420,7 @@ _bfd_generic_link_add_one_symbol (struct - { - row = COMMON_ROW; - if (!bfd_link_relocatable (info) -+ && name != NULL - && name[0] == '_' - && name[1] == '_' - && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0) -@@ -1682,7 +1683,7 @@ _bfd_generic_link_add_one_symbol (struct - cycle = true; - break; - } -- if (strcmp (h->u.i.link->root.string, string) == 0) -+ if (string != NULL && strcmp (h->u.i.link->root.string, string) == 0) - break; - /* Fall through. */ - case MDEF: diff --git a/binutils-gas-Use-the-directory-name-in-.file-0.patch b/binutils-gas-Use-the-directory-name-in-.file-0.patch deleted file mode 100644 index 5a7f797..0000000 --- a/binutils-gas-Use-the-directory-name-in-.file-0.patch +++ /dev/null @@ -1,323 +0,0 @@ -commit 58f3b6a3495074da39ba6e19935e4401dcbacf88 -Author: H.J. Lu -Date: Thu Sep 9 09:14:42 2021 -0700 - - gas: Use the directory name in .file 0 - - DWARF5 allows .file 0 to take an optional directory name. Set the entry - 0 of the directory table to the directory name in .file 0. - - PR gas/28266 - * dwarf2dbg.c (get_directory_table_entry): Add an argument for - the directory name in .file 0 and use it, instead of PWD. - (allocate_filenum): Pass NULL to get_directory_table_entry. - (allocate_filename_to_slot): Pass the incoming dirname to - get_directory_table_entry. - * testsuite/gas/elf/dwarf-5-file0-2.d: New file. - * testsuite/gas/elf/dwarf-5-file0-2.s: Likewise. - * testsuite/gas/elf/elf.exp: Run dwarf-5-file0-2. - -diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c -index 8f5248534ad..9e3437b8948 100644 ---- a/gas/dwarf2dbg.c -+++ b/gas/dwarf2dbg.c -@@ -592,6 +592,7 @@ get_basename (const char * pathname) - - static unsigned int - get_directory_table_entry (const char *dirname, -+ const char *file0_dirname, - size_t dirlen, - bool can_use_zero) - { -@@ -621,7 +622,7 @@ get_directory_table_entry (const char *dirname, - { - if (dirs == NULL || dirs[0] == NULL) - { -- const char * pwd = getpwd (); -+ const char * pwd = file0_dirname ? file0_dirname : getpwd (); - - if (dwarf_level >= 5 && strcmp (dirname, pwd) != 0) - { -@@ -630,7 +631,8 @@ get_directory_table_entry (const char *dirname, - directory). Since we are about to create a directory entry that - is not the same, allocate the current directory first. - FIXME: Alternatively we could generate an error message here. */ -- (void) get_directory_table_entry (pwd, strlen (pwd), true); -+ (void) get_directory_table_entry (pwd, NULL, strlen (pwd), -+ true); - d = 1; - } - else -@@ -726,7 +728,7 @@ allocate_filenum (const char * pathname) - file = get_basename (pathname); - dir_len = file - pathname; - -- dir = get_directory_table_entry (pathname, dir_len, false); -+ dir = get_directory_table_entry (pathname, NULL, dir_len, false); - - /* Do not use slot-0. That is specifically reserved for use by - the '.file 0 "name"' directive. */ -@@ -766,6 +768,7 @@ allocate_filename_to_slot (const char *dirname, - const char *file; - size_t dirlen; - unsigned int i, d; -+ const char *file0_dirname = dirname; - - /* Short circuit the common case of adding the same pathname - as last time. */ -@@ -856,7 +859,8 @@ allocate_filename_to_slot (const char *dirname, - file = filename; - } - -- d = get_directory_table_entry (dirname, dirlen, num == 0); -+ d = get_directory_table_entry (dirname, file0_dirname, dirlen, -+ num == 0); - i = num; - - if (! assign_file_to_slot (i, file, d)) -diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.d b/gas/testsuite/gas/elf/dwarf-5-file0-2.d -new file mode 100644 -index 00000000000..4b3ed29f4c9 ---- /dev/null -+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.d -@@ -0,0 +1,15 @@ -+#as: --gdwarf-5 -+#name: DWARF5 .file 0 dir file -+#readelf: -wl -+ -+#... -+ The Directory Table \(offset 0x.*, lines 1, columns 1\): -+ Entry Name -+#... -+ 0 \(indirect line string, offset: 0x.*\): /example -+ -+ The File Name Table \(offset 0x.*, lines 2, columns 2\): -+ Entry Dir Name -+ 0 0 \(indirect line string, offset: 0x.*\): test.c -+ 1 0 \(indirect line string, offset: 0x.*\): test.c -+#pass -diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.s b/gas/testsuite/gas/elf/dwarf-5-file0-2.s -new file mode 100644 -index 00000000000..135a03bf493 ---- /dev/null -+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.s -@@ -0,0 +1,111 @@ -+ .file "test.c" -+ .text -+.Ltext0: -+ .file 0 "/example" "test.c" -+ .globl x -+ .section .bss -+ .balign 4 -+ .type x, @object -+ .size x, 4 -+x: -+ .zero 4 -+ .text -+.Letext0: -+ .file 1 "test.c" -+ .section .debug_info,"",%progbits -+.Ldebug_info0: -+ .long 0x32 -+ .2byte 0x5 -+ .byte 0x1 -+ .byte 0x4 -+ .long .Ldebug_abbrev0 -+ .uleb128 0x1 -+ .long .LASF2 -+ .byte 0x1d -+ .long .LASF0 -+ .long .LASF1 -+ .long .Ldebug_line0 -+ .uleb128 0x2 -+ .string "x" -+ .byte 0x1 -+ .byte 0x1 -+ .byte 0x5 -+ .long 0x2e -+ .uleb128 0x5 -+ .byte 0x3 -+ .long x -+ .uleb128 0x3 -+ .byte 0x4 -+ .byte 0x5 -+ .string "int" -+ .byte 0 -+ .section .debug_abbrev,"",%progbits -+.Ldebug_abbrev0: -+ .uleb128 0x1 -+ .uleb128 0x11 -+ .byte 0x1 -+ .uleb128 0x25 -+ .uleb128 0xe -+ .uleb128 0x13 -+ .uleb128 0xb -+ .uleb128 0x3 -+ .uleb128 0x1f -+ .uleb128 0x1b -+ .uleb128 0x1f -+ .uleb128 0x10 -+ .uleb128 0x17 -+ .byte 0 -+ .byte 0 -+ .uleb128 0x2 -+ .uleb128 0x34 -+ .byte 0 -+ .uleb128 0x3 -+ .uleb128 0x8 -+ .uleb128 0x3a -+ .uleb128 0xb -+ .uleb128 0x3b -+ .uleb128 0xb -+ .uleb128 0x39 -+ .uleb128 0xb -+ .uleb128 0x49 -+ .uleb128 0x13 -+ .uleb128 0x3f -+ .uleb128 0x19 -+ .uleb128 0x2 -+ .uleb128 0x18 -+ .byte 0 -+ .byte 0 -+ .uleb128 0x3 -+ .uleb128 0x24 -+ .byte 0 -+ .uleb128 0xb -+ .uleb128 0xb -+ .uleb128 0x3e -+ .uleb128 0xb -+ .uleb128 0x3 -+ .uleb128 0x8 -+ .byte 0 -+ .byte 0 -+ .byte 0 -+ .section .debug_aranges,"",%progbits -+ .long 0x14 -+ .2byte 0x2 -+ .long .Ldebug_info0 -+ .byte 0x4 -+ .byte 0 -+ .2byte 0 -+ .2byte 0 -+ .long 0 -+ .long 0 -+ .section .debug_line,"",%progbits -+.Ldebug_line0: -+ .section .debug_str,"MS",%progbits,1 -+.LASF2: -+ .string "GNU C17 11.2.1 -g" -+ .section .debug_line_str,"MS",%progbits,1 -+.LASF1: -+ .string "/example" -+.LASF0: -+ .string "test.c" -+ .ident "GCC: (GNU) 11.2.1" -+ .section .note.GNU-stack,"",%progbits -diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp -index 18bc1db8c70..2485008d569 100644 ---- a/gas/testsuite/gas/elf/elf.exp -+++ b/gas/testsuite/gas/elf/elf.exp -@@ -297,6 +297,7 @@ if { [is_elf_format] } then { - run_dump_test "dwarf2-19" $dump_opts - run_dump_test "dwarf2-20" $dump_opts - run_dump_test "dwarf-5-file0" $dump_opts -+ run_dump_test "dwarf-5-file0-2" $dump_opts - run_dump_test "dwarf-5-dir0" $dump_opts - run_dump_test "dwarf-4-cu" $dump_opts - run_dump_test "dwarf-5-cu" $dump_opts -commit 9f81b99e2426d19760c20c07f8cd3ae5cd85e8df -Author: Alan Modra -Date: Fri Sep 10 18:01:43 2021 +0930 - - Re: gas: Use the directory name in .file 0 - - PR gas/28266 - * testsuite/gas/elf/dwarf-5-file0-2.s: Use %object rather than - @object, .4byte instead of .long, and .asciz instead of .string. - -diff --git a/gas/testsuite/gas/elf/dwarf-5-file0-2.s b/gas/testsuite/gas/elf/dwarf-5-file0-2.s -index 135a03bf493..bab4a16b56b 100644 ---- a/gas/testsuite/gas/elf/dwarf-5-file0-2.s -+++ b/gas/testsuite/gas/elf/dwarf-5-file0-2.s -@@ -5,7 +5,7 @@ - .globl x - .section .bss - .balign 4 -- .type x, @object -+ .type x, %object - .size x, 4 - x: - .zero 4 -@@ -14,30 +14,30 @@ x: - .file 1 "test.c" - .section .debug_info,"",%progbits - .Ldebug_info0: -- .long 0x32 -+ .4byte 0x32 - .2byte 0x5 - .byte 0x1 - .byte 0x4 -- .long .Ldebug_abbrev0 -+ .4byte .Ldebug_abbrev0 - .uleb128 0x1 -- .long .LASF2 -+ .4byte .LASF2 - .byte 0x1d -- .long .LASF0 -- .long .LASF1 -- .long .Ldebug_line0 -+ .4byte .LASF0 -+ .4byte .LASF1 -+ .4byte .Ldebug_line0 - .uleb128 0x2 -- .string "x" -+ .asciz "x" - .byte 0x1 - .byte 0x1 - .byte 0x5 -- .long 0x2e -+ .4byte 0x2e - .uleb128 0x5 - .byte 0x3 -- .long x -+ .4byte x - .uleb128 0x3 - .byte 0x4 - .byte 0x5 -- .string "int" -+ .asciz "int" - .byte 0 - .section .debug_abbrev,"",%progbits - .Ldebug_abbrev0: -@@ -88,24 +88,24 @@ x: - .byte 0 - .byte 0 - .section .debug_aranges,"",%progbits -- .long 0x14 -+ .4byte 0x14 - .2byte 0x2 -- .long .Ldebug_info0 -+ .4byte .Ldebug_info0 - .byte 0x4 - .byte 0 - .2byte 0 - .2byte 0 -- .long 0 -- .long 0 -+ .4byte 0 -+ .4byte 0 - .section .debug_line,"",%progbits - .Ldebug_line0: - .section .debug_str,"MS",%progbits,1 - .LASF2: -- .string "GNU C17 11.2.1 -g" -+ .asciz "GNU C17 11.2.1 -g" - .section .debug_line_str,"MS",%progbits,1 - .LASF1: -- .string "/example" -+ .asciz "/example" - .LASF0: -- .string "test.c" -+ .asciz "test.c" - .ident "GCC: (GNU) 11.2.1" - .section .note.GNU-stack,"",%progbits diff --git a/binutils-gas-multibyte-warnings.patch b/binutils-gas-multibyte-warnings.patch deleted file mode 100644 index d19cd7b..0000000 --- a/binutils-gas-multibyte-warnings.patch +++ /dev/null @@ -1,384 +0,0 @@ -diff -rupN binutils.orig/gas/NEWS binutils-2.37/gas/NEWS ---- binutils.orig/gas/NEWS 2021-11-18 16:50:39.104088534 +0000 -+++ binutils-2.37/gas/NEWS 2021-11-18 16:51:16.340948280 +0000 -@@ -1,5 +1,13 @@ - -*- text -*- - -+* The --multibyte-handling=[allow|warn|warn-sym-only] option tells the -+ assembler what to when it encoutners multibyte characters in the input. The -+ default is to allow them. Setting the option to "warn" will generate a -+ warning message whenever any multibyte character is encountered. Using the -+ option to "warn-sym-only" will make the assembler generate a warning whenever a -+ symbol is defined containing multibyte characters. (References to undefined -+ symbols will not generate warnings). -+ - Changes in 2.37: - - * arm-symbianelf support removed. -diff -rupN binutils.orig/gas/app.c binutils-2.37/gas/app.c ---- binutils.orig/gas/app.c 2021-11-18 16:50:39.104088534 +0000 -+++ binutils-2.37/gas/app.c 2021-11-18 16:50:42.530075630 +0000 -@@ -345,6 +345,55 @@ process_escape (int ch) - } - } - -+#define MULTIBYTE_WARN_COUNT_LIMIT 10 -+static unsigned int multibyte_warn_count = 0; -+ -+bool -+scan_for_multibyte_characters (const unsigned char * start, -+ const unsigned char * end, -+ bool warn) -+{ -+ if (end <= start) -+ return false; -+ -+ if (warn && multibyte_warn_count > MULTIBYTE_WARN_COUNT_LIMIT) -+ return false; -+ -+ bool found = false; -+ -+ while (start < end) -+ { -+ unsigned char c; -+ -+ if ((c = * start++) <= 0x7f) -+ continue; -+ -+ if (!warn) -+ return true; -+ -+ found = true; -+ -+ const char * filename; -+ unsigned int lineno; -+ -+ filename = as_where (& lineno); -+ if (filename == NULL) -+ as_warn (_("multibyte character (%#x) encountered in input"), c); -+ else if (lineno == 0) -+ as_warn (_("multibyte character (%#x) encountered in %s"), c, filename); -+ else -+ as_warn (_("multibyte character (%#x) encountered in %s at or near line %u"), c, filename, lineno); -+ -+ if (++ multibyte_warn_count == MULTIBYTE_WARN_COUNT_LIMIT) -+ { -+ as_warn (_("further multibyte character warnings suppressed")); -+ break; -+ } -+ } -+ -+ return found; -+} -+ - /* This function is called to process input characters. The GET - parameter is used to retrieve more input characters. GET should - set its parameter to point to a buffer, and return the length of -@@ -463,6 +512,11 @@ do_scrub_chars (size_t (*get) (char *, s - return 0; - from = input_buffer; - fromend = from + fromlen; -+ -+ if (multibyte_handling == multibyte_warn) -+ (void) scan_for_multibyte_characters ((const unsigned char *) from, -+ (const unsigned char* ) fromend, -+ true /* Generate warnings. */); - } - - while (1) -diff -rupN binutils.orig/gas/as.c binutils-2.37/gas/as.c ---- binutils.orig/gas/as.c 2021-11-18 16:50:39.104088534 +0000 -+++ binutils-2.37/gas/as.c 2021-11-18 16:50:42.531075627 +0000 -@@ -474,7 +474,7 @@ parse_args (int * pargc, char *** pargv) - OPTION_DEBUG_PREFIX_MAP, - OPTION_DEFSYM, - OPTION_LISTING_LHS_WIDTH, -- OPTION_LISTING_LHS_WIDTH2, -+ OPTION_LISTING_LHS_WIDTH2, /* = STD_BASE + 10 */ - OPTION_LISTING_RHS_WIDTH, - OPTION_LISTING_CONT_LINES, - OPTION_DEPFILE, -@@ -484,7 +484,7 @@ parse_args (int * pargc, char *** pargv) - OPTION_GDWARF_3, - OPTION_GDWARF_4, - OPTION_GDWARF_5, -- OPTION_GDWARF_SECTIONS, -+ OPTION_GDWARF_SECTIONS, /* = STD_BASE + 20 */ - OPTION_GDWARF_CIE_VERSION, - OPTION_STRIP_LOCAL_ABSOLUTE, - OPTION_TRADITIONAL_FORMAT, -@@ -494,7 +494,7 @@ parse_args (int * pargc, char *** pargv) - OPTION_NOEXECSTACK, - OPTION_SIZE_CHECK, - OPTION_ELF_STT_COMMON, -- OPTION_ELF_BUILD_NOTES, -+ OPTION_ELF_BUILD_NOTES, /* = STD_BASE + 30 */ - OPTION_SECTNAME_SUBST, - OPTION_ALTERNATE, - OPTION_AL, -@@ -503,7 +503,8 @@ parse_args (int * pargc, char *** pargv) - OPTION_WARN_FATAL, - OPTION_COMPRESS_DEBUG, - OPTION_NOCOMPRESS_DEBUG, -- OPTION_NO_PAD_SECTIONS /* = STD_BASE + 40 */ -+ OPTION_NO_PAD_SECTIONS, -+ OPTION_MULTIBYTE_HANDLING /* = STD_BASE + 40 */ - /* When you add options here, check that they do - not collide with OPTION_MD_BASE. See as.h. */ - }; -@@ -581,6 +582,7 @@ parse_args (int * pargc, char *** pargv) - ,{"target-help", no_argument, NULL, OPTION_TARGET_HELP} - ,{"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT} - ,{"warn", no_argument, NULL, OPTION_WARN} -+ ,{"multibyte-handling", required_argument, NULL, OPTION_MULTIBYTE_HANDLING} - }; - - /* Construct the option lists from the standard list and the target -@@ -683,6 +685,19 @@ parse_args (int * pargc, char *** pargv) - flag_traditional_format = 1; - break; - -+ case OPTION_MULTIBYTE_HANDLING: -+ if (strcmp (optarg, "allow") == 0) -+ multibyte_handling = multibyte_allow; -+ else if (strcmp (optarg, "warn") == 0) -+ multibyte_handling = multibyte_warn; -+ else if (strcmp (optarg, "warn-sym-only") == 0) -+ multibyte_handling = multibyte_warn_syms; -+ else if (strcmp (optarg, "warn_sym_only") == 0) -+ multibyte_handling = multibyte_warn_syms; -+ else -+ as_fatal (_("unexpected argument to --multibyte-input-option: '%s'"), optarg); -+ break; -+ - case OPTION_VERSION: - /* This output is intended to follow the GNU standards document. */ - printf (_("GNU assembler %s\n"), BFD_VERSION_STRING); -diff -rupN binutils.orig/gas/as.h binutils-2.37/gas/as.h ---- binutils.orig/gas/as.h 2021-11-18 16:50:38.834089551 +0000 -+++ binutils-2.37/gas/as.h 2021-11-18 16:50:42.531075627 +0000 -@@ -344,6 +344,14 @@ COMMON int linkrelax; - - COMMON int do_not_pad_sections_to_alignment; - -+enum multibyte_input_handling -+{ -+ multibyte_allow = 0, -+ multibyte_warn, -+ multibyte_warn_syms -+}; -+COMMON enum multibyte_input_handling multibyte_handling; -+ - /* TRUE if we should produce a listing. */ - extern int listing; - -@@ -450,6 +458,7 @@ void input_scrub_insert_file (char *); - char * input_scrub_new_file (const char *); - char * input_scrub_next_buffer (char **bufp); - size_t do_scrub_chars (size_t (*get) (char *, size_t), char *, size_t); -+bool scan_for_multibyte_characters (const unsigned char *, const unsigned char *, bool); - int gen_to_words (LITTLENUM_TYPE *, int, long); - int had_err (void); - int ignore_input (void); -diff -rupN binutils.orig/gas/doc/as.texi binutils-2.37/gas/doc/as.texi ---- binutils.orig/gas/doc/as.texi 2021-11-18 16:50:38.838089536 +0000 -+++ binutils-2.37/gas/doc/as.texi 2021-11-18 16:50:42.535075612 +0000 -@@ -245,6 +245,7 @@ gcc(1), ld(1), and the Info entries for - [@b{--sectname-subst}] [@b{--size-check=[error|warning]}] - [@b{--elf-stt-common=[no|yes]}] - [@b{--generate-missing-build-notes=[no|yes]}] -+ [@b{--multibyte-handling=[allow|warn|warn-sym-only]}] - [@b{--target-help}] [@var{target-options}] - [@b{--}|@var{files} @dots{}] - @c -@@ -866,6 +867,18 @@ Set the maximum width of an input source - Set the maximum number of lines printed in a listing for a single line of input - to @var{number} + 1. - -+@item --multibyte-handling=allow -+@itemx --multibyte-handling=warn -+@itemx --multibyte-handling=warn-sym-only -+Controls how the assembler handles multibyte characters in the input. The -+default (which can be restored by using the @option{allow} argument) is to -+allow such characters without complaint. Using the @option{warn} argument will -+make the assembler generate a warning message whenever any multibyte character -+is encountered. Using the @option{warn-sym-only} argument will only cause a -+warning to be generated when a symbol is defined with a name that contains -+multibyte characters. (References to undefined symbols will not generate a -+warning). -+ - @item --no-pad-sections - Stop the assembler for padding the ends of output sections to the alignment - of that section. The default is to pad the sections, but this can waste space -@@ -2942,9 +2955,11 @@ are noted in @ref{Machine Dependencies}. - @end ifset - No symbol may begin with a digit. Case is significant. - There is no length limit; all characters are significant. Multibyte characters --are supported. Symbols are delimited by characters not in that set, or by the --beginning of a file (since the source program must end with a newline, the end --of a file is not a possible symbol delimiter). @xref{Symbols}. -+are supported, but note that the setting of the -+@option{--multibyte-handling} option might prevent their use. Symbols -+are delimited by characters not in that set, or by the beginning of a file -+(since the source program must end with a newline, the end of a file is not a -+possible symbol delimiter). @xref{Symbols}. - - Symbol names may also be enclosed in double quote @code{"} characters. In such - cases any characters are allowed, except for the NUL character. If a double -@@ -3834,11 +3849,18 @@ than @code{Foo}. - Symbol names do not start with a digit. An exception to this rule is made for - Local Labels. See below. - --Multibyte characters are supported. To generate a symbol name containing -+Multibyte characters are supported, but note that the setting of the -+@option{multibyte-handling} option might prevent their use. -+To generate a symbol name containing - multibyte characters enclose it within double quotes and use escape codes. cf - @xref{Strings}. Generating a multibyte symbol name from a label is not - currently supported. - -+Since multibyte symbol names are unusual, and could possibly be used -+maliciously, @command{@value{AS}} provides a command line option -+(@option{--multibyte-handling=warn-sym-only}) which can be used to generate a -+warning message whenever a symbol name containing multibyte characters is defined. -+ - Each symbol has exactly one name. Each name in an assembly language program - refers to exactly one symbol. You may use that symbol name any number of times - in a program. -diff -rupN binutils.orig/gas/input-scrub.c binutils-2.37/gas/input-scrub.c ---- binutils.orig/gas/input-scrub.c 2021-11-18 16:50:38.835089547 +0000 -+++ binutils-2.37/gas/input-scrub.c 2021-11-18 16:50:42.535075612 +0000 -@@ -377,6 +377,11 @@ input_scrub_next_buffer (char **bufp) - ++p; - } - -+ if (multibyte_handling == multibyte_warn) -+ (void) scan_for_multibyte_characters ((const unsigned char *) p, -+ (const unsigned char *) limit, -+ true /* Generate warnings */); -+ - /* We found a newline in the newly read chars. */ - partial_where = p; - partial_size = limit - p; -diff -rupN binutils.orig/gas/symbols.c binutils-2.37/gas/symbols.c ---- binutils.orig/gas/symbols.c 2021-11-18 16:50:39.105088530 +0000 -+++ binutils-2.37/gas/symbols.c 2021-11-18 16:52:17.980716107 +0000 -@@ -78,6 +78,10 @@ struct symbol_flags - before. It is cleared as soon as any direct reference to the - symbol is present. */ - unsigned int weakrefd : 1; -+ -+ /* Set when a warning about the symbol containing multibyte characters -+ is generated. */ -+ unsigned int multibyte_warned : 1; - }; - - /* A pointer in the symbol may point to either a complete symbol -@@ -194,7 +198,7 @@ static void * - symbol_entry_find (htab_t table, const char *name) - { - hashval_t hash = htab_hash_string (name); -- symbol_entry_t needle = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, -+ symbol_entry_t needle = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, - hash, name, 0, 0, 0 } }; - return htab_find_with_hash (table, &needle, hash); - } -@@ -305,6 +309,18 @@ symbol_init (symbolS *symbolP, const cha - symbolP->bsym->name = name; - symbolP->bsym->section = sec; - -+ if (multibyte_handling == multibyte_warn_syms -+ && ! symbolP->flags.local_symbol -+ && sec != undefined_section -+ && ! symbolP->flags.multibyte_warned -+ && scan_for_multibyte_characters ((const unsigned char *) name, -+ (const unsigned char *) name + strlen (name), -+ false /* Do not warn. */)) -+ { -+ as_warn (_("symbol '%s' contains multibyte characters"), name); -+ symbolP->flags.multibyte_warned = 1; -+ } -+ - S_SET_VALUE (symbolP, valu); - - symbol_clear_list_pointers (symbolP); -@@ -2413,7 +2429,21 @@ S_SET_SEGMENT (symbolS *s, segT seg) - abort (); - } - else -- s->bsym->section = seg; -+ { -+ if (multibyte_handling == multibyte_warn_syms -+ && ! s->flags.local_symbol -+ && seg != undefined_section -+ && ! s->flags.multibyte_warned -+ && scan_for_multibyte_characters ((const unsigned char *) s->name, -+ (const unsigned char *) s->name + strlen (s->name), -+ false)) -+ { -+ as_warn (_("symbol '%s' contains multibyte characters"), s->name); -+ s->flags.multibyte_warned = 1; -+ } -+ -+ s->bsym->section = seg; -+ } - } - - void -diff -rupN binutils.orig/gas/testsuite/gas/all/gas.exp binutils-2.37/gas/testsuite/gas/all/gas.exp ---- binutils.orig/gas/testsuite/gas/all/gas.exp 2021-11-18 16:50:39.101088545 +0000 -+++ binutils-2.37/gas/testsuite/gas/all/gas.exp 2021-11-18 16:50:42.538075600 +0000 -@@ -494,3 +494,5 @@ run_dump_test "nop" - run_dump_test "asciz" - run_dump_test "pr27384" - run_dump_test "pr27381" -+run_dump_test "multibyte1" -+run_dump_test "multibyte2" -diff -rupN binutils.orig/testsuite/gas/all/multibyte.s binutils-2.37/testsuite/gas/all/multibyte.s ---- binutils.orig/testsuite/gas/all/multibyte.s 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/testsuite/gas/all/multibyte.s 2021-11-18 16:50:42.541075589 +0000 -@@ -0,0 +1,8 @@ -+ .text -+ .globl he‮oll‬ -+he‮oll‬: -+ .nop -+ -+ .globl hello -+hello: -+ .nop -diff -rupN binutils.orig/testsuite/gas/all/multibyte1.d binutils-2.37/testsuite/gas/all/multibyte1.d ---- binutils.orig/testsuite/gas/all/multibyte1.d 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/testsuite/gas/all/multibyte1.d 2021-11-18 16:50:42.541075589 +0000 -@@ -0,0 +1,3 @@ -+#source: multibyte.s -+#as: --multibyte-handling=warn -+#warning_output: multibyte1.l -diff -rupN binutils.orig/testsuite/gas/all/multibyte1.l binutils-2.37/testsuite/gas/all/multibyte1.l ---- binutils.orig/testsuite/gas/all/multibyte1.l 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/testsuite/gas/all/multibyte1.l 2021-11-18 16:50:42.541075589 +0000 -@@ -0,0 +1,12 @@ -+[^:]*: Assembler messages: -+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xae\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xac\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0x80\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xae\) encountered in .*multibyte.s -+[^:]*: Warning: multibyte character \(0xe2\) encountered in .*multibyte.s -+[^:]*: Warning: further multibyte character warnings suppressed -diff -rupN binutils.orig/testsuite/gas/all/multibyte2.d binutils-2.37/testsuite/gas/all/multibyte2.d ---- binutils.orig/testsuite/gas/all/multibyte2.d 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/testsuite/gas/all/multibyte2.d 2021-11-18 16:50:42.542075585 +0000 -@@ -0,0 +1,3 @@ -+#source: multibyte.s -+#as: --multibyte-handling=warn-sym-only -+#warning_output: multibyte2.l -diff -rupN binutils.orig/testsuite/gas/all/multibyte2.l binutils-2.37/testsuite/gas/all/multibyte2.l ---- binutils.orig/testsuite/gas/all/multibyte2.l 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/testsuite/gas/all/multibyte2.l 2021-11-18 16:50:42.541075589 +0000 -@@ -0,0 +1,2 @@ -+[^:]*: Assembler messages: -+[^:]*:3: Warning: symbol '.*' contains multibyte characters diff --git a/binutils-ld-default-entry-of-0-for-shared.patch b/binutils-ld-default-entry-of-0-for-shared.patch deleted file mode 100644 index 227db82..0000000 --- a/binutils-ld-default-entry-of-0-for-shared.patch +++ /dev/null @@ -1,98 +0,0 @@ ---- binutils.orig/ld/ldlang.c 2021-09-17 10:38:18.073366643 +0100 -+++ binutils-2.37/ld/ldlang.c 2021-09-17 10:50:50.155450530 +0100 -@@ -6978,7 +6978,8 @@ lang_end (void) - if (!bfd_set_start_address (link_info.output_bfd, val)) - einfo (_("%F%P: can't set start address\n")); - } -- else -+ /* BZ 2004952: Only use the start of the .text section for executables. */ -+ else if bfd_link_executable (&link_info) - { - asection *ts; - -@@ -7004,6 +7005,13 @@ lang_end (void) - entry_symbol.name); - } - } -+ else -+ { -+ if (warn) -+ einfo (_("%P: warning: cannot find entry symbol %s;" -+ " not setting start address\n"), -+ entry_symbol.name); -+ } - } - } - -diff -rup binutils.orig/ld/testsuite/ld-arm/tls-gdesc-got.d binutils-2.37/ld/testsuite/ld-arm/tls-gdesc-got.d ---- binutils.orig/ld/testsuite/ld-arm/tls-gdesc-got.d 2021-09-29 13:17:21.501277341 +0100 -+++ binutils-2.37/ld/testsuite/ld-arm/tls-gdesc-got.d 2021-09-29 13:20:04.481132127 +0100 -@@ -2,7 +2,7 @@ - .*/tls-lib2-got.so: file format elf32-.*arm.* - architecture: arm.*, flags 0x00000150: - HAS_SYMS, DYNAMIC, D_PAGED --start address 0x0+8(1e8|220) -+start address 0x[0-9a-f]+ - - - Disassembly of section .got: -diff -rup binutils.orig/ld/testsuite/ld-i386/tlsnopic.rd binutils-2.37/ld/testsuite/ld-i386/tlsnopic.rd ---- binutils.orig/ld/testsuite/ld-i386/tlsnopic.rd 2021-09-29 13:17:21.588276729 +0100 -+++ binutils-2.37/ld/testsuite/ld-i386/tlsnopic.rd 2021-09-29 13:20:59.456745814 +0100 -@@ -26,7 +26,7 @@ Key to Flags: - #... - - Elf file type is DYN \(Shared object file\) --Entry point 0x1000 -+Entry point 0x[0-9a-f]+ - There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: -diff -rup binutils.orig/ld/testsuite/ld-x86-64/pr14207.d binutils-2.37/ld/testsuite/ld-x86-64/pr14207.d ---- binutils.orig/ld/testsuite/ld-x86-64/pr14207.d 2021-09-29 13:17:21.551276989 +0100 -+++ binutils-2.37/ld/testsuite/ld-x86-64/pr14207.d 2021-09-29 13:21:27.632547838 +0100 -@@ -5,7 +5,7 @@ - #target: x86_64-*-linux* - - Elf file type is DYN \(Shared object file\) --Entry point 0x149 -+Entry point 0x[0-9a-f]+ - There are 4 program headers, starting at offset 64 - - Program Headers: -diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlsdesc.rd binutils-2.37/ld/testsuite/ld-x86-64/tlsdesc.rd ---- binutils.orig/ld/testsuite/ld-x86-64/tlsdesc.rd 2021-09-29 13:17:21.554276968 +0100 -+++ binutils-2.37/ld/testsuite/ld-x86-64/tlsdesc.rd 2021-09-29 13:21:47.920405285 +0100 -@@ -29,7 +29,7 @@ Key to Flags: - #... - - Elf file type is DYN \(Shared object file\) --Entry point 0x1000 -+Entry point 0x[0-9a-f]+ - There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: -diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic.rd binutils-2.37/ld/testsuite/ld-x86-64/tlspic.rd ---- binutils.orig/ld/testsuite/ld-x86-64/tlspic.rd 2021-09-29 13:17:21.546277025 +0100 -+++ binutils-2.37/ld/testsuite/ld-x86-64/tlspic.rd 2021-09-29 13:22:04.224290720 +0100 -@@ -29,7 +29,7 @@ Key to Flags: - #... - - Elf file type is DYN \(Shared object file\) --Entry point 0x1000 -+Entry point 0x[0-9a-f]+ - There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: -diff -rup binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd binutils-2.37/ld/testsuite/ld-x86-64/tlspic2.rd ---- binutils.orig/ld/testsuite/ld-x86-64/tlspic2.rd 2021-09-29 13:17:21.552276982 +0100 -+++ binutils-2.37/ld/testsuite/ld-x86-64/tlspic2.rd 2021-09-29 13:22:18.432190887 +0100 -@@ -30,7 +30,7 @@ Key to Flags: - #... - - Elf file type is DYN \(Shared object file\) --Entry point 0x1000 -+Entry point 0x[0-9a-f]+ - There are [0-9]+ program headers, starting at offset [0-9]+ - - Program Headers: diff --git a/binutils-missing-man-pages.patch b/binutils-missing-man-pages.patch deleted file mode 100644 index eff1548..0000000 --- a/binutils-missing-man-pages.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -rup binutils.orig/etc/texi2pod.pl binutils-2.37/etc/texi2pod.pl ---- binutils.orig/etc/texi2pod.pl 2021-08-10 10:15:38.063964450 +0100 -+++ binutils-2.37/etc/texi2pod.pl 2021-08-10 16:52:51.705688992 +0100 -@@ -59,6 +59,8 @@ while ($_ = shift) { - $flag = shift; - } - push (@ipath, $flag); -+ } elsif (/^--no-split$/) { -+ # ignore option for makeinfo compatibility - } elsif (/^-/) { - usage(); - } else { diff --git a/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch b/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch deleted file mode 100644 index 9d9a110..0000000 --- a/binutils-readelf-recognize-FDO-Packaging-Metadata-ELF-note.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 92608c3a98e943bb0d43408e84d4f419f87b5f1f Mon Sep 17 00:00:00 2001 -From: Luca Boccassi -Date: Wed, 1 Dec 2021 14:44:25 +0000 -Subject: [PATCH] readelf: recognize FDO Packaging Metadata ELF note - -As defined on: https://systemd.io/COREDUMP_PACKAGE_METADATA/ -this note will be used starting from Fedora 36. Allow -readelf --notes to pretty print it: - -Displaying notes found in: .note.package - Owner Data size Description - FDO 0x00000039 FDO_PACKAGING_METADATA - Packaging Metadata: {"type":"deb","name":"fsverity-utils","version":"1.3-1"} - -Signed-off-by: Luca Boccassi -(cherry picked from commit e5382207cdddea07c6456fc1c0e6bea73b3d9947) ---- - binutils/readelf.c | 15 +++++++++++++++ - include/elf/common.h | 3 +++ - 2 files changed, 18 insertions(+) - -diff --git a/binutils/readelf.c b/binutils/readelf.c -index a6073f7ec80..a92dce3114f 100644 ---- a/binutils/readelf.c -+++ b/binutils/readelf.c -@@ -18861,6 +18861,8 @@ get_note_type (Filedata * filedata, unsigned e_type) - return _("func"); - case NT_GO_BUILDID: - return _("GO BUILDID"); -+ case FDO_PACKAGING_METADATA: -+ return _("FDO_PACKAGING_METADATA"); - default: - break; - } -@@ -20012,6 +20014,17 @@ print_stapsdt_note (Elf_Internal_Note *pnote) - return false; - } - -+static bool -+print_fdo_note (Elf_Internal_Note * pnote) -+{ -+ if (pnote->descsz > 0 && pnote->type == FDO_PACKAGING_METADATA) -+ { -+ printf (_(" Packaging Metadata: %.*s\n"), (int) pnote->descsz, pnote->descdata); -+ return true; -+ } -+ return false; -+} -+ - static const char * - get_ia64_vms_note_type (unsigned e_type) - { -@@ -20741,6 +20754,8 @@ process_note (Elf_Internal_Note * pnote, - return print_stapsdt_note (pnote); - else if (startswith (pnote->namedata, "CORE")) - return print_core_note (pnote); -+ else if (startswith (pnote->namedata, "FDO")) -+ return print_fdo_note (pnote); - else if (((startswith (pnote->namedata, "GA") - && strchr ("*$!+", pnote->namedata[2]) != NULL) - || strchr ("*$!+", pnote->namedata[0]) != NULL) -diff --git a/include/elf/common.h b/include/elf/common.h -index 0cca28673dd..8ee17c84a97 100644 ---- a/include/elf/common.h -+++ b/include/elf/common.h -@@ -953,6 +953,9 @@ - - #define NT_FREEBSD_ABI_TAG 1 - -+/* Values for FDO .note.package notes as defined on https://systemd.io/COREDUMP_PACKAGE_METADATA/ */ -+#define FDO_PACKAGING_METADATA 0xcafe1a7e -+ - /* These three macros disassemble and assemble a symbol table st_info field, - which contains the symbol binding and symbol type. The STB_ and STT_ - defines identify the binding and type. */ --- -2.30.2 - diff --git a/binutils.unicode.patch b/binutils.unicode.patch deleted file mode 100644 index 903ae95..0000000 --- a/binutils.unicode.patch +++ /dev/null @@ -1,32545 +0,0 @@ -diff -rupN binutils.orig/binutils/NEWS binutils-2.37/binutils/NEWS ---- binutils.orig/binutils/NEWS 2021-11-09 12:34:21.664802928 +0000 -+++ binutils-2.37/binutils/NEWS 2021-11-09 12:38:05.757327773 +0000 -@@ -1,5 +1,14 @@ - -*- text -*- - -+* Tools which display symbols or strings (readelf, strings, nm, objdump) -+ have a new command line option which controls how unicode characters are -+ handled. By default they are treated as normal for the tool. Using -+ --unicode=locale will display them according to the current locale. -+ Using --unicode=hex will display them as hex byte values, whilst -+ --unicode=escape will display them as escape sequences. In addition -+ using --unicode=highlight will display them as unicode escape sequences -+ highlighted in red (if supported by the output device). -+ - Changes in 2.37: - - * The readelf tool has a new command line option which can be used to specify -diff -rupN binutils.orig/binutils/NEWS.orig binutils-2.37/binutils/NEWS.orig ---- binutils.orig/binutils/NEWS.orig 1970-01-01 01:00:00.000000000 +0100 -+++ binutils-2.37/binutils/NEWS.orig 2021-11-09 12:34:46.290643870 +0000 -@@ -0,0 +1,823 @@ -+-*- text -*- -+ -+Changes in 2.37: -+ -+* The readelf tool has a new command line option which can be used to specify -+ how the numeric values of symbols are reported. --sym-base=0|8|10|16 tells -+ readelf to display the values in base 8, base 10 or base 16. A sym base of 0 -+ represents the default action of displaying values under 10000 in base 10 and -+ values above that in base 16. -+ -+* Binutils now requires a C99 compiler and library to build. -+ -+* A new format has been added to the nm program. Specifying -+ --format=just-symbols (or just using -j) will tell the program to only -+ display symbol names and nothing else. -+ -+* A new command line --keep-section-symbols has been added to objcopy and -+ strip. This stops the removal of unused section symbols when the file is -+ copied. Removing these symbols saves space, but sometimes they are needed by -+ other tools. -+ -+* objcopy --weaken, --weaken-symbol and --weaken-symbols now make undefined -+ symbols weak on targets that support weak symbols. -+ -+* Readelf and objdump can now display and use the contents of .debug_sup -+ sections. -+ -+* Readelf and objdump will now follow links to separate debug info files by -+ default. This behaviour can be stopped via the use of the new -wN or -+ --debug-dump=no-follow-links options for readelf and the -WN or -+ --dwarf=no-follow-links options for objdump. Also the old behaviour can be -+ restored by the use of the --enable-follow-debug-links=no configure time -+ option. -+ -+ The semantics of the =follow-links option have also been slightly changed. -+ When enabled, the option allows for the loading of symbol tables and string -+ tables from the separate files which can be used to enhance the information -+ displayed when dumping other sections, but it does not automatically imply -+ that information from the separate files should be displayed. -+ -+ If other debug section display options are also enabled (eg -+ --debug-dump=info) then the contents of matching sections in both the main -+ file and the separate debuginfo file *will* be displayed. This is because in -+ most cases the debug section will only be present in one of the files. -+ -+ If however non-debug section display options are enabled (eg --sections) then -+ the contents of matching parts of the separate debuginfo file will *not* be -+ displayed. This is because in most cases the user probably only wanted to -+ load the symbol information from the separate debuginfo file. In order to -+ change this behaviour a new command line option --process-links can be used. -+ This will allow di0pslay options to applied to both the main file and any -+ separate debuginfo files. -+ -+* Nm has a new command line option: --quiet. This suppresses "no symbols" -+ diagnostic. -+ -+Changes in 2.36: -+ -+* Update elfedit and readelf with LAM_U48 and LAM_U57 support. -+ -+* Nm has a new command line option: --ifunc-chars=CHARS. This specifies a -+ string of one or two characters. The first character is used as the type -+ character when displaying global ifunc symbols. The second character, if -+ present is used when displaying local ifunc symbols. -+ -+ In addition a new configure time option --enable-f-for-ifunc-symbols has been -+ created, which if used will change nm's default characters for ifunc symbols -+ from i (both local and global) to F (global) and f (local). -+ -+* The ar tool's previously unused l modifier is now used for specifying -+ dependencies of a static library. The arguments of this option -+ (or --record-libdeps long form option) will be stored verbatim in the -+ __.LIBDEP member of the archive, which the linker may read at link time. -+ -+* Readelf can now display the contents of LTO symbol table sections when asked -+ to do so via the --lto-syms command line option. -+ -+* Readelf now accepts the -C command line option to enable the demangling of -+ symbol names. In addition the --demangle=