2.17.50.0.17-4

This commit is contained in:
Jakub Jelinek 2007-07-24 08:35:16 +00:00
parent 8e6e0140c6
commit 7068422324
3 changed files with 165 additions and 61 deletions

View File

@ -1,9 +1,70 @@
Index: include/elf/common.h
===================================================================
RCS file: /cvs/src/src/include/elf/common.h,v
retrieving revision 1.85
retrieving revision 1.86
diff -b -u -r1.85 -r1.86
bfd/
2007-07-13 Roland McGrath <roland@redhat.com>
* elf-bfd.h (struct elf_obj_tdata): Revert last change.
Add after_write_object_contents, after_write_object_contents_info.
* elf.c (_bfd_elf_write_object_contents): Revert last change.
Instead, call after_write_object_contents if set.
2007-07-09 Roland McGrath <roland@redhat.com>
* elf-bfd.h (struct elf_obj_tdata): Add members
emit_note_gnu_build_id and note_gnu_build_id_sec.
* elf.c (_bfd_id_note_section_size): New global function.
(read_hex, _bfd_elf_write_build_id_section): New static functions.
(_bfd_elf_write_object_contents): Call _bfd_elf_write_build_id_section
if emit_note_gnu_build_id is set.
* Makefile.am (elf.lo): Update dependencies.
* elf-bfd.h (struct elf_size_info): Add checksum_contents hook.
(bfd_elf32_checksum_contents, bfd_elf64_checksum_contents): Declare.
* elfcode.h (elf_checksum_contents): New macro and function.
(NAME(_bfd_elf,size_info)): Initialize checksum_contents hook.
include/
2007-07-09 Roland McGrath <roland@redhat.com>
* bfdlink.h (struct bfd_link_info): Add member emit_note_gnu_build_id.
include/elf/
2007-07-09 Roland McGrath <roland@redhat.com>
* common.h (NT_GNU_HWCAP, NT_GNU_BUILD_ID): New macros.
binutils/
2007-07-09 Roland McGrath <roland@redhat.com>
* readelf.c (get_gnu_elf_note_type): New function.
(process_note): Use it for "GNU" name.
ld/
2007-07-18 Roland McGrath <roland@redhat.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_write_build_id_section):
Use ASEC->contents for CONTENTS when missing, and allocate
ASEC->size if needed.
2007-07-13 Roland McGrath <roland@redhat.com>
* emultempl/elf32.em (struct build_id_info): New type.
(gld${EMULATION_NAME}_id_note_section_size): New function.
(gld${EMULATION_NAME}_write_build_id_section): New function.
(gld${EMULATION_NAME}_after_open): Use them.
(DEFAULT_BUILD_ID_STYLE): Change to "sha1".
* ld.texinfo (Options): Mention --build-id=sha1.
* sha1.h: New file (from gnulib).
* sha1.c: New file (from gnulib).
* Makefile.am (CFILES, HFILES, OFILES, ld_new_SOURCES): Add them.
(sha1.o): New target.
* Makefile.in: Regenerated.
2007-07-09 Roland McGrath <roland@redhat.com>
* emultempl/elf32.em (gld${EMULATION_NAME}_add_option): Add --build-id.
(gld${EMULATION_NAME}_handle_option): Handle --build-id.
(gld${EMULATION_NAME}_list_options): List --build-id.
(gld${EMULATION_NAME}_after_open): If --build-id was given,
synthesize a ".note.gnu.build-id" section and cache it in elf_tdata.
* ld.texinfo (Options): Describe --build-id.
* NEWS: Mention --build-id.
--- include/elf/common.h 29 Jun 2007 16:29:16 -0000 1.85
+++ include/elf/common.h 9 Jul 2007 21:17:42 -0000 1.86
@@ -413,9 +413,13 @@
@ -21,12 +82,6 @@ diff -b -u -r1.85 -r1.86
#define GNU_ABI_TAG_LINUX 0
#define GNU_ABI_TAG_HURD 1
#define GNU_ABI_TAG_SOLARIS 2
Index: binutils/readelf.c
===================================================================
RCS file: /cvs/src/src/binutils/readelf.c,v
retrieving revision 1.369
retrieving revision 1.370
diff -b -u -r1.369 -r1.370
--- binutils/readelf.c 5 Jul 2007 16:54:45 -0000 1.369
+++ binutils/readelf.c 9 Jul 2007 21:19:51 -0000 1.370
@@ -9128,6 +9128,27 @@
@ -68,12 +123,6 @@ diff -b -u -r1.369 -r1.370
else if (const_strneq (pnote->namedata, "NetBSD-CORE"))
/* NetBSD-specific core file notes. */
nt = get_netbsd_elfcore_note_type (pnote->type);
Index: include/bfdlink.h
===================================================================
RCS file: /cvs/src/src/include/bfdlink.h,v
retrieving revision 1.69
retrieving revision 1.70
diff -b -u -r1.69 -r1.70
--- include/bfdlink.h 6 Jul 2007 11:13:56 -0000 1.69
+++ include/bfdlink.h 9 Jul 2007 21:21:42 -0000 1.70
@@ -348,6 +348,9 @@
@ -86,12 +135,6 @@ diff -b -u -r1.69 -r1.70
/* What to do with unresolved symbols in an object file.
When producing executables the default is GENERATE_ERROR.
When producing shared libraries the default is IGNORE. The
Index: bfd/elf-bfd.h
===================================================================
RCS file: /cvs/src/src/bfd/elf-bfd.h,v
retrieving revision 1.235
retrieving revision 1.237
diff -b -u -r1.235 -r1.237
--- bfd/elf-bfd.h 3 Jul 2007 14:26:40 -0000 1.235
+++ bfd/elf-bfd.h 13 Jul 2007 10:44:12 -0000 1.237
@@ -447,6 +447,8 @@ struct elf_size_info {
@ -132,12 +175,6 @@ diff -b -u -r1.235 -r1.237
extern void bfd_elf64_write_relocs
(bfd *, asection *, void *);
extern bfd_boolean bfd_elf64_slurp_reloc_table
Index: bfd/elf.c
===================================================================
RCS file: /cvs/src/src/bfd/elf.c,v
retrieving revision 1.396
retrieving revision 1.398
diff -b -u -r1.396 -r1.398
--- bfd/elf.c 3 Jul 2007 14:26:40 -0000 1.396
+++ bfd/elf.c 13 Jul 2007 10:44:12 -0000 1.398
@@ -5124,7 +5125,14 @@
@ -156,12 +193,6 @@ diff -b -u -r1.396 -r1.398
}
bfd_boolean
Index: bfd/elfcode.h
===================================================================
RCS file: /cvs/src/src/bfd/elfcode.h,v
retrieving revision 1.83
retrieving revision 1.84
diff -b -u -r1.83 -r1.84
--- bfd/elfcode.h 3 Jul 2007 14:26:42 -0000 1.83
+++ bfd/elfcode.h 9 Jul 2007 21:23:37 -0000 1.84
@@ -122,6 +122,7 @@
@ -234,12 +265,6 @@ diff -b -u -r1.83 -r1.84
elf_write_relocs,
elf_swap_symbol_in,
elf_swap_symbol_out,
Index: ld/Makefile.in
===================================================================
RCS file: /cvs/src/src/ld/Makefile.in,v
retrieving revision 1.259
retrieving revision 1.260
diff -b -u -r1.259 -r1.260
--- ld/Makefile.in 2 Jul 2007 07:12:52 -0000 1.259
+++ ld/Makefile.in 13 Jul 2007 10:44:28 -0000 1.260
@@ -75,7 +75,7 @@
@ -289,12 +314,6 @@ diff -b -u -r1.259 -r1.260
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
Index: ld/emultempl/elf32.em
===================================================================
RCS file: /cvs/src/src/ld/emultempl/elf32.em,v
retrieving revision 1.179
retrieving revision 1.182
diff -B -p -u -r1.179 -r1.182
--- ld/emultempl/elf32.em 6 Jul 2007 14:09:42 -0000 1.179
+++ ld/emultempl/elf32.em 18 Jul 2007 09:46:05 -0000 1.182
@@ -41,6 +41,9 @@ cat >e${EMULATION_NAME}.c <<EOF
@ -580,11 +599,7 @@ diff -B -p -u -r1.179 -r1.182
EOF
if test x"$GENERATE_SHLIB_SCRIPT" = xyes; then
Index: ld/sha1.c
===================================================================
RCS file: ld/sha1.c
diff -N ld/sha1.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
--- ld/sha1.c 1 Jan 1970 00:00:00 -0000
+++ ld/sha1.c 13 Jul 2007 10:44:28 -0000 1.1
@@ -0,0 +1,416 @@
+/* sha1.c - Functions to compute SHA1 message digest of files or
@ -1003,11 +1018,7 @@ diff -N ld/sha1.c
+ e = ctx->E += e;
+ }
+}
Index: ld/sha1.h
===================================================================
RCS file: ld/sha1.h
diff -N ld/sha1.h
--- /dev/null 1 Jan 1970 00:00:00 -0000
--- ld/sha1.h 1 Jan 1970 00:00:00 -0000
+++ ld/sha1.h 13 Jul 2007 10:44:28 -0000 1.1
@@ -0,0 +1,87 @@
+/* Declarations of functions and data types used for SHA1 sum

View File

@ -0,0 +1,81 @@
2007-07-24 Jakub Jelinek <jakub@redhat.com>
* elf.c (get_program_header_size): Adjacent loadable .note*
sections need just one PT_NOTE segment.
(_bfd_elf_map_sections_to_segments): Likewise.
--- bfd/elf.c 18 Jul 2007 11:23:37 -0000 1.399
+++ bfd/elf.c 24 Jul 2007 08:24:11 -0000
@@ -3696,6 +3696,19 @@ get_program_header_size (bfd *abfd, stru
{
/* We need a PT_NOTE segment. */
++segs;
+ /* Try to create just one PT_NOTE segment
+ for all adjacent loadable .note* sections.
+ gABI requires that within a PT_NOTE segment
+ (and also inside of each SHT_NOTE section)
+ each note is padded to a multiple of 4 size,
+ so we check whether the sections are correctly
+ aligned. */
+ if (s->alignment_power == 2)
+ while (s->next != NULL
+ && s->next->alignment_power == 2
+ && (s->next->flags & SEC_LOAD) != 0
+ && CONST_STRNEQ (s->next->name, ".note"))
+ s = s->next;
}
}
@@ -4070,25 +4083,44 @@ _bfd_elf_map_sections_to_segments (bfd *
pm = &m->next;
}
- /* For each loadable .note section, add a PT_NOTE segment. We don't
- use bfd_get_section_by_name, because if we link together
- nonloadable .note sections and loadable .note sections, we will
- generate two .note sections in the output file. FIXME: Using
- names for section types is bogus anyhow. */
+ /* For each batch of consecutive loadable .note sections,
+ add a PT_NOTE segment. We don't use bfd_get_section_by_name,
+ because if we link together nonloadable .note sections and
+ loadable .note sections, we will generate two .note sections
+ in the output file. FIXME: Using names for section types is
+ bogus anyhow. */
for (s = abfd->sections; s != NULL; s = s->next)
{
if ((s->flags & SEC_LOAD) != 0
&& CONST_STRNEQ (s->name, ".note"))
{
+ asection *s2;
+ unsigned count = 1;
amt = sizeof (struct elf_segment_map);
+ if (s->alignment_power == 2)
+ for (s2 = s; s2->next != NULL; s2 = s2->next)
+ if (s2->next->alignment_power == 2
+ && (s2->next->flags & SEC_LOAD) != 0
+ && CONST_STRNEQ (s2->next->name, ".note")
+ && align_power (s2->vma + s2->size, 2) == s2->next->vma)
+ count++;
+ else
+ break;
+ amt += (count - 1) * sizeof (asection *);
m = bfd_zalloc (abfd, amt);
if (m == NULL)
goto error_return;
m->next = NULL;
m->p_type = PT_NOTE;
- m->count = 1;
- m->sections[0] = s;
-
+ m->count = count;
+ while (count > 1)
+ {
+ m->sections[m->count - count--] = s;
+ BFD_ASSERT ((s->flags & SEC_THREAD_LOCAL) == 0);
+ s = s->next;
+ }
+ m->sections[m->count - 1] = s;
+ BFD_ASSERT ((s->flags & SEC_THREAD_LOCAL) == 0);
*pm = m;
pm = &m->next;
}

View File

@ -1,7 +1,7 @@
Summary: A GNU collection of binary utilities.
Name: binutils
Version: 2.17.50.0.17
Release: 3
Release: 4
License: GPL
Group: Development/Tools
URL: http://sources.redhat.com/binutils
@ -15,6 +15,7 @@ Patch6: binutils-2.17.50.0.17-build-fixes.patch
Patch7: binutils-2.17.50.0.17-symbolic-envvar-revert.patch
Patch8: binutils-2.17.50.0.17-version.patch
Patch9: binutils-2.17.50.0.17-build-id.patch
Patch10: binutils-2.17.50.0.17-pt_note-coalescing.patch
Buildroot: %{_tmppath}/binutils-root
BuildRequires: texinfo >= 4.0, dejagnu, gettext, flex, bison
@ -24,7 +25,11 @@ Prereq: /sbin/install-info
Obsoletes: gnupro
%endif
# On ARM EABI systems, we do want -gnueabi to be part of the
# target triple.
%ifnarch %{arm}
%define _gnu %{nil}
%endif
%description
Binutils is a collection of binary utilities, including ar (for
@ -65,6 +70,7 @@ to consider using libelf instead of BFD.
%patch7 -p0 -b .symbolic-envvar-revert~
%patch8 -p0 -b .version~
%patch9 -p0 -b .build-id~
%patch10 -p0 -b .pt_note-coalescing~
# On ppc64 we might use 64K pages
sed -i -e '/#define.*ELF_COMMONPAGESIZE/s/0x1000$/0x10000/' bfd/elf*ppc.c
@ -215,10 +221,16 @@ fi
%{_infodir}/bfd*info*
%changelog
* Wed Jul 18 2007 Roland McGrath <roland@redhat.com> - 2.17.50.0.17-3
* Tue Jul 25 2007 Jakub Jelinek <jakub@redhat.com> 2.17.50.0.17-4
- don't kill the %%{_gnu} part of target name on arm
(Lennert Buytenhek, #243516)
- create just one PT_NOTE segment header for all consecutive SHT_NOTE
sections
* Wed Jul 18 2007 Roland McGrath <roland@redhat.com> 2.17.50.0.17-3
- fix for ld --build-id
* Sun Jul 15 2007 Roland McGrath <roland@redhat.com> - 2.17.50.0.17-2
* Sun Jul 15 2007 Roland McGrath <roland@redhat.com> 2.17.50.0.17-2
- ld --build-id support
* Wed Jun 27 2007 Jakub Jelinek <jakub@redhat.com> 2.17.50.0.17-1