Bug 81829 - [7 Regression] /usr/bin/gcc-{ar,nm,ranlib} segfault without arguments https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81829 --- gcc/file-find.c +++ gcc/file-find.c @@ -208,38 +208,3 @@ prefix_from_string (const char *p, struct path_prefix *pprefix) } free (nstore); } - -void -remove_prefix (const char *prefix, struct path_prefix *pprefix) -{ - struct prefix_list *remove, **prev, **remove_prev = NULL; - int max_len = 0; - - if (pprefix->plist) - { - prev = &pprefix->plist; - for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next) - { - if (strcmp (prefix, pl->prefix) == 0) - { - remove = pl; - remove_prev = prev; - continue; - } - - int l = strlen (pl->prefix); - if (l > max_len) - max_len = l; - - prev = &pl; - } - - if (remove_prev) - { - *remove_prev = remove->next; - free (remove); - } - - pprefix->max_len = max_len; - } -} --- gcc/file-find.h +++ gcc/file-find.h @@ -41,7 +41,6 @@ extern void find_file_set_debug (bool); extern char *find_a_file (struct path_prefix *, const char *, int); extern void add_prefix (struct path_prefix *, const char *); extern void add_prefix_begin (struct path_prefix *, const char *); -extern void remove_prefix (const char *prefix, struct path_prefix *); extern void prefix_from_env (const char *, struct path_prefix *); extern void prefix_from_string (const char *, struct path_prefix *); --- gcc/gcc-ar.c +++ gcc/gcc-ar.c @@ -194,14 +194,6 @@ main (int ac, char **av) #ifdef CROSS_DIRECTORY_STRUCTURE real_exe_name = concat (target_machine, "-", PERSONALITY, NULL); #endif - /* Do not search original location in the same folder. */ - char *exe_folder = lrealpath (av[0]); - exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; - char *location = concat (exe_folder, PERSONALITY, NULL); - - if (access (location, X_OK) == 0) - remove_prefix (exe_folder, &path); - exe_name = find_a_file (&path, real_exe_name, X_OK); if (!exe_name) {