[Bug d/87866] gdc fails to compile minimal test
ro at CeBiTec dot Uni-Bielefeld.DE
gcc-bugzilla@gcc.gnu.org
Tue Nov 6 14:52:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87866
--- Comment #2 from ro at CeBiTec dot Uni-Bielefeld.DE <ro at CeBiTec dot Uni-Bielefeld.DE> ---
> --- Comment #1 from Iain Buclaw <ibuclaw at gdcproject dot org> ---
> I backported a fix from the D sources so it should no longer segfault at least.
It doesn't indeed.
> From what I can see, it should pick up the object.d source correctly.
>
> -nostdinc -I /vol/gcc/src/hg/trunk/local/libphobos/libdruntime
>
> Unless it really isn't in the -I path.
I've found what's going on:
When d-incpath.dd (add_globalpaths) calls into Filename::canonicalName
(path), path is set correctly to the d21 -I arg:
81 const char *target = FileName::canonicalName (path);
(gdb) p path
$7 = 0x9f33878 "/vol/gcc/src/hg/trunk/local/libphobos/libdruntime"
(gdb) s
0x0833cea6 in FileName::canonicalName (
name=0x9f33878 "/vol/gcc/src/hg/trunk/local/libphobos/libdruntime")
at /vol/gcc/src/hg/trunk/local/gcc/d/dmd/root/filename.c:616
616 return realpath(name, NULL);
(gdb) n
83 if (target == NULL || !FileName::exists (target))
(gdb) p target
$8 = 0x0
However, canonicalPath returns with NULL. I traced this to realpath(3C)
on Solaris 10 behaving differently, as explained in the man page:
bolic links. The generated pathname is stored as a null-
terminated string, up to a maximum of {PATH_MAX} bytes
(defined in limits.h(3HEAD)), in the buffer pointed to by
resolved_name.
RETURN VALUES
On successful completion, realpath() returns a pointer to
the resolved name. Otherwise, realpath() returns a null
pointer and sets errno to indicate the error, and the con-
tents of the buffer pointed to by resolved_name are left in
an indeterminate state.
Unlike e.g. the Solaris 11.4 version, realpath doesn't allocate a buffer
on it's own if the second arg is NULL, but given that it couldn't store
the real path, returned NULL to indicate that failure.
Rainer
More information about the Gcc-bugs
mailing list