Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 23 Feb 2015 21:16:02 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r279218 - stable/10/libexec/rtld-elf
Message-ID:  <201502232116.t1NLG3Be048409@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Mon Feb 23 21:16:02 2015
New Revision: 279218
URL: https://svnweb.freebsd.org/changeset/base/279218

Log:
  MFC 275412:
  The runtime linker needs to include a path to itself in the link map
  it exports to the debugger.  It currently has two choices: it can use
  a compiled-in path (/libexec/ld-elf.so.1) or it can use the path stored
  in the interpreter path in the binary being executed.  The runtime linker
  currently prefers the second.  However, this is usually wrong for compat32
  binaries since the binary specifies the path of rtld on a 32-bit system
  (/libexec/ld-elf.so.1) instead of the actual path (/libexec/ld-elf32.so.1).
  For now, always assume the compiled in path (/libexec/ld-elf32.so.1) as
  the rtld path and ignore the path in the binary for the 32-bit runtime
  linker.

Modified:
  stable/10/libexec/rtld-elf/rtld.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/libexec/rtld-elf/rtld.c
==============================================================================
--- stable/10/libexec/rtld-elf/rtld.c	Mon Feb 23 20:38:00 2015	(r279217)
+++ stable/10/libexec/rtld-elf/rtld.c	Mon Feb 23 21:16:02 2015	(r279218)
@@ -496,6 +496,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_
       aux_info[AT_STACKPROT]->a_un.a_val != 0)
 	    stack_prot = aux_info[AT_STACKPROT]->a_un.a_val;
 
+#ifndef COMPAT_32BIT
     /*
      * Get the actual dynamic linker pathname from the executable if
      * possible.  (It should always be possible.)  That ensures that
@@ -508,6 +509,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_
 	obj_rtld.path = xstrdup(obj_main->interp);
         __progname = obj_rtld.path;
     }
+#endif
 
     digest_dynamic(obj_main, 0);
     dbg("%s valid_hash_sysv %d valid_hash_gnu %d dynsymcount %d",



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201502232116.t1NLG3Be048409>