gccgo binaries cannot be stripped
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gccgo-6 (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
golang (Debian) |
Fix Released
|
Unknown
|
|||
golang (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Binaries built with gccgo-4.9 in utopic cannot be stripped at all. Doing so causes the binaries to be un-runnable due to lack of debugging symbols:
$ ./debian/
2014/05/09 19:10:41 Connection error: Unknown address type
$ DH_VERBOSE=1 dh_strip -a
strip --remove-
strip --remove-
$ ./debian/
no debug info in ELF executable errno -1
fatal error: no debug info in ELF executable
runtime stack:
no debug info in ELF executable errno -1
panic during panic
$
This problem does not manifest when building with golang-gc.
The problem is also reproducible when calling 'strip --strip-debug'; although this removes substantially fewer symbols, there are still some go-related symbols that are removed according to objdump -x:
@@ -871,7 +853,6 @@
0000000000471380 l O .data 00000000000002f8 C.382
000000000044e520 l O .rodata 0000000000000028 C191
0000000000471680 l O .data 0000000000000028 C.383
-0000000000000000 l df *ABS* 0000000000000000 contenttype.go
00000000004513b0 l O .rodata 0000000000000010 C0
00000000004513c0 l O .rodata 0000000000000010 C1
00000000004513d0 l O .rodata 0000000000000010 C2
But even passing --keep-file-symbols to strip does not give me a working binary.
So it looks like gccgo has a hard dependency on the contents of the debugging sections of the binary, which gc does not.
summary: |
- binaries built with gccgo-4.9 cannot be stripped + Go binaries cannot be stripped |
Changed in golang (Debian): | |
status: | Unknown → Fix Released |
Changed in gccgo-6 (Ubuntu): | |
status: | New → Fix Released |
You've retitled this bug report to say that go binaries cannot be stripped, but please note that in my report I stated that debugging symbols *can* be removed from binaries built with GC.