71 lines
2 KiB
Diff
71 lines
2 KiB
Diff
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)
|
|
{
|