diff options
author | Ulrich Drepper <drepper@gmail.com> | 2011-03-10 12:51:33 -0500 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-03-10 12:51:33 -0500 |
commit | 028478fa40d85a73b19638dbe3f83b1acebf370c (patch) | |
tree | 03f5573c44e2cde7b809f44134526d202c8b29e2 /elf/tst-unique3.cc | |
parent | 908ea63341bbbca534411a0581cd16ba36e08706 (diff) | |
download | glibc-028478fa40d85a73b19638dbe3f83b1acebf370c.zip glibc-028478fa40d85a73b19638dbe3f83b1acebf370c.tar.gz glibc-028478fa40d85a73b19638dbe3f83b1acebf370c.tar.bz2 |
Fix copy relocations handling of unique objects.
Diffstat (limited to 'elf/tst-unique3.cc')
-rw-r--r-- | elf/tst-unique3.cc | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/elf/tst-unique3.cc b/elf/tst-unique3.cc new file mode 100644 index 0000000..b2c9593 --- /dev/null +++ b/elf/tst-unique3.cc @@ -0,0 +1,23 @@ +#include "tst-unique3.h" +#include <cstdio> +#include "../dlfcn/dlfcn.h" + +int t = S<char>::i; + +int +main (void) +{ + std::printf ("%d %d\n", S<char>::i, t); + int result = S<char>::i++ != 1 || t != 1; + result |= in_lib (); + void *d = dlopen ("$ORIGIN/tst-unique3lib2.so", RTLD_LAZY); + int (*fp) (); + if (d == NULL || (fp = (int(*)()) dlsym (d, "in_lib2")) == NULL) + { + std::printf ("failed to get symbol in_lib2\n"); + return 1; + } + result |= fp (); + dlclose (d); + return result; +} |