diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2007-05-14 08:53:23 +0000 |
---|---|---|
committer | Andreas Schwab <schwab@linux-m68k.org> | 2007-05-14 08:53:23 +0000 |
commit | 1260d1cf0357c656e18709f823e3ff152563ce7d (patch) | |
tree | 82ce3d6b87cfb7c880304c5bc2a45688f4384458 | |
parent | a1bf8fa40bcbd024c9743b8f9983a49e646ec99f (diff) | |
download | binutils-redhat-1260d1cf0357c656e18709f823e3ff152563ce7d.tar.gz |
* emultempl/ppc64elf.em (gld${EMULATION_NAME}_new_vers_pattern):
Handle null pattern.
testsuite/:
* ld-elf/dl2a.list: New file.
* ld-elf/shared.exp: Add test using --dynamic-list=dl2a.list.
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/emultempl/ppc64elf.em | 17 | ||||
-rw-r--r-- | ld/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/dl2a.list | 3 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 3 |
5 files changed, 27 insertions, 6 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 6951481612..3cc0c85141 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -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. diff --git a/ld/emultempl/ppc64elf.em b/ld/emultempl/ppc64elf.em index 1fcf3abdf4..9372f88d3d 100644 --- a/ld/emultempl/ppc64elf.em +++ b/ld/emultempl/ppc64elf.em @@ -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; diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 3a7818d487..309b15aef6 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -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 index 0000000000..989646e63f --- /dev/null +++ b/ld/testsuite/ld-elf/dl2a.list @@ -0,0 +1,3 @@ +{ + "foo"; +}; diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index c38294cdd5..0a9a4ff065 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -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"} |