Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception: Could not load ikvm native library. #556

Closed
lytico opened this issue Jul 12, 2024 · 8 comments
Closed

Exception: Could not load ikvm native library. #556

lytico opened this issue Jul 12, 2024 · 8 comments

Comments

@lytico
Copy link

lytico commented Jul 12, 2024

Version: "IKVM" "8.9.0"

Linux Mint 21.3 Cinnamon
Kernel 6.5.0-41-generic
Processor AMD Ryzen 

everything compiles fine, programm is starting, but calling plantuml.dll it crashes

Exception in thread "Thread-1" java.lang.ExceptionInInitializerError: IKVM.Runtime.InternalException: Could not load ikvm native library.
   at IKVM.Runtime.LibIkvm..ctor()
   at IKVM.Runtime.LibIkvm..cctor()
	at IKVM.Java.Externs.java.lang.UNIXProcess.init(Unknown Source)
	at java.lang.UNIXProcess.init(Native Method)
	at java.lang.UNIXProcess.<clinit>(UNIXProcess.java:493)

csproj-file (partly):

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net8.0</TargetFramework>
    </PropertyGroup>
    <PropertyGroup>
        <RootNamespace>Limaki</RootNamespace>
        <OutputType>Exe</OutputType>
        <StartupObject>Limaki.DocumentModel.PlantUml.Runner.Program</StartupObject>
    </PropertyGroup>
    ....
    <ItemGroup>
        <PackageReference Include="IKVM" Version="8.9.0" />
        <IkvmReference Include="..\3rdParty\PlantUml\plantuml.1.2021.4.jar">
            <AssemblyName>plantuml</AssemblyName>
            <AssemblyVersion>2.5.1</AssemblyVersion>
            <AssemblyFileVersion>2.5.1</AssemblyFileVersion>
        </IkvmReference>
    </ItemGroup>

the output folder contains
... /bin/Release/net8.0/runtimes/linux-x64/native/libikvm.so

@wasabii
Copy link
Contributor

wasabii commented Jul 12, 2024

Oh, darn. Well, that looks correct.....

Is there an appropropriate .deps.json generated along with it?

@lytico
Copy link
Author

lytico commented Jul 12, 2024

@wasabii
Copy link
Contributor

wasabii commented Jul 12, 2024

Can you run ldd against libikvm.so?

@lytico
Copy link
Author

lytico commented Jul 12, 2024

ldd libikvm.so


	linux-vdso.so.1 (0x00007ffcb1b73000)libmd.so.0 (0x000072beda8b3000)
	/usr/local/lib/AppProtection/libAppProtection.so (0x00007de9aac00000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007de9aa800000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007de9aaf48000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007de9aaf43000)
	/lib64/ld-linux-x86-64.so.2 (0x00007de9aaf71000)
	libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007de9aaac0000)
	libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007de9aaf17000)
	libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007de9aaf03000)
	libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007de9aa400000)
	libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007de9aaefd000)
	libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007de9aaef5000)
	libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007de9aaede000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007de9aa719000)
	libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007de9aaebe000)
	libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007de9aaea6000)
	libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007de9aae99000)

@lytico
Copy link
Author

lytico commented Jul 12, 2024

plantuml.dll decompiled:


using IKVM.Attributes;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;

// Assembly plantuml, Version=2.5.1.0, Culture=neutral, PublicKeyToken=13235d27fcbfff58
// MVID: DAA6B414-330B-4A1C-8F01-705E8F1677C8
// Assembly references:
// IKVM.Runtime, Version=8.9.0.0, Culture=neutral, PublicKeyToken=13235d27fcbfff58
// System.Runtime, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// IKVM.Java, Version=8.9.0.0, Culture=neutral, PublicKeyToken=13235d27fcbfff58
// System.Threading, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// System.Threading.Thread, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.DisableOptimizations)]
[assembly: InternalsVisibleTo("plantuml-ikvm-runtime-injected")]
[assembly: AssemblyFileVersion("2.5.1.0")]
[assembly: AssemblyVersion("2.5.1.0")]

[module: SourceFile(null)]
[module: PackageList("plantuml.1.2021.4.jar", new string[] {"ext.plantuml.com.ctreber.acearth", "ext.plantuml.com.ctreber.acearth.renderer", "ext.plantuml.com.ctreber.acearth.gui", "ext.plantuml.com.ctreber.acearth.plugins", "ext.plantuml.com.ctreber.acearth.plugins.markers", "ext.plantuml.com.ctreber.acearth.projection", "ext.plantuml.com.ctreber.acearth.scanbit", "ext.plantuml.com.ctreber.acearth.scandot", "ext.plantuml.com.ctreber.acearth.shader", "ext.plantuml.com.ctreber.acearth.util", "ext.plantuml.com.ctreber.aclib.gui", "ext.plantuml.com.ctreber.aclib.sort", "ext.plantuml.com.google.zxing", "ext.plantuml.com.google.zxing.client.j2se", "ext.plantuml.com.google.zxing.common", "ext.plantuml.com.google.zxing.common.reedsolomon", "ext.plantuml.com.google.zxing.datamatrix.decoder", "ext.plantuml.com.google.zxing.qrcode", "ext.plantuml.com.google.zxing.qrcode.decoder", "ext.plantuml.com.google.zxing.qrcode.encoder", "gen.annotation", "gen.lib.cdt", "smetana.core", "gen.lib.cgraph", "gen.lib.common", "gen.lib.dotgen", "gen.lib.gvc", "gen.lib.label", "gen.lib.pack", "gen.lib.pathplan", "gen.plugin.dot_layout", "h", "jcckit.plot", "jcckit", "jcckit.data", "jcckit.util", "jcckit.graphic", "jcckit.renderer", "jcckit.transformation", "net.sourceforge.plantuml", "net.sourceforge.plantuml.core", "net.sourceforge.plantuml.graphic", "net.sourceforge.plantuml.ugraphic", "net.sourceforge.plantuml.svek", "net.sourceforge.plantuml.preproc2", "net.sourceforge.plantuml.creole.atom", "net.sourceforge.plantuml.acearth", "net.sourceforge.plantuml.api", "net.sourceforge.plantuml.command", "net.sourceforge.plantuml.activitydiagram3", "net.sourceforge.plantuml.activitydiagram3.ftile", "net.sourceforge.plantuml.activitydiagram3.command", "net.sourceforge.plantuml.creole", "net.sourceforge.plantuml.activitydiagram3.ftile.vertical", "net.sourceforge.plantuml.style", "net.sourceforge.plantuml.activitydiagram3.ftile.vcompact", "net.sourceforge.plantuml.activitydiagram3.ftile.vcompact.cond", "net.sourceforge.plantuml.cucadiagram", "net.sourceforge.plantuml.activitydiagram", "net.sourceforge.plantuml.activitydiagram.command", "net.sourceforge.plantuml.anim", "net.sourceforge.plantuml.ant", "net.sourceforge.plantuml.api.mda.option2", "net.sourceforge.plantuml.api.mda.option3", "net.sourceforge.plantuml.skin", "net.sourceforge.plantuml.asciiart", "net.sourceforge.plantuml.skin.rose", "net.sourceforge.plantuml.board", "net.sourceforge.plantuml.bpm", "net.sourceforge.plantuml.braille", "net.sourceforge.plantuml.brotli", "net.sourceforge.plantuml.classdiagram", "net.sourceforge.plantuml.objectdiagram", "net.sourceforge.plantuml.classdiagram.command", "net.sourceforge.plantuml.code", "net.sourceforge.plantuml.code.deflate", "net.sourceforge.plantuml.command.note", "net.sourceforge.plantuml.command.note.sequence", "net.sourceforge.plantuml.command.regex", "net.sourceforge.plantuml.compositediagram", "net.sourceforge.plantuml.compositediagram.command", "net.sourceforge.plantuml.creole.command", "net.sourceforge.plantuml.creole.legacy", "net.sourceforge.plantuml.creole.rosetta", "net.sourceforge.plantuml.cucadiagram.dot", "net.sourceforge.plantuml.cucadiagram.entity", "net.sourceforge.plantuml.dedication", "net.sourceforge.plantuml.definition", "net.sourceforge.plantuml.descdiagram", "net.sourceforge.plantuml.descdiagram.command", "net.sourceforge.plantuml.directdot", "net.sourceforge.plantuml.ditaa", "net.sourceforge.plantuml.donors", "net.sourceforge.plantuml.eggs", "net.sourceforge.plantuml.eps", "net.sourceforge.plantuml.error", "net.sourceforge.plantuml.evalex", "net.sourceforge.plantuml.flashcode", "net.sourceforge.plantuml.flowdiagram", "net.sourceforge.plantuml.font", "net.sourceforge.plantuml.ftp", "net.sourceforge.plantuml.fun", "net.sourceforge.plantuml.geom", "net.sourceforge.plantuml.geom.kinetic", "net.sourceforge.plantuml.gitlog", "net.sourceforge.plantuml.golem", "net.sourceforge.plantuml.graph2", "net.sourceforge.plantuml.graph", "net.sourceforge.plantuml.graphic.color", "net.sourceforge.plantuml.hector2", "net.sourceforge.plantuml.hector2.continuity", "net.sourceforge.plantuml.hector2.graphic", "net.sourceforge.plantuml.hector2.layering", "net.sourceforge.plantuml.hector2.mpos", "net.sourceforge.plantuml.hector", "net.sourceforge.plantuml.help", "net.sourceforge.plantuml.html", "net.sourceforge.plantuml.jasic", "net.sourceforge.plantuml.jcckit", "net.sourceforge.plantuml.json", "net.sourceforge.plantuml.jsondiagram", "net.sourceforge.plantuml.logo", "net.sourceforge.plantuml.math", "net.sourceforge.plantuml.mda", "net.sourceforge.plantuml.mindmap", "net.sourceforge.plantuml.mjpeg", "net.sourceforge.plantuml.nwdiag", "net.sourceforge.plantuml.objectdiagram.command", "net.sourceforge.plantuml.openiconic", "net.sourceforge.plantuml.openiconic.data", "net.sourceforge.plantuml.oregon", "net.sourceforge.plantuml.pdf", "net.sourceforge.plantuml.picoweb", "net.sourceforge.plantuml.png", "net.sourceforge.plantuml.posimo", "net.sourceforge.plantuml.preproc", "net.sourceforge.plantuml.project", "net.sourceforge.plantuml.project.core3", "net.sourceforge.plantuml.project.command", "net.sourceforge.plantuml.project.core", "net.sourceforge.plantuml.project.draw", "net.sourceforge.plantuml.project.lang", "net.sourceforge.plantuml.project.solver", "net.sourceforge.plantuml.project.time", "net.sourceforge.plantuml.project.timescale", "net.sourceforge.plantuml.real", "net.sourceforge.plantuml.salt", "net.sourceforge.plantuml.salt.element", "net.sourceforge.plantuml.salt.factory", "net.sourceforge.plantuml.sdot", "net.sourceforge.plantuml.security", "net.sourceforge.plantuml.sequencediagram", "net.sourceforge.plantuml.sequencediagram.command", "net.sourceforge.plantuml.sequencediagram.graphic", "net.sourceforge.plantuml.sequencediagram.puma", "net.sourceforge.plantuml.sequencediagram.teoz", "net.sourceforge.plantuml.sprite", "net.sourceforge.plantuml.statediagram", "net.sourceforge.plantuml.statediagram.command", "net.sourceforge.plantuml.stats", "net.sourceforge.plantuml.stats.api", "net.sourceforge.plantuml.sudoku", "net.sourceforge.plantuml.svek.extremity", "net.sourceforge.plantuml.svek.image", "net.sourceforge.plantuml.svg", "net.sourceforge.plantuml.swing", "net.sourceforge.plantuml.syntax", "net.sourceforge.plantuml.telnet", "net.sourceforge.plantuml.text", "net.sourceforge.plantuml.tikz", "net.sourceforge.plantuml.tim", "net.sourceforge.plantuml.tim.expression", "net.sourceforge.plantuml.tim.iterator", "net.sourceforge.plantuml.tim.stdlib", "net.sourceforge.plantuml.timingdiagram", "net.sourceforge.plantuml.timingdiagram.command", "net.sourceforge.plantuml.timingdiagram.graphic", "net.sourceforge.plantuml.ugraphic.arc", "net.sourceforge.plantuml.ugraphic.color", "net.sourceforge.plantuml.ugraphic.comp", "net.sourceforge.plantuml.ugraphic.debug", "net.sourceforge.plantuml.ugraphic.eps", "net.sourceforge.plantuml.ugraphic.g2d", "net.sourceforge.plantuml.ugraphic.hand", "net.sourceforge.plantuml.ugraphic.html5", "net.sourceforge.plantuml.ugraphic.svg", "net.sourceforge.plantuml.ugraphic.tikz", "net.sourceforge.plantuml.ugraphic.txt", "net.sourceforge.plantuml.ugraphic.visio", "net.sourceforge.plantuml.utils", "net.sourceforge.plantuml.version", "net.sourceforge.plantuml.vizjs", "net.sourceforge.plantuml.wbs", "net.sourceforge.plantuml.webp", "net.sourceforge.plantuml.windowsdot", "net.sourceforge.plantuml.wire", "net.sourceforge.plantuml.xmi", "net.sourceforge.plantuml.xmlsc", "net.sourceforge.plantuml.yaml", "net.sourceforge.plantuml.zopfli", "org.stathissideris.ascii2image.core", "org.stathissideris.ascii2image.graphics", "org.stathissideris.ascii2image.text", "smetana.core.debug"})]
[module: JavaModule(Jars = new string[] {"plantuml.1.2021.4.jar"})]

@wasabii
Copy link
Contributor

wasabii commented Jul 12, 2024

Can you try to set the env variable IKVM_LIBRARY_PATH to the runtimes/linux-x64/native path in the output?

Just to verify it loads it that way.

This is a bug. I have it reproducing on my end. Somehow NativeLibrary isn't loading from .deps.json like it should.

@wasabii
Copy link
Contributor

wasabii commented Jul 12, 2024

Got it. Will release patch .... by tomorrow.

@lytico
Copy link
Author

lytico commented Jul 15, 2024

thanks for the fast patch!

it's working now with the .csproj given as example above

info

i updated to the latest version of plantuml 1.2024.6, and it works fine too - just in case you'll ever asked for ikvm - plantuml-compatibility like in this issue #466

whgfu added a commit to whgfu/ikvm that referenced this issue Aug 27, 2024
* Remove some old awt stuff.

* Catch more specific ByteCode errors.

* Change linkbase back.

* Remove emptyEnumeration. This is built into OpenJDK now.

* Search up from IKVM.Runtime. Because we need to put IKVM.Runtime in runtimes/ now, it's possible that it might not be colocated with ikvm.properties.

* Move includes of ikvm.dll for netfx to a target so it doesn't show up as a link.

* Condition.

* Prefix paths.

* Remove bin package, image package. Add jre and jdk. At the end of the day, NuGet is the way. But having a separate JDK and JRE download makes sense.

* Add jre/jdk and remove bin.
Merge debug output.... since IncludeBuildOutput prevents per-tfm build output.

* Fix name.

* Fix name.

* Up OpenJDK version

* Merge

* Tests

* Block all AWT tests on macOS

* CI Failing

* CI Failing 2nd

* CI Failing 3rd

* CI Failing 4th

* Wrap exception for error reading JAR info. Might provide better debugging for ikvmnet#549.

* CI Failing 5th

* CI Failing 6th

* Upload JRE and JDK items.

* Update release task.

* Remove net8 version of tools. Simply won't fit into package. We really should externalize JavaCompiler.

* Move IKVM.ByteCode to separate package. This is a long time coming. It reduces the size of the IKVM nupkg file by a slight amount, and may be lower than NuGet max package size.

* CI Failing 7th

* Add IKVM.ByteCode to local required packages for tests.

* Remove WorkaroundAbstractMethodWidening
Remove WorkaroundInterfaceFields
Remove WorkaroundInterfacePrivateMethods
Remove WorkaroundInterfaceStaticMethods

Each of these generate various compatibility code to make the IKVM IL compatible with pre-Roslyn C# compilers. We are a long way past that now. Enum types should be directly visible. Methods on fields should be accessible. Etc.

This changes the layout of produced .NET types, and is thus an API break.

* Remove usage of workaroundBaseClass.

* TaskHostFactory for NETFX.

* Generate CoreResourceBundleControl.java instead of relying on build.

* Generate LocalDataMetaInfo.

* Generate policy JARs.

* Big cleanup of property, itemgroup and target names.

* So, here's how this works. We build using target and source 7. We then build nasgen. We then run nasgen against the built classes. This emits some more classes (and potentially replacements). Then we copy the original classes ontop of those where missing. This provides the combination of both original and nasgen'd.

* Build Nashorn against JDK.

* dep

* Escape slashes.

* Rename

* Specify assembly so we search in relation to the same AppContext. Should fix ikvmnet#556.

Signed-off-by: Jerome Haltom <[email protected]>

* Generating most Corba stuff now. Still need to strip properties.

* Remove original BreakIterator files.

* Rename and more some JDK specific stuff to the jdk targets file.

* Add some extra tests for nashorn.

* Trigger TargetsTriggeredByCompilation in _CoreCompile so it only runs when needed.
Use JetBrains RefAssembler thing to turn IKVM.Java ref into real ref.
Remove BreakIterator stuff.

* Ignore duplicate classes

* Disable net472 for OSX and Linux images.
Use JetBrains to convert to real ref assembly. This works....

* Add missing break iterator classes.

* Convert not Compile.

* Escape slashes?

* Include all typoes. Don't include attribute. Seems to be kinda busted with ikvmc.

* Update System.Text.Json

Signed-off-by: Jerome Haltom <[email protected]>

* Use new target.

* Use new target.

* Increase blame timeout.

* Remove TaskHostFactory for Core and give it a try?

Signed-off-by: Jerome Haltom <[email protected]>

* Disable TaskHostFactory on Core. Unsure if this is the cause of our issues.

* Set NUGET_PACKAGES env variable to empty.

* Fix missing output files for X11 gen.

* Set NUGET_PACKAGES env variable to empty.

* Fix X11 thing.

* Move version.properties to proper sub dir.
Add missing service file.

* Change tests over to net8.0, unless full_test is specified, then include both. Also remove osx unless set.

Signed-off-by: Jerome Haltom <[email protected]>

* Enabled some working langtools tests. Might break on non-Windows.

* Fix bundle output dir.
Properly delete files.

* Wildcards not working.

* Use string new.

* Stage to separate group so we can access metadata.

* Unknown why this breaks on NET8.

Signed-off-by: Jerome Haltom <[email protected]>

* Update ExcludeList.net8.0.txt

Signed-off-by: Jerome Haltom <[email protected]>

* Sort

* Oops.

* Rename targets.

* Rename targets.

* Fix recursion.

* Update ExcludeList.net8.0.txt

Signed-off-by: Jerome Haltom <[email protected]>

* Update ExcludeList.txt

Signed-off-by: Jerome Haltom <[email protected]>

* Remove OpenJDK build!!!!!!!

* Document it!

* Add build jtreg!

* Recache.

* No need for OJDK artifact.

* Rename some targets.

* Expire JTreg cache.

* Fix property name.

* Remove some slashes.

* Bad itemgroup name.

* Use Corba build tools instead of JDK build tools.

* Move submodules

* Change jtreg path.

* Missed path.

* Update to 412-b07

* Remove JVM_Exit.
Add new flag for OSX compile of libzip.

* Fix LogStrings

Signed-off-by: Jerome Haltom <[email protected]>

* Merge in some changes from upstream.
Add libj2gss.
Add libsspi_bridge.

* Update IKVM.Java.runtime.corba.targets

Signed-off-by: Jerome Haltom <[email protected]>

* Add deps to other libs.

* Fix path.

* Fix path.

* Fix source.

* Disable libsspi_bridge for now. Need to figure out headers.

* Fix sspi_bridge.

* Update IKVM.Java.csproj

Signed-off-by: Jerome Haltom <[email protected]>

* Update IKVM.Image-bin.csproj

Signed-off-by: Jerome Haltom <[email protected]>

* Update openjdk.

* Clean up jaxp, jaxws.
Use ServiceFile architecture for every service file. Combine multiple.

* Update to rebased.

* Make sure we write file if it's missing.

* Rebased again. Cleaned up a few line feed files.

* Wrong builder number.

* Remove win-arm from list of supported archs.

Signed-off-by: Jerome Haltom <[email protected]>

* Move tests into test/ subpath, and include root level test/lib dir. Required by some tests.

* Requires JRE directory. Might have to deal with this some day.

* Just one file.

* Should use # syntax.

* Clear referent when queued.

* Ignore cgroup test.

* Fix MIDI thing.

* ignore some more

* Trying to update JTreg to 5.1

* Merge.

* Fix jt 5.1 issues.

* Update openjdk.

* Bunch more.

* Bad extension.

* Fails on Ubuntu for some reason. Gets close I think.

* JFR.

* Add static compiler-flag

* Typo

* Specific test was renamed to .java.
BasicHTML bug.

* This seems to be broke somewhere.

* Fix properties.

* Gotta use runtime handle.

Add Assembly to Launcher.Run. We populate this with the entry point type and use it to ensure the assembly is on the classpath. Fixes ikvmnet#564

* Fix properties.

* Gotta use runtime handle.

Add Assembly to Launcher.Run. We populate this with the entry point type and use it to ensure the assembly is on the classpath. Fixes ikvmnet#564

* Use reflection to prevent ClassLiteral initializing. Add assembly after init.

* Revert "Gotta use runtime handle."

This reverts commit 45b713f.

* Upgrade to 8u422-b05.

* Going to disable this test for now. There were CP943 changes in OpenJDK. But I don't understand them enough.

* Do a strong load by invoking something.

* Few more certs to exclude due to file paths.

* Thsi fails more often than not.

* Updated to rebased commit.

* Remove IKVM.ByteCode project. Replace with dependency on IKVM.ByteCode package.

* Remove netcoreapp3.1 version.

* Remove tests.

* Use default method.

* Rename property after Review

* Support Static parameter on IkvmReference

* Copy Static-property from IkvmReference to IkvmReferenceItem

* Upgrade IKVM.ByteCode. But don't replace handles yet.

* Exclude osx-arm64 net472.

* Add NuGet source.

* Final release version.

* Integrated new IKVM.ByteCode version which completely redoes almost everything.

* Should fix serialization.

* Space.

* Usings.

* Add section back

* Clean up file a bit and check for nulls.

* Clean up file.

* Don't bother serializing an empty table.
Fix an IsNotNil/Nil swap.

* Update to release 8.12 of IKVM.ByteCode.

* Remove local fdlibm.

* a

* Remove JMath and an unused file.

* Fix up fdlibm. Still crashes though. Not sure what' sup with that.

* Hmm

* Revert "Remove local fdlibm."

This reverts commit a06da41.

* Restore JMath.

* Remove VFS layer for cacerts.

* Update IKVM.yml

Signed-off-by: Jerome Haltom <[email protected]>

* Upgrade to IKVM.ByteCode 9.

* Old namespace.

* Use pattern matching for a test.
IKVM.ByteCode 9.0.0 release.

* `Assembly.Location` might return an empty string.
`Path.GetDirectoryName` on Full Framework will then fail with `The path is not of a legal form.`.

* Update LibIkvm.cs

Signed-off-by: Fabian <[email protected]>

* Use CodeDecoder to parse instructions.

* Latest IKVM.ByteCode. Fixes switch decode.
Integrate CodeDecoder into IKVM. No longer uses it's own parser.

* Fix Index/Range thing. Might as well keep this. But it's unrelated to this PR.
Latest ByteCode release.

* Ensure we keep last nop in the right place.

* Fix from rename

* Removed most of the existing StubGen architecture. Now building Stubs using IKVM.ByteCode. This deleted quite a few files.
SerialVersionUID generation revamped to use IncrementalHash.

* Latest version.

* Clean up StubGen, splitting parts out into methods.

* Name.

* Technically a bug in IKVM.ByteCode. It should be emitting bytes as signed integers. But it doesn't. Already fixed up stream, but this solves it here.

* Add a test for Byte.
Cast to sbyte first.

* Add diagnostic framework.

* Replace IssueMessage with various versions of Report. It's still a bit weird how there are special calls for CompilerClassLoader. This is because its the only thing that holds the options.

Problem is not all Types are part of a ClassLoader. Some are shared between class loaders. Maybe it makes sense to have some fundamental class loader for them.

* Include in package.

* Replacing remaining Trace stuff and removed Trace. Hide Trace and Information in console output. Need to figure out how best to make this configurable.

* !

* Change .ClassLoader to a property.
Reimplement Diagnostics as a more EventSource focused interface, calling explicit methods. Add an EvetnSource bridge used on JVM (real runtime). Forward as DiagnosticEvent records to ikvmc and ikvmstub.

* Remove linefeeds from messages.
Add Diagnostic event back.

* Remove unused variable.

* NonEvent.

* Renumber. Overlapping.

* Fix messages.

* Dedupe

* Add instance of eventsource.
Use UnloadableType with type set instead of just name.
Emit log messages a bit cleaner.

* Visibility.

* Output log file and copy to cache.

* Use IKVM not IKVMC.

* Missing a space after level tag.

* Include options path if present.

---------

Signed-off-by: Jerome Haltom <[email protected]>
Signed-off-by: Fabian <[email protected]>
Co-authored-by: Jerome Haltom <[email protected]>
Co-authored-by: AliveDevil <[email protected]>
Co-authored-by: Fabian-Schmidt <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants