summaryrefslogtreecommitdiffstats
path: root/libexec/rtld-elf/mips
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2017-03-29 11:03:08 +0000
committerkib <kib@FreeBSD.org>2017-03-29 11:03:08 +0000
commit2831f74217fb010469f2c93f062dfaf20ea0be8e (patch)
tree1257f910b0d0b1d9c206c83de7a6c1fbfd40344b /libexec/rtld-elf/mips
parent8c7458908683635acf91691601f8a542f4067505 (diff)
downloadFreeBSD-src-2831f74217fb010469f2c93f062dfaf20ea0be8e.zip
FreeBSD-src-2831f74217fb010469f2c93f062dfaf20ea0be8e.tar.gz
MFC r315331:
Implement LD_BIND_NOT knob for rtld. MFC r315337: Disable LD_BIND_NOT for setugid processes. MFC r315429 (by jilles): Document that LD_BIND_NOT is unset for setugid processes.
Diffstat (limited to 'libexec/rtld-elf/mips')
-rw-r--r--libexec/rtld-elf/mips/reloc.c3
-rw-r--r--libexec/rtld-elf/mips/rtld_machdep.h5
2 files changed, 4 insertions, 4 deletions
diff --git a/libexec/rtld-elf/mips/reloc.c b/libexec/rtld-elf/mips/reloc.c
index a3ba2f4..5dc5c79 100644
--- a/libexec/rtld-elf/mips/reloc.c
+++ b/libexec/rtld-elf/mips/reloc.c
@@ -259,7 +259,8 @@ _mips_rtld_bind(Obj_Entry *obj, Elf_Size reloff)
obj->path,
(intmax_t)reloff, defobj->strtab + def->st_name,
(void *)*where, (void *)target);
- *where = target;
+ if (!ld_bind_not)
+ *where = target;
lock_release(rtld_bind_lock, &lockstate);
return (Elf_Addr)target;
}
diff --git a/libexec/rtld-elf/mips/rtld_machdep.h b/libexec/rtld-elf/mips/rtld_machdep.h
index 484af1b..8536061 100644
--- a/libexec/rtld-elf/mips/rtld_machdep.h
+++ b/libexec/rtld-elf/mips/rtld_machdep.h
@@ -39,9 +39,8 @@ struct Struct_Obj_Entry;
#define rtld_dynamic(obj) (&_DYNAMIC)
Elf_Addr reloc_jmpslot(Elf_Addr *where, Elf_Addr target,
- const struct Struct_Obj_Entry *defobj,
- const struct Struct_Obj_Entry *obj,
- const Elf_Rel *rel);
+ const struct Struct_Obj_Entry *defobj, const struct Struct_Obj_Entry *obj,
+ const Elf_Rel *rel);
#define make_function_pointer(def, defobj) \
((defobj)->relocbase + (def)->st_value)
OpenPOWER on IntegriCloud