At the request of reviewers, I have removed the "alias names" stuff, and I've re-written the description of the .o --> .a change. Here's the revised request-for-review.
(I was going to just abandon this effort/branch, but the rest of the changes are IMHO too important to discard.)
After several months of work, it's now (nearly) time to merge the pgoyette-compat branch. (Yeah, I know that many/most of you don't "allow" modules into your environments in the first place, so none of this really affects you at all.) This branch includes the following major changes: * Separation of the single "monolithic" compat module into multiple modules, one for each older version of NetBSD. With this, you can load only as much compat code as you want, without having to build a custom compat module. (You still need a custom kernel to start with, in order not to have all the compat code being built-in.) Sys-calls that are implemented in the compat module will now load only the necessary compat code, rather than the entire monolithic module. * Elimination of the limit on the number of "required" modules (or "dependencies") for a module. There was previously a limit of MAXMODDEPS (value 10), with a statically-allocated array; now the array is dynamically allocated and expanded as needed.
* Also eliminate the limit on the depth of recursive loading of required modules. Previously there was a limit of six levels of recursion (MODULE_MAX_DEPTH), referencing a statically allocated array. Now, the elements of that array are dynamically allocated as needed, and recursion depth has no practical limit.
* Extraction of some COMPAT_xx code that was previously intertwined with the main kernel build and not available in non-built-in modules. One example of this is the COMPAT_70 code for rtsock (which bit me when it was introduced, and was the main reason for undertaking the work on this branch). * Removed linking of the .o kernel compat library into all kernels.
This was introduced some time ago as a hack for including some support routines that weren't being properly included in the modules that needed them. These support routines are now in their own module, and we no longer need to use the .o build method. So we return to the original use of a .a compat library. This also allows removal of a work-around that was deliberately introduced into the compat_sysv module, which had a side-effect of breaking auto-load of compat_sysv.
Other activity is documented in src/doc/COMPAT-branch-notes file. There are a number of activities that still need to be worked on; these are also listed in the src/doc/COMPAT-branch-notes file. None of these activites should prevent merging of the branch, as the short-comings are already present on the mainline. I welcome any timely review and constructive feedback. I'd like to get this committed sometime in the next two or three weeks if possible.
+------------------+--------------------------+----------------------------+ | Paul Goyette | PGP Key fingerprint: | E-mail addresses: | | (Retired) | FA29 0E3B 35AF E8AE 6651 | paul at whooppee dot com | | Kernel Developer | 0786 F758 55DE 53BA 7731 | pgoyette at netbsd dot org | +------------------+--------------------------+----------------------------+