[macos] Add unsupported force-unsupported-linker option to mmp (#2449)
- This option disables the check that prevents linking on non-modern profiles - Due to System.Configuration, this is unsafe in general. It may cause assorted runtime crashes.
This commit is contained in:
Родитель
ea73f99112
Коммит
35ae8318cd
|
@ -715,5 +715,19 @@ namespace Xamarin.MMP.Tests
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void UnifiedFull_AllowsLinking_WithForceFlag ()
|
||||||
|
{
|
||||||
|
RunMMPTest (tmpDir => {
|
||||||
|
TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) {
|
||||||
|
XM45 = true,
|
||||||
|
CSProjConfig = "<LinkMode>Full</LinkMode>"
|
||||||
|
};
|
||||||
|
TI.TestUnifiedExecutable (test, shouldFail: true);
|
||||||
|
|
||||||
|
test.CSProjConfig = test.CSProjConfig + "<MonoBundlingExtraArgs>--force-unsupported-linker</MonoBundlingExtraArgs>";
|
||||||
|
TI.TestUnifiedExecutable (test);
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,6 +90,7 @@ namespace Xamarin.Bundler {
|
||||||
static LinkerOptions linker_options;
|
static LinkerOptions linker_options;
|
||||||
static bool? disable_lldb_attach = null;
|
static bool? disable_lldb_attach = null;
|
||||||
static string machine_config_path = null;
|
static string machine_config_path = null;
|
||||||
|
static bool bypass_linking_checks = false;
|
||||||
|
|
||||||
static bool arch_set = false;
|
static bool arch_set = false;
|
||||||
static string arch = "i386";
|
static string arch = "i386";
|
||||||
|
@ -348,6 +349,7 @@ namespace Xamarin.Bundler {
|
||||||
{ "http-message-handler=", "Specify the default HTTP Message Handler", v => { http_message_provider = v; }},
|
{ "http-message-handler=", "Specify the default HTTP Message Handler", v => { http_message_provider = v; }},
|
||||||
{ "extension", "Specifies an app extension", v => is_extension = true },
|
{ "extension", "Specifies an app extension", v => is_extension = true },
|
||||||
{ "allow-unsafe-gac-resolution", "Allow MSBuild to resolve from the System GAC", v => {} , true }, // Used in Xamarin.Mac.XM45.targets and must be ignored here. Hidden since it is a total hack. If you can use it, you don't need support
|
{ "allow-unsafe-gac-resolution", "Allow MSBuild to resolve from the System GAC", v => {} , true }, // Used in Xamarin.Mac.XM45.targets and must be ignored here. Hidden since it is a total hack. If you can use it, you don't need support
|
||||||
|
{ "force-unsupported-linker", "Bypass safety checkes preventing unsupported linking options.", v => bypass_linking_checks = true , true }, // Undocumented option for a reason, You get to keep the pieces when it breaks
|
||||||
{ "disable-lldb-attach=", "Disable automatic lldb attach on crash", v => disable_lldb_attach = ParseBool (v, "disable-lldb-attach")},
|
{ "disable-lldb-attach=", "Disable automatic lldb attach on crash", v => disable_lldb_attach = ParseBool (v, "disable-lldb-attach")},
|
||||||
{ "machine-config=", "Custom machine.config file to copy into MonoBundle/mono/4.5/machine.config. Pass \"\" to copy in a valid \"empty\" config file.", v => machine_config_path = v },
|
{ "machine-config=", "Custom machine.config file to copy into MonoBundle/mono/4.5/machine.config. Pass \"\" to copy in a valid \"empty\" config file.", v => machine_config_path = v },
|
||||||
{ "runregistrar:", "Runs the registrar on the input assembly and outputs a corresponding native library.",
|
{ "runregistrar:", "Runs the registrar on the input assembly and outputs a corresponding native library.",
|
||||||
|
@ -482,7 +484,7 @@ namespace Xamarin.Bundler {
|
||||||
throw new Exception ("IsClassic/IsUnified/IsUnifiedMobile/IsUnifiedFullSystemFramework/IsUnifiedFullXamMacFramework logic regression");
|
throw new Exception ("IsClassic/IsUnified/IsUnifiedMobile/IsUnifiedFullSystemFramework/IsUnifiedFullXamMacFramework logic regression");
|
||||||
|
|
||||||
ValidateXamarinMacReference ();
|
ValidateXamarinMacReference ();
|
||||||
if (IsUnifiedFullSystemFramework || IsUnifiedFullXamMacFramework) {
|
if (!bypass_linking_checks && (IsUnifiedFullSystemFramework || IsUnifiedFullXamMacFramework)) {
|
||||||
switch (App.LinkMode) {
|
switch (App.LinkMode) {
|
||||||
case LinkMode.None:
|
case LinkMode.None:
|
||||||
case LinkMode.Platform:
|
case LinkMode.Platform:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче