[Issue 24314] New: Linker flag `-L-dead_strip`strips `static this()` and `static ~this()`
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Mon Jan 1 16:07:55 UTC 2024
https://issues.dlang.org/show_bug.cgi?id=24314
Issue ID: 24314
Summary: Linker flag `-L-dead_strip`strips `static this()` and
`static ~this()`
Product: D
Version: D2
Hardware: x86_64
OS: Mac OS X
Status: NEW
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: codedan at hotmail.com
// file: test.d
//
// Problem description:
//
// When using the additional linker flag `-L-dead_strip`
// on macOS, executables produced by DMD strip
// static constructors + destructors.
// The program runs fine, but static init is silently removed.
//
// It does not happen with LDC - only with DMD on macOS (x64).
//
// The online compiler at run.dlang.org does not have the issue.
// The compiler option for the online compiler is: `-L-strip-all`
//
//
// [OK] output:
//
// Hi!
// Hello D
// Bye!
//
// [FAIL] output (static constructor/destructor not running):
//
// Hello D
//
// Results using DMD:
//
// [OK] dmd -run test.d
// [OK] dmd -release -run test.d
// [OK] dmd -debug -run test.d
//
// [FAIL] dmd -L-dead_strip -run test.d
// [FAIL] dmd -L-dead_strip -release -run test.d
// [FAIL] dmd -L-dead_strip -debug -run test.d
//
// Results using LDC:
//
// [OK] ldc2 --run test.d
// [OK] ldc2 --release --run test.d
// [OK] ldc2 --d-debug --run test.d
// [OK] ldc2 --d --run test.d
//
// [OK] ldc2 -L-dead_strip --run test.d
// [OK] ldc2 -L-dead_strip --release --run test.d
// [OK] ldc2 -L-dead_strip --d-debug --run test.d
// [OK] ldc2 -L-dead_strip --d --run test.d
//
import std.stdio : writeln;
void main() => writeln(" Hello D");
static this() => writeln("Hi!");
static ~this() => writeln("Bye!");
--
More information about the Digitalmars-d-bugs
mailing list