This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
# HG changeset patch # User Johannes Stezenbach <js@sig21.net> # Date 1329483955 -3600 # Node ID 81233445a85c1c3e1f2938685a0737103151345d # Parent 369e2fbe9010a1911d61b56c977d2c94949daef9 binutils-2.22: add some patches from Debian binutils package Signed-off-by: Johannes Stezenbach <js@sig21.net> --- The patch for PR 13449 seems to be fairly important for C++ exception handling. The sysroot patch for PR ld/10340 is not in upstream (don't know why), but Debian, Fedora, OpenSuse have it and the bugzilla says the issue is hit by libtool. Note: I only picked up patches relevant for ARM. v2: - refresh patches so they apply without fuzz - rename all *.diff to *.patch so they are actually applied - add patch for PR ld/13468 diff -r 369e2fbe9010 -r 81233445a85c patches/binutils/2.22/300-128_build_id.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/binutils/2.22/300-128_build_id.patch Fri Feb 17 14:05:55 2012 +0100 @@ -0,0 +1,45 @@ +Description: Description: Fix ld corrupt build ID generation +Author: Nick Clifton +Upstream status: Taken from Fedora (BZ 501582) + +http://sourceware.org/bugzilla/show_bug.cgi?id=12451 + + +--- binutils-2.22.orig/bfd/compress.c 2011-04-11 06:08:12.000000000 +0200 ++++ binutils-2.22/bfd/compress.c 2012-02-17 14:00:11.000000000 +0100 +@@ -181,7 +181,7 @@ bfd_get_full_section_contents (bfd *abfd + case COMPRESS_SECTION_NONE: + if (p == NULL) + { +- p = (bfd_byte *) bfd_malloc (sz); ++ p = (bfd_byte *) bfd_zmalloc (sz); + if (p == NULL) + return FALSE; + } +--- binutils-2.22.orig/bfd/elfcode.h 2011-06-06 03:26:01.000000000 +0200 ++++ binutils-2.22/bfd/elfcode.h 2012-02-17 14:00:11.000000000 +0100 +@@ -1099,6 +1099,24 @@ elf_checksum_contents (bfd *abfd, + + if (i_shdr.contents) + (*process) (i_shdr.contents, i_shdr.sh_size, arg); ++ else ++ { ++ asection *sec; ++ ++ sec = bfd_section_from_elf_index (abfd, count); ++ if (sec != NULL) ++ { ++ if (sec->contents == NULL) ++ { ++ /* Force rereading from file. */ ++ sec->flags &= ~SEC_IN_MEMORY; ++ if (! bfd_malloc_and_get_section (abfd, sec, & sec->contents)) ++ continue; ++ } ++ if (sec->contents != NULL) ++ (*process) (sec->contents, i_shdr.sh_size, arg); ++ } ++ } + } + + return TRUE; diff -r 369e2fbe9010 -r 81233445a85c patches/binutils/2.22/300-140_pr10340.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/binutils/2.22/300-140_pr10340.patch Fri Feb 17 14:05:55 2012 +0100 @@ -0,0 +1,36 @@ +# DP: Proposed patch for PR ld/10340, ld doesn't honor sysroot prefix for ldscripts + +Signed-off-by: Sven Rebhan <odinshorse@googlemail.com> + +Always try to prepend the sysroot prefix to absolute filenames first. + + +--- binutils-2.22.orig/ld/ldfile.c 2011-04-20 02:22:08.000000000 +0200 ++++ binutils-2.22/ld/ldfile.c 2012-02-17 14:00:13.000000000 +0100 +@@ -351,18 +351,24 @@ ldfile_open_file_search (const char *arc + directory first. */ + if (! entry->maybe_archive) + { +- if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename)) ++ /* For absolute pathnames, try to always open the file in the ++ sysroot first. If this fails, try to open the file at the ++ given location. */ ++ entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE); ++ if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted) + { + char *name = concat (ld_sysroot, entry->filename, + (const char *) NULL); + if (ldfile_try_open_bfd (name, entry)) + { + entry->filename = name; ++ entry->sysrooted = TRUE; + return TRUE; + } + free (name); + } +- else if (ldfile_try_open_bfd (entry->filename, entry)) ++ ++ if (ldfile_try_open_bfd (entry->filename, entry)) + { + entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename) + && is_sysrooted_pathname (entry->filename, TRUE); diff -r 369e2fbe9010 -r 81233445a85c patches/binutils/2.22/300-160_gas_pr12698.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/binutils/2.22/300-160_gas_pr12698.patch Fri Feb 17 14:05:55 2012 +0100 @@ -0,0 +1,54 @@ +# DP: Proposed patch for PR gas/12698 + +2011-04-15 Bernd Schmidt <bernds@codesourcery.com> + + gas/ + * config/tc-arm.c (m_profile_p): New function. + (parse_psr, do_t_mrs, do_t_msr): Use m_profile_p. + + +--- binutils-2.22.orig/gas/config/tc-arm.c 2011-11-21 10:29:31.000000000 +0100 ++++ binutils-2.22/gas/config/tc-arm.c 2012-02-17 14:00:15.000000000 +0100 +@@ -234,6 +234,15 @@ static const arm_feature_set fpu_vfp_fp1 + static const arm_feature_set fpu_neon_ext_fma = ARM_FEATURE (0, FPU_NEON_EXT_FMA); + static const arm_feature_set fpu_vfp_ext_fma = ARM_FEATURE (0, FPU_VFP_EXT_FMA); + ++/* Return whether FEATURES indicates an M profile CPU, without getting ++ confused by ARM_ANY. */ ++static int ++m_profile_p (arm_feature_set features) ++{ ++ return (ARM_CPU_HAS_FEATURE (features, arm_ext_v6m) ++ && !ARM_CPU_HAS_FEATURE (features, arm_ext_v7a)); ++} ++ + static int mfloat_abi_opt = -1; + /* Record user cpu selection for object attributes. */ + static arm_feature_set selected_cpu = ARM_ARCH_NONE; +@@ -5428,7 +5437,7 @@ parse_psr (char **str, bfd_boolean lhs) + const struct asm_psr *psr; + char *start; + bfd_boolean is_apsr = FALSE; +- bfd_boolean m_profile = ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_m); ++ bfd_boolean m_profile = m_profile_p (selected_cpu); + + /* PR gas/12698: If the user has specified -march=all then m_profile will + be TRUE, but we want to ignore it in this case as we are building for any +@@ -11101,7 +11110,7 @@ do_t_mrs (void) + { + int flags = inst.operands[1].imm & (PSR_c|PSR_x|PSR_s|PSR_f|SPSR_BIT); + +- if (ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_m)) ++ if (m_profile_p (selected_cpu)) + constraint (flags != 0, _("selected processor does not support " + "requested special purpose register")); + else +@@ -11133,7 +11142,7 @@ do_t_msr (void) + else + flags = inst.operands[0].imm; + +- if (ARM_CPU_HAS_FEATURE (selected_cpu, arm_ext_m)) ++ if (m_profile_p (selected_cpu)) + { + int bits = inst.operands[0].imm & (PSR_c|PSR_x|PSR_s|PSR_f|SPSR_BIT); + diff -r 369e2fbe9010 -r 81233445a85c patches/binutils/2.22/300-pr13449.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/binutils/2.22/300-pr13449.patch Fri Feb 17 14:05:55 2012 +0100 @@ -0,0 +1,18 @@ +2011-12-21 Nick Clifton <nickc@redhat.com> + + PR gas/13449 + * config/tc-arm.c (create_unwind_entry): Zero allocated table + entries. + + +--- binutils-2.22.orig/gas/config/tc-arm.c 2012-02-17 14:00:15.000000000 +0100 ++++ binutils-2.22/gas/config/tc-arm.c 2012-02-17 14:00:17.000000000 +0100 +@@ -19901,6 +19901,8 @@ create_unwind_entry (int have_data) + + /* Allocate the table entry. */ + ptr = frag_more ((size << 2) + 4); ++ /* PR 13449: Zero the table entries in case some of them are not used. */ ++ memset (ptr, 0, (size << 2) + 4); + where = frag_now_fix () - ((size << 2) + 4); + + switch (unwind.personality_index) diff -r 369e2fbe9010 -r 81233445a85c patches/binutils/2.22/300-pr13468.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/patches/binutils/2.22/300-pr13468.patch Fri Feb 17 14:05:55 2012 +0100 @@ -0,0 +1,28 @@ +2011-12-03 Alan Modra <amodra@gmail.com> + + PR ld/13468 + * elflink.c (bfd_elf_final_link): Don't segfault when checking + for DT_TEXTREL and .dynamic does not exist. + + +--- binutils-2.22.orig/bfd/elflink.c 2011-11-21 10:29:26.000000000 +0100 ++++ binutils-2.22/bfd/elflink.c 2012-02-17 14:00:21.000000000 +0100 +@@ -11188,15 +11188,12 @@ bfd_elf_final_link (bfd *abfd, struct bf + goto error_return; + + /* Check for DT_TEXTREL (late, in case the backend removes it). */ +- if ((info->warn_shared_textrel && info->shared) +- || info->error_textrel) ++ if (((info->warn_shared_textrel && info->shared) ++ || info->error_textrel) ++ && (o = bfd_get_section_by_name (dynobj, ".dynamic")) != NULL) + { + bfd_byte *dyncon, *dynconend; + +- /* Fix up .dynamic entries. */ +- o = bfd_get_section_by_name (dynobj, ".dynamic"); +- BFD_ASSERT (o != NULL); +- + dyncon = o->contents; + dynconend = o->contents + o->size; + for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn) -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |