Subject: bug#65455: 30.0.50; Disassemble: error with "free-standing" native compiled function

From: Andrea Corallo <[email-masked]>
Date: Sun, 27 Aug 2023 09:34:47 -0400

Eli Zaretskii <[email-masked]> writes:

>> From: Andrea Corallo <[email-masked]>
>> Cc: [email-masked],  [email-masked]
>> Date: Fri, 25 Aug 2023 10:11:58 -0400
>> 
>> Eli Zaretskii <[email-masked]> writes:
>> 
>> > I think we are mis-communicating.  What I meant is something like this:
>> >
>> >   . add a new optional argument to native-compile that would prevent
>> >     it from deleting the .eln file
>> >   . add a new function disassemble-native, which will call
>> >     native-compile with this new argument, perform disassembly, and
>> >     then delete the file
>> 
>> I see thanks for clarifying.
>> 
>> I'm not sure I like this option, reason is that I typically want to see
>> the disassembly of the already installed function rather than triggering
>> a new compilation.  Any change in the environment can lead to a
>> different output so I think is important to inspect what was produced
>> when it was commanded, no?
>
> If we want to support changes in the environment, I think it would be
> an impossibly high bar for such a minor feature.
>
> So perhaps the following would be enough:
>
>   . find the source .el file of the compiled function

That's the tricky part, this bug report is about compiling and
disassembling a function with no source file:

(defun foo (a b)      
  (list a b))         
                      
(native-compile 'foo) 
(disassemble 'foo)

In the moment we compile foo we loose it's original definition and we
can compile it twice :/

Thanks

  Andrea