Browse Source

fix error reporting for dlsym with global symbols

Rich Felker 13 years ago
parent
commit
4027f4e8f9
1 changed files with 2 additions and 1 deletions
  1. 2 1
      src/ldso/dynlink.c

+ 2 - 1
src/ldso/dynlink.c

@@ -723,7 +723,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
 	}
 	if (p == head || p == RTLD_DEFAULT) {
 		void *res = find_sym(head, s, 0);
-		if (!res) errflag = 1;
+		if (!res) goto failed;
 		return res;
 	}
 	h = hash(s);
@@ -736,6 +736,7 @@ static void *do_dlsym(struct dso *p, const char *s, void *ra)
 		if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
 			return p->deps[i]->base + sym->st_value;
 	}
+failed:
 	errflag = 1;
 	snprintf(errbuf, sizeof errbuf, "Symbol not found: %s", s);
 	return 0;