Skip to content

Commit a67d780

Browse files
committed
Update the list of p/invokes, slight generated code changes
1 parent 3952d08 commit a67d780

File tree

4 files changed

+1142
-977
lines changed

4 files changed

+1142
-977
lines changed

src/native/pinvoke-override/generate-pinvoke-tables.cc

Lines changed: 63 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,44 @@ const std::vector<std::string> internal_pinvoke_names = {
8484
};
8585

8686
const std::vector<std::string> dotnet_pinvoke_names = {
87+
// libSystem.Globalization.Native.so
88+
"GlobalizationNative_ChangeCase",
89+
"GlobalizationNative_ChangeCaseInvariant",
90+
"GlobalizationNative_ChangeCaseTurkish",
91+
"GlobalizationNative_CloseSortHandle",
92+
"GlobalizationNative_CompareString",
93+
"GlobalizationNative_EndsWith",
94+
"GlobalizationNative_EnumCalendarInfo",
95+
"GlobalizationNative_GetCalendarInfo",
96+
"GlobalizationNative_GetCalendars",
97+
"GlobalizationNative_GetDefaultLocaleName",
98+
"GlobalizationNative_GetICUVersion",
99+
"GlobalizationNative_GetJapaneseEraStartDate",
100+
"GlobalizationNative_GetLatestJapaneseEra",
101+
"GlobalizationNative_GetLocaleInfoGroupingSizes",
102+
"GlobalizationNative_GetLocaleInfoInt",
103+
"GlobalizationNative_GetLocaleInfoString",
104+
"GlobalizationNative_GetLocaleName",
105+
"GlobalizationNative_GetLocales",
106+
"GlobalizationNative_GetLocaleTimeFormat",
107+
"GlobalizationNative_GetSortHandle",
108+
"GlobalizationNative_GetSortKey",
109+
"GlobalizationNative_GetSortVersion",
110+
"GlobalizationNative_GetTimeZoneDisplayName",
111+
"GlobalizationNative_IanaIdToWindowsId",
112+
"GlobalizationNative_IndexOf",
113+
"GlobalizationNative_InitICUFunctions",
114+
"GlobalizationNative_InitOrdinalCasingPage",
115+
"GlobalizationNative_IsNormalized",
116+
"GlobalizationNative_IsPredefinedLocale",
117+
"GlobalizationNative_LastIndexOf",
118+
"GlobalizationNative_LoadICU",
119+
"GlobalizationNative_NormalizeString",
120+
"GlobalizationNative_StartsWith",
121+
"GlobalizationNative_ToAscii",
122+
"GlobalizationNative_ToUnicode",
123+
"GlobalizationNative_WindowsIdToIanaId",
124+
87125
// libSystem.IO.Compression.Native.so
88126
"BrotliDecoderCreateInstance",
89127
"BrotliDecoderDecompress",
@@ -117,11 +155,9 @@ const std::vector<std::string> dotnet_pinvoke_names = {
117155
"CompressionNative_Deflate",
118156
"CompressionNative_DeflateEnd",
119157
"CompressionNative_DeflateInit2_",
120-
"CompressionNative_DeflateReset",
121158
"CompressionNative_Inflate",
122159
"CompressionNative_InflateEnd",
123160
"CompressionNative_InflateInit2_",
124-
"CompressionNative_InflateReset",
125161

126162
// libSystem.Native.so
127163
"SystemNative_Abort",
@@ -140,6 +176,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
140176
"SystemNative_CloseSocketEventPort",
141177
"SystemNative_ConfigureTerminalForChildProcess",
142178
"SystemNative_Connect",
179+
"SystemNative_Connectx",
143180
"SystemNative_ConvertErrorPalToPlatform",
144181
"SystemNative_ConvertErrorPlatformToPal",
145182
"SystemNative_CopyFile",
@@ -210,7 +247,6 @@ const std::vector<std::string> dotnet_pinvoke_names = {
210247
"SystemNative_GetHostName",
211248
"SystemNative_GetIcmpv4GlobalStatistics",
212249
"SystemNative_GetIcmpv6GlobalStatistics",
213-
"SystemNative_GetIPSocketAddressSizes",
214250
"SystemNative_GetIPv4Address",
215251
"SystemNative_GetIPv4GlobalStatistics",
216252
"SystemNative_GetIPv4MulticastOption",
@@ -227,7 +263,6 @@ const std::vector<std::string> dotnet_pinvoke_names = {
227263
"SystemNative_GetOSArchitecture",
228264
"SystemNative_GetPeerID",
229265
"SystemNative_GetPeerName",
230-
"SystemNative_GetPeerUserName",
231266
"SystemNative_GetPid",
232267
"SystemNative_GetPlatformSignalNumber",
233268
"SystemNative_GetPort",
@@ -241,6 +276,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
241276
"SystemNative_GetRLimit",
242277
"SystemNative_GetSid",
243278
"SystemNative_GetSignalForBreak",
279+
"SystemNative_GetSocketAddressSizes",
244280
"SystemNative_GetSocketErrorOption",
245281
"SystemNative_GetSocketType",
246282
"SystemNative_GetSockName",
@@ -249,7 +285,9 @@ const std::vector<std::string> dotnet_pinvoke_names = {
249285
"SystemNative_GetSystemTimeAsTicks",
250286
"SystemNative_GetTcpGlobalStatistics",
251287
"SystemNative_GetTimestamp",
288+
"SystemNative_GetTimeZoneData",
252289
"SystemNative_GetUdpGlobalStatistics",
290+
"SystemNative_GetUInt64OSThreadId",
253291
"SystemNative_GetUnixRelease",
254292
"SystemNative_GetUnixVersion",
255293
"SystemNative_GetWindowSize",
@@ -289,6 +327,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
289327
"SystemNative_MkNod",
290328
"SystemNative_MksTemps",
291329
"SystemNative_MMap",
330+
"SystemNative_MProtect",
292331
"SystemNative_MSync",
293332
"SystemNative_MUnmap",
294333
"SystemNative_Open",
@@ -312,6 +351,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
312351
"SystemNative_RealPath",
313352
"SystemNative_Receive",
314353
"SystemNative_ReceiveMessage",
354+
"SystemNative_ReceiveSocketError",
315355
"SystemNative_RegisterForSigChld",
316356
"SystemNative_Rename",
317357
"SystemNative_RmDir",
@@ -348,6 +388,8 @@ const std::vector<std::string> dotnet_pinvoke_names = {
348388
"SystemNative_ShmUnlink",
349389
"SystemNative_Shutdown",
350390
"SystemNative_SNPrintF",
391+
"SystemNative_SNPrintF_1I",
392+
"SystemNative_SNPrintF_1S",
351393
"SystemNative_Socket",
352394
"SystemNative_Stat",
353395
"SystemNative_StdinReady",
@@ -359,6 +401,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
359401
"SystemNative_SysLog",
360402
"SystemNative_TryChangeSocketEventRegistration",
361403
"SystemNative_TryGetIPPacketInformation",
404+
"SystemNative_TryGetUInt32OSThreadId",
362405
"SystemNative_UninitializeConsoleAfterRead",
363406
"SystemNative_Unlink",
364407
"SystemNative_UTimensat",
@@ -434,6 +477,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
434477
"AndroidCryptoNative_GetECKeyParameters",
435478
"AndroidCryptoNative_GetRsaParameters",
436479
"AndroidCryptoNative_NewGlobalReference",
480+
"AndroidCryptoNative_Pbkdf2",
437481
"AndroidCryptoNative_RegisterRemoteCertificateValidationCallback",
438482
"AndroidCryptoNative_RsaCreate",
439483
"AndroidCryptoNative_RsaDestroy",
@@ -448,6 +492,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
448492
"AndroidCryptoNative_SSLGetSupportedProtocols",
449493
"AndroidCryptoNative_SSLStreamCreate",
450494
"AndroidCryptoNative_SSLStreamCreateWithCertificates",
495+
"AndroidCryptoNative_SSLStreamCreateWithKeyStorePrivateKeyEntry",
451496
"AndroidCryptoNative_SSLStreamGetApplicationProtocol",
452497
"AndroidCryptoNative_SSLStreamGetCipherSuite",
453498
"AndroidCryptoNative_SSLStreamGetPeerCertificate",
@@ -479,13 +524,17 @@ const std::vector<std::string> dotnet_pinvoke_names = {
479524
"AndroidCryptoNative_X509DecodeCollection",
480525
"AndroidCryptoNative_X509Encode",
481526
"AndroidCryptoNative_X509ExportPkcs7",
527+
"AndroidCryptoNative_X509GetCertificateForPrivateKeyEntry",
482528
"AndroidCryptoNative_X509GetContentType",
529+
"AndroidCryptoNative_X509IsKeyStorePrivateKeyEntry",
483530
"AndroidCryptoNative_X509PublicKey",
484531
"AndroidCryptoNative_X509StoreAddCertificate",
485532
"AndroidCryptoNative_X509StoreAddCertificateWithPrivateKey",
486533
"AndroidCryptoNative_X509StoreContainsCertificate",
534+
"AndroidCryptoNative_X509StoreDeleteEntry",
487535
"AndroidCryptoNative_X509StoreEnumerateCertificates",
488536
"AndroidCryptoNative_X509StoreEnumerateTrustedCertificates",
537+
"AndroidCryptoNative_X509StoreGetPrivateKeyEntry",
489538
"AndroidCryptoNative_X509StoreOpenDefault",
490539
"AndroidCryptoNative_X509StoreRemoveCertificate",
491540
"CryptoNative_EnsureOpenSslInitialized",
@@ -501,6 +550,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
501550
"CryptoNative_EvpDigestReset",
502551
"CryptoNative_EvpDigestUpdate",
503552
"CryptoNative_EvpMd5",
553+
"CryptoNative_EvpMdCtxCopyEx",
504554
"CryptoNative_EvpMdCtxCreate",
505555
"CryptoNative_EvpMdCtxDestroy",
506556
"CryptoNative_EvpMdSize",
@@ -517,6 +567,7 @@ const std::vector<std::string> dotnet_pinvoke_names = {
517567
"CryptoNative_HmacOneShot",
518568
"CryptoNative_HmacReset",
519569
"CryptoNative_HmacUpdate",
570+
"Java_net_dot_android_crypto_DotnetProxyTrustManager_verifyRemoteCertificate",
520571
};
521572

522573
template<typename Hash>
@@ -541,14 +592,14 @@ struct PinvokeEntry
541592

542593
void print (std::ostream& os, std::string comment, std::string variable_name, auto const& seq)
543594
{
544-
os << "//" << comment << '\n';
545-
os << "static PinvokeEntry " << variable_name << "[] = {" << std::endl;
595+
os << "\t//" << comment << '\n';
596+
os << "\tstd::array<PinvokeEntry, " << std::dec << seq.size () << "> " << variable_name << " {{" << std::endl;
546597

547598
for (auto const& elem : seq) {
548-
os << "\t{" << elem << "}," << std::endl;
599+
os << "\t\t{" << elem << "}," << std::endl;
549600
}
550601

551-
os << "};" << std::endl;
602+
os << "\t}};" << std::endl << std::endl;
552603
}
553604

554605
template<typename Hash>
@@ -601,6 +652,7 @@ void write_library_name_hashes (Hash (*hasher)(const char*, size_t), std::ostrea
601652
write_library_name_hash (hasher, output, "libSystem.Native", "system_native");
602653
write_library_name_hash (hasher, output, "libSystem.IO.Compression.Native", "system_io_compression_native");
603654
write_library_name_hash (hasher, output, "libSystem.Security.Cryptography.Native.Android", "system_security_cryptography_native_android");
655+
write_library_name_hash (hasher, output, "libSystem.Globalization.Native", "system_globalization_native");
604656
}
605657

606658
int main (int argc, char **argv)
@@ -655,8 +707,10 @@ int main (int argc, char **argv)
655707
output << "// A compiler with support for C++20 ranges is required" << std::endl;
656708
output << "//" << std::endl << std::endl;
657709

710+
output << "#include <array>" << std::endl;
658711
output << "#include <cstdint>" << std::endl << std::endl;
659712

713+
output << "namespace {" << std::endl;
660714
output << "#if INTPTR_MAX == INT64_MAX" << std::endl;
661715
print (output, "64-bit internal p/invoke table", "internal_pinvokes", internal_pinvokes64);
662716
print (output, "64-bit DotNet p/invoke table", "dotnet_pinvokes", dotnet_pinvokes64);
@@ -674,6 +728,7 @@ int main (int argc, char **argv)
674728

675729
output << "constexpr size_t internal_pinvokes_count = " << std::dec << std::noshowbase << internal_pinvoke_names.size () << ";" << std::endl;
676730
output << "constexpr size_t dotnet_pinvokes_count = " << std::dec << std::noshowbase << dotnet_pinvoke_names.size () << ";" << std::endl;
731+
output << "} // end of anonymous namespace" << std::endl;
677732

678733
return have_collisions ? 1 : 0;
679734
}

src/native/pinvoke-override/pinvoke-override-api.hh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ namespace xamarin::android {
8585
static inline void *system_native_library_handle = nullptr;
8686
static inline void *system_security_cryptography_native_android_library_handle = nullptr;
8787
static inline void *system_io_compression_native_library_handle = nullptr;
88+
static inline void *system_globalization_native_library_handle = nullptr;
8889
#endif
8990
};
9091
}

0 commit comments

Comments
 (0)