Hello community,
here is the log from the commit of package binutils
checked in at Mon Nov 17 16:35:02 CET 2008.
--------
--- binutils/binutils.changes 2008-11-07 11:55:22.000000000 +0100
+++ /mounts/work_src_done/STABLE/binutils/binutils.changes 2008-11-10 15:30:05.000000000 +0100
@@ -1,0 +2,5 @@
+Mon Nov 10 15:29:56 CET 2008 - schwab@suse.de
+
+- Update last change.
+
+-------------------------------------------------------------------
cross-alpha-binutils.changes: same change
cross-arm-binutils.changes: same change
cross-avr-binutils.changes: same change
cross-hppa64-binutils.changes: same change
cross-hppa-binutils.changes: same change
cross-i386-binutils.changes: same change
cross-ia64-binutils.changes: same change
cross-mips-binutils.changes: same change
cross-ppc64-binutils.changes: same change
cross-ppc-binutils.changes: same change
cross-s390-binutils.changes: same change
cross-s390x-binutils.changes: same change
cross-sh4-binutils.changes: same change
cross-sparc-binutils.changes: same change
cross-spu-binutils.changes: same change
cross-x86_64-binutils.changes: same change
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ binutils.spec ++++++
--- /var/tmp/diff_new_pack.U17851/_old 2008-11-17 16:33:56.000000000 +0100
+++ /var/tmp/diff_new_pack.U17851/_new 2008-11-17 16:33:56.000000000 +0100
@@ -20,7 +20,7 @@
Name: binutils
BuildRequires: bison dejagnu flex gcc-c++ zlib-devel
Version: 2.19
-Release: 3
+Release: 4
#
# RUN_TESTS
%define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?)
@@ -466,6 +466,8 @@
%{_libdir}/lib*.a
%changelog
+* Mon Nov 10 2008 schwab@suse.de
+- Update last change.
* Fri Nov 07 2008 schwab@suse.de
- Fix crash in strip.
* Thu Nov 06 2008 rguenther@suse.de
++++++ cross-alpha-binutils.spec ++++++
--- /var/tmp/diff_new_pack.U17851/_old 2008-11-17 16:33:56.000000000 +0100
+++ /var/tmp/diff_new_pack.U17851/_new 2008-11-17 16:33:56.000000000 +0100
@@ -20,7 +20,7 @@
Name: cross-alpha-binutils
BuildRequires: bison dejagnu flex gcc-c++ zlib-devel
Version: 2.19
-Release: 3
+Release: 4
#
# RUN_TESTS
%define run_tests %(test ! -f %_sourcedir/RUN_TESTS ; echo $?)
@@ -394,6 +394,8 @@
%endif
%changelog
+* Mon Nov 10 2008 schwab@suse.de
+- Update last change.
* Fri Nov 07 2008 schwab@suse.de
- Fix crash in strip.
* Thu Nov 06 2008 rguenther@suse.de
cross-arm-binutils.spec: same change
cross-avr-binutils.spec: same change
cross-hppa64-binutils.spec: same change
cross-hppa-binutils.spec: same change
cross-i386-binutils.spec: same change
cross-ia64-binutils.spec: same change
cross-mips-binutils.spec: same change
cross-ppc64-binutils.spec: same change
cross-ppc-binutils.spec: same change
cross-s390-binutils.spec: same change
cross-s390x-binutils.spec: same change
cross-sh4-binutils.spec: same change
cross-sparc-binutils.spec: same change
cross-spu-binutils.spec: same change
cross-x86_64-binutils.spec: same change
++++++ assign-file-positions.diff ++++++
--- /var/tmp/diff_new_pack.U17851/_old 2008-11-17 16:33:57.000000000 +0100
+++ /var/tmp/diff_new_pack.U17851/_new 2008-11-17 16:33:57.000000000 +0100
@@ -1,48 +1,181 @@
+2008-11-11 Alan Modra
+
+ * elf.c (assign_file_positions_for_non_load_sections): Consolidate
+ PT_GNU_RELRO handling.
+
2008-11-07 Andreas Schwab
PR 7011
* elf.c (assign_file_positions_for_non_load_sections): Handle
- PT_GNU_RELRO that covers only a part of a single section.
+ PT_GNU_RELRO specially.
---- bfd/elf.c.~1.466.~ 2008-10-09 11:07:35.000000000 +0200
-+++ bfd/elf.c 2008-11-07 11:32:56.000000000 +0100
-@@ -4631,7 +4631,9 @@ assign_file_positions_for_non_load_secti
+Index: bfd/elf.c
+===================================================================
+RCS file: /cvs/src/src/bfd/elf.c,v
+retrieving revision 1.466
+retrieving revision 1.468
+diff -u -a -p -u -p -a -r1.466 -r1.468
+--- bfd/elf.c 8 Oct 2008 08:30:27 -0000 1.466
++++ bfd/elf.c 11 Nov 2008 04:26:13 -0000 1.468
+@@ -4631,7 +4631,61 @@ assign_file_positions_for_non_load_secti
m != NULL;
m = m->next, p++)
{
- if (m->count != 0)
-+ if (m->count != 0
-+ /* Always handle PT_GNU_RELRO here if not linking. */
-+ || (p->p_type == PT_GNU_RELRO && link_info == NULL))
++ if (p->p_type == PT_GNU_RELRO)
++ {
++ const Elf_Internal_Phdr *lp;
++
++ BFD_ASSERT (!m->includes_filehdr && !m->includes_phdrs);
++
++ if (link_info != NULL)
++ {
++ /* During linking the range of the RELRO segment is passed
++ in link_info. */
++ for (lp = phdrs; lp < phdrs + count; ++lp)
++ {
++ if (lp->p_type == PT_LOAD
++ && lp->p_vaddr >= link_info->relro_start
++ && lp->p_vaddr < link_info->relro_end
++ && lp->p_vaddr + lp->p_filesz >= link_info->relro_end)
++ break;
++ }
++ }
++ else
++ {
++ /* Otherwise we are copying an executable or shared
++ library, but we need to use the same linker logic. */
++ for (lp = phdrs; lp < phdrs + count; ++lp)
++ {
++ if (lp->p_type == PT_LOAD
++ && lp->p_paddr == p->p_paddr)
++ break;
++ }
++ }
++
++ if (lp < phdrs + count)
++ {
++ p->p_vaddr = lp->p_vaddr;
++ p->p_paddr = lp->p_paddr;
++ p->p_offset = lp->p_offset;
++ if (link_info != NULL)
++ p->p_filesz = link_info->relro_end - lp->p_vaddr;
++ else if (m->p_size_valid)
++ p->p_filesz = m->p_size;
++ else
++ abort ();
++ p->p_memsz = p->p_filesz;
++ p->p_align = 1;
++ p->p_flags = (lp->p_flags & ~PF_W);
++ }
++ else if (link_info != NULL)
++ {
++ memset (p, 0, sizeof *p);
++ p->p_type = PT_NULL;
++ }
++ else
++ abort ();
++ }
++ else if (m->count != 0)
{
if (p->p_type != PT_LOAD
&& (p->p_type != PT_NOTE
-@@ -4642,12 +4644,6 @@ assign_file_positions_for_non_load_secti
-
- BFD_ASSERT (!m->includes_filehdr && !m->includes_phdrs);
-
-- sect = m->sections[m->count - 1];
-- hdr = &elf_section_data (sect)->this_hdr;
-- p->p_filesz = sect->filepos - m->sections[0]->filepos;
-- if (hdr->sh_type != SHT_NOBITS)
-- p->p_filesz += hdr->sh_size;
+@@ -4647,87 +4701,20 @@ assign_file_positions_for_non_load_secti
+ p->p_filesz = sect->filepos - m->sections[0]->filepos;
+ if (hdr->sh_type != SHT_NOBITS)
+ p->p_filesz += hdr->sh_size;
-
- if (p->p_type == PT_GNU_RELRO)
- {
- /* When we get here, we are copying executable
-@@ -4680,7 +4676,14 @@ assign_file_positions_for_non_load_secti
- abort ();
- }
- else
+- if (p->p_type == PT_GNU_RELRO)
+- {
+- /* When we get here, we are copying executable
+- or shared library. But we need to use the same
+- linker logic. */
+- Elf_Internal_Phdr *lp;
+-
+- for (lp = phdrs; lp < phdrs + count; ++lp)
+- {
+- if (lp->p_type == PT_LOAD
+- && lp->p_paddr == p->p_paddr)
+- break;
+- }
+-
+- if (lp < phdrs + count)
+- {
+- /* We should use p_size if it is valid since it
+- may contain the first few bytes of the next
+- SEC_ALLOC section. */
+- if (m->p_size_valid)
+- p->p_filesz = m->p_size;
+- else
+- abort ();
+- p->p_vaddr = lp->p_vaddr;
+- p->p_offset = lp->p_offset;
+- p->p_memsz = p->p_filesz;
+- p->p_align = 1;
+- }
+- else
+- abort ();
+- }
+- else
- p->p_offset = m->sections[0]->filepos;
-+ {
-+ sect = m->sections[m->count - 1];
-+ hdr = &elf_section_data (sect)->this_hdr;
-+ p->p_filesz = sect->filepos - m->sections[0]->filepos;
-+ if (hdr->sh_type != SHT_NOBITS)
-+ p->p_filesz += hdr->sh_size;
-+ p->p_offset = m->sections[0]->filepos;
-+ }
++ p->p_offset = m->sections[0]->filepos;
}
}
- else
+- else
++ else if (m->includes_filehdr)
+ {
+- if (m->includes_filehdr)
+- {
+- p->p_vaddr = filehdr_vaddr;
+- if (! m->p_paddr_valid)
+- p->p_paddr = filehdr_paddr;
+- }
+- else if (m->includes_phdrs)
+- {
+- p->p_vaddr = phdrs_vaddr;
+- if (! m->p_paddr_valid)
+- p->p_paddr = phdrs_paddr;
+- }
+- else if (p->p_type == PT_GNU_RELRO)
+- {
+- Elf_Internal_Phdr *lp;
+-
+- for (lp = phdrs; lp < phdrs + count; ++lp)
+- {
+- if (lp->p_type == PT_LOAD
+- && lp->p_vaddr <= link_info->relro_end
+- && lp->p_vaddr >= link_info->relro_start
+- && (lp->p_vaddr + lp->p_filesz
+- >= link_info->relro_end))
+- break;
+- }
+-
+- if (lp < phdrs + count
+- && link_info->relro_end > lp->p_vaddr)
+- {
+- p->p_vaddr = lp->p_vaddr;
+- p->p_paddr = lp->p_paddr;
+- p->p_offset = lp->p_offset;
+- p->p_filesz = link_info->relro_end - lp->p_vaddr;
+- p->p_memsz = p->p_filesz;
+- p->p_align = 1;
+- p->p_flags = (lp->p_flags & ~PF_W);
+- }
+- else
+- {
+- memset (p, 0, sizeof *p);
+- p->p_type = PT_NULL;
+- }
+- }
++ p->p_vaddr = filehdr_vaddr;
++ if (! m->p_paddr_valid)
++ p->p_paddr = filehdr_paddr;
++ }
++ else if (m->includes_phdrs)
++ {
++ p->p_vaddr = phdrs_vaddr;
++ if (! m->p_paddr_valid)
++ p->p_paddr = phdrs_paddr;
+ }
+ }
+
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org