Imported Upstream version 5.12.0.220

Former-commit-id: c477e03582759447177c6d4bf412cd2355aad476
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-04-24 09:31:23 +00:00
parent 8bd104cef2
commit 8fc30896db
1200 changed files with 29534 additions and 26161 deletions

View File

@@ -13,6 +13,7 @@ man_MANS = \
genxs.1 \
httpcfg.1 \
ilasm.1 \
illinkanalyzer.1 \
lc.1 \
macpack.1 \
makecert.1 \

View File

@@ -82,14 +82,14 @@ subdir = man
DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
$(top_srcdir)/mkinstalldirs
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/m4/iconv.m4 \
$(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
$(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
$(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
$(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
$(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.ac
am__aclocal_m4_deps = $(top_srcdir)/m4/ax_check_compile_flag.m4 \
$(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/lib-ld.m4 \
$(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \
$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/nls.m4 \
$(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
@@ -233,6 +233,10 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
INTL = @INTL@
INVARIANT_AOT_OPTIONS = @INVARIANT_AOT_OPTIONS@
JEMALLOC_AUTOCONF_FLAGS = @JEMALLOC_AUTOCONF_FLAGS@
JEMALLOC_CFLAGS = @JEMALLOC_CFLAGS@
JEMALLOC_CPPFLAGS = @JEMALLOC_CPPFLAGS@
JEMALLOC_LDFLAGS = @JEMALLOC_LDFLAGS@
LD = @LD@
LDFLAGS = @LDFLAGS@
LIBC = @LIBC@
@@ -261,6 +265,9 @@ MANIFEST_TOOL = @MANIFEST_TOOL@
MKDIR_P = @MKDIR_P@
MONO_CORLIB_VERSION = @MONO_CORLIB_VERSION@
MONO_DL_NEED_USCORE = @MONO_DL_NEED_USCORE@
MONO_JEMALLOC_ASSERT = @MONO_JEMALLOC_ASSERT@
MONO_JEMALLOC_DEFAULT = @MONO_JEMALLOC_DEFAULT@
MONO_JEMALLOC_ENABLED = @MONO_JEMALLOC_ENABLED@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@@ -399,6 +406,7 @@ man_MANS = \
genxs.1 \
httpcfg.1 \
ilasm.1 \
illinkanalyzer.1 \
lc.1 \
macpack.1 \
makecert.1 \

132
man/illinkanalyzer.1 Normal file
View File

@@ -0,0 +1,132 @@
.TH illinkanalyzer 1
.SH NAME
illinkanalyzer \- Mono's linker analyzer tool
.SH SYNOPSIS
.B illinkanalyzer
\fR[\fIoptions\fR] <\fIlinker-dependency-file.xml.gz\fR>
.SH DESCRIPTION
Linker analyzer is a command line tool to analyze dependencies, which
were recorded during linker processing, and led linker to mark an item
to keep it in the resulting linked assembly.
.PP
It works on an oriented graph of dependencies, which are collected and
dumped during the linker run. The vertices of this graph are the items
of interest like assemblies, types, methods, fields, linker steps,
etc. The edges represent the dependencies.
.SH HOW TO DUMP DEPENDENCIES
The linker analyzer needs a linker dependencies file as an input. It
can be retrieved by enabling dependencies dumping during linking of a
Xamarin.Android or a Xamarin.iOS project.
.PP
That can be done on the command line by setting LinkerDumpDependencies
property to true and building the project. (make sure the
LinkAssemblies task is called, it might require cleaning the project
sometimes) Usually it is enough to build the project like this:
.PP
.nf
.RS
rm -f obj/Release/link.flag
msbuild /p:LinkerDumpDependencies=true /p:Configuration=Release YourAppProject.csproj
.RE
.fi
.PP
After a successful build, there will be a linker-dependencies.xml.gz
file created, containing the information for the analyzer.
.SH OPTIONS
.nf
.RS
-a, --alldeps show all dependencies
--csvoutput=VALUE outputs types and optionally size analysis to CSV
file
-h, --help show this message and exit.
-l, --linkedpath=VALUE sets the linked assemblies directory path. Enables
displaying size estimates.
-r, --rawdeps=VALUE show raw vertex dependencies. Raw vertex VALUE is
in the raw format written by linker to the
dependency XML file. VALUE can be regular
expression
--roots show root dependencies.
--stat show statistic of loaded dependencies.
--tree reduce the dependency graph to the tree.
--types show all types dependencies.
-t, --typedeps=VALUE show type dependencies. The VALUE can be regular
expression
-f, --flat show all dependencies per vertex and their distance
-v, --verbose be more verbose. Enables stat and roots options.
.RE
.fi
.SH EXAMPLES
Let say you would like to know, why a type, Android.App.Activity for
example, was marked by the linker. So run the analyzer like this:
.PP
.nf
.RS
illinkanalyzer -t Android.App.Activity linker-dependencies.xml.gz
.fi
.RE
.PP
Output:
.PP
.nf
.RS
Loading dependency tree from: linker-dependencies.xml.gz
--- Type dependencies: 'Android.App.Activity' -----------------------
--- TypeDef:Android.App.Activity dependencies -----------------------
Dependency #1
TypeDef:Android.App.Activity
| TypeDef:XA.App.MainActivity [2 deps]
| Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
| Other:Mono.Linker.Steps.ResolveFromAssemblyStep
.fi
.RE
.PP
The output contains dependencies string(s), starting with the type and
continuing with the item of interest, which depends on the type. The
dependency could be result of multiple reasons. For example the type
was referenced from a method, or the type was listed in the linker xml
file to be protected.
.PP
In our example there is only one dependency string called Dependency
#1. It shows us that the type Android.App.Activity was marked during
processing of type XA.App.MainActivity by the linker. In this case
because the MainActivity type is based on the Activity type and thus
the linker marked it and kept it in the linked assembly. We can also
see that there are 2 dependencies for the MainActivity class. Note
that in the string (above) we see only 1st dependency of the 2, the
dependency on the assembly XA.App. And finally the assembly vertex
depends on the ResolveFromAssemblyStep vertex. So we see that the
assembly was processed in the ResolveFromAssembly linker step.
.PP
Now we might want to see the MainActivity dependencies. That could be done by the following analyzer run:
.PP
.nf
.RS
illinkanalyzer -r TypeDef:XA.App.MainActivity linker-dependencies.xml.gz
.fi
.RE
.PP
Output:
.PP
.nf
.RS
Loading dependency tree from: linker-dependencies.xml.gz
--- Raw dependencies: 'TypeDef:XA.App.MainActivity' -----------------
--- TypeDef:XA.App.MainActivity dependencies ------------------------
Dependency #1
TypeDef:XA.App.MainActivity
| Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
| Other:Mono.Linker.Steps.ResolveFromAssemblyStep
Dependency #2
TypeDef:XA.App.MainActivity
| TypeDef:XA.App.MainActivity/<>c__DisplayClass1_0 [2 deps]
| TypeDef:XA.App.MainActivity [2 deps]
| Assembly:XA.App, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null [3 deps]
| Other:Mono.Linker.Steps.ResolveFromAssemblyStep
.fi
.RE
.SH SEE ALSO
\fBmsbuild\fR(1)

View File

@@ -65,6 +65,45 @@ and
See the description for
.B MONO_IOMAP
in the environment variables section for more details.
.SH METHOD DESCRIPTIONS
A number of diagnostic command line options take as argument a method
description. A method description is a textual representation that
can be used to uniquely identify a method. The syntax is as follows:
.nf
[namespace]classname:methodname[(arguments)]
.fi
.PP
The values in brackets are optional, like the namespace and the
arguments. The arguments themselves are either empty, or a
comma-separated list of arguments. Both the
\fBclassname\fR
and
\fBmethodname\fR
can be set to the special value '*' to match any values (Unix shell
users should escape the argument to avoid the shell interpreting
this).
.PP
The arguments, if present should be a comma separated list of types
either a full typename, or for built-in types it should use the
low-level ILAsm type names for the built-in types,
like 'void', 'char', 'bool', 'byte', 'sbyte', 'uint16', 'int16', 'uint',
'int', 'ulong', 'long', 'uintptr', 'intptr', 'single', 'double', 'string', 'object'.
.PP
Pointer types should be the name of the type, followed by a '*',
arrays should be the typename followed by '[' one or more commas (to
indicate the rank of the array), and ']'.
.PP
Generic values should use '<', one or more type names, separated by
both a comma and a space and '>'.
.PP
By-reference arguments should include a "&" after the typename.
.PP
Examples:
.nf
*:ctor(int) // All constructors that take an int as an argument
*:Main // Methods named Main in any class
*:Main(string[]) // Methods named Main that take a string array in any class
.fi
.SH RUNTIME OPTIONS
The following options are available:
.TP
@@ -1826,7 +1865,10 @@ for example, to see managed frame names on gdb backtraces.
\fBMONO_VERBOSE_METHOD\fR
Enables the maximum JIT verbosity for the specified method. This is
very helpfull to diagnose a miscompilation problems of a specific
method.
method. This can be a comma-separated list of method names to
match. If the name is simple, this applies to any method with that
name, otherwise you can use a mono method description (see the section
METHOD DESCRIPTIONS).
.TP
\fBMONO_JIT_DUMP_METHOD\fR
Enables sending of the JITs intermediate representation for a specified

View File

@@ -202,7 +202,7 @@ Specify a parameter for a custom step.
.SH COPYRIGHT
Copyright (C) 2007 Novell, Inc (http://www.novell.com)
.SH BUGS
Bugs report are welcome at http://bugzilla.xamarin.com
Bugs report are welcome at https://github.com/mono/linker/issues
.PP
Product Mono Tools, Component linker.
.SH MAILING LISTS

View File

@@ -515,10 +515,10 @@ The Mono SQL Query Tool is released under the terms of the GNU GPL.
Please read the accompanying `COPYING' file for details. Alternative
licenses are available from Novell or Daniel Morgan.
.SH BUGS
To report bugs in the compiler, you can use `bug-buddy', or you can
To report bugs in the compiler, you can
file bug reports in our bug tracking system:
.nf
http://bugzilla.xamarin.com.
https://github.com/mono/mono/issues
.fi
.PP
.SH MAILING LISTS