[Issue 20220] pragma(crt_constructor) does not work with clang 9

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri Nov 15 06:58:26 UTC 2019


https://issues.dlang.org/show_bug.cgi?id=20220

Dlang Bot <dlang-bot at dlang.rocks> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #9 from Dlang Bot <dlang-bot at dlang.rocks> ---
dlang/dmd pull request #10562 "Fix Issue 20220 - Use .init_array/.fini_array
instead of .ctors/.dtors on !TARGET_OPENBSD" was merged into master:

- 082a9f459c863120929b86f1559a5e75fd2da60a by Fangrui Song:
  Fix Issue 20220 - Use .init_array/.fini_array instead of .ctors/.dtors on
!TARGET_OPENBSD

  Global constructors are placed in .ctors sections. lld does not convert
  .ctors to .init_array (https://bugs.llvm.org/show_bug.cgi?id=31224).
  The linked executable will not run constructors on most modern Linux
  distributions.

  GNU ld and gold convert .ctors/.dtors to .init_array/.fini_array by
  default, so programs linked by them are fine.

  Fix this by using .init_array/.fini_array . Linux, DragonFlyBSD, FreeBSD
  and Solaris have supported .init_array for many years. The OpenBSD
  support is relatively new (Aug 2016), so only use .ctors/.dtors on
  OpenBSD.

https://github.com/dlang/dmd/pull/10562

--


More information about the Digitalmars-d-bugs mailing list