diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/FrameworkTest.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/FrameworkTest.kt
index 5ddf48e..5ed8959 100644
--- a/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/FrameworkTest.kt
+++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/test/blackbox/FrameworkTest.kt
@@ -113,9 +113,6 @@
 
     @Test
     fun testStdlib() {
-        // KT-70120: TODO Re-enable this test and fix
-        Assumptions.assumeTrue(testRunSettings.get<TestMode>() == TestMode.TWO_STAGE_MULTI_MODULE)
-
         val testName = "stdlib"
         val testCase = generateObjCFramework(testName)
         compileAndRunSwift(testName, testCase)
@@ -123,9 +120,6 @@
 
     @Test
     fun testMultipleFrameworks() {
-        // KT-70120: TODO Re-enable this test and fix
-        Assumptions.assumeTrue(testRunSettings.get<TestMode>() == TestMode.TWO_STAGE_MULTI_MODULE)
-
         // This test might fail with dynamic caches until https://youtrack.jetbrains.com/issue/KT-34262 is fixed
         val checks = TestRunChecks.Default(testRunSettings.get<Timeouts>().executionTimeout)
         testMultipleFrameworksImpl("multiple", emptyList(), checks)
@@ -133,9 +127,6 @@
 
     @Test
     fun testMultipleFrameworksStatic() {
-        // KT-70120: TODO Re-enable this test and fix
-        Assumptions.assumeTrue(testRunSettings.get<TestMode>() == TestMode.TWO_STAGE_MULTI_MODULE)
-
         // https://youtrack.jetbrains.com/issue/KT-67572
         Assumptions.assumeFalse(testRunSettings.get<ThreadStateChecker>() == ThreadStateChecker.ENABLED)
 
@@ -145,9 +136,6 @@
 
     @Test
     fun testMultipleFrameworksStaticFailsWithStaticCaches() {
-        // KT-70120: TODO Re-enable this test and fix
-        Assumptions.assumeTrue(testRunSettings.get<TestMode>() == TestMode.TWO_STAGE_MULTI_MODULE)
-
         // https://youtrack.jetbrains.com/issue/KT-67572
         Assumptions.assumeFalse(testRunSettings.get<ThreadStateChecker>() == ThreadStateChecker.ENABLED)
 
@@ -174,7 +162,9 @@
                 framework1Dir.resolve("test.kt"),
                 sharedDir.resolve("shared.kt"),
             ),
-            freeCompilerArgs = TestCompilerArgs(freeCompilerArgs + "-Xbinary=bundleId=$moduleNameFirst"),
+            freeCompilerArgs = TestCompilerArgs(
+                freeCompilerArgs + "-module-name" + moduleNameFirst + "-Xbinary=bundleId=$moduleNameFirst"
+            ),
             checks = checks,
         )
         testCompilationFactory.testCaseToObjCFrameworkCompilation(testCase1, testRunSettings).result.assertSuccess()
@@ -187,7 +177,9 @@
                 framework2Dir.resolve("second.kt"),
                 framework2Dir.resolve("test.kt"),
                 sharedDir.resolve("shared.kt"),
-            ), freeCompilerArgs = TestCompilerArgs(freeCompilerArgs + "-Xbinary=bundleId=$moduleNameSecond")
+            ), freeCompilerArgs = TestCompilerArgs(
+                freeCompilerArgs + "-module-name" + moduleNameSecond + "-Xbinary=bundleId=$moduleNameSecond"
+            )
         )
         testCompilationFactory.testCaseToObjCFrameworkCompilation(testCase2, testRunSettings).result.assertSuccess()
 
@@ -520,7 +512,9 @@
             extras,
             moduleName,
             listOf(testSuiteDir.resolve(name).resolve("$name.kt")),
-            TestCompilerArgs(testCompilerArgs + listOf("-Xbinary=bundleId=$name")),
+            TestCompilerArgs(
+                testCompilerArgs + listOf("-module-name", moduleName, "-Xbinary=bundleId=$name")
+            ),
             givenDependencies,
             checks = checks,
         )
