überXMHF (rpi3-armv8_32): Convert into a üobject collection with a single üobject

I created a new branch with the recent changes. So from my fork (of uberspark), it is the rpi3fixes branch.

So does this new branch include the previous changes introduced by feature-rpi3sentinels?

Nevermind. I realized we already merged feature-rpi3sentinels. I have updated the OP with the merge details of that branch just to avoid further confusion :slight_smile:

I will take a look at your branch rpi3fixes tommorow and add support for threading in libgcc.a.

Hey @Cap,

Can you submit a PR for your rpi3fixes branch? I would like to have that linked to the OP in this thread since it subsumes a task (fixing crt headers) that I have now deleted.


I can. I didn’t know if we wanted to integrate the libgcc.a first.

Good point. Coming to think of it, I have created a new task to add the libgcc support ànd the crt header switch to top-level uberspark.h. See below:

Could you perhaps rename the rpi3fixes branch in your uberspark fork to something like feature-ccbridge-cclib and issue a PR? I can then push my changes to the PR and we can get it merged before we move forward on this thread.

Thanks @Cap

sure thing. I’ll clean-up my branch, rename it and make the PR later today.

PR submitted. Ready for your changes.

Thanks @Cap. I will revert back once I have my changes in.

Aight @Cap. I have pushed a couple of change sets:

  1. feature-ccbridge-cclib branch on your fork of uberspark/uberspark.git
  2. feature-uberobjcol branch on your fork of uberspark/uberxmhf.git

Currently running make within uxmhf-rpi3/uobjcoll folder of feature-uberobjcol branch eliminates all the prior linker errors and only has the following errors left:

uberspark >> [docker] core/main.c.o: In function `guest_cp15_trap_handler':
uberspark >> [docker] main.c:(.text+0x410): undefined reference to `ctxtrace_cp15_trap_handler'
uberspark >> [docker] core/main.c.o: In function `secondary_main':
uberspark >> [docker] main.c:(.text+0x774): undefined reference to `ctxtrace_init'
uberspark >> [docker] core/ghcall.c.o: In function `guest_hypercall_handler':
uberspark >> [docker] ghcall.c:(.text+0x32): undefined reference to `uapp_uhcalltest_handlehcall'
uberspark >> [docker] ghcall.c:(.text+0x4c): undefined reference to `uapp_utpmtest_handlehcall'
uberspark >> [docker] ghcall.c:(.text+0x66): undefined reference to `uapp_pa5encfs_handlehcall'
uberspark >> ERROR: could not link uobj object files!

uberspark >> ERROR: could not build uobj(s)!

The above should be relatively easy to fix by removing invocations to corresponding uapps or by including them within the manifest.

I would suggest to remove invocations to uapps and give it a shot initially. We can then add the uapps to the manifest and try.

We are getting very close to getting this built as a collection!


Ok. We have a successful uobjcoll build!

I have pushed corresponding changes to below:

  1. feature-ccbridge-cclib branch on your fork of uberspark/uberspark.git
  2. feature-uberobjcol branch on your fork of uberspark/uberxmhf.git

I am presently testing the generated uobjcoll binary to see if we can successfully boot-strap it with the current bootstrapper on the Rpi3. Will keep you posted…

1 Like

Aight folks. We have a successful boot of the Linux OS kernel on the Raspbian distro with the uobj collection :slight_smile:

I have pushed my current changes into the above branches.

I am going to clean up a few things and we should be good to merge this :wink:

When I try to build the uobj collection, I receive a number of errors. All related to the ubojrtl/crt. They are all Error: bad instruction ... For example, many of the typedefs in stdint.h, and the mem* and str* functions in string.h.

Hmm. That is wierd. I am able to build and test successfully. Did you make sure you pulled the latest from both branches? Can you post a build log? Thanks

I agree, I was not expecting this result. See build log. out.txt (76.8 KB)

Hey @Cap,

Looking through your log, it seems like you might not have installed the latest version of the uberspark toolchain.

Check if you have the latest feature-ccbridge-cclib branch on your fork of uberspark/uberspark.git and then do:

  1. make clean
  2. make
  3. make install

to install the latest version of the toolchain from branch feature-ccbridge-cclib

Then try building the micro-hypervisor uobjcollection using feature-uberobjcol branch on your fork of uberspark/uberxmhf.git

Let me know if that helps.

You are correct. For some reason, I was having an issue fetching the latest changes to the uberspark toolchain. Now, with the latest change set I build successfully!

I’ve lost lock on this task. Are additional actions needed, or is it ready for a PR?

Hey @Cap,

Can you test a build of the uobjcoll with the latest uberspark/uberspark.git:develop branch on the feature-uberobjcol branch of your fork of uberspark/uberxmhf.git ?


building the uobjcoll with the latest uberspark toolchain reports:

uberspark >> uobj collection build success!
built xmhf-rpi3 successfully!