From: Michael Tremer Date: Mon, 5 Jul 2010 15:02:20 +0000 (+0200) Subject: binutils: Add build-id patch. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=59316e5f8db7c5ea5c18fdf43f5201a731de697b;p=ipfire-3.x.git binutils: Add build-id patch. --- diff --git a/pkgs/core/binutils/patches/binutils-2.20.51.0.2-build-id.patch b/pkgs/core/binutils/patches/binutils-2.20.51.0.2-build-id.patch new file mode 100644 index 000000000..02abef414 --- /dev/null +++ b/pkgs/core/binutils/patches/binutils-2.20.51.0.2-build-id.patch @@ -0,0 +1,51 @@ +diff -rcp ../binutils-2.20.51.0.7.original/bfd/elfcode.h ./bfd/elfcode.h +*** ../binutils-2.20.51.0.7.original/bfd/elfcode.h 2010-04-08 15:29:32.000000000 +0100 +--- ./bfd/elfcode.h 2010-04-08 15:29:39.000000000 +0100 +*************** elf_checksum_contents (bfd *abfd, +*** 1188,1193 **** +--- 1188,1211 ---- + + 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 -rcp ../binutils-2.20.51.0.7.original/bfd/section.c ./bfd/section.c +*** ../binutils-2.20.51.0.7.original/bfd/section.c 2010-04-08 15:29:32.000000000 +0100 +--- ./bfd/section.c 2010-04-08 15:29:39.000000000 +0100 +*************** bfd_malloc_and_get_section (bfd *abfd, s +*** 1488,1494 **** + return TRUE; + + p = (bfd_byte *) +! bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); + if (p == NULL) + return FALSE; + *buf = p; +--- 1488,1494 ---- + return TRUE; + + p = (bfd_byte *) +! bfd_zmalloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); + if (p == NULL) + return FALSE; + *buf = p; +diff -rcp ../binutils-2.20.51.0.7.original/bfd/section.c.orig ./bfd/section.c.orig diff --git a/pkgs/toolchain/binutils/patches/binutils-2.20.51.0.2-build-id.patch b/pkgs/toolchain/binutils/patches/binutils-2.20.51.0.2-build-id.patch new file mode 100644 index 000000000..02abef414 --- /dev/null +++ b/pkgs/toolchain/binutils/patches/binutils-2.20.51.0.2-build-id.patch @@ -0,0 +1,51 @@ +diff -rcp ../binutils-2.20.51.0.7.original/bfd/elfcode.h ./bfd/elfcode.h +*** ../binutils-2.20.51.0.7.original/bfd/elfcode.h 2010-04-08 15:29:32.000000000 +0100 +--- ./bfd/elfcode.h 2010-04-08 15:29:39.000000000 +0100 +*************** elf_checksum_contents (bfd *abfd, +*** 1188,1193 **** +--- 1188,1211 ---- + + 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 -rcp ../binutils-2.20.51.0.7.original/bfd/section.c ./bfd/section.c +*** ../binutils-2.20.51.0.7.original/bfd/section.c 2010-04-08 15:29:32.000000000 +0100 +--- ./bfd/section.c 2010-04-08 15:29:39.000000000 +0100 +*************** bfd_malloc_and_get_section (bfd *abfd, s +*** 1488,1494 **** + return TRUE; + + p = (bfd_byte *) +! bfd_malloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); + if (p == NULL) + return FALSE; + *buf = p; +--- 1488,1494 ---- + return TRUE; + + p = (bfd_byte *) +! bfd_zmalloc (sec->rawsize > sec->size ? sec->rawsize : sec->size); + if (p == NULL) + return FALSE; + *buf = p; +diff -rcp ../binutils-2.20.51.0.7.original/bfd/section.c.orig ./bfd/section.c.orig