summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2012-08-31 16:34:31 +0000
committerDmitry V. Levin <ldv@altlinux.org>2012-08-31 16:34:31 +0000
commit53352c756e91002e02263a22570a7da5ef04b9d1 (patch)
treea568a6ef7f4ba67817cf25a2deee5160a800bce0
parent53198f1c96b597c35902e7561a8183a9866d4689 (diff)
downloadelfutils-53352c756e91002e02263a22570a7da5ef04b9d1.tar.gz
elflint --gnu-ld: tolerate __bss_start out of .dynsym bounds
-rw-r--r--elfutils-0.155-alt-elflint-st_value.patch12
1 files changed, 10 insertions, 2 deletions
diff --git a/elfutils-0.155-alt-elflint-st_value.patch b/elfutils-0.155-alt-elflint-st_value.patch
index e1bbcb2b..792138eb 100644
--- a/elfutils-0.155-alt-elflint-st_value.patch
+++ b/elfutils-0.155-alt-elflint-st_value.patch
@@ -1,6 +1,6 @@
--- elfutils/src/elflint.c
+++ elfutils/src/elflint.c
-@@ -763,7 +763,8 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
+@@ -763,28 +763,35 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
if (! ebl_check_special_symbol (ebl, ehdr, sym, name,
destshdr))
{
@@ -10,7 +10,15 @@
{
/* GNU ld has severe bugs. When it decides to remove
empty sections it leaves symbols referencing them
-@@ -775,16 +776,20 @@ section [%2d] '%s': symbol %zu: function in COMMON section is nonsense\n"),
+- behind. These are symbols in .symtab. */
++ behind. These are symbols in .symtab or .dynsym. */
+ if (!gnuld
+- || strcmp (section_name (ebl, idx), ".symtab")
++ || (strcmp (section_name (ebl, idx), ".symtab")
++ && (strcmp (section_name (ebl, idx), ".dynsym")
++ || strcmp (name, "__bss_start") != 0))
+ || (strcmp (name, "__preinit_array_start") != 0
+ && strcmp (name, "__preinit_array_end") != 0
&& strcmp (name, "__init_array_start") != 0
&& strcmp (name, "__init_array_end") != 0
&& strcmp (name, "__fini_array_start") != 0