|
@@ -409,12 +409,22 @@ void MCObjectFileInfo::InitCOFFMCObjectFileInfo(Triple T) {
|
|
|
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
|
COFF::IMAGE_SCN_MEM_READ,
|
|
|
SectionKind::getReadOnly());
|
|
|
- StaticCtorSection =
|
|
|
- Ctx->getCOFFSection(".ctors",
|
|
|
- COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
|
- COFF::IMAGE_SCN_MEM_READ |
|
|
|
- COFF::IMAGE_SCN_MEM_WRITE,
|
|
|
- SectionKind::getDataRel());
|
|
|
+ if (T.getOS() == Triple::Win32) {
|
|
|
+ StaticCtorSection =
|
|
|
+ Ctx->getCOFFSection(".CRT$XCU",
|
|
|
+ COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
|
+ COFF::IMAGE_SCN_MEM_READ,
|
|
|
+ SectionKind::getReadOnly());
|
|
|
+ } else {
|
|
|
+ StaticCtorSection =
|
|
|
+ Ctx->getCOFFSection(".ctors",
|
|
|
+ COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|
|
|
+ COFF::IMAGE_SCN_MEM_READ |
|
|
|
+ COFF::IMAGE_SCN_MEM_WRITE,
|
|
|
+ SectionKind::getDataRel());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
StaticDtorSection =
|
|
|
Ctx->getCOFFSection(".dtors",
|
|
|
COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
|