ld.so: Disable DT_MIPS_RLD_MAP_REL
authorvisa <visa@openbsd.org>
Sun, 4 Dec 2022 15:55:26 +0000 (15:55 +0000)
committervisa <visa@openbsd.org>
Sun, 4 Dec 2022 15:55:26 +0000 (15:55 +0000)
The linker produces incorrect values for DT_MIPS_RLD_MAP_REL tags.
Disable the handling of the tag in the dynamic loader. The linker
will be fixed in a later commit when snapshots have the updated ld.so.

Discussed with and OK kettenis@ deraadt@

libexec/ld.so/loader.c

index 0cd15cd..a15c74b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: loader.c,v 1.205 2022/12/04 15:42:07 deraadt Exp $ */
+/*     $OpenBSD: loader.c,v 1.206 2022/12/04 15:55:26 visa Exp $ */
 
 /*
  * Copyright (c) 1998 Per Fogelstrom, Opsycon AB
@@ -625,10 +625,7 @@ _dl_boot(const char **argv, char **envp, const long dyn_loff, long *dl_data)
         */
        map_link = NULL;
 #ifdef __mips__
-       if (exe_obj->Dyn.info[DT_MIPS_RLD_MAP_REL - DT_LOPROC + DT_NUM] != 0)
-               map_link = (struct r_debug **)(exe_obj->Dyn.info[
-                   DT_MIPS_RLD_MAP_REL - DT_LOPROC + DT_NUM] + exe_loff);
-       else if (exe_obj->Dyn.info[DT_MIPS_RLD_MAP - DT_LOPROC + DT_NUM] != 0)
+       if (exe_obj->Dyn.info[DT_MIPS_RLD_MAP - DT_LOPROC + DT_NUM] != 0)
                map_link = (struct r_debug **)(exe_obj->Dyn.info[
                    DT_MIPS_RLD_MAP - DT_LOPROC + DT_NUM] + exe_loff);
 #endif