Hello everyone - I've been playing around with combining the rump kernel with the HaLVM, and have a few quick (I hope) questions, mostly in the service of trying to minimize the amount of code I end up linking.
(1) Is there a guide somewhere that describes (at least briefly) what each library in the rumpkernel (rumprun_base, rump, rumpkern_bmktc, rumpdev_bpf, etc.) is supposed to do? Some of them I can guess by the name (rumpdev_bpf, for example), but others are a bit more opaque. I can try to start putting one together somewhere, if not. (2) I was stripping down a rumpkernel image to try to get rid of as many dependencies as possible, and ended up needing to write a "librumpnonet_config" (note the "no"), in order to satisfy some dependencies in librumprun_base. It's obviously pretty simple, and I'd be happy to send a pull request if you're interested, but another way to do it would be with weak definitions in rumprun_base. Do you have a preference between the two approaches? The functions in question are 'rump_pub_netconfig_ipv6_ifaddr', 'rump_pub_netconfig_ipv4_gw', and friends. (4) There's a lot of --whole-archive thrown around in the linker files. Is trying to get rid of these a fight worth attempting, or have you already tried and I should just give up now and trust 'strip' to help me later? (A conclusion I'd like to avoid, as I don't want to get rid of debugging symbols, just dead code.) I think that's it for now. So far this has been a pretty smooth transition, and I'm really excited about some of the capabilities it brings. I'm just trying to make sure I hit a couple big issues (like binary size) early, to make sure I'm not surprised by them later. Thanks for all your hard work! - Adam
