[email protected] said:
> Martin Lucina writes ("rumprun-xen: Cleaning up the Mini-OS namespace"):
> > These changes also remove the old (non-app-tools based) demo from the
> > rumprun-xen build. I've added in a simple "Hello World" demo using
> > Ian's app-tools for testing. We can improve the demos later.
> 
> That demo is used as a smoke test by our CI system.

Which demo? What CI system? I only disabled the old rumpkern_demo.c from
the build, not the app-tools tests/configure which is used by the Travis CI
configuration.

> > 1) Would the upstream Xen folks be interested in these changes? I have
> > deliberately tried to avoid making any functional changes, and kept the
> > Mini-OS name and namespace to facilitate merging, despite discussing
> > various other non-OS names with Antti :-)
> 
> We definitely want these changes upstream.

Okay, that needs a bit more work (see the other relevant threads on the
list). Also, the rumprun-xen build makes extraneous changes to the Mini-OS
Makefile, which we shouldn't be doing if we don't want to diverge.

ie. We should import the xen.git mini-os into rumprun-xen verbatim...

> > 2) The objcopy command in app-tools/ld is now redundant, right? This was
> > presumably part of a former attempt at fixing the namespacing issue.
> 
> I haven't reviewed your patch series, but it seems unlikely that this
> is no longer needed.
> 
> The objcopy is there to separate the NetBSD `kernel' namespace from
> the application `userland' namespace.

The lines in question are:

(Makefile:138, GLOBAL_PREFIX is set to xenos_)
$(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start [email protected] [email protected]

(app-tools/ld:52)
objcopy -w -G xenos_* -G _start "$inter1" "$inter2"

Thing is, there are no symbols called xenos_* being defined anywhere that I
can see, which is why I wrote that this seems a part of a former attempt to
fix the namespacing problem.

My patches handle this differently - Mini-OS is linked using ld -r into
a discrete .o file and objcopy is run on the resulting minios.o file at
build time to make all symbols except some select prefixes local to that
file:

# Prefixes for global API names. All other symbols in mini-os are localised
# before linking with rumprun applications.
GLOBAL_PREFIXES := _minios_ minios_ HYPERVISOR_ blkfront_ netfront_ pcifront_ 
xenbus_
GLOBAL_PREFIXES := $(patsubst %,-G %*, $(GLOBAL_PREFIXES))
minios.o: links $(OBJS) arch_lib
        $(LD) -r $(LDFLAGS) $(OBJS) $(LDARCHLIB) $(LDLIBS) -o $@
        $(OBJCOPY) -w $(GLOBAL_PREFIXES) -G _start $@ $@

app-tools then links your user application with this minios.o.

Hope this clears things up.

Martin

------------------------------------------------------------------------------
_______________________________________________
rumpkernel-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rumpkernel-users

Reply via email to