commit 2bd86632b7cb97dc9002a23795e140fc880e1987 Author: Dmitry V. Levin Date: Wed Dec 20 11:27:51 2017 +0000 elf: remove redundant is_path argument is_path argument is no longer used and could be safely removed. * elf/dl-dst.h (DL_DST_COUNT): Remove is_path argument, all callers updated. * elf/dl-load.c (is_dst, _dl_dst_count, _dl_dst_substitute, expand_dynamic_string_token): Likewise. * sysdeps/generic/ldsodefs.h (_dl_dst_count, _dl_dst_substitute): Remove is_path argument. Index: glibc-2.17-c758a686/elf/dl-deps.c =================================================================== --- glibc-2.17-c758a686.orig/elf/dl-deps.c +++ glibc-2.17-c758a686/elf/dl-deps.c @@ -101,7 +101,7 @@ struct list ({ \ const char *__str = (str); \ const char *__result = __str; \ - size_t __dst_cnt = DL_DST_COUNT (__str, 0); \ + size_t __dst_cnt = DL_DST_COUNT (__str); \ \ if (__dst_cnt != 0) \ { \ @@ -115,7 +115,7 @@ DST not allowed in SUID/SGID programs")) __newp = (char *) alloca (DL_DST_REQUIRED (l, __str, strlen (__str), \ __dst_cnt)); \ \ - __result = _dl_dst_substitute (l, __str, __newp, 0); \ + __result = _dl_dst_substitute (l, __str, __newp); \ \ if (*__result == '\0') \ { \ Index: glibc-2.17-c758a686/elf/dl-dst.h =================================================================== --- glibc-2.17-c758a686.orig/elf/dl-dst.h +++ glibc-2.17-c758a686/elf/dl-dst.h @@ -20,13 +20,13 @@ /* Determine the number of DST elements in the name. Only if IS_PATH is nonzero paths are recognized (i.e., multiple, ':' separated filenames). */ -#define DL_DST_COUNT(name, is_path) \ +#define DL_DST_COUNT(name) \ ({ \ size_t __cnt = 0; \ const char *__sf = strchr (name, '$'); \ \ if (__builtin_expect (__sf != NULL, 0)) \ - __cnt = _dl_dst_count (__sf, is_path); \ + __cnt = _dl_dst_count (__sf); \ \ __cnt; }) Index: glibc-2.17-c758a686/elf/dl-load.c =================================================================== --- glibc-2.17-c758a686.orig/elf/dl-load.c +++ glibc-2.17-c758a686/elf/dl-load.c @@ -232,8 +232,7 @@ is_trusted_path_normalize (const char *p static size_t -is_dst (const char *start, const char *name, const char *str, - int is_path, int secure) +is_dst (const char *start, const char *name, const char *str, int secure) { size_t len; bool is_curly = false; @@ -271,7 +270,7 @@ is_dst (const char *start, const char *n size_t -_dl_dst_count (const char *name, int is_path) +_dl_dst_count (const char *name) { const char *const start = name; size_t cnt = 0; @@ -283,10 +282,9 @@ _dl_dst_count (const char *name, int is_ /* $ORIGIN is not expanded for SUID/GUID programs (except if it is $ORIGIN alone) and it must always appear first in path. */ ++name; - if ((len = is_dst (start, name, "ORIGIN", is_path, - INTUSE(__libc_enable_secure))) != 0 - || (len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0 - || (len = is_dst (start, name, "LIB", is_path, 0)) != 0) + if ((len = is_dst (start, name, "ORIGIN", INTUSE(__libc_enable_secure))) != 0 + || (len = is_dst (start, name, "PLATFORM", 0)) != 0 + || (len = is_dst (start, name, "LIB", 0)) != 0) ++cnt; name = strchr (name + len, '$'); @@ -298,8 +296,7 @@ _dl_dst_count (const char *name, int is_ char * -_dl_dst_substitute (struct link_map *l, const char *name, char *result, - int is_path) +_dl_dst_substitute (struct link_map *l, const char *name, char *result) { const char *const start = name; @@ -319,8 +316,7 @@ _dl_dst_substitute (struct link_map *l, size_t len; ++name; - if ((len = is_dst (start, name, "ORIGIN", is_path, - INTUSE(__libc_enable_secure))) != 0) + if ((len = is_dst (start, name, "ORIGIN", INTUSE(__libc_enable_secure))) != 0) { #ifndef SHARED if (l == NULL) @@ -332,9 +328,9 @@ _dl_dst_substitute (struct link_map *l, check_for_trusted = (INTUSE(__libc_enable_secure) && l->l_type == lt_executable); } - else if ((len = is_dst (start, name, "PLATFORM", is_path, 0)) != 0) + else if ((len = is_dst (start, name, "PLATFORM", 0)) != 0) repl = GLRO(dl_platform); - else if ((len = is_dst (start, name, "LIB", is_path, 0)) != 0) + else if ((len = is_dst (start, name, "LIB", 0)) != 0) repl = DL_DST_LIB; if (repl != NULL && repl != (const char *) -1) @@ -378,7 +374,7 @@ _dl_dst_substitute (struct link_map *l, belonging to the map is loaded. In this case the path element containing $ORIGIN is left out. */ static char * -expand_dynamic_string_token (struct link_map *l, const char *s, int is_path) +expand_dynamic_string_token (struct link_map *l, const char *s) { /* We make two runs over the string. First we determine how large the resulting string is and then we copy it over. Since this is no @@ -389,7 +385,7 @@ expand_dynamic_string_token (struct link char *result; /* Determine the number of DST elements. */ - cnt = DL_DST_COUNT (s, is_path); + cnt = DL_DST_COUNT (s); /* If we do not have to replace anything simply copy the string. */ if (__builtin_expect (cnt, 0) == 0) @@ -403,7 +399,7 @@ expand_dynamic_string_token (struct link if (result == NULL) return NULL; - return _dl_dst_substitute (l, s, result, is_path); + return _dl_dst_substitute (l, s, result); } @@ -458,7 +454,7 @@ fillin_rpath (char *rpath, struct r_sear { struct r_search_path_elem *dirp; - to_free = cp = expand_dynamic_string_token (l, cp, 1); + to_free = cp = expand_dynamic_string_token (l, cp); size_t len = strlen (cp); @@ -2263,7 +2259,7 @@ _dl_map_object (struct link_map *loader, { /* The path may contain dynamic string tokens. */ realname = (loader - ? expand_dynamic_string_token (loader, name, 0) + ? expand_dynamic_string_token (loader, name) : local_strdup (name)); if (realname == NULL) fd = -1; Index: glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h =================================================================== --- glibc-2.17-c758a686.orig/sysdeps/generic/ldsodefs.h +++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h @@ -983,11 +983,11 @@ extern void _dl_nothread_init_static_tls extern const char *_dl_get_origin (void) attribute_hidden; /* Count DSTs. */ -extern size_t _dl_dst_count (const char *name, int is_path) attribute_hidden; +extern size_t _dl_dst_count (const char *name) attribute_hidden; /* Substitute DST values. */ extern char *_dl_dst_substitute (struct link_map *l, const char *name, - char *result, int is_path) attribute_hidden; + char *result) attribute_hidden; /* Check validity of the caller. */ extern int _dl_check_caller (const void *caller, enum allowmask mask)