Skip to content

Update to mono 2017-04 branch#1960

Merged
rolfbjarne merged 43 commits intomasterfrom
mono-2017-04
May 29, 2017
Merged

Update to mono 2017-04 branch#1960
rolfbjarne merged 43 commits intomasterfrom
mono-2017-04

Conversation

@xmcclure
Copy link
Contributor

@xmcclure xmcclure commented Apr 4, 2017

No description provided.

@dnfclas
Copy link

dnfclas commented Apr 4, 2017

@xmcclure,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by .NET Foundation. We will now review your pull request.
Thanks,
.NET Foundation Pull Request Bot

@spouliot spouliot added the do-not-merge Do not merge this pull request label Apr 4, 2017
@monojenkins
Copy link
Contributor

Build failure

@rolfbjarne rolfbjarne added run-all-tests Run all our tests. enable-device-build Makes our build include device support (which we disable for simple PRs to speed them up) labels Apr 5, 2017
@monojenkins
Copy link
Contributor

Build failure

3 similar comments
@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

bgen must be executed with the system mono, not bmac-mobile-mono, and without
the MONO_PATH variable set.
@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

1 similar comment
@monojenkins
Copy link
Contributor

Build failure

@xmcclure
Copy link
Contributor Author

build

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

The new handling went in with mono/mono#4501.

I also noticed that WatchOS was missing a target for System.Drawing.Primitives.dll, so I added that.
@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build success

@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@rolfbjarne
Copy link
Member

build

@monojenkins
Copy link
Contributor

Build failure

@xmcclure
Copy link
Contributor Author

build

@monojenkins
Copy link
Contributor

Build failure

…uded in linked apps. Fixes #56307 and #56308.

System.dll is now completely linked away unless the app actually uses any
System.dll API.

This is the change that caused this to change: mono/mono@4960d5d

Previously the following types would always be kept by the linker:

```
$ monodis --typedef System.dll
Typedef Table
1: (null) (flist=1, mlist=1, flags=0x0, extends=0x0)
2: ObjCRuntime.INativeObject (flist=1, mlist=1, flags=0xa0, extends=0x0)
3: Mono.Net.CFObject (flist=1, mlist=2, flags=0x100000, extends=0x5)
4: Mono.Net.CFArray (flist=4, mlist=19, flags=0x100, extends=0xc)
5: Mono.Net.CFNumber (flist=5, mlist=32, flags=0x100100, extends=0xc)
6: Mono.Net.CFRange (flist=5, mlist=41, flags=0x100108, extends=0x25)
7: Mono.Net.CFString (flist=7, mlist=42, flags=0x100100, extends=0xc)
8: Mono.Net.CFData (flist=8, mlist=53, flags=0x100100, extends=0xc)
9: Mono.Net.CFDictionary (flist=8, mlist=63, flags=0x0, extends=0xc)
10: Mono.Net.CFMutableDictionary (flist=10, mlist=75, flags=0x100100, extends=0x24)
11: Mono.Net.CFUrl (flist=10, mlist=80, flags=0x100100, extends=0xc)
12: Mono.Net.CFRunLoop (flist=10, mlist=83, flags=0x100100, extends=0xc)
13: Mono.Net.CFBoolean (flist=10, mlist=94, flags=0x100, extends=0x5)
14: Mono.AppleTls.SecCertificate (flist=13, mlist=106, flags=0x100100, extends=0x5)
15: Mono.AppleTls.SecIdentity (flist=14, mlist=122, flags=0x100, extends=0x5)
16: Mono.AppleTls.SecIdentity/ImportOptions (flist=19, mlist=134, flags=0x100105, extends=0x5)
17: Mono.AppleTls.SecKey (flist=19, mlist=134, flags=0x100100, extends=0x5)
18: Mono.AppleTls.SecStatusCode (flist=21, mlist=141, flags=0x100, extends=0x69)
19: Mono.AppleTls.SecTrustResult (flist=395, mlist=141, flags=0x100, extends=0x69)
20: Mono.AppleTls.SecImportExport (flist=404, mlist=141, flags=0x100100, extends=0x5)
21: Mono.AppleTls.SecImportExport/<>c (flist=404, mlist=144, flags=0x102103, extends=0x5)
22: Mono.AppleTls.SecPolicy (flist=406, mlist=147, flags=0x100100, extends=0x5)
23: Mono.AppleTls.SecTrust (flist=407, mlist=154, flags=0x100100, extends=0x5)
24: System.Security.Cryptography.OidGroup (flist=408, mlist=174, flags=0x101, extends=0x69)
25: System.Security.Cryptography.Oid (flist=420, mlist=174, flags=0x100101, extends=0x5)
26: System.Security.Cryptography.CAPI (flist=423, mlist=176, flags=0x100180, extends=0x5)
27: System.Security.Cryptography.AsnEncodedData (flist=423, mlist=178, flags=0x100101, extends=0x5)
28: System.Security.Cryptography.X509Certificates.X509Utils (flist=424, mlist=179, flags=0x100100, extends=0x5)
29: System.Security.Cryptography.X509Certificates.PublicKey (flist=424, mlist=181, flags=0x100101, extends=0x5)
30: System.Security.Cryptography.X509Certificates.X509Certificate2 (flist=429, mlist=188, flags=0x102101, extends=0x51)
31: System.Security.Cryptography.X509Certificates.X509Certificate2Impl (flist=431, mlist=204, flags=0x100080, extends=0x55)
32: System.Security.Cryptography.X509Certificates.X509CertificateCollection (flist=431, mlist=209, flags=0x102101, extends=0x6d)
33: System.Security.Cryptography.X509Certificates.X509CertificateCollection/X509CertificateEnumerator (flist=431, mlist=212, flags=0x100102, extends=0x5)
34: System.Security.Cryptography.X509Certificates.X509Helper2 (flist=432, mlist=217, flags=0x100180, extends=0x5)
35: <PrivateImplementationDetails> (flist=432, mlist=218, flags=0x100, extends=0x5)
36: <PrivateImplementationDetails>/__StaticArrayInitTypeSize=9 (flist=433, mlist=219, flags=0x113, extends=0x25)
```

Some of the above types from System.dll implemented ObjCRuntime.INativeObject
(from System.dll), which our linker detected as implementing
ObjCRuntime.INativeObject (from Xamarin.iOS.dll), so these types were treated
as custom NSObject subclasses, and the MarkNSObjects linker step would mark
them (which would in turn cause all the other types in the list to be marked).

With that change, these types now implement ObjCRuntimeInternal.INativeObject,
and the linker does not treat them as custom NSObject subclasses anymore.

I think the new behavior is correct: these types do not actually inherit from
the real NSObject/INativeObject, so the linker should not treat them as such.

This may run into different bugs because the linker might now remove more
stuff than before, but that would be a different issue.

This means that the fix is to modify these tests accordingly.

https://bugzilla.xamarin.com/show_bug.cgi?id=56307
https://bugzilla.xamarin.com/show_bug.cgi?id=56308
@monojenkins
Copy link
Contributor

Build success

@monojenkins
Copy link
Contributor

Build success

@monojenkins
Copy link
Contributor

Build failure

2 similar comments
@monojenkins
Copy link
Contributor

Build failure

@monojenkins
Copy link
Contributor

Build failure

@rolfbjarne
Copy link
Member

The test failure is not a major issue, I can fix that after merging if needed.

@rolfbjarne rolfbjarne changed the title [Do not merge yet] Update to mono 2017-04 branch Update to mono 2017-04 branch May 29, 2017
@rolfbjarne rolfbjarne removed the do-not-merge Do not merge this pull request label May 29, 2017
@rolfbjarne rolfbjarne merged commit a6cf8c5 into master May 29, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enable-device-build Makes our build include device support (which we disable for simple PRs to speed them up) requires-qa-before-merge The pull request requires QA to approve it before it can be merged run-all-tests Run all our tests.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants