Back out the last two changes. They were misguided, and the code worked
correctly before.
This commit is contained in:
parent
704158a9d5
commit
be3692c5a7
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: reloc.c,v 1.76 2002/11/22 04:39:37 junyoung Exp $ */
|
/* $NetBSD: reloc.c,v 1.77 2002/11/25 19:49:25 mycroft Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1996 John D. Polstra.
|
* Copyright 1996 John D. Polstra.
|
||||||
@ -153,6 +153,7 @@ _rtld_relocate_objects(first, bind_now)
|
|||||||
bool bind_now;
|
bool bind_now;
|
||||||
{
|
{
|
||||||
Obj_Entry *obj;
|
Obj_Entry *obj;
|
||||||
|
int ok = 1;
|
||||||
|
|
||||||
for (obj = first; obj != NULL; obj = obj->next) {
|
for (obj = first; obj != NULL; obj = obj->next) {
|
||||||
if (obj->nbuckets == 0 || obj->nchains == 0 ||
|
if (obj->nbuckets == 0 || obj->nchains == 0 ||
|
||||||
@ -183,7 +184,7 @@ _rtld_relocate_objects(first, bind_now)
|
|||||||
}
|
}
|
||||||
dbg(("doing non-PLT relocations"));
|
dbg(("doing non-PLT relocations"));
|
||||||
if (_rtld_relocate_nonplt_objects(obj) < 0)
|
if (_rtld_relocate_nonplt_objects(obj) < 0)
|
||||||
return -1;
|
ok = 0;
|
||||||
if (obj->textrel) { /* Re-protected the text segment. */
|
if (obj->textrel) { /* Re-protected the text segment. */
|
||||||
if (mprotect(obj->mapbase, obj->textsize,
|
if (mprotect(obj->mapbase, obj->textsize,
|
||||||
PROT_READ | PROT_EXEC) == -1) {
|
PROT_READ | PROT_EXEC) == -1) {
|
||||||
@ -194,12 +195,15 @@ _rtld_relocate_objects(first, bind_now)
|
|||||||
}
|
}
|
||||||
dbg(("doing lazy PLT binding"));
|
dbg(("doing lazy PLT binding"));
|
||||||
if (_rtld_relocate_plt_lazy(obj) < 0)
|
if (_rtld_relocate_plt_lazy(obj) < 0)
|
||||||
return -1;
|
ok = 0;
|
||||||
#if defined(__i386__)
|
#if defined(__i386__)
|
||||||
if (bind_now)
|
if (bind_now)
|
||||||
if (_rtld_relocate_plt_objects(obj) < 0)
|
if (_rtld_relocate_plt_objects(obj) < 0)
|
||||||
return -1;
|
ok = 0;
|
||||||
#endif
|
#endif
|
||||||
|
if (!ok)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
|
||||||
/* Set some sanity-checking numbers in the Obj_Entry. */
|
/* Set some sanity-checking numbers in the Obj_Entry. */
|
||||||
obj->magic = RTLD_MAGIC;
|
obj->magic = RTLD_MAGIC;
|
||||||
|
Loading…
Reference in New Issue
Block a user