Imported Upstream version 5.14.0.147
Former-commit-id: 90b8e3dc1090a2d277df5d3acf9ad0fc66559c58
This commit is contained in:
parent
f87a49ea3f
commit
7aa1346787
@ -1 +1 @@
|
||||
88b09769fd31b943975a90313f826394af5969eb
|
||||
713caa60a19e1ee461b6a5c649af0cc5b13ed0d8
|
@ -1 +1 @@
|
||||
764e8b912ca3a7198895ecc27928b8a1c11ceb4c
|
||||
55898c9df985bda0d229f0e58ed686a170b20ebd
|
@ -471,6 +471,9 @@ in your program, or Mono's class libraries attempts to generate code
|
||||
dynamically. You should test your software upfront and make sure that
|
||||
you do not use any dynamic features.
|
||||
.TP
|
||||
\fB--full-aot-interp\fR
|
||||
Same as --full-aot with fallback to the interpreter.
|
||||
.TP
|
||||
\fB--gc=boehm\fR, \fB--gc=sgen\fR
|
||||
Selects the Garbage Collector engine for Mono to use, Boehm or SGen.
|
||||
Currently this merely ensures that you are running either the
|
||||
|
@ -34,7 +34,7 @@ static class Consts
|
||||
// Use these assembly version constants to make code more maintainable.
|
||||
//
|
||||
|
||||
public const string MonoVersion = "5.14.0.141";
|
||||
public const string MonoVersion = "5.14.0.147";
|
||||
public const string MonoCompany = "Mono development team";
|
||||
public const string MonoProduct = "Mono Common Language Infrastructure";
|
||||
public const string MonoCopyright = "(c) Various Mono authors";
|
||||
|
@ -1 +1 @@
|
||||
ca65c98a0f00e648da973e7963968484f46e25a7
|
||||
befc828e193756128a4b0755432ce5d10d2cc1e4
|
@ -1 +1 @@
|
||||
84b727ef03eef4369b1e15a46b1146ad6a89bec6
|
||||
5c0ce009774f46b70774aaa482b92dc2e5314b5c
|
@ -1 +1 @@
|
||||
274e6c6bb39b01195339dcfb8e03af00229e8f94
|
||||
0877f763271af8603501edfa1e24eaf3e318198e
|
@ -1 +1 @@
|
||||
08ee36494b283d9af6c5785332dceb3c2ceb15eb
|
||||
09995e4e66ac0a22fe41587750417656bfce0821
|
@ -1 +1 @@
|
||||
71d876d207ac1d4079734e7e07374a48dd139ac6
|
||||
5e3eda678d1f01b2aa295f260a86a9621a1396b3
|
@ -1 +1 @@
|
||||
94aa8e4583323ff2f0ef77c9767c6528746c8195
|
||||
4eaf1e484ad4d32e688d1fd92002bc14e8d9b408
|
@ -1 +1 @@
|
||||
14d433d80e9286afaada66a21c6a6490e02a1bab
|
||||
8d8905f64181bf039084412317cab6664dd1577f
|
@ -1 +1 @@
|
||||
ca65c98a0f00e648da973e7963968484f46e25a7
|
||||
befc828e193756128a4b0755432ce5d10d2cc1e4
|
@ -1 +1 @@
|
||||
84b727ef03eef4369b1e15a46b1146ad6a89bec6
|
||||
5c0ce009774f46b70774aaa482b92dc2e5314b5c
|
@ -1 +1 @@
|
||||
274e6c6bb39b01195339dcfb8e03af00229e8f94
|
||||
0877f763271af8603501edfa1e24eaf3e318198e
|
@ -1 +1 @@
|
||||
08ee36494b283d9af6c5785332dceb3c2ceb15eb
|
||||
09995e4e66ac0a22fe41587750417656bfce0821
|
@ -1 +1 @@
|
||||
71d876d207ac1d4079734e7e07374a48dd139ac6
|
||||
5e3eda678d1f01b2aa295f260a86a9621a1396b3
|
@ -1 +1 @@
|
||||
94aa8e4583323ff2f0ef77c9767c6528746c8195
|
||||
4eaf1e484ad4d32e688d1fd92002bc14e8d9b408
|
@ -1 +1 @@
|
||||
14d433d80e9286afaada66a21c6a6490e02a1bab
|
||||
8d8905f64181bf039084412317cab6664dd1577f
|
@ -1 +1 @@
|
||||
ca65c98a0f00e648da973e7963968484f46e25a7
|
||||
befc828e193756128a4b0755432ce5d10d2cc1e4
|
@ -1 +1 @@
|
||||
84b727ef03eef4369b1e15a46b1146ad6a89bec6
|
||||
5c0ce009774f46b70774aaa482b92dc2e5314b5c
|
@ -1 +1 @@
|
||||
274e6c6bb39b01195339dcfb8e03af00229e8f94
|
||||
0877f763271af8603501edfa1e24eaf3e318198e
|
@ -1 +1 @@
|
||||
08ee36494b283d9af6c5785332dceb3c2ceb15eb
|
||||
09995e4e66ac0a22fe41587750417656bfce0821
|
@ -1 +1 @@
|
||||
71d876d207ac1d4079734e7e07374a48dd139ac6
|
||||
5e3eda678d1f01b2aa295f260a86a9621a1396b3
|
@ -1 +1 @@
|
||||
94aa8e4583323ff2f0ef77c9767c6528746c8195
|
||||
4eaf1e484ad4d32e688d1fd92002bc14e8d9b408
|
@ -1 +1 @@
|
||||
14d433d80e9286afaada66a21c6a6490e02a1bab
|
||||
8d8905f64181bf039084412317cab6664dd1577f
|
@ -307,6 +307,7 @@ typedef struct {
|
||||
int token;
|
||||
int il_offset;
|
||||
int native_offset;
|
||||
const char *guid;
|
||||
} managed_data;
|
||||
struct {
|
||||
intptr_t ip;
|
||||
|
@ -1 +1 @@
|
||||
9a45da5ec2cf988cdfec5ed16341f724617185d9
|
||||
05ba3732159667ba9dbc7a52fece4efb65dad303
|
@ -1 +1 @@
|
||||
8adc17ec288a1b9ae9c8dd1cd47856e2106f4f54
|
||||
aaff6dd9dc34fb2510c951a44db3b752e9c6f792
|
@ -1 +1 @@
|
||||
5e9b5a5f0b699839c31802f66b0c96079028c920
|
||||
10044f8ee122b24d3aa8777fe86f875a1f24b447
|
@ -1981,6 +1981,8 @@ mono_main (int argc, char* argv[])
|
||||
mono_jit_set_aot_mode (MONO_AOT_MODE_LLVMONLY);
|
||||
} else if (strcmp (argv [i], "--hybrid-aot") == 0) {
|
||||
mono_jit_set_aot_mode (MONO_AOT_MODE_HYBRID);
|
||||
} else if (strcmp (argv [i], "--full-aot-interp") == 0) {
|
||||
mono_jit_set_aot_mode (MONO_AOT_MODE_INTERP);
|
||||
} else if (strcmp (argv [i], "--print-vtable") == 0) {
|
||||
mono_print_vtable = TRUE;
|
||||
} else if (strcmp (argv [i], "--stats") == 0) {
|
||||
|
@ -1 +1 @@
|
||||
dce98aa88673c09e1a92b8e88fb3c4a80a3b7ad6
|
||||
9a373e74e3e122d1bcbac0be019806e52aac57b2
|
@ -1 +1 @@
|
||||
faddbf662346407f170fe7270f8e01a2bc52b91a
|
||||
8fc0bbcb5be1a70c373c8d4b3ce5ff0371f319e5
|
@ -1 +1 @@
|
||||
23b58c2fef2467d157848e992cc58524db6136e7
|
||||
01558406b81f8a0fec7cc8e007e8c871b26d8d91
|
@ -1 +1 @@
|
||||
35d000902c9db262b9884149efc349e1f59288d3
|
||||
597d734e479aed50e4f157f42882c34019c3b62c
|
@ -1 +1 @@
|
||||
317bc7c6ef200a6b591f2cbb6e52fbaf4170eaa6
|
||||
15ba650bee11d5e88606be1787d3e6685fd70fe6
|
@ -1 +1 @@
|
||||
#define FULL_VERSION "explicit/8ae8c52"
|
||||
#define FULL_VERSION "explicit/3645833"
|
||||
|
@ -36,6 +36,8 @@
|
||||
#include <sys/param.h>
|
||||
#include <sys/sysctl.h>
|
||||
|
||||
#include <mono/utils/json.h>
|
||||
|
||||
static const char *
|
||||
os_version_string (void)
|
||||
{
|
||||
@ -86,7 +88,6 @@ typedef struct {
|
||||
MERPExcType exceptionArg; // Exception type (refer to merpcommon.h and mach/exception_types.h for more info (optional)
|
||||
|
||||
const char *serviceNameArg; // This is the Bootstrap service name that MERP GUI will create to receive mach_task_self on a port created. Bails out if MERP GUI fails to receive mach_task_self from the crashed app. (Required for crash log generation)
|
||||
const char *servicePathArg;
|
||||
|
||||
const char *moduleName;
|
||||
const char *moduleVersion;
|
||||
@ -195,9 +196,11 @@ parse_exception_type (const char *signal)
|
||||
g_error ("Merp doesn't know how to handle %s\n", signal);
|
||||
}
|
||||
|
||||
static void
|
||||
mono_encode_merp (GString *output, MERPStruct *merp)
|
||||
static gchar *
|
||||
mono_encode_merp_params (MERPStruct *merp)
|
||||
{
|
||||
GString *output = g_string_new ("");
|
||||
|
||||
// Provided by icall
|
||||
g_string_append_printf (output, "ApplicationBundleId: %s\n", merp->bundleIDArg);
|
||||
g_string_append_printf (output, "ApplicationVersion: %s\n", merp->versionArg);
|
||||
@ -207,10 +210,6 @@ mono_encode_merp (GString *output, MERPStruct *merp)
|
||||
// Provided by icall
|
||||
g_string_append_printf (output, "ApplicationName: %s\n", merp->serviceNameArg);
|
||||
|
||||
// When embedded, sometimes this really doesn't make sense.
|
||||
// FIXME: On OSX, could figure this out for just VS4Mac.
|
||||
g_string_append_printf (output, "ApplicationPath: %s\n", merp->servicePathArg ? merp->servicePathArg : "missing");
|
||||
|
||||
// Provided by icall
|
||||
g_string_append_printf (output, "BlameModuleName: %s\n", merp->moduleName);
|
||||
g_string_append_printf (output, "BlameModuleVersion: %s\n", merp->moduleVersion);
|
||||
@ -226,6 +225,8 @@ mono_encode_merp (GString *output, MERPStruct *merp)
|
||||
g_string_append_printf (output, "LanguageID: 0x%x\n", merp->uiLidArg);
|
||||
g_string_append_printf (output, "SystemManufacturer: %s\n", merp->systemManufacturer);
|
||||
g_string_append_printf (output, "SystemModel: %s\n", merp->systemModel);
|
||||
|
||||
return g_string_free (output, FALSE);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -251,7 +252,7 @@ connect_to_merp (const char *serviceName, mach_port_t *merp_port)
|
||||
}
|
||||
|
||||
static void
|
||||
mono_merp_send (const char *merpFile, const char *crashLog)
|
||||
mono_merp_send (const char *merpFile, const char *crashLog, const char *werXml)
|
||||
{
|
||||
// Write struct to magic file location
|
||||
// This registers our mach service so we can connect
|
||||
@ -265,11 +266,17 @@ mono_merp_send (const char *merpFile, const char *crashLog)
|
||||
write_file (crashLog, crashLogPath);
|
||||
g_free (crashLogPath);
|
||||
|
||||
char *werXmlPath = g_strdup_printf ("%s/Library/Group Containers/UBF8T346G9.ms/WERInternalMetadata.txt", home);
|
||||
write_file (werXml, werXmlPath);
|
||||
g_free (werXmlPath);
|
||||
|
||||
if (config.log) {
|
||||
if (merpFile != NULL)
|
||||
fprintf (stderr, "Crashing MERP File:\n####\n%s\n####\n", merpFile);
|
||||
if (crashLog != NULL)
|
||||
fprintf (stderr, "Crashing Dump File:\n####\n%s\n####\n", crashLog);
|
||||
if (werXml != NULL)
|
||||
fprintf (stderr, "Crashing XML WER File:\n####\n%s\n####\n", werXmlPath);
|
||||
}
|
||||
|
||||
// // Create process to launch merp gui application
|
||||
@ -317,19 +324,6 @@ mono_init_merp (const intptr_t crashed_pid, const char *signal, MonoStackHash *h
|
||||
|
||||
merp->serviceNameArg = config.appBundleID;
|
||||
|
||||
// FIXME: Not really a posix way to associated a process with a single executable
|
||||
// path? Linux gets bogged down in /proc
|
||||
merp->servicePathArg = NULL;
|
||||
if (crashed_pid) {
|
||||
size_t servicePathSize = sizeof (gchar) * 1200;
|
||||
merp->servicePathArg = g_malloc0 (servicePathSize);
|
||||
int result = proc_pidpath (crashed_pid, (void *) merp->servicePathArg, 1200);
|
||||
if (result <= 0) {
|
||||
g_free ((void *) merp->servicePathArg);
|
||||
merp->servicePathArg = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
merp->moduleName = "Mono Exception";
|
||||
merp->moduleVersion = version;
|
||||
|
||||
@ -348,19 +342,177 @@ mono_init_merp (const intptr_t crashed_pid, const char *signal, MonoStackHash *h
|
||||
merp->hashes = *hashes;
|
||||
}
|
||||
|
||||
static gchar *
|
||||
mono_merp_fingerprint_payload (const char *non_param_data, const MERPStruct *merp)
|
||||
{
|
||||
JsonWriter writer;
|
||||
mono_json_writer_init (&writer);
|
||||
|
||||
mono_json_writer_object_begin(&writer);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "payload");
|
||||
mono_json_writer_printf (&writer, "%s,\n", non_param_data);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "parameters");
|
||||
mono_json_writer_object_begin(&writer);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "ApplicationBundleId:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->bundleIDArg);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "ApplicationVersion:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->versionArg);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "ApplicationBitness:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", get_merp_bitness (merp->archArg));
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "ApplicationName:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->serviceNameArg);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "BlameModuleName:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->moduleName);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "BlameModuleVersion:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->moduleVersion);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "BlameModuleOffset:");
|
||||
mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->moduleOffset);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "ExceptionType:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", get_merp_exctype (merp->exceptionArg));
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "StackChecksum:");
|
||||
mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->hashes.offset_free_hash);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "StackHash:");
|
||||
mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->hashes.offset_rich_hash);
|
||||
|
||||
// Provided by icall
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "OSVersion:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->osVersion);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "LanguageID:");
|
||||
mono_json_writer_printf (&writer, "\"0x%x\",\n", merp->uiLidArg);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "SystemManufacturer:");
|
||||
mono_json_writer_printf (&writer, "\"%s\",\n", merp->systemManufacturer);
|
||||
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_key(&writer, "SystemModel:");
|
||||
mono_json_writer_printf (&writer, "\"%s\"\n", merp->systemModel);
|
||||
|
||||
// End of payload
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_end (&writer);
|
||||
mono_json_writer_printf (&writer, "\n");
|
||||
|
||||
// End of object
|
||||
mono_json_writer_indent_pop (&writer);
|
||||
mono_json_writer_indent (&writer);
|
||||
mono_json_writer_object_end (&writer);
|
||||
|
||||
gchar *output = g_strdup (writer.text->str);
|
||||
mono_json_writer_destroy (&writer);
|
||||
|
||||
return output;
|
||||
}
|
||||
|
||||
static gchar *
|
||||
mono_wer_template (MERPStruct *merp)
|
||||
{
|
||||
// Note about missing ProcessInformation block: we have no PID that makes sense
|
||||
// and when mono is embedded and used to run functions without an entry point,
|
||||
// there is no image that would make any semantic sense to send either.
|
||||
// It's a nuanced problem, each way we can run mono would need a separate fix.
|
||||
|
||||
GString *output = g_string_new ("");
|
||||
|
||||
g_string_append_printf (output, "<?xml version=\"1.0\" encoding=\"UTF-16\"?>\n");
|
||||
g_string_append_printf (output, "<WERReportMetadata>\n");
|
||||
g_string_append_printf (output, "<ProblemSignatures>\n");
|
||||
g_string_append_printf (output, "<EventType>MonoAppCrash</EventType>\n");
|
||||
|
||||
int i=0;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter0>\n", i, merp->bundleIDArg, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->versionArg, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, get_merp_bitness (merp->archArg), i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->serviceNameArg, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->moduleName, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->moduleVersion, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>0x%x</Parameter%d>\n", i, merp->moduleOffset, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, get_merp_exctype (merp->exceptionArg), i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>0x%x</Parameter%d>\n", i, merp->hashes.offset_free_hash, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>0x%x</Parameter%d>\n", i, merp->hashes.offset_rich_hash, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->osVersion, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>0x%x</Parameter%d>\n", i, merp->uiLidArg, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->systemManufacturer, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "<Parameter%d>%s</Parameter%d>\n", i, merp->systemModel, i);
|
||||
i++;
|
||||
|
||||
g_string_append_printf (output, "</ProblemSignatures>\n");
|
||||
g_string_append_printf (output, "</WERReportMetadata>\n");
|
||||
|
||||
return g_string_free (output, FALSE);
|
||||
}
|
||||
|
||||
void
|
||||
mono_merp_invoke (const intptr_t crashed_pid, const char *signal, const char *dump_file, MonoStackHash *hashes, char *version)
|
||||
mono_merp_invoke (const intptr_t crashed_pid, const char *signal, const char *non_param_data, MonoStackHash *hashes, char *version)
|
||||
{
|
||||
MERPStruct merp;
|
||||
memset (&merp, 0, sizeof (merp));
|
||||
mono_init_merp (crashed_pid, signal, hashes, &merp, version);
|
||||
|
||||
GString *output = g_string_new ("");
|
||||
mono_encode_merp (output, &merp);
|
||||
gchar *merpCfg = mono_encode_merp_params (&merp);
|
||||
gchar *fullData = mono_merp_fingerprint_payload (non_param_data, &merp);
|
||||
gchar *werXmlCfg = mono_wer_template (&merp);
|
||||
|
||||
mono_merp_send (output->str, dump_file);
|
||||
// Write out to disk, start program
|
||||
mono_merp_send (merpCfg, fullData, werXmlCfg);
|
||||
|
||||
g_string_free (output, TRUE);
|
||||
g_free (fullData);
|
||||
g_free (merpCfg);
|
||||
g_free (werXmlCfg);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -87,8 +87,8 @@ mono_native_state_add_frame (JsonWriter *writer, MonoFrameSummary *frame)
|
||||
|
||||
if (frame->is_managed) {
|
||||
mono_json_writer_indent (writer);
|
||||
mono_json_writer_object_key(writer, "assembly");
|
||||
mono_json_writer_printf (writer, "\"%s\",\n", frame->str_descr);
|
||||
mono_json_writer_object_key(writer, "guid");
|
||||
mono_json_writer_printf (writer, "\"%s\",\n", frame->managed_data.guid);
|
||||
|
||||
mono_json_writer_indent (writer);
|
||||
mono_json_writer_object_key(writer, "token");
|
||||
@ -453,7 +453,6 @@ mono_native_state_add_epilogue (JsonWriter *writer)
|
||||
mono_json_writer_indent_pop (writer);
|
||||
mono_json_writer_indent (writer);
|
||||
mono_json_writer_object_end (writer);
|
||||
mono_json_writer_printf (writer, "\n");
|
||||
}
|
||||
|
||||
void
|
||||
|
BIN
po/mcs/de.gmo
BIN
po/mcs/de.gmo
Binary file not shown.
@ -1 +1 @@
|
||||
c20b2e70f8b1983435241609f17bb8220b7ae7ce
|
||||
5037f0a0d0e6f285f1bc22f8504e95fe27137c93
|
BIN
po/mcs/es.gmo
BIN
po/mcs/es.gmo
Binary file not shown.
@ -1 +1 @@
|
||||
7e7dbf9f9097d4a822364588c3571b6f4f1ab698
|
||||
c230238a3cd9158ba72f112956ffc95b7d746821
|
BIN
po/mcs/ja.gmo
BIN
po/mcs/ja.gmo
Binary file not shown.
@ -1 +1 @@
|
||||
6c695146470efd04c6e7cc00fbb6744403c91ab4
|
||||
d633618cc9cb3e22c7ad209dceda11bb2c56a3b7
|
@ -6,9 +6,9 @@
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: mono 5.14.0.141\n"
|
||||
"Project-Id-Version: mono 5.14.0.147\n"
|
||||
"Report-Msgid-Bugs-To: http://www.mono-project.com/Bugs\n"
|
||||
"POT-Creation-Date: 2018-06-23 16:48+0000\n"
|
||||
"POT-Creation-Date: 2018-06-26 08:02+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
BIN
po/mcs/pt_BR.gmo
BIN
po/mcs/pt_BR.gmo
Binary file not shown.
@ -1 +1 @@
|
||||
c1b09df3ff5a12d8616dfd751f62ed84e68b8770
|
||||
d6836e7be2aa66b62b3b706b24b764b223574f29
|
Loading…
x
Reference in New Issue
Block a user