aboutsummaryrefslogtreecommitdiff
path: root/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/gnu/gcj/runtime/natSharedLibLoader.cc')
-rw-r--r--libjava/gnu/gcj/runtime/natSharedLibLoader.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/libjava/gnu/gcj/runtime/natSharedLibLoader.cc b/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
index ece6cad0f31..fe581952486 100644
--- a/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
+++ b/libjava/gnu/gcj/runtime/natSharedLibLoader.cc
@@ -39,17 +39,25 @@ _Jv_GC_has_static_roots (struct dl_phdr_info * info, size_t size, void *ptr)
// fprintf (stderr, "%p: lib %s ", ptr, name);
if (strlen (name) <= strlen (suffix))
- goto defaul;
+ goto registered;
// If a DSO name ends with SUFFIX, it has GC roots.
if (strcmp (name + strlen (name) - strlen (suffix),
suffix) == 0)
{
// fprintf (stderr, "registered\n");
- return 1;
+ goto registered;
}
- defaul:
+ // If a name contains ".so", it is a DSO with no roots.
+ if (strstr (name, ".so"))
+ goto shlib;
+
+ registered:
+// fprintf (stderr, "registered\n");
+ return 1;
+
+ shlib:
// fprintf (stderr, "not registered\n");
return 0;
}