[prev in list] [next in list] [prev in thread] [next in thread] 

List:       binutils
Subject:    PR27271, c6x-uclinux-ld segfaults linking ld-uClibc-1.0.37.so
From:       Alan Modra via Binutils <binutils () sourceware ! org>
Date:       2021-01-29 1:28:06
Message-ID: 20210129011605.GZ26219 () bubble ! grove ! modra ! org
[Download RAW message or body]

bfd/
	PR 27271
	* elflink.c (bfd_elf_link_record_dynamic_symbol): Don't segfault
	on symbols defined in absolute or other special sections.
ld/
	* testsuite/ld-tic6x/tic6x.exp: Add pr27271 test.

diff --git a/bfd/elflink.c b/bfd/elflink.c
index 47c3fb4e683..3a3ca3b04f7 100644
--- a/bfd/elflink.c
+++ b/bfd/elflink.c
@@ -537,8 +537,10 @@ bfd_elf_link_record_dynamic_symbol (struct bfd_link_info *info,
 	      if (!elf_hash_table (info)->is_relocatable_executable
 		  || ((h->root.type == bfd_link_hash_defined
 		       || h->root.type == bfd_link_hash_defweak)
+		      && h->root.u.def.section->owner != NULL
 		      && h->root.u.def.section->owner->no_export)
 		  || (h->root.type == bfd_link_hash_common
+		      && h->root.u.c.p->section->owner != NULL
 		      && h->root.u.c.p->section->owner->no_export))
 		return TRUE;
 	    }
diff --git a/ld/testsuite/ld-tic6x/tic6x.exp b/ld/testsuite/ld-tic6x/tic6x.exp
index e11699bed31..0a913da25d9 100644
--- a/ld/testsuite/ld-tic6x/tic6x.exp
+++ b/ld/testsuite/ld-tic6x/tic6x.exp
@@ -130,6 +130,11 @@ set shlibtests {
       {objdump -sj.got static-app-1rb.sd}
       {objdump -R static-app-1rb.od}}
      "static-app-1rb"}
+
+    {"C6X shared library with --export-dynamic"
+     "-shared --export-dynamic -Tdsbt.ld --dsbt-size=3 --hash-style=sysv" ""
+     "-mdsbt -mpic -mpid=near" {shlib-1.s shlib-2.s}
+     {} "pr27271.so"}
 }
 
 run_ld_link_tests $shlibtests

-- 
Alan Modra
Australia Development Lab, IBM
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic