gcc: patch for bug#81829.
This commit is contained in:
parent
8187d82337
commit
7d91772ec9
2 changed files with 72 additions and 1 deletions
71
srcpkgs/gcc/patches/bug81829.patch
Normal file
71
srcpkgs/gcc/patches/bug81829.patch
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
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)
|
||||||
|
{
|
|
@ -3,7 +3,7 @@ _majorver=7.2
|
||||||
|
|
||||||
pkgname=gcc
|
pkgname=gcc
|
||||||
version=${_majorver}.0
|
version=${_majorver}.0
|
||||||
revision=2
|
revision=3
|
||||||
short_desc="The GNU C Compiler"
|
short_desc="The GNU C Compiler"
|
||||||
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
maintainer="Juan RP <xtraeme@voidlinux.eu>"
|
||||||
homepage="http://gcc.gnu.org"
|
homepage="http://gcc.gnu.org"
|
||||||
|
|
Loading…
Reference in a new issue