* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern):
authorAndreas Schwab <schwab@linux-m68k.org>
Mon, 14 May 2007 08:53:23 +0000 (08:53 +0000)
committerAndreas Schwab <schwab@linux-m68k.org>
Mon, 14 May 2007 08:53:23 +0000 (08:53 +0000)
Handle null pattern.

testsuite/:
* ld-elf/dl2a.list: New file.
* ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.

ld/ChangeLog
ld/emultempl/ppc64elf.em
ld/testsuite/ChangeLog
ld/testsuite/ld-elf/dl2a.list [new file with mode: 0644]
ld/testsuite/ld-elf/shared.exp

index 6951481612ffa6b9874c552ae70e0c3efe68602b..3cc0c85141c64dcc35a82883b5aa61930dfdbc58 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-14  Andreas Schwab  <schwab@suse.de>
+
+       * emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern):
+       Handle null pattern.
+
 2007-05-11  Alan Modra  <amodra@bigpond.net.au>
 
        * emultempl/ppc32elf.em (plt_style): New variable.
index 1fcf3abdf4a722473dcfeaee7393a4422119b304..9372f88d3d3d95a19f869d95cdd5a609c06f1565 100644 (file)
@@ -414,17 +414,22 @@ gld${EMULATION_NAME}_new_vers_pattern (struct bfd_elf_version_expr *entry)
   unsigned int len;
   char *dot_pat;
 
-  if (!dotsyms || entry->pattern[0] == '*' || entry->pattern[0] == '.')
+  if (!dotsyms
+      || (entry->pattern != NULL
+         && (entry->pattern[0] == '*' || entry->pattern[0] == '.')))
     return entry;
 
   dot_entry = xmalloc (sizeof *dot_entry);
   *dot_entry = *entry;
   dot_entry->next = entry;
-  len = strlen (entry->pattern) + 2;
-  dot_pat = xmalloc (len);
-  dot_pat[0] = '.';
-  memcpy (dot_pat + 1, entry->pattern, len - 1);
-  dot_entry->pattern = dot_pat;
+  if (entry->pattern != NULL)
+    {
+      len = strlen (entry->pattern) + 2;
+      dot_pat = xmalloc (len);
+      dot_pat[0] = '.';
+      memcpy (dot_pat + 1, entry->pattern, len - 1);
+      dot_entry->pattern = dot_pat;
+    }
   if (entry->symbol != NULL)
     {
       len = strlen (entry->symbol) + 2;
index 3a7818d4879280137d03c9e9c3cffb5f257d58b5..309b15aef69db53b692ed8cc59a726e2c65a9698 100644 (file)
@@ -1,3 +1,8 @@
+2007-05-14  Andreas Schwab  <schwab@suse.de>
+
+       * ld-elf/dl2a.list: New file.
+       * ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.
+
 2007-05-10  Richard Sandiford  <richard@codesourcery.com>
 
        * ld-arm/vxworks1-lib.dd: Expect "push" instead of stmdb and
diff --git a/ld/testsuite/ld-elf/dl2a.list b/ld/testsuite/ld-elf/dl2a.list
new file mode 100644 (file)
index 0000000..989646e
--- /dev/null
@@ -0,0 +1,3 @@
+{
+  "foo";
+};
index c38294cdd5d2a2e629eefbef93c4b7be052d49ac..0a9a4ff065c55a530d7728c7fca1809abdcc877f 100644 (file)
@@ -75,6 +75,9 @@ set build_tests {
   {"Build libdl2a.so with --dynamic-list=dl2.list"
    "-shared -Wl,--dynamic-list=dl2.list" "-fPIC"
    {dl2.c dl2xxx.c} {} "libdl2a.so"}
+  {"Build libdl2a.so with --dynamic-list=dl2a.list"
+   "-shared -Wl,--dynamic-list=dl2a.list" "-fPIC"
+   {dl2.c dl2xxx.c} {} "libdl2a.so"}
   {"Build libdl2a.so with --dynamic-list-data"
    "-shared -Wl,--dynamic-list-data" "-fPIC"
    {dl2.c dl2xxx.c} {} "libdl2a.so"}