[Issue 17596] dmd d 2.073.2 and 2.074.1 interim generated dmd segfaults on FreeBSD 12-CURRENT
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Wed Jul 19 13:06:21 PDT 2017
https://issues.dlang.org/show_bug.cgi?id=17596
--- Comment #8 from Cy Schubert <cy at FreeBSD.org> ---
Sorry for not replying sooner, way too many projects on the go here.
Here is how kib supported older apps prior to inode64:
https://svnweb.freebsd.org/base?view=revision&revision=318736
Forward compatibility:
https://svnweb.freebsd.org/base?view=revision&revision=320278
Stat.c, below, relies on versioned symbols (see
https://svnweb.freebsd.org/base/head/lib/libprocstat/Symbol.map?r1=318736&r2=318735&pathrev=318736)
int
stat(const char *path, struct stat *sb)
{
struct freebsd11_stat stat11;
int rv;
if (__getosreldate() >= INO64_FIRST)
return (__sys_fstatat(AT_FDCWD, path, sb, 0));
rv = syscall(SYS_freebsd11_stat, path, &stat11);
if (rv == 0)
__stat11_to_stat(&stat11, sb);
return (rv);
}
IMO implementing it in this way would require architectural changes to D's
implementation of some syscalls, similar to how Perl might interface with the
O/S. Discussing this with the maintainer of the ldc port, the short term
solution might be for he and I to patch the ports, however that would be a
fragile solution as depending on the options used at FreeBSD build time, stat_t
and dirent_t may vary.
--
More information about the Digitalmars-d-bugs
mailing list