Debug info on macOS
David Malcolm
dmalcolm@redhat.com
Fri May 10 20:17:09 GMT 2024
On Fri, 2024-05-10 at 15:46 +0200, Gerd Möllmann wrote:
> Hi,
>
> I'm developing Emacs using its native compilation on macOS, which is
> based on libgccjit.
>
> In this context, I'm currently failing to get .eln files (= .so,
> .dylib,
> .dll depending on the platform) with debug info. This has probably
> its
> roots in the special handling of DWARF under macOS, a long-winded
> story
> leading to dSYM bundles...
>
> My question is: can I somehow configure libgccjit in a way that keeps
> the .o file that was used to produce the resulting .dylib, like it
> keeps/writes the various intermediate files that one can get?
>
> If that's possible, my hope would be to extract the debug info from
> the
> .o using dsymutil and use that with the .dylib.
[CCing Andrea Corallo for his Emacs expertise]
I confess I've not done any compilation on macOS and am not familiar
with the tools, formats and "special handling of DWARF under macOS" you
mention.
As I understand it, Emacs is using libgccjit to do ahead-of-time
compilation, presumably compiling the optimized ELisp code to machine
code as a shared library.
Is Emacs using gcc_jit_context_compile_to_file with
GCC_JIT_OUTPUT_KIND_DYNAMIC_LIBRARY, or is it doing something more
complicated?
If that's what it's doing, you might want to take a look
at playback::context::compile in gcc/jit-playback.cc (and try stepping
through it in the debugger). In particular, the
playback::compile_to_file::postprocess implementation of the
playback::context::postprocess vfunc is responsible for taking a .s in
a tempdir and turning it into the desired output. Perhaps there's some
macOS-specific special-casing needed there?
You might also find it useful to look at the overview of how
libgccjit's internals here:
https://gcc.gnu.org/onlinedocs/jit/internals/index.html#overview-of-code-structure
Hope this is helpful
Dave
More information about the Jit
mailing list