Imported Upstream version 4.3.2.467
Former-commit-id: 9c2cb47f45fa221e661ab616387c9cda183f283d
This commit is contained in:
parent
f302175246
commit
f3e3aab35a
25
Makefile.am
25
Makefile.am
@ -5,15 +5,15 @@ AM_CFLAGS = $(WERROR_CFLAGS)
|
||||
MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
|
||||
|
||||
if CROSS_COMPILING
|
||||
SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
|
||||
SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
|
||||
# Keep in sync with SUBDIRS
|
||||
## 'tools' is not normally built
|
||||
DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
|
||||
DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
|
||||
else
|
||||
SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
|
||||
SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
|
||||
# Keep in sync with SUBDIRS
|
||||
## 'tools' is not normally built
|
||||
DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
|
||||
DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
|
||||
endif
|
||||
|
||||
all: update_submodules
|
||||
@ -25,13 +25,14 @@ update_submodules:
|
||||
.PHONY: update_submodules
|
||||
|
||||
EXTRA_DIST= \
|
||||
README.md \
|
||||
LICENSE \
|
||||
autogen.sh \
|
||||
mkinstalldirs \
|
||||
mono-uninstalled.pc.in \
|
||||
winconfig.h \
|
||||
external
|
||||
README.md \
|
||||
LICENSE \
|
||||
autogen.sh \
|
||||
mkinstalldirs \
|
||||
mono-uninstalled.pc.in \
|
||||
winconfig.h \
|
||||
code_of_conduct.md \
|
||||
external
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
|
||||
|
||||
@ -56,7 +57,7 @@ DISTCLEANFILES= mono-uninstalled.pc
|
||||
mcslib = $(mcs_topdir)/class/lib
|
||||
monolite = $(mcslib)/monolite
|
||||
mono_corlib_version = $(shell sed -n "s/\#define MONO_CORLIB_VERSION //p" $(srcdir)/mono/metadata/appdomain.c)
|
||||
monolite_url = http://storage.bos.xamarin.com/mono-dist-master/latest/monolite-$(mono_corlib_version)-latest.tar.gz
|
||||
monolite_url = http://download.mono-project.com/monolite/monolite-$(mono_corlib_version)-latest.tar.gz
|
||||
.PHONY: get-monolite-latest
|
||||
get-monolite-latest:
|
||||
-rm -fr $(mcslib)/monolite-*
|
||||
|
31
Makefile.in
31
Makefile.in
@ -214,8 +214,6 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BOEHM_DEFINES = @BOEHM_DEFINES@
|
||||
BUILD_EXEEXT = @BUILD_EXEEXT@
|
||||
BUILD_GLIB_CFLAGS = @BUILD_GLIB_CFLAGS@
|
||||
BUILD_GLIB_LIBS = @BUILD_GLIB_LIBS@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
@ -231,9 +229,9 @@ CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_PROFILE = @DEFAULT_PROFILE@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SHARED_HANDLES = @DISABLE_SHARED_HANDLES@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOLT_BASH = @DOLT_BASH@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
@ -251,8 +249,6 @@ GDKX11 = @GDKX11@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GMODULE_CFLAGS = @GMODULE_CFLAGS@
|
||||
GMODULE_LIBS = @GMODULE_LIBS@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GREP = @GREP@
|
||||
@ -413,21 +409,22 @@ top_srcdir = @top_srcdir@
|
||||
ACLOCAL_AMFLAGS = -I m4
|
||||
AM_CFLAGS = $(WERROR_CFLAGS)
|
||||
MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
|
||||
@CROSS_COMPILING_FALSE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
|
||||
@CROSS_COMPILING_TRUE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
|
||||
@CROSS_COMPILING_FALSE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
|
||||
@CROSS_COMPILING_TRUE@SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir) acceptance-tests
|
||||
# Keep in sync with SUBDIRS
|
||||
@CROSS_COMPILING_FALSE@DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
|
||||
@CROSS_COMPILING_FALSE@DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
|
||||
# Keep in sync with SUBDIRS
|
||||
@CROSS_COMPILING_TRUE@DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
|
||||
@CROSS_COMPILING_TRUE@DIST_SUBDIRS = m4 po $(libgc_dir) eglib mono ikvm-native support data runtime scripts man samples tools msvc docs acceptance-tests
|
||||
SUBMODULE_ERROR = 'Could not recursively update all git submodules. You may experience compilation problems if some submodules are out of date'
|
||||
EXTRA_DIST = \
|
||||
README.md \
|
||||
LICENSE \
|
||||
autogen.sh \
|
||||
mkinstalldirs \
|
||||
mono-uninstalled.pc.in \
|
||||
winconfig.h \
|
||||
external
|
||||
README.md \
|
||||
LICENSE \
|
||||
autogen.sh \
|
||||
mkinstalldirs \
|
||||
mono-uninstalled.pc.in \
|
||||
winconfig.h \
|
||||
code_of_conduct.md \
|
||||
external
|
||||
|
||||
DISTCHECK_CONFIGURE_FLAGS = EXTERNAL_MCS=false EXTERNAL_RUNTIME=false
|
||||
# Disable this for now because it is very slow and causes wrench to timeout:
|
||||
@ -440,7 +437,7 @@ DISTCLEANFILES = mono-uninstalled.pc
|
||||
mcslib = $(mcs_topdir)/class/lib
|
||||
monolite = $(mcslib)/monolite
|
||||
mono_corlib_version = $(shell sed -n "s/\#define MONO_CORLIB_VERSION //p" $(srcdir)/mono/metadata/appdomain.c)
|
||||
monolite_url = http://storage.bos.xamarin.com/mono-dist-master/latest/monolite-$(mono_corlib_version)-latest.tar.gz
|
||||
monolite_url = http://download.mono-project.com/monolite/monolite-$(mono_corlib_version)-latest.tar.gz
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
|
@ -37,8 +37,8 @@ Community supported architectures:
|
||||
[8]: http://jenkins.mono-project.com/job/test-mono-mainline/label=debian-armhf/
|
||||
[9]: https://ci.appveyor.com/api/projects/status/1e61ebdfpbiei58v/branch/master?svg=true
|
||||
[10]: https://ci.appveyor.com/project/ajlennon/mono-817/branch/master
|
||||
[11]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/badge/icon
|
||||
[12]: http://jenkins.mono-project.com/job/test-mono-mainline-communityarchitectures/label=nealef-s390x-1/
|
||||
[11]: https://jenkins.mono-project.com/job/z/label=centos-s390x/badge/icon
|
||||
[12]: https://jenkins.mono-project.com/job/z/label=centos-s390x
|
||||
|
||||
Compilation and Installation
|
||||
============================
|
||||
@ -80,8 +80,7 @@ Testing and Installation
|
||||
You can run the mono and mcs test suites with the command: `make check`.
|
||||
|
||||
Expect to find a few test suite failures. As a sanity check, you
|
||||
can compare the failures you got with [https://wrench.mono-project.com/Wrench/](https://wrench.mono-project.com/Wrench/)
|
||||
and [http://jenkins.mono-project.com/](http://jenkins.mono-project.com/).
|
||||
can compare the failures you got with [https://jenkins.mono-project.com/](https://jenkins.mono-project.com/).
|
||||
|
||||
You can now install mono with: `make install`
|
||||
|
||||
@ -497,4 +496,3 @@ to do at all), first edit `.gitmodules` to point to the new location, then:
|
||||
The desired output diff is a change in `.gitmodules` to reflect the
|
||||
change in the remote URL, and a change in /<submodule> where you see
|
||||
the desired change in the commit hash.
|
||||
|
||||
|
1
acceptance-tests/Makefile.am.REMOVED.git-id
Normal file
1
acceptance-tests/Makefile.am.REMOVED.git-id
Normal file
@ -0,0 +1 @@
|
||||
68b9ff90e7dc4c8e38686a067a75eb9365f9504b
|
1
acceptance-tests/Makefile.in.REMOVED.git-id
Normal file
1
acceptance-tests/Makefile.in.REMOVED.git-id
Normal file
@ -0,0 +1 @@
|
||||
e59629639b73555931e60aa95d850ac5dd3e4a5e
|
14
acceptance-tests/README.md
Normal file
14
acceptance-tests/README.md
Normal file
@ -0,0 +1,14 @@
|
||||
This directory contains acceptance tests, handled by optional non git submodule based submodules. Run the tests via "make check-full" (there are also targets for individual test suites).
|
||||
|
||||
The SUBMODULES.json file stores information about the submodules, and make targets are used to check out submodules, check their versions, and update the submodule information.
|
||||
|
||||
By convention, submodules repositories are at the same level as the mono repository.
|
||||
|
||||
Make targets available:
|
||||
|
||||
make check-<module> - Checks whenever <module> is checked out and matches the version in the info file.
|
||||
make reset-<module> - Clones <module>if neccesary and checks out the revision specified in the info file.
|
||||
make bump-<module> - Updates the revision stored in the info file for <module>.
|
||||
make bump-current-<module> - Updates the revision stored in the info file for <module> to the current revision.
|
||||
make commit-bump-<module> - Same as make bump-<module>, but commits the change.
|
||||
make commit-bump-current-<module> - Same as make bump-current-<module>, but commits the change.
|
26
acceptance-tests/SUBMODULES.json
Normal file
26
acceptance-tests/SUBMODULES.json
Normal file
@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"name": "roslyn",
|
||||
"url": "git://github.com/dotnet/roslyn.git",
|
||||
"rev": "322bd5b2bbf07df6a67de35cbcb2365484412f70",
|
||||
"remote-branch": "origin/master",
|
||||
"branch": "master",
|
||||
"directory": "roslyn"
|
||||
},
|
||||
{
|
||||
"name": "coreclr",
|
||||
"url": "git://github.com/mono/coreclr.git",
|
||||
"rev": "96cf61f96b42cf9d013e641609cb7787f6e3a71f",
|
||||
"remote-branch": "origin/mono",
|
||||
"branch": "mono",
|
||||
"directory": "coreclr"
|
||||
},
|
||||
{
|
||||
"name": "ms-test-suite",
|
||||
"url": "git@github.com:xamarin/ms-test-suite.git",
|
||||
"rev": "8eb26bd72a38e2c78675db45b13e89237dbdf4f2",
|
||||
"remote-branch": "origin/master",
|
||||
"branch": "master",
|
||||
"directory": "ms-test-suite"
|
||||
}
|
||||
]
|
159
acceptance-tests/versions.mk
Normal file
159
acceptance-tests/versions.mk
Normal file
@ -0,0 +1,159 @@
|
||||
.PHONY: validate-versions reset-versions
|
||||
|
||||
CONFIG=SUBMODULES.json
|
||||
|
||||
# usage $(call ValidateVersionTemplate (name,MAKEFILE VAR,repo name))
|
||||
# usage $(call ValidateVersionTemplate (mono,MONO,mono))
|
||||
|
||||
define ValidateVersionTemplate
|
||||
#$(eval REPOSITORY_$(2):=$(shell test -z $(3) && echo $(1) || echo "$(3)"))
|
||||
#$(eval DIRECTORY_$(2):=$(shell python versions.py get-dir $(1)))
|
||||
#$(eval DIRECTORY_$(2):=$(shell test -z $(DIRECTORY_$(2)) && echo $(1) || echo $(DIRECTORY_$(2))))
|
||||
#$(eval MODULE_$(2):=$(shell python versions.py get-url $(1)))
|
||||
#$(eval NEEDED_$(2)_VERSION:=$(shell python versions.py get-rev $(1)))
|
||||
#$(eval $(2)_BRANCH_AND_REMOTE:=$(shell python versions.py get-remote-branch $(1)))
|
||||
|
||||
#$(eval $(2)_VERSION:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git rev-parse HEAD ))
|
||||
|
||||
#$(eval NEEDED_$(2)_BRANCH:=$(word 2, $(subst /, ,$($(2)_BRANCH_AND_REMOTE))))
|
||||
#$(eval NEEDED_$(2)_REMOTE:=$(word 1, $(subst /, ,$($(2)_BRANCH_AND_REMOTE))))
|
||||
#$(eval $(2)_BRANCH:=$$$$(shell cd $($(2)_PATH) 2>/dev/null && git symbolic-ref --short HEAD 2>/dev/null))
|
||||
|
||||
validate-$(1)::
|
||||
@if test x$$(IGNORE_$(2)_VERSION) = "x"; then \
|
||||
if test ! -d $($(2)_PATH); then \
|
||||
if test x$$(RESET_VERSIONS) != "x"; then \
|
||||
$(MAKE) reset-$(1) || exit 1; \
|
||||
else \
|
||||
echo "Your $(1) checkout is missing, please run 'make reset-$(1)'"; \
|
||||
touch .validate-versions-failure; \
|
||||
fi; \
|
||||
else \
|
||||
if test "x$($(2)_VERSION)" != "x$(NEEDED_$(2)_VERSION)" ; then \
|
||||
if test x$$(RESET_VERSIONS) != "x"; then \
|
||||
$(MAKE) reset-$(1) || exit 1; \
|
||||
else \
|
||||
echo "Your $(1) version is out of date, please run 'make reset-$(1)' (found $($(2)_VERSION), expected $(NEEDED_$(2)_VERSION))"; \
|
||||
test -z "$(BUILD_REVISION)" || $(MAKE) test-$(1); \
|
||||
touch .validate-versions-failure; \
|
||||
fi; \
|
||||
elif test "x$($(2)_BRANCH)" != "x$(NEEDED_$(2)_BRANCH)" ; then \
|
||||
if test x$$(RESET_VERSIONS) != "x"; then \
|
||||
test -z "$(BUILD_REVISION)" || $(MAKE) test-$(1); \
|
||||
$(MAKE) reset-$(1) || exit 1; \
|
||||
else \
|
||||
echo "Your $(1) branch is out of date, please run 'make reset-$(1)' (found $($(2)_BRANCH), expected $(NEEDED_$(2)_BRANCH))"; \
|
||||
touch .validate-versions-failure; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi; \
|
||||
fi
|
||||
|
||||
test-$(1)::
|
||||
@echo $(1)
|
||||
@echo " REPOSITORY_$(2)=$(REPOSITORY_$(2))"
|
||||
@echo " DIRECTORY_$(2)=$(DIRECTORY_$(2))"
|
||||
@echo " MODULE_$(2)=$(MODULE_$(2))"
|
||||
@echo " NEEDED_$(2)_VERSION=$(NEEDED_$(2)_VERSION)"
|
||||
@echo " $(2)_VERSION=$($(2)_VERSION)"
|
||||
@echo " $(2)_BRANCH_AND_REMOTE=$($(2)_BRANCH_AND_REMOTE)"
|
||||
@echo " NEEDED_$(2)_BRANCH=$(NEEDED_$(2)_BRANCH)"
|
||||
@echo " NEEDED_$(2)_REMOTE=$(NEEDED_$(2)_REMOTE)"
|
||||
@echo " $(2)_BRANCH=$($(2)_BRANCH)"
|
||||
@echo " $(2)_PATH=$($(2)_PATH) => $(abspath $($(2)_PATH))"
|
||||
|
||||
reset-$(1)::
|
||||
@if test -d $($(2)_PATH); then \
|
||||
if ! (cd $($(2)_PATH) && git show $(NEEDED_$(2)_VERSION) >/dev/null 2>&1 && git log -1 $(NEEDED_$(2)_REMOTE) >/dev/null 2>&1) ; then \
|
||||
echo "*** git fetch `basename $$($(2)_PATH)`" && (cd $($(2)_PATH) && git fetch); \
|
||||
fi; \
|
||||
else \
|
||||
echo "*** git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2))" && (cd `dirname $($(2)_PATH)` && git clone $(MODULE_$(2)) --recursive $(DIRECTORY_$(2)) || exit 1 ); \
|
||||
fi
|
||||
@if test x$$(IGNORE_$(2)_VERSION) = "x"; then \
|
||||
echo "*** [$(1)] git checkout -f" $(NEEDED_$(2)_BRANCH) && (cd $($(2)_PATH) ; git checkout -f $(NEEDED_$(2)_BRANCH) || git checkout -f -b $($(2)_BRANCH_AND_REMOTE)); \
|
||||
echo "*** [$(1)] git reset --hard $(NEEDED_$(2)_VERSION)" && (cd $($(2)_PATH) && git reset --hard $(NEEDED_$(2)_VERSION)); \
|
||||
fi
|
||||
@echo "*** [$(1)] git submodule update --init --recursive" && (cd $($(2)_PATH) && git submodule update --init --recursive)
|
||||
|
||||
print-$(1)::
|
||||
@printf "*** %-16s %-45s %s (%s)\n" "$(DIRECTORY_$(2))" "$(MODULE_$(2))" "$(NEEDED_$(2)_VERSION)" "$(NEEDED_$(2)_BRANCH)"
|
||||
|
||||
.PHONY: validate-$(1) reset-$(1) print-$(1)
|
||||
|
||||
reset-versions:: reset-$(1)
|
||||
validate-versions:: Validate-$(1)
|
||||
print-versions:: print-$(1)
|
||||
|
||||
endef
|
||||
|
||||
$(eval $(call ValidateVersionTemplate,roslyn,ROSLYN))
|
||||
$(eval $(call ValidateVersionTemplate,coreclr,CORECLR))
|
||||
$(eval $(call ValidateVersionTemplate,ms-test-suite,MSTESTSUITE))
|
||||
|
||||
reset-versions::
|
||||
|
||||
validate-versions::
|
||||
@if test -e .validate-versions-failure; then \
|
||||
rm .validate-versions-failure; \
|
||||
echo One or more modules needs update; \
|
||||
exit 1; \
|
||||
else \
|
||||
echo All dependent modules up to date; \
|
||||
fi
|
||||
|
||||
reset:
|
||||
@$(MAKE) validate-versions RESET_VERSIONS=1
|
||||
|
||||
__bump-version-%:
|
||||
@if [ "$(REV)" = "" ]; then echo "Usage: make bump-version-$* REV=<ref>"; exit 1; fi
|
||||
python versions.py set-rev $* $(REV)
|
||||
@if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to pick up $(REV)." | git commit -F - $(CONFIG); fi
|
||||
|
||||
__bump-branch-%:
|
||||
@if [ "$(BRANCH)" = "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
|
||||
@if [ "$(REMOTE_BRANCH)" == "" ]; then echo "Usage: make bump-branch-$* BRANCH=<branch> REMOTE_BRANCH=<remote branch>"; exit 1; fi
|
||||
python versions.py set-branch $* $(BRANCH)
|
||||
python versions.py set-remote-branch $* $(REMOTE_BRANCH)
|
||||
@if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to switch to $(BRANCH) $(REMOTE BRANCH)." | git commit -F - $(CONFIG); fi
|
||||
|
||||
__bump-current-version-%:
|
||||
REV=$(shell cd $(TOP)/../$* && git log -1 --pretty=format:%H); \
|
||||
python versions.py set-rev $* $$REV; \
|
||||
if [ "$(COMMIT)" = "1" ]; then echo "[acceptance-tests] Bump $* to pick up $$REV:" | git commit -F - $(CONFIG); fi
|
||||
|
||||
# Bump the given submodule to the revision given by the REV make variable
|
||||
# If COMMIT is 1, commit the change
|
||||
bump-roslyn: __bump-version-roslyn
|
||||
bump-coreclr: __bump-version-coreclr
|
||||
bump-ms-test-suite: __bump-version-ms-test-suite
|
||||
|
||||
# Bump the given submodule to the branch given by the BRANCH/REMOTE_BRANCH make variables
|
||||
# If COMMIT is 1, commit the change
|
||||
bump-branch-roslyn: __bump-branch-roslyn
|
||||
bump-branch-coreclr: __bump-branch-coreclr
|
||||
bump-branch-ms-test-suite: __bump-branch-ms-test-suite
|
||||
|
||||
# Bump the given submodule to its current GIT version
|
||||
# If COMMIT is 1, commit the change
|
||||
bump-current-roslyn: __bump-current-version-roslyn
|
||||
bump-current-coreclr: __bump-current-version-coreclr
|
||||
bump-current-ms-test-suite: __bump-current-version-ms-test-suite
|
||||
|
||||
commit-bump-roslyn:
|
||||
$(MAKE) bump-roslyn COMMIT=1
|
||||
|
||||
commit-bump-coreclr:
|
||||
$(MAKE) bump-coreclr COMMIT=1
|
||||
|
||||
commit-bump-ms-test-suite:
|
||||
$(MAKE) bump-ms-test-suite COMMIT=1
|
||||
|
||||
commit-bump-current-roslyn:
|
||||
$(MAKE) bump-current-roslyn COMMIT=1
|
||||
|
||||
commit-bump-current-coreclr:
|
||||
$(MAKE) bump-current-coreclr COMMIT=1
|
||||
|
||||
commit-bump-current-ms-test-suite:
|
||||
$(MAKE) bump-current-ms-test-suite COMMIT=1
|
52
acceptance-tests/versions.py
Executable file
52
acceptance-tests/versions.py
Executable file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import json
|
||||
|
||||
def find_module(submodules, name):
|
||||
for item in submodules:
|
||||
if item["name"] == name:
|
||||
return item
|
||||
|
||||
print "Not found"
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if len(sys.argv) < 2:
|
||||
print "Usage: versions.py <command>"
|
||||
sys.exit(1)
|
||||
|
||||
CONFIG_FILE = "SUBMODULES.json"
|
||||
command = sys.argv[1]
|
||||
|
||||
submodules = json.load(open(CONFIG_FILE))
|
||||
|
||||
if command == "get-rev":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
print mod["rev"]
|
||||
elif command == "get-url":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
print mod["url"]
|
||||
elif command == "get-dir":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
print mod["directory"]
|
||||
elif command == "get-remote-branch":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
print mod["remote-branch"]
|
||||
elif command == "set-rev":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
mod["rev"] = sys.argv[3]
|
||||
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
|
||||
elif command == "set-branch":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
mod["branch"] = sys.argv[3]
|
||||
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
|
||||
elif command == "set-remote-branch":
|
||||
mod = find_module(submodules, sys.argv[2])
|
||||
mod["remote-branch"] = sys.argv[3]
|
||||
json.dump(submodules, open(CONFIG_FILE, "w"), indent = 2)
|
||||
elif command == "cat":
|
||||
print json.dumps(submodules, indent = 2)
|
||||
else:
|
||||
print "Unknown command "" + command + ""."
|
||||
sys.exit(1)
|
50
code_of_conduct.md
Normal file
50
code_of_conduct.md
Normal file
@ -0,0 +1,50 @@
|
||||
# Contributor Code of Conduct
|
||||
|
||||
As contributors and maintainers of this project, and in the interest of
|
||||
fostering an open and welcoming community, we pledge to respect all people who
|
||||
contribute through reporting issues, posting feature requests, updating
|
||||
documentation, submitting pull requests or patches, and other activities.
|
||||
|
||||
We are committed to making participation in this project a harassment-free
|
||||
experience for everyone, regardless of level of experience, gender, gender
|
||||
identity and expression, sexual orientation, disability, personal appearance,
|
||||
body size, race, ethnicity, age, religion, or nationality.
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery
|
||||
* Personal attacks
|
||||
* Trolling or insulting/derogatory comments
|
||||
* Public or private harassment
|
||||
* Publishing other's private information, such as physical or electronic
|
||||
addresses, without explicit permission
|
||||
* Other unethical or unprofessional conduct
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
By adopting this Code of Conduct, project maintainers commit themselves to
|
||||
fairly and consistently applying these principles to every aspect of managing
|
||||
this project. Project maintainers who do not follow or enforce the Code of
|
||||
Conduct may be permanently removed from the project team.
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community.
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting a project maintainer at miguel@xamarin.com. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. Maintainers are
|
||||
obligated to maintain confidentiality with regard to the reporter of an
|
||||
incident.
|
||||
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 1.3.0, available at
|
||||
[http://contributor-covenant.org/version/1/3/0/][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/3/0/
|
57
config.h.in
57
config.h.in
@ -1,7 +1,7 @@
|
||||
/* config.h.in. Generated from configure.ac by autoheader. */
|
||||
|
||||
/* The architecture this is running on */
|
||||
#undef ARCHITECTURE
|
||||
/* Enable checked build. */
|
||||
#undef CHECKED_BUILD
|
||||
|
||||
/* GC description */
|
||||
#undef DEFAULT_GC_NAME
|
||||
@ -10,7 +10,7 @@
|
||||
#undef DISABLED_FEATURES
|
||||
|
||||
/* Disable AOT Compiler */
|
||||
#undef DISABLE_AOT_COMPILER
|
||||
#undef DISABLE_AOT
|
||||
|
||||
/* Disable support for multiple appdomains. */
|
||||
#undef DISABLE_APPDOMAINS
|
||||
@ -94,9 +94,6 @@
|
||||
/* Disable Shadow Copy for AppDomains */
|
||||
#undef DISABLE_SHADOW_COPY
|
||||
|
||||
/* Disable inter-process shared handles */
|
||||
#undef DISABLE_SHARED_HANDLES
|
||||
|
||||
/* Disable shared perfcounters. */
|
||||
#undef DISABLE_SHARED_PERFCOUNTERS
|
||||
|
||||
@ -133,6 +130,9 @@
|
||||
/* Enable the LLVM back end */
|
||||
#undef ENABLE_LLVM
|
||||
|
||||
/* Runtime support code for llvm enabled */
|
||||
#undef ENABLE_LLVM_RUNTIME
|
||||
|
||||
/* Enable using `perf` for profiling on Linux */
|
||||
#undef ENABLE_PERF_EVENTS
|
||||
|
||||
@ -260,6 +260,12 @@
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#undef HAVE_EXECINFO_H
|
||||
|
||||
/* Define to 1 if you have the `execv' function. */
|
||||
#undef HAVE_EXECV
|
||||
|
||||
/* Define to 1 if you have the `execve' function. */
|
||||
#undef HAVE_EXECVE
|
||||
|
||||
/* Define to 1 if you have the `execvp' function. */
|
||||
#undef HAVE_EXECVP
|
||||
|
||||
@ -272,6 +278,9 @@
|
||||
/* Define to 1 if you have the `finite' function. */
|
||||
#undef HAVE_FINITE
|
||||
|
||||
/* Define to 1 if you have the `fork' function. */
|
||||
#undef HAVE_FORK
|
||||
|
||||
/* Define to 1 if you have the <fstab.h> header file. */
|
||||
#undef HAVE_FSTAB_H
|
||||
|
||||
@ -332,9 +341,6 @@
|
||||
/* Define to 1 if you have the `getpriority' function. */
|
||||
#undef HAVE_GETPRIORITY
|
||||
|
||||
/* Define if GetProcessId is available */
|
||||
#undef HAVE_GETPROCESSID
|
||||
|
||||
/* Have getprotobyname */
|
||||
#undef HAVE_GETPROTOBYNAME
|
||||
|
||||
@ -413,6 +419,9 @@
|
||||
/* isinf available */
|
||||
#undef HAVE_ISINF
|
||||
|
||||
/* Define to 1 if you have the `kill' function. */
|
||||
#undef HAVE_KILL
|
||||
|
||||
/* Define to 1 if you have the `kqueue' function. */
|
||||
#undef HAVE_KQUEUE
|
||||
|
||||
@ -470,6 +479,9 @@
|
||||
/* Define to 1 if you have the `mmap' function. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Moving collector */
|
||||
#undef HAVE_MOVING_COLLECTOR
|
||||
|
||||
/* Define to 1 if you have the `mremap' function. */
|
||||
#undef HAVE_MREMAP
|
||||
|
||||
@ -575,12 +587,6 @@
|
||||
/* Define to 1 if you have the `remap_file_pages' function. */
|
||||
#undef HAVE_REMAP_FILE_PAGES
|
||||
|
||||
/* Define to 1 if you have the `rint' function. */
|
||||
#undef HAVE_RINT
|
||||
|
||||
/* Define to 1 if you have the `round' function. */
|
||||
#undef HAVE_ROUND
|
||||
|
||||
/* Define to 1 if you have the `sched_getcpu' function. */
|
||||
#undef HAVE_SCHED_GETCPU
|
||||
|
||||
@ -632,6 +638,9 @@
|
||||
/* Define to 1 if you have the `sigaction' function. */
|
||||
#undef HAVE_SIGACTION
|
||||
|
||||
/* Define to 1 if you have the `signal' function. */
|
||||
#undef HAVE_SIGNAL
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#undef HAVE_SIGNAL_H
|
||||
|
||||
@ -707,6 +716,9 @@
|
||||
/* Define to 1 if `kp_proc' is a member of `struct kinfo_proc'. */
|
||||
#undef HAVE_STRUCT_KINFO_PROC_KP_PROC
|
||||
|
||||
/* Define to 1 if the system has the type `struct linger'. */
|
||||
#undef HAVE_STRUCT_LINGER
|
||||
|
||||
/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */
|
||||
#undef HAVE_STRUCT_PASSWD_PW_GECOS
|
||||
|
||||
@ -806,9 +818,6 @@
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sem.h> header file. */
|
||||
#undef HAVE_SYS_SEM_H
|
||||
|
||||
/* Define to 1 if you have the <sys/sendfile.h> header file. */
|
||||
#undef HAVE_SYS_SENDFILE_H
|
||||
|
||||
@ -896,6 +905,9 @@
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the <unwind.h> header file. */
|
||||
#undef HAVE_UNWIND_H
|
||||
|
||||
/* Define to 1 if you have /usr/include/malloc.h. */
|
||||
#undef HAVE_USR_INCLUDE_MALLOC_H
|
||||
|
||||
@ -945,6 +957,9 @@
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* The architecture this is running on */
|
||||
#undef MONO_ARCHITECTURE
|
||||
|
||||
/* Enable the allocation and indexing of arrays greater than Int32.MaxValue */
|
||||
#undef MONO_BIG_ARRAYS
|
||||
|
||||
@ -957,6 +972,9 @@
|
||||
/* native types */
|
||||
#undef MONO_NATIVE_TYPES
|
||||
|
||||
/* AOT cross offsets file */
|
||||
#undef MONO_OFFSETS_FILE
|
||||
|
||||
/* Reduce runtime requirements (and capabilities) */
|
||||
#undef MONO_SMALL_CONFIG
|
||||
|
||||
@ -1071,6 +1089,9 @@
|
||||
/* ... */
|
||||
#undef TARGET_SPARC64
|
||||
|
||||
/* The JIT/AOT targets WatchOS */
|
||||
#undef TARGET_WATCHOS
|
||||
|
||||
/* Target Platform is Win32 */
|
||||
#undef TARGET_WIN32
|
||||
|
||||
|
@ -1 +1 @@
|
||||
08afe9df2791baac02e8201b01cce1aca3beb124
|
||||
79ba3854a41b122e90badfb88a8aba24b6abc54c
|
@ -1 +1 @@
|
||||
4fa615ca8fe030cfede44041b86cf5bfc38aceaf
|
||||
568cb227ed520bd10d312bf4a66ccba0f772b016
|
@ -14,7 +14,8 @@ EXTRA_DIST = \
|
||||
net_1_1/machine.config \
|
||||
gdb/mono-gdb.py \
|
||||
gdb/gdb-python.diff \
|
||||
lldb/mono.py
|
||||
lldb/mono.py \
|
||||
lldb/monobt.py
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
|
||||
|
@ -237,8 +237,6 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BOEHM_DEFINES = @BOEHM_DEFINES@
|
||||
BUILD_EXEEXT = @BUILD_EXEEXT@
|
||||
BUILD_GLIB_CFLAGS = @BUILD_GLIB_CFLAGS@
|
||||
BUILD_GLIB_LIBS = @BUILD_GLIB_LIBS@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
@ -254,9 +252,9 @@ CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_PROFILE = @DEFAULT_PROFILE@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SHARED_HANDLES = @DISABLE_SHARED_HANDLES@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOLT_BASH = @DOLT_BASH@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
@ -274,8 +272,6 @@ GDKX11 = @GDKX11@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GMODULE_CFLAGS = @GMODULE_CFLAGS@
|
||||
GMODULE_LIBS = @GMODULE_LIBS@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GREP = @GREP@
|
||||
@ -447,7 +443,8 @@ EXTRA_DIST = \
|
||||
net_1_1/machine.config \
|
||||
gdb/mono-gdb.py \
|
||||
gdb/gdb-python.diff \
|
||||
lldb/mono.py
|
||||
lldb/mono.py \
|
||||
lldb/monobt.py
|
||||
|
||||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
@SUPPORT_SGEN_FALSE@SGENPCFILE =
|
||||
|
@ -10,7 +10,7 @@
|
||||
<dllmap dll="i:odbc32.dll" target="libiodbc.dylib" os="osx"/>
|
||||
<dllmap dll="oci" target="libclntsh@libsuffix@" os="!windows"/>
|
||||
<dllmap dll="db2cli" target="libdb2_36@libsuffix@" os="!windows"/>
|
||||
<dllmap dll="MonoPosixHelper" target="@prefix@/@reloc_libdir@/libMonoPosixHelper@libsuffix@" os="!windows" />
|
||||
<dllmap dll="MonoPosixHelper" target="$mono_libdir/libMonoPosixHelper@libsuffix@" os="!windows" />
|
||||
<dllmap dll="i:msvcrt" target="@LIBC@" os="!windows"/>
|
||||
<dllmap dll="i:msvcrt.dll" target="@LIBC@" os="!windows"/>
|
||||
<dllmap dll="sqlite" target="@SQLITE@" os="!windows"/>
|
||||
|
@ -48,7 +48,7 @@ def stringify_class_name(ns, name):
|
||||
if ns == "":
|
||||
return name
|
||||
else:
|
||||
return "%s.%s".format (ns, name)
|
||||
return "{}.{}".format (ns, name)
|
||||
|
||||
class ArrayPrinter:
|
||||
"Print a C# array"
|
||||
@ -61,7 +61,7 @@ class ArrayPrinter:
|
||||
def to_string(self):
|
||||
obj = self.val.cast (gdb.lookup_type ("MonoArray").pointer ()).dereference ()
|
||||
length = obj ['max_length']
|
||||
return "%s [%d]".format (stringify_class_name (self.class_ns, self.class_name [0:len(self.class_name) - 2]), int(length))
|
||||
return "{} [{}]".format (stringify_class_name (self.class_ns, self.class_name [0:len(self.class_name) - 2]), int(length))
|
||||
|
||||
class ObjectPrinter:
|
||||
"Print a C# object"
|
||||
@ -91,7 +91,7 @@ class ObjectPrinter:
|
||||
return (field.name, self.obj [field.name])
|
||||
except:
|
||||
# Superclass
|
||||
return (field.name, self.obj.cast (gdb.lookup_type ("%s".format (field.name))))
|
||||
return (field.name, self.obj.cast (gdb.lookup_type ("{}".format (field.name))))
|
||||
|
||||
def children(self):
|
||||
# FIXME: It would be easier if gdb.Value would support iteration itself
|
||||
@ -105,7 +105,7 @@ class ObjectPrinter:
|
||||
if class_name [-2:len(class_name)] == "[]":
|
||||
return {}.__iter__ ()
|
||||
try:
|
||||
gdb_type = gdb.lookup_type ("struct %s_%s".format (class_ns.replace (".", "_"), class_name))
|
||||
gdb_type = gdb.lookup_type ("struct {}_{}".format (class_ns.replace (".", "_"), class_name))
|
||||
return self._iterator(obj.cast (gdb_type))
|
||||
except:
|
||||
return {}.__iter__ ()
|
||||
@ -127,12 +127,12 @@ class ObjectPrinter:
|
||||
return ArrayPrinter (self.val,class_ns,class_name).to_string ()
|
||||
if class_ns != "":
|
||||
try:
|
||||
gdb_type = gdb.lookup_type ("struct %s.%s".format (class_ns, class_name))
|
||||
gdb_type = gdb.lookup_type ("struct {}.{}".format (class_ns, class_name))
|
||||
except:
|
||||
# Maybe there is no debug info for that type
|
||||
return "%s.%s".format (class_ns, class_name)
|
||||
return "{}.{}".format (class_ns, class_name)
|
||||
#return obj.cast (gdb_type)
|
||||
return "%s.%s".format (class_ns, class_name)
|
||||
return "{}.{}".format (class_ns, class_name)
|
||||
return class_name
|
||||
except:
|
||||
print (sys.exc_info ()[0])
|
||||
@ -152,9 +152,9 @@ class MonoMethodPrinter:
|
||||
val = self.val.dereference ()
|
||||
klass = val ["klass"].dereference ()
|
||||
class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
|
||||
return "\"%s:%s ()\"".format (class_name, val ["name"].string ())
|
||||
return "\"{}:{} ()\"".format (class_name, val ["name"].string ())
|
||||
# This returns more info but requires calling into the inferior
|
||||
#return "\"%s\"".format (gdb.parse_and_eval ("mono_method_full_name (%s, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
|
||||
#return "\"{}\"".format (gdb.parse_and_eval ("mono_method_full_name ({}, 1)".format (str (int (self.val.cast (gdb.lookup_type ("guint64")))))).string ())
|
||||
|
||||
class MonoClassPrinter:
|
||||
"Print a MonoClass structure"
|
||||
@ -168,13 +168,13 @@ class MonoClassPrinter:
|
||||
klass = self.val.dereference ()
|
||||
class_name = stringify_class_name (klass ["name_space"].string (), klass ["name"].string ())
|
||||
if klass ["generic_class"].cast (gdb.lookup_type ("guint64")) != 0:
|
||||
class_name = "%s<%s>".format (class_name, str (klass ["generic_class"]["context"]["class_inst"]))
|
||||
class_name = "{}<{}>".format (class_name, str (klass ["generic_class"]["context"]["class_inst"]))
|
||||
if add_quotes:
|
||||
return "\"%s\"".format (class_name)
|
||||
return "\"{}\"".format (class_name)
|
||||
else:
|
||||
return class_name
|
||||
# This returns more info but requires calling into the inferior
|
||||
#return "\"%s\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*)%s)->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
|
||||
#return "\"{}\"".format (gdb.parse_and_eval ("mono_type_full_name (&((MonoClass*){})->byval_arg)".format (str (int ((self.val).cast (gdb.lookup_type ("guint64")))))))
|
||||
|
||||
def to_string(self):
|
||||
try:
|
||||
@ -222,7 +222,7 @@ class MonoGenericClassPrinter:
|
||||
method_inst_str = ""
|
||||
if int(method_inst.cast (gdb.lookup_type ("guint64"))) != 0:
|
||||
method_inst_str = str(method_inst)
|
||||
return "%s, [%s], [%s]>".format (container_str, class_inst_str, method_inst_str)
|
||||
return "{}, [{}], [{}]>".format (container_str, class_inst_str, method_inst_str)
|
||||
|
||||
def to_string(self):
|
||||
try:
|
||||
@ -252,9 +252,9 @@ class MonoTypePrinter:
|
||||
info = str(t ["data"]["generic_class"])
|
||||
|
||||
if info != "":
|
||||
return "{%s, %s}".format (kind, info)
|
||||
return "{{}, {}}".format (kind, info)
|
||||
else:
|
||||
return "{%s}".format (kind)
|
||||
return "{{}}".format (kind)
|
||||
except:
|
||||
#print (sys.exc_info ()[0])
|
||||
#print (sys.exc_info ()[1])
|
||||
@ -283,7 +283,7 @@ class MonoMethodRgctxPrinter:
|
||||
if i > 0:
|
||||
inst_str = inst_str + ", "
|
||||
inst_str = inst_str + type_printer.to_string ()
|
||||
return "MRGCTX[%s, [%s]]".format (klass_printer.to_string(), inst_str)
|
||||
return "MRGCTX[{}, [{}]]".format (klass_printer.to_string(), inst_str)
|
||||
|
||||
class MonoVTablePrinter:
|
||||
"Print a MonoVTable structure"
|
||||
@ -298,7 +298,7 @@ class MonoVTablePrinter:
|
||||
klass = vtable ["klass"]
|
||||
klass_printer = MonoClassPrinter (klass)
|
||||
|
||||
return "vtable(%s)".format (klass_printer.to_string ())
|
||||
return "vtable({})".format (klass_printer.to_string ())
|
||||
|
||||
def lookup_pretty_printer(val):
|
||||
t = str (val.type)
|
||||
|
56
data/lldb/monobt.py
Normal file
56
data/lldb/monobt.py
Normal file
@ -0,0 +1,56 @@
|
||||
import lldb
|
||||
|
||||
def print_frames(thread, num_frames, current_thread):
|
||||
# TODO: Make output header similar to bt.
|
||||
print '%c thread #%i' % ('*' if current_thread else ' ', thread.idx)
|
||||
|
||||
if current_thread:
|
||||
selected_frame = thread.GetSelectedFrame()
|
||||
|
||||
for frame in thread.frames[:+num_frames]:
|
||||
pc = str(frame.addr)
|
||||
fmt = ' %c %s'
|
||||
var = frame
|
||||
if pc[0] == '0':
|
||||
try:
|
||||
framestr = frame.EvaluateExpression('(char*)mono_pmip((void*)%s)' % pc).summary[1:-1]
|
||||
var = 'frame #%i: %s%s' % (frame.idx, pc, framestr)
|
||||
except:
|
||||
pass
|
||||
|
||||
print fmt % ('*' if current_thread and frame.idx == selected_frame.idx else ' ', var)
|
||||
|
||||
def monobt(debugger, command, result, dict):
|
||||
opts = {'all_bt': False, 'num_frames': None}
|
||||
|
||||
if command == 'all':
|
||||
opts['all_bt'] = True
|
||||
elif command.isdigit():
|
||||
opts['num_frames'] = int(command)
|
||||
elif command != '':
|
||||
print 'error: monobt [<number>|all]'
|
||||
return
|
||||
|
||||
target = debugger.GetSelectedTarget()
|
||||
process = target.process
|
||||
|
||||
if not process.IsValid():
|
||||
print 'error: invalid process'
|
||||
return
|
||||
|
||||
if opts['all_bt']:
|
||||
for thread in process.threads:
|
||||
print_frames(thread, len(thread), process.selected_thread == thread)
|
||||
print ''
|
||||
else:
|
||||
thread = process.selected_thread
|
||||
num_frames = len(thread) if opts['num_frames'] is None else opts['num_frames']
|
||||
print_frames(thread, num_frames, True)
|
||||
|
||||
return None
|
||||
|
||||
def __lldb_init_module (debugger, dict):
|
||||
# This initializer is being run from LLDB in the embedded command interpreter
|
||||
# Add any commands contained in this module to LLDB
|
||||
debugger.HandleCommand('command script add -f monobt.monobt monobt')
|
||||
print '"monobt" command installed'
|
@ -6,4 +6,4 @@ libdir=${exec_prefix}/lib
|
||||
Name: Mono NUnit
|
||||
Description: Mono's version of NUnit
|
||||
Version: @VERSION@
|
||||
Libs: -r:${libdir}/mono/2.0/nunit.core.dll -r:${libdir}/mono/2.0/nunit.core.interfaces.dll -r:${libdir}/mono/2.0/nunit.core.extensions.dll -r:${libdir}/mono/2.0/nunit.framework.dll -r:${libdir}/mono/2.0/nunit.framework.extensions.dll -r:${libdir}/mono/2.0/nunit.mocks.dll -r:${libdir}/mono/2.0/nunit.util.dll -r:${libdir}/mono/2.0/nunit-console-runner.dll
|
||||
Libs: -r:${libdir}/mono/4.5/nunit.core.dll -r:${libdir}/mono/4.5/nunit.core.interfaces.dll -r:${libdir}/mono/4.5/nunit.core.extensions.dll -r:${libdir}/mono/4.5/nunit.framework.dll -r:${libdir}/mono/4.5/nunit.framework.extensions.dll -r:${libdir}/mono/4.5/nunit.mocks.dll -r:${libdir}/mono/4.5/nunit.util.dll -r:${libdir}/mono/4.5/nunit-console-runner.dll
|
||||
|
@ -159,8 +159,6 @@ AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
BOEHM_DEFINES = @BOEHM_DEFINES@
|
||||
BUILD_EXEEXT = @BUILD_EXEEXT@
|
||||
BUILD_GLIB_CFLAGS = @BUILD_GLIB_CFLAGS@
|
||||
BUILD_GLIB_LIBS = @BUILD_GLIB_LIBS@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
CCASDEPMODE = @CCASDEPMODE@
|
||||
@ -176,9 +174,9 @@ CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_PROFILE = @DEFAULT_PROFILE@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DISABLE_SHARED_HANDLES = @DISABLE_SHARED_HANDLES@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
DOLT_BASH = @DOLT_BASH@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
@ -196,8 +194,6 @@ GDKX11 = @GDKX11@
|
||||
GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
|
||||
GLIB_CFLAGS = @GLIB_CFLAGS@
|
||||
GLIB_LIBS = @GLIB_LIBS@
|
||||
GMODULE_CFLAGS = @GMODULE_CFLAGS@
|
||||
GMODULE_LIBS = @GMODULE_LIBS@
|
||||
GMSGFMT = @GMSGFMT@
|
||||
GMSGFMT_015 = @GMSGFMT_015@
|
||||
GREP = @GREP@
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user