]>
Commit | Line | Data |
---|---|---|
1c79356b A |
1 | # |
2 | # Subtle combination of files and libraries make up the C++ runtime system for | |
3 | # kernel modules. We are dependant on the KernelModule kmod.make and | |
4 | # CreateKModInfo.perl scripts to be exactly instep with both this library | |
5 | # module and the libkmod module as well. | |
6 | # | |
7 | # If you do any maintenance on any of the following files make sure great | |
8 | # care is taken to keep them in Sync. | |
9 | # extenTools/KernelModule.bproj/kmod.make | |
10 | # extenTools/KernelModule.bproj/CreateKModInfo.perl | |
11 | # IOKitUser/kmodc++/pure.c | |
12 | # IOKitUser/kmodc++/cplus_start.c | |
13 | # IOKitUser/kmodc++/cplus_start.c | |
14 | # IOKitUser/kmodc/c_start.c | |
15 | # IOKitUser/kmodc/c_stop.c | |
16 | # | |
17 | # The trick is that the linkline links all of the developers modules. | |
18 | # If any static constructors are used .constructors_used will be left as | |
19 | # an undefined symbol. This symbol is exported by the cplus_start.c routine | |
20 | # which automatically brings in the appropriate C++ _start routine. However | |
21 | # the actual _start symbol is only required by the kmod_info structure that | |
22 | # is created and initialized by the CreateKModInfo.perl script. If no C++ | |
23 | # was used the _start will be an undefined symbol that is finally satisfied | |
24 | # by the c_start module in the kmod library. | |
25 | # | |
26 | # The linkline must look like this. | |
27 | # *.o -lkmodc++ kmod_info.o -lkmod | |
28 | # |