Committed as r12-5477. On Tue, 2021-11-23 at 23:39 +0800, Xi Ruoyao via Gcc-patches wrote: > [v2: format fix] > > Some distro may ship dangling symlinks in include directories, triggers > the access failure. Skip it and continue to next header instead of > being to panic. > > Restore to old behavior before r12-5234 but without resurrecting the > problematic getcwd() call, by using the environment variable "INPUT" > exported by fixinc.sh. > > Tested on x86_64-linux-gnu, with a dangling symlink intentionally > injected into /usr/include. > > fixincludes/ > > PR bootstrap/103306 > * fixincl.c (process): Don't call abort(). > --- > fixincludes/fixincl.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/fixincludes/fixincl.c b/fixincludes/fixincl.c > index a17b65866c3..92909baf85f 100644 > --- a/fixincludes/fixincl.c > +++ b/fixincludes/fixincl.c > @@ -1352,10 +1352,19 @@ process (void) > > if (access (pz_curr_file, R_OK) != 0) > { > - /* Some really strange error happened. */ > - fprintf (stderr, "Cannot access %s: %s\n", pz_curr_file, > + /* It may happens if for e. g. the distro ships some broken symlinks > + in /usr/include. */ > + > + /* "INPUT" is exported in fixinc.sh, which is the pwd where fixincl > + runs. It's used instead of getcwd to avoid allocating a buffer > + with unknown length. */ > + const char *cwd = getenv ("INPUT"); > + if (!cwd) > + cwd = "the working directory"; > + > + fprintf (stderr, "Cannot access %s from %s: %s\n", pz_curr_file, cwd, > xstrerror (errno)); > - abort (); > + return; > } > > pz_curr_data = load_file (pz_curr_file);
-- Xi Ruoyao <xry...@mengyan1223.wang> School of Aerospace Science and Technology, Xidian University