GNU bug report logs - #46495
28.0.50; [native-comp] Build fails for 32bit --with-wide-int

Previous Next

Package: emacs;

Reported by: Andy Moreton <andrewjmoreton <at> gmail.com>

Date: Sat, 13 Feb 2021 17:58:02 UTC

Severity: normal

Found in version 28.0.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Forwarded to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99126

Full log


View this message in rfc822 format

From: David Malcolm <dmalcolm <at> redhat.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 46495 <at> debbugs.gnu.org, andrewjmoreton <at> gmail.com, akrl <at> sdf.org
Subject: bug#46495: 28.0.50; [native-comp] Build fails for 32bit --with-wide-int
Date: Wed, 31 Mar 2021 09:03:33 -0400
On Wed, 2021-03-31 at 11:13 +0300, Eli Zaretskii wrote:
> > Date: Tue, 30 Mar 2021 12:06:38 +0300
> > From: Eli Zaretskii <eliz <at> gnu.org>
> > Cc: akrl <at> sdf.org, andrewjmoreton <at> gmail.com, 46495 <at> debbugs.gnu.org
> > 
> >  3) I see in my temporary directory subdirectories, created when I
> > run
> >     the example program, with files fake.s and fake.so.  Are they
> >     supposed to be left there, or are they supposed to be deleted
> >     when the program exits?
> 
> These temporary files behave strangely, to say the least.  Just
> running the tut01-hello-world example program produces a new
> temporary
> directory each time, and deposits a fake.so file there.  If I run a
> variant of that which I built after adding
> 
>   gcc_jit_context_set_bool_option (
>                                    ctxt,
>                                    GCC_JIT_BOOL_OPTION_DEBUGINFO,
>                                    1);
> 
> then the temporary directory isn't created, or maybe it's deleted
> when
> the program exits.  I think the latter is the case, because the
> directory is visible if I step through the program with a debugger,
> but disappears when the program exits.
> 
> David, what's the story with these temporary directories?

They're meant to be cleaned up automatically by libgccjit: on
gcc_jit_result_release for a successful compilation, or at the end of
gcc_jit_context_compile* for a failed compilation.

The removal code is in gcc::jit::tempdir::~tempdir in gcc/jit/jit-
tempdir.c, maybe there's a bug there? (perhaps only affecting Windows?)
It calls unlink on everything it "knows" about, and them rmdir on the
directory.  I see now that I'm not checking for errors on those unlink
and rmdir calls.

Is the code setting GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES to true,
perhaps?  That forcibly keeps them around:
  https://gcc.gnu.org/onlinedocs/jit/topics/contexts.html#c.GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES


Dave





This bug report was last modified 4 years and 43 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.