[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Emacs-diffs] master 0c94b84: * nt/inc/ms-w32.h (execve) [MINGW_W64]
Re: [Emacs-diffs] master 0c94b84: * nt/inc/ms-w32.h (execve) [MINGW_W64]: Make commentary more accurate.
Sun, 4 Sep 2016 12:34:20 +0200
Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0
Il 02/09/2016 08:53, Eli Zaretskii ha scritto:
From: Ken Brown <address@hidden>
Cc: Angelo Graziosi <address@hidden>
Date: Thu, 1 Sep 2016 15:57:00 -0400
On 9/1/2016 1:16 PM, Eli Zaretskii wrote:
+ However, using the prototype with intptr_t causes GCC to emit
+ warnings. Fortunately, execve is not used in the MinGW build, but
+ the code that references it is still compiled. */
Wouldn't it be easier to prevent that code from being compiled?
It would for the Windows build, but it would add one (actually more,
see below) #ifdef WINDOWSNT into the mainline code. AFAIR, Paul
(CC'ed) wanted to keep those to a minimum, so I preferred not to ifdef
away the code.
if I understand (in short) there is code compiled but not used.. Would
it better to exclude that code as Ken suggests, then?
May you comment?
I think the following would suffice:
@@ -146,6 +146,7 @@ disable_address_randomization (void)
/* Execute the program in FILE, with argument vector ARGV and environ
ENVP. Return an error number if unsuccessful. This is like execve
except it reenables ASLR in the executed program if necessary, and
@@ -170,6 +171,7 @@ emacs_exec_file (char const *file, char *const
*argv, char *const *envp)
+#endif /* not WINDOWSNT */
That whole function is not used on Windows, so if we are to do this,
the following fragment of main in emacs.c should also be ifdefed away:
/* True if address randomization interferes with memory allocation. */
# ifdef __PPC64__
bool disable_aslr = true;
bool disable_aslr = dumping;
if (disable_aslr && disable_address_randomization ())
/* Set this so the personality will be reverted before execs
after this one. */
/* Address randomization was enabled, but is now disabled.
Re-execute Emacs to get a clean slate. */
execvp (argv, argv);
/* If the exec fails, warn and then try anyway. */
If Paul doesn't mind (nor anyone else), we can certainly do that.