In Solaris, the weak symbols are also used within kernel. The generic part of kernel (called codice_18) specifies weak functions that are overridden in platform specific part of the kernel (called codice_19) such as Virtual memory routines. The kernel runtime linker sets the addresses of these functions when the kernel is combined together in memory during boot. This does not work for kernel loadable modules though - weak symbol in the kernel is not replaced with kernel module symbol when the module is loaded.