Re: [go-nuts] Seperate debuginfo?

2020-08-13 Thread 'Ethan Pailes' via golang-nuts
I've worked on this some more now, and it turns out that while directly 
executing the result of `upx -9` breaks,
you can use `upx --exact -9` to compress your exe and then `upx -d` to 
decompress it later. The decompressed
executable works with the .debug file.

On Wednesday, August 12, 2020 at 3:56:13 PM UTC-4, Ethan Pailes wrote:
>
> Wow, that works perfectly! Thank you so much!
>
> The --add-gnu-debuglink=x.debug bit was what I was missing.
>
> Unfortunately, it doesn't seem like delve supports separate debug info 
> yet, so I'll have to stick with gdb in these situations.
>
> Also, it seems that upx[1] breaks the debuglink, which doesn't seem 
> entirely unreasonable (I'm mostly including this tidbit in case someone 
> else in a similar situation to mine finds this post)
>
> [1]: https://upx.github.io/
>
> On Wednesday, August 12, 2020 at 12:26:24 PM UTC-4, Ian Lance Taylor wrote:
>>
>> On Wed, Aug 12, 2020 at 8:43 AM ethan.pailes via golang-nuts 
>>  wrote: 
>> > 
>> > The C ecosystem allows one to generate a separate file containing debug 
>> info so that you can initially install a stripped library or binary and 
>> then only pull in the debug info as needed. I'm interested in doing the 
>> same for go, but I have not been able to find an equivalent to the 
>> -gsplit-dwarf compiler flag. I've tried using `objcopy --only-keep-debug` 
>> to generate a .debug file, but it didn't seem to take. 
>> > 
>> > Has anyone else gone down this road? I would also be glad to hear that 
>> this is just known not to be possible at this point so that I can stop 
>> digging. 
>> > 
>> > For a little context as to why I want to do this, we are using go on 
>> embedded devices and we would like to keep our payload size down for OTA 
>> updates so we would rather avoid shipping debug info that will only be used 
>> rarely. 
>>
>> I would expect the objcopy approach to work. 
>>
>> go build x 
>> objcopy --only-keep-debug x x.debug 
>> objcopy --strip-debug --add-gnu-debuglink=x.debug x x.stripped 
>>
>> Where does that go wrong? 
>>
>> Ian 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/ad61979a-6801-48ea-8bcb-58f3c7260e21o%40googlegroups.com.


Re: [go-nuts] Seperate debuginfo?

2020-08-12 Thread 'Ethan Pailes' via golang-nuts
Wow, that works perfectly! Thank you so much!

The --add-gnu-debuglink=x.debug bit was what I was missing.

Unfortunately, it doesn't seem like delve supports separate debug info yet, 
so I'll have to stick with gdb in these situations.

Also, it seems that upx[1] breaks the debuglink, which doesn't seem 
entirely unreasonable (I'm mostly including this tidbit in case someone 
else in a similar situation to mine finds this post)

[1]: https://upx.github.io/

On Wednesday, August 12, 2020 at 12:26:24 PM UTC-4, Ian Lance Taylor wrote:
>
> On Wed, Aug 12, 2020 at 8:43 AM ethan.pailes via golang-nuts 
> > wrote: 
> > 
> > The C ecosystem allows one to generate a separate file containing debug 
> info so that you can initially install a stripped library or binary and 
> then only pull in the debug info as needed. I'm interested in doing the 
> same for go, but I have not been able to find an equivalent to the 
> -gsplit-dwarf compiler flag. I've tried using `objcopy --only-keep-debug` 
> to generate a .debug file, but it didn't seem to take. 
> > 
> > Has anyone else gone down this road? I would also be glad to hear that 
> this is just known not to be possible at this point so that I can stop 
> digging. 
> > 
> > For a little context as to why I want to do this, we are using go on 
> embedded devices and we would like to keep our payload size down for OTA 
> updates so we would rather avoid shipping debug info that will only be used 
> rarely. 
>
> I would expect the objcopy approach to work. 
>
> go build x 
> objcopy --only-keep-debug x x.debug 
> objcopy --strip-debug --add-gnu-debuglink=x.debug x x.stripped 
>
> Where does that go wrong? 
>
> Ian 
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/b6d292e8-8dd6-432b-8f99-6ed87ae0d321o%40googlegroups.com.