* testsuite/ld-elf/pr21964-1a.c (foo): Renamed to ...
(foo1): This.
* testsuite/ld-elf/pr21964-1b.c: Rewrite.
* testsuite/ld-elf/pr21964-1c.c: New file.
* testsuite/ld-elf/pr21964-2c.c: Likewise.
* testsuite/ld-elf/pr21964-2a.c (foo): Renamed to ...
(foo1): This.
* testsuite/ld-elf/pr21964-2b.c: Rewrite.
* testsuite/ld-elf/shared.exp: Update PR ld/21964 tests.
+2017-08-22 H.J. Lu <hongjiu.lu@intel.com>
+ Alan Modra <amodra@gmail.com>
+
+ * testsuite/ld-elf/pr21964-1a.c (foo): Renamed to ...
+ (foo1): This.
+ * testsuite/ld-elf/pr21964-1b.c: Rewrite.
+ * testsuite/ld-elf/pr21964-1c.c: New file.
+ * testsuite/ld-elf/pr21964-2c.c: Likewise.
+ * testsuite/ld-elf/pr21964-2a.c (foo): Renamed to ...
+ (foo1): This.
+ * testsuite/ld-elf/pr21964-2b.c: Rewrite.
+ * testsuite/ld-elf/shared.exp: Update PR ld/21964 tests.
+
2017-08-21 H.J. Lu <hongjiu.lu@intel.com>
Alan Modra <amodra@gmail.com>
extern int __start___verbose[];
extern int __stop___verbose[];
-int foo (void)
+int
+foo1 (void)
{
static int my_var __attribute__((used, section("__verbose"))) = 5;
if (__start___verbose == __stop___verbose
-#include <stdio.h>
-
-extern int foo (void);
-
extern int __start___verbose[];
extern int __stop___verbose[];
-static int my_var __attribute__((used, section("__verbose"))) = 6;
-int bar (void)
+int
+foo2 (void)
{
- if (__start___verbose == __stop___verbose)
+ static int my_var __attribute__((used, section("__verbose"))) = 10;
+ if (__start___verbose == __stop___verbose
+ || __start___verbose[0] != 10)
return -1;
-
- if (__start___verbose[0] != 6)
- return -2;
else
return 0;
}
-
-int main()
-{
- if (bar () == 0 && foo () == 0)
- printf ("PASS\n");
- return 0;
-}
--- /dev/null
+#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;
+}
extern int __start___verbose[];
extern int __stop___verbose[];
-int foo (void)
+int
+foo1 (void)
{
static int my_var __attribute__((used, section("__verbose"))) = 5;
if (__start___verbose == __stop___verbose
-#include <dlfcn.h>
-#include <stdio.h>
-
-int main()
+extern int __start___verbose[];
+extern int __stop___verbose[];
+int
+foo2 (void)
{
- void *dl;
- void *sym;
- int (*func) (void);
-
- dl = dlopen("pr21964-2.so", RTLD_LAZY);
- if (!dl)
- return 1;
-
- sym = dlsym(dl, "__start___verbose");
- if (!sym)
- return 2;
-
- func = dlsym(dl, "foo");
- if (!func)
- return 3;
- if (func () == 0)
- printf ("PASS\n");
-
- dlclose(dl);
-
- return 0;
+ static int my_var __attribute__((used, section("__verbose"))) = 10;
+ if (__start___verbose == __stop___verbose
+ || __start___verbose[0] != 10)
+ return -1;
+ else
+ return 0;
}
--- /dev/null
+#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;
+}
{"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-1.so"
+ {"Build pr21964-1a.so"
"-shared" "-fPIC"
- {pr21964-1a.c} {} "pr21964-1.so"}
- {"Build pr21964-2.so"
+ {pr21964-1a.c} {} "pr21964-1a.so"}
+ {"Build pr21964-1b.so"
"-shared" "-fPIC"
- {pr21964-2a.c} {} "pr21964-2.so"}
+ {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
"-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-1.so" "" \
- {pr21964-1b.c} "pr21964-1" "pass.out" ] \
+ "-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.
"-Wl,--no-as-needed,--dynamic-list-data $extralibs" "" \
{dl6dmain.c} "dl6d1" "dl6b.out" ] \
[list "Run pr21964-2" \
- "-Wl,--no-as-needed,-rpath,tmpdir $extralibs" "" \
- {pr21964-2b.c} "pr21964-2" "pass.out" ] \
+ "-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.