Bug 4758 – --gc-sections breaks exception handling on Linux
Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
Other
OS
Linux
Creation time
2010-08-29T11:07:00Z
Last change time
2015-06-09T05:11:50Z
Assigned to
nobody
Creator
nfxjfg
Comments
Comment #0 by nfxjfg — 2010-08-29T11:07:50Z
$ cat exc.d
void main() {
try {
throw new Exception("muh");
} catch (Exception e) {
}
}
$ dmd exc.d -L--gc-sections -L--print-gc-sections 2>&1 |grep exc
/usr/bin/ld: Removing unused section '.deh_eh' in file 'exc.o'
/usr/bin/ld: Removing unused section '.tdata' in file 'exc.o'
$ ./exc
unhandled exception
This "unhandled exception" thing is printed when the D runtime (Tango; based on Phobos1 runtime) doesn't find any exception records. It seems --gc-sections removes all D sections (including the bottom most exception handler in the runtime). It seems the linker removes all entries from section .deh_eh.
I wonder if this can be fixed. It works in g++.
Comment #1 by braddr — 2010-08-29T12:35:37Z
*** This issue has been marked as a duplicate of issue 879 ***