Added LLVMModule>>verify and LLVMFunction>>verify
authorJan Vrany <jan.vrany@fit.cvut.cz>
Sat, 18 Jun 2016 16:00:36 +0100
changeset 65 9244f78bcf02
parent 64 70dd75ab337c
child 66 0125c050d0f1
Added LLVMModule>>verify and LLVMFunction>>verify
LLVMFunction.st
LLVMModule.st
LLVMModuleVerificationError.st
Make.proto
Make.spec
abbrev.stc
bc.mak
bmake.bat
jv_llvm_s.st
libInit.cc
mingwmake.bat
vcmake.bat
--- a/LLVMFunction.st	Fri Jun 17 23:43:23 2016 +0100
+++ b/LLVMFunction.st	Sat Jun 18 16:00:36 2016 +0100
@@ -18,7 +18,7 @@
 LLVMValue subclass:#LLVMFunction
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:''
+	poolDictionaries:'LLVMVerifierFailureAction'
 	category:'LLVM-S-Core'
 !
 
@@ -140,3 +140,23 @@
     "Created: / 10-08-2015 / 19:02:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMFunction methodsFor:'utilities'!
+
+verify
+    "Verifies that a function is valid. If yes, this method is no-op.
+     If false, throws LLVMModuleVerificationError."
+
+    (LLVM VerifyFunction: self _: LLVMReturnStatusAction) ifTrue:[
+        LLVMModuleVerificationError signal: 'Function is not valid (failed to verify)'
+    ].
+
+    "Created: / 18-06-2016 / 15:56:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!LLVMFunction class methodsFor:'documentation'!
+
+version_HG
+
+    ^ '$Changeset: <not expanded> $'
+! !
+
--- a/LLVMModule.st	Fri Jun 17 23:43:23 2016 +0100
+++ b/LLVMModule.st	Sat Jun 18 16:00:36 2016 +0100
@@ -18,7 +18,7 @@
 LLVMDisposableObject subclass:#LLVMModule
 	instanceVariableNames:''
 	classVariableNames:''
-	poolDictionaries:'LLVMTypeKind'
+	poolDictionaries:'LLVMTypeKind LLVMVerifierFailureAction'
 	category:'LLVM-S-Core'
 !
 
@@ -225,6 +225,25 @@
     "Created: / 05-08-2015 / 23:29:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
+!LLVMModule methodsFor:'utilities'!
+
+verify
+    "Verifies that a module is valid. If yes, this method is no-op.
+     If false, throws LLVMModuleVerificationError."
+
+    | msgPtr msg |
+
+    msgPtr := ExternalBytes new: ExternalBytes sizeofPointer.
+
+    (LLVM VerifyModule: self _: LLVMReturnStatusAction _: msgPtr) ifTrue:[
+        msg := (msgPtr pointerAt: 1) copyCStringFromHeap.
+        LLVM DisposeMessage: (msgPtr pointerAt: 1).
+        LLVMModuleVerificationError signal: msg.  
+    ].
+
+    "Created: / 18-06-2016 / 15:48:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
 !LLVMModule methodsFor:'writing-assembly'!
 
 writeAssemblyOn: aStream
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/LLVMModuleVerificationError.st	Sat Jun 18 16:00:36 2016 +0100
@@ -0,0 +1,42 @@
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+"{ Package: 'jv:llvm_s' }"
+
+"{ NameSpace: Smalltalk }"
+
+Error subclass:#LLVMModuleVerificationError
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'LLVM-S-Core-Exceptions'
+!
+
+!LLVMModuleVerificationError class methodsFor:'documentation'!
+
+copyright
+"
+    Copyright (C) 2015-now Jan Vrany
+
+    This code is not an open-source (yet). You may use this code
+    for your own experiments and projects, given that:
+
+    * all modification to the code will be sent to the
+      original author for inclusion in future releases
+    * this is not used in any commercial software
+
+    This license is provisional and may (will) change in
+    a future.
+"
+! !
+
--- a/Make.proto	Fri Jun 17 23:43:23 2016 +0100
+++ b/Make.proto	Sat Jun 18 16:00:36 2016 +0100
@@ -34,7 +34,7 @@
 # add the path(es) here:,
 # ********** OPTIONAL: MODIFY the next lines ***
 # LOCALINCLUDES=-Ifoo -Ibar
-LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/libbasic
 
 
 # if you need any additional defines for embedded C code,
@@ -146,6 +146,7 @@
 $(OUTDIR)LLVMMCJITCompilerOptions.$(O) LLVMMCJITCompilerOptions.$(C) LLVMMCJITCompilerOptions.$(H): LLVMMCJITCompilerOptions.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMetadataKind.$(O) LLVMMetadataKind.$(C) LLVMMetadataKind.$(H): LLVMMetadataKind.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMModuleFlagBehavior.$(O) LLVMModuleFlagBehavior.$(C) LLVMModuleFlagBehavior.$(H): LLVMModuleFlagBehavior.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMModuleVerificationError.$(O) LLVMModuleVerificationError.$(C) LLVMModuleVerificationError.$(H): LLVMModuleVerificationError.st $(INCLUDE_TOP)/stx/libbasic/Error.$(H) $(INCLUDE_TOP)/stx/libbasic/Exception.$(H) $(INCLUDE_TOP)/stx/libbasic/GenericException.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMObjectArray.$(O) LLVMObjectArray.$(C) LLVMObjectArray.$(H): LLVMObjectArray.st $(INCLUDE_TOP)/stx/libbasic/ArrayedCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/Collection.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalBytes.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SequenceableCollection.$(H) $(INCLUDE_TOP)/stx/libbasic/UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)LLVMOpcode.$(O) LLVMOpcode.$(C) LLVMOpcode.$(H): LLVMOpcode.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMRealPredicate.$(O) LLVMRealPredicate.$(C) LLVMRealPredicate.$(H): LLVMRealPredicate.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/SharedPool.$(H) $(STCHDR)
@@ -169,11 +170,11 @@
 $(OUTDIR)LLVMValue.$(O) LLVMValue.$(C) LLVMValue.$(H): LLVMValue.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(C) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMModuleFlagBehavior.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMExecutionEngine.$(O) LLVMExecutionEngine.$(C) LLVMExecutionEngine.$(H): LLVMExecutionEngine.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(C) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMValue.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(C) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMValue.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMVerifierFailureAction.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMGenericValue.$(O) LLVMGenericValue.$(C) LLVMGenericValue.$(H): LLVMGenericValue.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIRBuilder.$(O) LLVMIRBuilder.$(C) LLVMIRBuilder.$(H): LLVMIRBuilder.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMIntPredicate.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMRealPredicate.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeKind.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMCJITMemoryManager.$(O) LLVMMCJITMemoryManager.$(C) LLVMMCJITMemoryManager.$(H): LLVMMCJITMemoryManager.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMModule.$(O) LLVMModule.$(C) LLVMModule.$(H): LLVMModule.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeKind.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMModule.$(O) LLVMModule.$(C) LLVMModule.$(H): LLVMModule.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMTypeKind.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMVerifierFailureAction.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMModuleProvider.$(O) LLVMModuleProvider.$(C) LLVMModuleProvider.$(H): LLVMModuleProvider.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassManager.$(O) LLVMPassManager.$(C) LLVMPassManager.$(H): LLVMPassManager.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetData.$(O) LLVMTargetData.$(C) LLVMTargetData.$(H): LLVMTargetData.st $(INCLUDE_TOP)/jv/llvm_s/LLVMDisposableObject.$(H) $(INCLUDE_TOP)/jv/llvm_s/LLVMObject.$(H) $(INCLUDE_TOP)/stx/libbasic/ExternalAddress.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR)
--- a/Make.spec	Fri Jun 17 23:43:23 2016 +0100
+++ b/Make.spec	Sat Jun 18 16:00:36 2016 +0100
@@ -71,6 +71,7 @@
 	LLVMMCJITCompilerOptions \
 	LLVMMetadataKind \
 	LLVMModuleFlagBehavior \
+	LLVMModuleVerificationError \
 	LLVMObjectArray \
 	LLVMOpcode \
 	LLVMRealPredicate \
@@ -147,6 +148,7 @@
     $(OUTDIR_SLASH)LLVMMCJITCompilerOptions.$(O) \
     $(OUTDIR_SLASH)LLVMMetadataKind.$(O) \
     $(OUTDIR_SLASH)LLVMModuleFlagBehavior.$(O) \
+    $(OUTDIR_SLASH)LLVMModuleVerificationError.$(O) \
     $(OUTDIR_SLASH)LLVMObjectArray.$(O) \
     $(OUTDIR_SLASH)LLVMOpcode.$(O) \
     $(OUTDIR_SLASH)LLVMRealPredicate.$(O) \
--- a/abbrev.stc	Fri Jun 17 23:43:23 2016 +0100
+++ b/abbrev.stc	Sat Jun 18 16:00:36 2016 +0100
@@ -21,6 +21,7 @@
 LLVMMCJITCompilerOptions LLVMMCJITCompilerOptions jv:llvm_s 'LLVM-S-Core' 0
 LLVMMetadataKind LLVMMetadataKind jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMModuleFlagBehavior LLVMModuleFlagBehavior jv:llvm_s 'LLVM-S-Core-Constants' 0
+LLVMModuleVerificationError LLVMModuleVerificationError jv:llvm_s 'LLVM-S-Core-Exceptions' 1
 LLVMObjectArray LLVMObjectArray jv:llvm_s 'LLVM-S-Core' 0
 LLVMOpcode LLVMOpcode jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMRealPredicate LLVMRealPredicate jv:llvm_s 'LLVM-S-Core-Constants' 0
@@ -29,7 +30,6 @@
 LLVMVerifierFailureAction LLVMVerifierFailureAction jv:llvm_s 'LLVM-S-Core-Constants' 0
 LLVMVisibility LLVMVisibility jv:llvm_s 'LLVM-S-Core-Constants' 0
 jv_llvm_s jv_llvm_s jv:llvm_s '* Projects & Packages *' 3
-LLVMExamples LLVMExamples jv:llvm_s 'LLVM-S-Core-Examples' 1
 LLVMObject LLVMObject jv:llvm_s 'LLVM-S-Internal' 0
 LLVMTypeError LLVMTypeError jv:llvm_s 'LLVM-S-Core-Exceptions' 1
 LLVMBasicBlock LLVMBasicBlock jv:llvm_s 'LLVM-S-Core' 0
@@ -73,3 +73,4 @@
 LLVMTypeFloat LLVMTypeFloat jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypePPC_FP128 LLVMTypePPC_FP128 jv:llvm_s 'LLVM-S-Core-Types' 0
 LLVMTypeX86_FP80 LLVMTypeX86_FP80 jv:llvm_s 'LLVM-S-Core-Types' 0
+LLVMExamples LLVMExamples jv:llvm_s 'LLVM-S-Core-Examples' 1
--- a/bc.mak	Fri Jun 17 23:43:23 2016 +0100
+++ b/bc.mak	Sat Jun 18 16:00:36 2016 +0100
@@ -35,7 +35,7 @@
 
 
 
-LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\goodies\sunit -I$(INCLUDE_TOP)\stx\libbasic
+LOCALINCLUDES= -I$(INCLUDE_TOP)\stx\libbasic
 LOCALDEFINES=
 
 STCLOCALOPT=-package=$(PACKAGE) -I. $(LOCALINCLUDES) -headerDir=. $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES)  -varPrefix=$(LIBNAME)
@@ -88,6 +88,7 @@
 $(OUTDIR)LLVMMCJITCompilerOptions.$(O) LLVMMCJITCompilerOptions.$(C) LLVMMCJITCompilerOptions.$(H): LLVMMCJITCompilerOptions.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMetadataKind.$(O) LLVMMetadataKind.$(C) LLVMMetadataKind.$(H): LLVMMetadataKind.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMModuleFlagBehavior.$(O) LLVMModuleFlagBehavior.$(C) LLVMModuleFlagBehavior.$(H): LLVMModuleFlagBehavior.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
+$(OUTDIR)LLVMModuleVerificationError.$(O) LLVMModuleVerificationError.$(C) LLVMModuleVerificationError.$(H): LLVMModuleVerificationError.st $(INCLUDE_TOP)\stx\libbasic\Error.$(H) $(INCLUDE_TOP)\stx\libbasic\Exception.$(H) $(INCLUDE_TOP)\stx\libbasic\GenericException.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMObjectArray.$(O) LLVMObjectArray.$(C) LLVMObjectArray.$(H): LLVMObjectArray.st $(INCLUDE_TOP)\stx\libbasic\ArrayedCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\Collection.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalBytes.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SequenceableCollection.$(H) $(INCLUDE_TOP)\stx\libbasic\UninterpretedBytes.$(H) $(STCHDR)
 $(OUTDIR)LLVMOpcode.$(O) LLVMOpcode.$(C) LLVMOpcode.$(H): LLVMOpcode.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
 $(OUTDIR)LLVMRealPredicate.$(O) LLVMRealPredicate.$(C) LLVMRealPredicate.$(H): LLVMRealPredicate.st $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(INCLUDE_TOP)\stx\libbasic\SharedPool.$(H) $(STCHDR)
@@ -111,11 +112,11 @@
 $(OUTDIR)LLVMValue.$(O) LLVMValue.$(C) LLVMValue.$(H): LLVMValue.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMDIBuilder.$(O) LLVMDIBuilder.$(C) LLVMDIBuilder.$(H): LLVMDIBuilder.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMModuleFlagBehavior.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMExecutionEngine.$(O) LLVMExecutionEngine.$(C) LLVMExecutionEngine.$(H): LLVMExecutionEngine.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(C) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMValue.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMFunction.$(O) LLVMFunction.$(C) LLVMFunction.$(H): LLVMFunction.st $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMValue.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMVerifierFailureAction.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMGenericValue.$(O) LLVMGenericValue.$(C) LLVMGenericValue.$(H): LLVMGenericValue.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMIRBuilder.$(O) LLVMIRBuilder.$(C) LLVMIRBuilder.$(H): LLVMIRBuilder.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMIntPredicate.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMRealPredicate.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeKind.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMMCJITMemoryManager.$(O) LLVMMCJITMemoryManager.$(C) LLVMMCJITMemoryManager.$(H): LLVMMCJITMemoryManager.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
-$(OUTDIR)LLVMModule.$(O) LLVMModule.$(C) LLVMModule.$(H): LLVMModule.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeKind.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
+$(OUTDIR)LLVMModule.$(O) LLVMModule.$(C) LLVMModule.$(H): LLVMModule.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMTypeKind.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMVerifierFailureAction.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMModuleProvider.$(O) LLVMModuleProvider.$(C) LLVMModuleProvider.$(H): LLVMModuleProvider.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMPassManager.$(O) LLVMPassManager.$(C) LLVMPassManager.$(H): LLVMPassManager.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
 $(OUTDIR)LLVMTargetData.$(O) LLVMTargetData.$(C) LLVMTargetData.$(H): LLVMTargetData.st $(INCLUDE_TOP)\jv\llvm_s\LLVMDisposableObject.$(H) $(INCLUDE_TOP)\jv\llvm_s\LLVMObject.$(H) $(INCLUDE_TOP)\stx\libbasic\ExternalAddress.$(H) $(INCLUDE_TOP)\stx\libbasic\Object.$(H) $(STCHDR)
--- a/bmake.bat	Fri Jun 17 23:43:23 2016 +0100
+++ b/bmake.bat	Sat Jun 18 16:00:36 2016 +0100
@@ -11,6 +11,5 @@
 make.exe -N -f bc.mak  %DEFINES% %*
 
 
-@IF "%1" EQU "test" exit /b 0
 
 
--- a/jv_llvm_s.st	Fri Jun 17 23:43:23 2016 +0100
+++ b/jv_llvm_s.st	Sat Jun 18 16:00:36 2016 +0100
@@ -91,7 +91,6 @@
      by searching all classes (and their packages) which are referenced by my classes."
 
     ^ #(
-        #'stx:goodies/sunit'    "TestAsserter - superclass of LLVMExamples"
     )
 !
 
@@ -158,6 +157,7 @@
         LLVMMCJITCompilerOptions
         LLVMMetadataKind
         LLVMModuleFlagBehavior
+        LLVMModuleVerificationError
         LLVMObjectArray
         LLVMOpcode
         LLVMRealPredicate
@@ -166,7 +166,6 @@
         LLVMVerifierFailureAction
         LLVMVisibility
         #'jv_llvm_s'
-        (LLVMExamples autoload)
         LLVMObject
         LLVMTypeError
         LLVMBasicBlock
@@ -210,12 +209,15 @@
         LLVMTypeFloat
         #'LLVMTypePPC_FP128'
         #'LLVMTypeX86_FP80'
+        (LLVMExamples autoload)
     )
 !
 
 extensionMethodNames
-    "list class/selector pairs of extensions.
-     A correponding method with real names must be present in my concrete subclasses"
+    "lists the extension methods which are to be included in the project.
+     Entries are 2-element array literals, consisting of class-name and selector.
+     A correponding method with real names must be present in my concrete subclasses
+     if it has extensions."
 
     ^ #(
         SequenceableCollection asLLVMObjectArray
--- a/libInit.cc	Fri Jun 17 23:43:23 2016 +0100
+++ b/libInit.cc	Sat Jun 18 16:00:36 2016 +0100
@@ -36,6 +36,7 @@
 extern void _LLVMMCJITCompilerOptions_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMMetadataKind_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMModuleFlagBehavior_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
+extern void _LLVMModuleVerificationError_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMObjectArray_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMOpcode_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMRealPredicate_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
@@ -88,6 +89,7 @@
 extern void _LLVMTypePPC_137FP128_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 extern void _LLVMTypeX86_137FP80_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 
+extern void _jv_137llvm_137s_extensions_Init(int pass, struct __vmData__ *__pRT__, OBJ snd);
 
 void _libjv_llvm_s_InitDefinition(int pass, struct __vmData__ *__pRT__, OBJ snd)
 {
@@ -120,6 +122,7 @@
     _LLVMMCJITCompilerOptions_Init(pass,__pRT__,snd);
     _LLVMMetadataKind_Init(pass,__pRT__,snd);
     _LLVMModuleFlagBehavior_Init(pass,__pRT__,snd);
+    _LLVMModuleVerificationError_Init(pass,__pRT__,snd);
     _LLVMObjectArray_Init(pass,__pRT__,snd);
     _LLVMOpcode_Init(pass,__pRT__,snd);
     _LLVMRealPredicate_Init(pass,__pRT__,snd);
--- a/mingwmake.bat	Fri Jun 17 23:43:23 2016 +0100
+++ b/mingwmake.bat	Sat Jun 18 16:00:36 2016 +0100
@@ -14,6 +14,5 @@
 make.exe -N -f bc.mak %DEFINES% %USEMINGW_ARG% %*
 
 
-@IF "%1" EQU "test" exit /b 0
 
 
--- a/vcmake.bat	Fri Jun 17 23:43:23 2016 +0100
+++ b/vcmake.bat	Sat Jun 18 16:00:36 2016 +0100
@@ -18,6 +18,5 @@
 make.exe -N -f bc.mak -DUSEVC=1 %DEFINES% %*
 
 
-@IF "%1" EQU "test" exit /b 0