* 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 6951481..3cc0c85 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 1fcf3ab..9372f88 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 3a7818d..309b15a 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 c38294c..0a9a4ff 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"}