diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ld-elf/pr21562a.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562b.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562c.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562d.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562e.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562f.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562g.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562h.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562i.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562j.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562k.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562l.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562m.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21562n.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-1a.c | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-1b.c | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-1c.c | 29 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-2a.c | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-2b.c | 12 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/pr21964-2c.c | 32 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/shared.exp | 18 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/sizeofb.d | 2 | ||||
-rw-r--r-- | ld/testsuite/ld-elf/startofb.d | 2 |
23 files changed, 143 insertions, 16 deletions
diff --git a/ld/testsuite/ld-elf/pr21562a.d b/ld/testsuite/ld-elf/pr21562a.d index ecf013f432c..520bd13ce4b 100644 --- a/ld/testsuite/ld-elf/pr21562a.d +++ b/ld/testsuite/ld-elf/pr21562a.d @@ -8,5 +8,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562b.d b/ld/testsuite/ld-elf/pr21562b.d index 063a141741a..54341fd5d33 100644 --- a/ld/testsuite/ld-elf/pr21562b.d +++ b/ld/testsuite/ld-elf/pr21562b.d @@ -8,5 +8,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562c.d b/ld/testsuite/ld-elf/pr21562c.d index 1d72a0d02f1..f99c2b296b0 100644 --- a/ld/testsuite/ld-elf/pr21562c.d +++ b/ld/testsuite/ld-elf/pr21562c.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562d.d b/ld/testsuite/ld-elf/pr21562d.d index f752a2465a2..d72bf4ee3e1 100644 --- a/ld/testsuite/ld-elf/pr21562d.d +++ b/ld/testsuite/ld-elf/pr21562d.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562e.d b/ld/testsuite/ld-elf/pr21562e.d index 769f2f8a4bd..9229dc0f4f4 100644 --- a/ld/testsuite/ld-elf/pr21562e.d +++ b/ld/testsuite/ld-elf/pr21562e.d @@ -6,5 +6,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562f.d b/ld/testsuite/ld-elf/pr21562f.d index cb81c2a36bf..16e3d2e9c42 100644 --- a/ld/testsuite/ld-elf/pr21562f.d +++ b/ld/testsuite/ld-elf/pr21562f.d @@ -6,5 +6,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562g.d b/ld/testsuite/ld-elf/pr21562g.d index 9926416abe9..59fd5b861ca 100644 --- a/ld/testsuite/ld-elf/pr21562g.d +++ b/ld/testsuite/ld-elf/pr21562g.d @@ -6,5 +6,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562h.d b/ld/testsuite/ld-elf/pr21562h.d index 1e723ba0990..9be1c51f520 100644 --- a/ld/testsuite/ld-elf/pr21562h.d +++ b/ld/testsuite/ld-elf/pr21562h.d @@ -6,5 +6,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562i.d b/ld/testsuite/ld-elf/pr21562i.d index f5b59c54b8b..0e0d070b1d2 100644 --- a/ld/testsuite/ld-elf/pr21562i.d +++ b/ld/testsuite/ld-elf/pr21562i.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562j.d b/ld/testsuite/ld-elf/pr21562j.d index 70e311e231d..c645da75853 100644 --- a/ld/testsuite/ld-elf/pr21562j.d +++ b/ld/testsuite/ld-elf/pr21562j.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] scnfoo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562k.d b/ld/testsuite/ld-elf/pr21562k.d index 4c62eb7966e..b0f56a06f24 100644 --- a/ld/testsuite/ld-elf/pr21562k.d +++ b/ld/testsuite/ld-elf/pr21562k.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] \.foo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562l.d b/ld/testsuite/ld-elf/pr21562l.d index b0ba90dd3c0..398556f26e2 100644 --- a/ld/testsuite/ld-elf/pr21562l.d +++ b/ld/testsuite/ld-elf/pr21562l.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] \.foo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562m.d b/ld/testsuite/ld-elf/pr21562m.d index fbcf76f4761..7305bdf11f8 100644 --- a/ld/testsuite/ld-elf/pr21562m.d +++ b/ld/testsuite/ld-elf/pr21562m.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] \.foo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21562n.d b/ld/testsuite/ld-elf/pr21562n.d index 2453169999f..5a229923bda 100644 --- a/ld/testsuite/ld-elf/pr21562n.d +++ b/ld/testsuite/ld-elf/pr21562n.d @@ -9,5 +9,5 @@ #... \[[ 0-9]+\] \.foo[ \t]+PROGBITS[ \t]+[0-9a-f]+ +[0-9a-f]+ +0*10[ \t]+.* #... - +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[0-9a-f]+ +[0-9a-f]+ +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #pass diff --git a/ld/testsuite/ld-elf/pr21964-1a.c b/ld/testsuite/ld-elf/pr21964-1a.c new file mode 100644 index 00000000000..680bda4dbfe --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-1a.c @@ -0,0 +1,12 @@ +extern int __start___verbose[]; +extern int __stop___verbose[]; +int +foo1 (void) +{ + static int my_var __attribute__((used, section("__verbose"))) = 5; + if (__start___verbose == __stop___verbose + || __start___verbose[0] != 5) + return -1; + else + return 0; +} diff --git a/ld/testsuite/ld-elf/pr21964-1b.c b/ld/testsuite/ld-elf/pr21964-1b.c new file mode 100644 index 00000000000..1507b228088 --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-1b.c @@ -0,0 +1,12 @@ +extern int __start___verbose[]; +extern int __stop___verbose[]; +int +foo2 (void) +{ + static int my_var __attribute__((used, section("__verbose"))) = 10; + if (__start___verbose == __stop___verbose + || __start___verbose[0] != 10) + return -1; + else + return 0; +} diff --git a/ld/testsuite/ld-elf/pr21964-1c.c b/ld/testsuite/ld-elf/pr21964-1c.c new file mode 100644 index 00000000000..996a9e182f4 --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-1c.c @@ -0,0 +1,29 @@ +#include <stdio.h> + +extern int foo1 (void); +extern int foo2 (void); + +extern int __start___verbose[]; +extern int __stop___verbose[]; +static int my_var __attribute__((used, section("__verbose"))) = 6; +int +bar (void) +{ + if (__start___verbose == __stop___verbose) + return -1; + + if (__start___verbose[0] != 6) + return -2; + else + return 0; +} + +int +main () +{ + if (bar () == 0 + && foo1 () == 0 + && foo2 () == 0) + printf ("PASS\n"); + return 0; +} diff --git a/ld/testsuite/ld-elf/pr21964-2a.c b/ld/testsuite/ld-elf/pr21964-2a.c new file mode 100644 index 00000000000..6331ff063b9 --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-2a.c @@ -0,0 +1,12 @@ +extern int __start___verbose[]; +extern int __stop___verbose[]; +int +foo1 (void) +{ + static int my_var __attribute__((used, section("__verbose"))) = 5; + if (__start___verbose == __stop___verbose + && __start___verbose[0] != 5) + return -1; + else + return 0; +} diff --git a/ld/testsuite/ld-elf/pr21964-2b.c b/ld/testsuite/ld-elf/pr21964-2b.c new file mode 100644 index 00000000000..1507b228088 --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-2b.c @@ -0,0 +1,12 @@ +extern int __start___verbose[]; +extern int __stop___verbose[]; +int +foo2 (void) +{ + static int my_var __attribute__((used, section("__verbose"))) = 10; + if (__start___verbose == __stop___verbose + || __start___verbose[0] != 10) + return -1; + else + return 0; +} diff --git a/ld/testsuite/ld-elf/pr21964-2c.c b/ld/testsuite/ld-elf/pr21964-2c.c new file mode 100644 index 00000000000..f879dd5ba46 --- /dev/null +++ b/ld/testsuite/ld-elf/pr21964-2c.c @@ -0,0 +1,32 @@ +#include <dlfcn.h> +#include <stdio.h> + +extern int foo1 (void); + +int main() +{ + void *dl; + void *sym; + int (*func) (void); + + if (foo1 () != 0) + return 1; + + dl = dlopen("pr21964-2b.so", RTLD_LAZY); + if (!dl) + return 2; + + sym = dlsym(dl, "__start___verbose"); + if (!sym) + return 3; + + func = dlsym(dl, "foo2"); + if (!func) + return 4; + if (func () == 0) + printf ("PASS\n"); + + dlclose(dl); + + return 0; +} diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 8b139ec874d..eee73778da2 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -423,6 +423,18 @@ set build_tests { {"Build libpr19073.so" "-shared -Wl,--version-script=pr19073.map tmpdir/pr19073a.o" "-fPIC" {dummy.c} {{readelf {--dyn-syms --wide} pr19073.rd}} "libpr19073.so"} + {"Build pr21964-1a.so" + "-shared" "-fPIC" + {pr21964-1a.c} {} "pr21964-1a.so"} + {"Build pr21964-1b.so" + "-shared" "-fPIC" + {pr21964-1b.c} {} "pr21964-1b.so"} + {"Build pr21964-2a.so" + "-shared" "-fPIC" + {pr21964-2a.c} {} "pr21964-2a.so"} + {"Build pr21964-2b.so" + "-shared" "-fPIC" + {pr21964-2b.c} {} "pr21964-2b.so"} } run_cc_link_tests $build_tests @@ -540,6 +552,9 @@ set run_tests [list \ [list "Run pr18458" \ "-Wl,--no-as-needed,-z,now tmpdir/libpr18458a.so tmpdir/libpr18458b.so" "" \ {pr18458c.c} "pr18458" "pass.out" ] \ + [list "Run pr21964-1" \ + "-Wl,--no-as-needed,-rpath,tmpdir tmpdir/pr21964-1a.so tmpdir/pr21964-1b.so" "" \ + {pr21964-1c.c} "pr21964-1" "pass.out" ] \ ] # NetBSD ELF systems do not currently support the .*_array sections. @@ -586,6 +601,9 @@ set dlopen_run_tests [list \ [list "Run dl6d1 with --dynamic-list-data and dlopen on libdl6d.so" \ "-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \ {dl6dmain.c} "dl6d1" "dl6b.out" ] \ + [list "Run pr21964-2" \ + "-Wl,--no-as-needed,-rpath,tmpdir tmpdir/pr21964-2a.so $extralibs" "" \ + {pr21964-2c.c} "pr21964-2" "pass.out" ] \ ] # Only run them when libdl is available. diff --git a/ld/testsuite/ld-elf/sizeofb.d b/ld/testsuite/ld-elf/sizeofb.d index ac4a6a474e3..bde5ca22e00 100644 --- a/ld/testsuite/ld-elf/sizeofb.d +++ b/ld/testsuite/ld-elf/sizeofb.d @@ -7,7 +7,7 @@ Symbol table '\.dynsym' contains [0-9]+ entries: +Num: +Value +Size Type +Bind +Vis +Ndx Name +0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND + #... - +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?stop_scnfoo + +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?stop_scnfoo #... +[0-9]+: 0+10 + +0 +NOTYPE +LOCAL +DEFAULT +ABS +.sizeof.scnfoo #pass diff --git a/ld/testsuite/ld-elf/startofb.d b/ld/testsuite/ld-elf/startofb.d index 5d659bb8e5e..35a1bb64324 100644 --- a/ld/testsuite/ld-elf/startofb.d +++ b/ld/testsuite/ld-elf/startofb.d @@ -9,5 +9,5 @@ Symbol table '\.dynsym' contains [0-9]+ entries: #... +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +LOCAL +DEFAULT +[0-9]+ +.startof.scnfoo #... - +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +LOCAL +DEFAULT +[0-9]+ +___?start_scnfoo + +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +___?start_scnfoo #pass |