From owner-svn-src-head@freebsd.org Sat Oct 31 04:39:57 2015 Return-Path: Delivered-To: svn-src-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 0FE07A22290; Sat, 31 Oct 2015 04:39:57 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C19151DBE; Sat, 31 Oct 2015 04:39:56 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id t9V4dtk1095738; Sat, 31 Oct 2015 04:39:55 GMT (envelope-from imp@FreeBSD.org) Received: (from imp@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id t9V4dt0Q095735; Sat, 31 Oct 2015 04:39:55 GMT (envelope-from imp@FreeBSD.org) Message-Id: <201510310439.t9V4dt0Q095735@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: imp set sender to imp@FreeBSD.org using -f From: Warner Losh Date: Sat, 31 Oct 2015 04:39:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r290223 - head/libexec/rtld-elf X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 31 Oct 2015 04:39:57 -0000 Author: imp Date: Sat Oct 31 04:39:55 2015 New Revision: 290223 URL: https://svnweb.freebsd.org/changeset/base/290223 Log: Rather than using the #define for path names, indirect through a char * variable that could change for different executable types detected. Modified: head/libexec/rtld-elf/libmap.c head/libexec/rtld-elf/paths.h head/libexec/rtld-elf/rtld.c Modified: head/libexec/rtld-elf/libmap.c ============================================================================== --- head/libexec/rtld-elf/libmap.c Sat Oct 31 04:39:28 2015 (r290222) +++ head/libexec/rtld-elf/libmap.c Sat Oct 31 04:39:55 2015 (r290223) @@ -68,7 +68,7 @@ lm_init(char *libmap_override) dbg("lm_init(\"%s\")", libmap_override); TAILQ_INIT(&lmp_head); - lmc_parse_file(_PATH_LIBMAP_CONF); + lmc_parse_file(ld_path_libmap_conf); if (libmap_override) { /* Modified: head/libexec/rtld-elf/paths.h ============================================================================== --- head/libexec/rtld-elf/paths.h Sat Oct 31 04:39:28 2015 (r290222) +++ head/libexec/rtld-elf/paths.h Sat Oct 31 04:39:55 2015 (r290223) @@ -61,4 +61,10 @@ #define LD_ "LD_" #endif +extern char *ld_path_elf_hints; +extern char *ld_path_libmap_conf; +extern char *ld_path_rtld; +extern char *ld_standard_library_path; +extern char *ld_env_prefix; + #endif /* PATHS_H */ Modified: head/libexec/rtld-elf/rtld.c ============================================================================== --- head/libexec/rtld-elf/rtld.c Sat Oct 31 04:39:28 2015 (r290222) +++ head/libexec/rtld-elf/rtld.c Sat Oct 31 04:39:55 2015 (r290223) @@ -255,6 +255,15 @@ int tls_max_index = 1; /* Largest modul bool ld_library_path_rpath = false; /* + * Globals for path names, and such + */ +char *ld_path_elf_hints = _PATH_ELF_HINTS; +char *ld_path_libmap_conf = _PATH_LIBMAP_CONF; +char *ld_path_rtld = _PATH_RTLD; +char *ld_standard_library_path = STANDARD_LIBRARY_PATH; +char *ld_env_prefix = LD_; + +/* * Fill in a DoneList with an allocation large enough to hold all of * the currently-loaded objects. Keep this as a macro since it calls * alloca and we want that to occur within the scope of the caller. @@ -449,7 +458,7 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_ ld_utrace = getenv(LD_ "UTRACE"); if ((ld_elf_hints_path == NULL) || strlen(ld_elf_hints_path) == 0) - ld_elf_hints_path = _PATH_ELF_HINTS; + ld_elf_hints_path = ld_path_elf_hints; if (ld_debug != NULL && *ld_debug != '\0') debug = 1; @@ -1506,7 +1515,7 @@ find_library(const char *xname, const Ob (pathname = search_library_path(name, refobj->rpath)) != NULL) || (pathname = search_library_pathfds(name, ld_library_dirs, fdp)) != NULL || (pathname = search_library_path(name, gethints(false))) != NULL || - (pathname = search_library_path(name, STANDARD_LIBRARY_PATH)) != NULL) + (pathname = search_library_path(name, ld_standard_library_path)) != NULL) return (pathname); } else { nodeflib = objgiven ? refobj->z_nodeflib : false; @@ -1520,7 +1529,7 @@ find_library(const char *xname, const Ob (pathname = search_library_pathfds(name, ld_library_dirs, fdp)) != NULL || (pathname = search_library_path(name, gethints(nodeflib))) != NULL || (objgiven && !nodeflib && - (pathname = search_library_path(name, STANDARD_LIBRARY_PATH)) != NULL)) + (pathname = search_library_path(name, ld_standard_library_path)) != NULL)) return (pathname); } @@ -1690,7 +1699,7 @@ gethints(bool nostdlib) hargs.request = RTLD_DI_SERINFOSIZE; hargs.serinfo = &hmeta; - path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &sargs); + path_enumerate(ld_standard_library_path, fill_search_info, &sargs); path_enumerate(p, fill_search_info, &hargs); SLPinfo = xmalloc(smeta.dls_size); @@ -1709,7 +1718,7 @@ gethints(bool nostdlib) hargs.serpath = &hintinfo->dls_serpath[0]; hargs.strspace = (char *)&hintinfo->dls_serpath[hmeta.dls_cnt]; - path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &sargs); + path_enumerate(ld_standard_library_path, fill_search_info, &sargs); path_enumerate(p, fill_search_info, &hargs); /* @@ -1887,7 +1896,7 @@ init_rtld(caddr_t mapbase, Elf_Auxinfo * digest_dynamic2(&obj_rtld, dyn_rpath, dyn_soname, dyn_runpath); /* Replace the path with a dynamically allocated copy. */ - obj_rtld.path = xstrdup(_PATH_RTLD); + obj_rtld.path = xstrdup(ld_path_rtld); r_debug.r_brk = r_debug_state; r_debug.r_state = RT_CONSISTENT; @@ -3501,7 +3510,7 @@ do_search_info(const Obj_Entry *obj, int path_enumerate(obj->runpath, fill_search_info, &args); path_enumerate(gethints(obj->z_nodeflib), fill_search_info, &args); if (!obj->z_nodeflib) - path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &args); + path_enumerate(ld_standard_library_path, fill_search_info, &args); if (request == RTLD_DI_SERINFOSIZE) { @@ -3539,7 +3548,7 @@ do_search_info(const Obj_Entry *obj, int args.flags = LA_SER_DEFAULT; if (!obj->z_nodeflib && - path_enumerate(STANDARD_LIBRARY_PATH, fill_search_info, &args) != NULL) + path_enumerate(ld_standard_library_path, fill_search_info, &args) != NULL) return (-1); return (0); }