Support builds configured with a separate --bindir

* src/emacs.c (load_pdump): Don't overwrite the leading
directories of the Emacs executable just because the pdumper file
was not found in the expected directory relative to the binary.
This is needed to support builds with a separate --bindir
configure-time option and native-compilation.  (Bug#55741)
This commit is contained in:
Eli Zaretskii 2022-06-20 19:04:06 +03:00
parent cf4c204df8
commit 2eb738f2b8

View file

@ -940,20 +940,24 @@ load_pdump (int argc, char **argv)
sprintf (dump_file, "%s%c%s%s",
path_exec, DIRECTORY_SEP, argv0_base, suffix);
#if !defined (NS_SELF_CONTAINED)
/* Assume the Emacs binary lives in a sibling directory as set up by
the default installation configuration. */
const char *go_up = "../../../../bin/";
needed += (strip_suffix ? strlen (strip_suffix) : 0)
- strlen (suffix) + strlen (go_up);
if (exec_bufsize < needed)
if (!(emacs_executable && *emacs_executable))
{
xfree (emacs_executable);
emacs_executable = xpalloc (NULL, &exec_bufsize, needed - exec_bufsize,
-1, 1);
/* If we didn't find the Emacs binary, assume that it lives in a
sibling directory as set up by the default installation
configuration. */
const char *go_up = "../../../../bin/";
needed += (strip_suffix ? strlen (strip_suffix) : 0)
- strlen (suffix) + strlen (go_up);
if (exec_bufsize < needed)
{
xfree (emacs_executable);
emacs_executable = xpalloc (NULL, &exec_bufsize,
needed - exec_bufsize, -1, 1);
}
sprintf (emacs_executable, "%s%c%s%s%s",
path_exec, DIRECTORY_SEP, go_up, argv0_base,
strip_suffix ? strip_suffix : "");
}
sprintf (emacs_executable, "%s%c%s%s%s",
path_exec, DIRECTORY_SEP, go_up, argv0_base,
strip_suffix ? strip_suffix : "");
#endif
result = pdumper_load (dump_file, emacs_executable);