rpms/binutils/F-9 binutils-2.18.50.0.6-gcc_except_table.patch, NONE, 1.1 binutils.spec, 1.136, 1.137
Jan Kratochvil
jkratoch at fedoraproject.org
Mon Feb 2 12:33:45 UTC 2009
Author: jkratoch
Update of /cvs/pkgs/rpms/binutils/F-9
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv3482
Modified Files:
binutils.spec
Added Files:
binutils-2.18.50.0.6-gcc_except_table.patch
Log Message:
* Mon Feb 2 2009 Jan Kratochvil <jan.kratochvil at redhat.com> 2.18.50.0.6-7
- Fix .eh_frame_hdr build also for .gcc_except_table LSDA refs (BZ 461675).
binutils-2.18.50.0.6-gcc_except_table.patch:
--- NEW FILE binutils-2.18.50.0.6-gcc_except_table.patch ---
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=461675
http://sourceware.org/ml/binutils/2009-01/msg00412.html
http://sourceware.org/ml/binutils-cvs/2009-02/msg00003.html
bfd/
2009-01-30 Jan Kratochvil <jan.kratochvil at redhat.com>
* elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove.
(_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs.
ld/testsuite/
2009-01-30 Jan Kratochvil <jan.kratochvil at redhat.com>
* ld-elf/eh-group2.s: New `.cfi_lsda' referencing `.gcc_except_table'.
* ld-elf/eh-group.exp: New test and conditional defininiton of `ELF64'.
--- bfd/elf-eh-frame.c 17 Sep 2008 07:50:28 -0000 1.73
+++ bfd/elf-eh-frame.c 30 Jan 2009 21:44:01 -0000
@@ -549,16 +549,6 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
< (bfd_size_type) ((buf) - ehbuf))) \
cookie->rel++
-#define REQUIRE_CLEARED_RELOCS(buf) \
- while (cookie->rel < cookie->relend \
- && (cookie->rel->r_offset \
- < (bfd_size_type) ((buf) - ehbuf))) \
- { \
- REQUIRE (cookie->rel->r_info == 0); \
- REQUIRE (cookie->rel->r_addend == 0); \
- cookie->rel++; \
- }
-
#define GET_RELOC(buf) \
((cookie->rel < cookie->relend \
&& (cookie->rel->r_offset \
@@ -817,16 +807,16 @@ _bfd_elf_parse_eh_frame (bfd *abfd, stru
buf = last_fde + 4 + hdr_length;
- /* Cleared FDE? The instructions will not be cleared but verify all
- the relocation entries for them are cleared. */
- if (rsec == NULL)
- {
- REQUIRE_CLEARED_RELOCS (buf);
- }
- else
- {
- SKIP_RELOCS (buf);
- }
+ /* For NULL RSEC (cleared FDE belonging to a discarded section)
+ the relocations are commonly cleared. We do not sanity check if
+ all these relocations are cleared as (1) relocations to
+ .gcc_except_table will remain uncleared (they will get dropped
+ with the drop of this unused FDE) and (2) BFD already safely drops
+ relocations of any type to .eh_frame by
+ elf_section_ignore_discarded_relocs.
+ TODO: The .gcc_except_table entries should be also filtered as
+ .eh_frame entries; or GCC could rather use COMDAT for them. */
+ SKIP_RELOCS (buf);
}
/* Try to interpret the CFA instructions and find the first
--- ld/testsuite/ld-elf/eh-group.exp 25 Sep 2008 03:16:42 -0000 1.3
+++ ld/testsuite/ld-elf/eh-group.exp 30 Jan 2009 21:44:01 -0000
@@ -40,12 +40,28 @@ if ![is_elf_format] {
return
}
-set build_tests_ld {
- {"Build eh-group1.o"
- "-r" ""
- {eh-group1.s eh-group2.s} {} "eh-group.o"}
+# alpha-linux-gnu does not support 64-bit relocations:
+# relocation truncated to fit: REFLONG against `.gcc_except_table'
+# arm-eabi does not support 64-bit relocations:
+# bad relocation fixup type (1)
+set testname "Guess the target size from eh-group1size.o"
+if [ld_assemble $as "$srcdir/$subdir/eh-group1.s" "tmpdir/eh-group1size.o"] {
+ pass $testname
+} else {
+ fail $testname
}
+set as_options ""
+if [is_elf64 "tmpdir/eh-group1size.o"] {
+ set as_options "$as_options --defsym ELF64=1"
+}
+
+set build_tests_ld [list \
+ [list "Build eh-group1.o" \
+ "-r" "$as_options" \
+ {eh-group1.s eh-group2.s} {} "eh-group.o"] \
+]
+
run_ld_link_tests $build_tests_ld
set testname "Link eh-group.o to eh-group"
--- ld/testsuite/ld-elf/eh-group2.s 20 Sep 2008 08:42:53 -0000 1.2
+++ ld/testsuite/ld-elf/eh-group2.s 30 Jan 2009 21:44:01 -0000
@@ -1,4 +1,15 @@
.section sect, "axG", %progbits, sectgroup, comdat
.cfi_startproc
+# Test intention is that LSDA must be provided by the discarded FDE.
+# DW_EH_PE_udata8 = 4
+# DW_EH_PE_udata4 = 3
+ .ifdef ELF64
+ .cfi_lsda 4, lsda
+ .else
+ .cfi_lsda 3, lsda
+ .endif
.skip 16
.cfi_endproc
+
+ .section .gcc_except_table, "a", %progbits
+lsda:
Index: binutils.spec
===================================================================
RCS file: /cvs/pkgs/rpms/binutils/F-9/binutils.spec,v
retrieving revision 1.136
retrieving revision 1.137
diff -u -r1.136 -r1.137
--- binutils.spec 22 Sep 2008 01:10:53 -0000 1.136
+++ binutils.spec 2 Feb 2009 12:33:15 -0000 1.137
@@ -1,7 +1,7 @@
Summary: A GNU collection of binary utilities.
Name: binutils
Version: 2.18.50.0.6
-Release: 6%{?dist}
+Release: 7%{?dist}
License: GPLv3+
Group: Development/Tools
URL: http://sources.redhat.com/binutils
@@ -17,6 +17,7 @@
Patch9: binutils-2.18.50.0.6-spu_ovl-fatal.patch
Patch10: binutils-2.18.50.0.6-spu_ovl-dependency.patch
Patch14: binutils-2.18.50.0.9-eh_frame_hdr.patch
+Patch15: binutils-2.18.50.0.6-gcc_except_table.patch
Buildroot: %{_tmppath}/binutils-root
BuildRequires: texinfo >= 4.0, dejagnu, gettext, flex, bison
@@ -73,6 +74,7 @@
%patch9 -p0 -b .spu_ovl-fatal~
%patch10 -p0 -b .spu_ovl-dependency~
%patch14 -p0 -b .eh_frame_hdr~
+%patch15 -p0 -b .gcc_except_table~
# We cannot run autotools as there is an exact requirement of autoconf-2.59.
@@ -252,6 +254,9 @@
%{_infodir}/bfd*info*
%changelog
+* Mon Feb 2 2009 Jan Kratochvil <jan.kratochvil at redhat.com> 2.18.50.0.6-7
+- Fix .eh_frame_hdr build also for .gcc_except_table LSDA refs (BZ 461675).
+
* Sun Sep 21 2008 Jan Kratochvil <jan.kratochvil at redhat.com> 2.18.50.0.6-6
- Fix .eh_frame_hdr build on C++ files with discarded common groups (BZ 458950).
More information about the fedora-extras-commits
mailing list