linux-2.6.20.4-dwmw2-combined.01.diff 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. \\\\ dwmw2's --combine -fwhole-program patch for the kernel
  2. \\ original of this incarnation was here:
  3. \\ http://david.woodhou.se/linux-combine-build.patch
  4. diff -rduNp linux-2.6.20.4.orig/drivers/md/md.c linux-2.6.20.4/drivers/md/md.c
  5. --- linux-2.6.20.4.orig/drivers/md/md.c 2007-03-13 19:27:08.000000000 +0100
  6. +++ linux-2.6.20.4/drivers/md/md.c 2007-03-24 20:14:10.000000000 +0100
  7. @@ -2944,6 +2944,7 @@ static struct kobj_type md_ktype = {
  8. };
  9. int mdp_major = 0;
  10. +__internal_export(mdp_major);
  11. static struct kobject *md_probe(dev_t dev, int *part, void *data)
  12. {
  13. @@ -5602,7 +5603,7 @@ void md_autodetect_dev(dev_t dev)
  14. if (dev_cnt >= 0 && dev_cnt < 127)
  15. detected_devices[dev_cnt++] = dev;
  16. }
  17. -
  18. +__internal_export(md_autodetect_dev);
  19. static void autostart_arrays(int part)
  20. {
  21. diff -rduNp linux-2.6.20.4.orig/drivers/video/fbcvt.c linux-2.6.20.4/drivers/video/fbcvt.c
  22. --- linux-2.6.20.4.orig/drivers/video/fbcvt.c 2007-03-13 19:27:08.000000000 +0100
  23. +++ linux-2.6.20.4/drivers/video/fbcvt.c 2007-03-24 20:14:10.000000000 +0100
  24. @@ -376,3 +376,4 @@ int fb_find_mode_cvt(struct fb_videomode
  25. return 0;
  26. }
  27. +__internal_export(fb_find_mode_cvt);
  28. diff -rduNp linux-2.6.20.4.orig/fs/debugfs/inode.c linux-2.6.20.4/fs/debugfs/inode.c
  29. --- linux-2.6.20.4.orig/fs/debugfs/inode.c 2007-03-13 19:27:08.000000000 +0100
  30. +++ linux-2.6.20.4/fs/debugfs/inode.c 2007-03-24 20:14:10.000000000 +0100
  31. @@ -29,7 +29,7 @@
  32. #define DEBUGFS_MAGIC 0x64626720
  33. /* declared over in file.c */
  34. -extern struct file_operations debugfs_file_operations;
  35. +extern const struct file_operations debugfs_file_operations;
  36. static struct vfsmount *debugfs_mount;
  37. static int debugfs_mount_count;
  38. diff -rduNp linux-2.6.20.4.orig/fs/devpts/inode.c linux-2.6.20.4/fs/devpts/inode.c
  39. --- linux-2.6.20.4.orig/fs/devpts/inode.c 2007-03-13 19:27:08.000000000 +0100
  40. +++ linux-2.6.20.4/fs/devpts/inode.c 2007-03-24 20:14:10.000000000 +0100
  41. @@ -185,6 +185,7 @@ int devpts_pty_new(struct tty_struct *tt
  42. return 0;
  43. }
  44. +__internal_export(devpts_pty_new);
  45. struct tty_struct *devpts_get_tty(int number)
  46. {
  47. @@ -202,6 +203,7 @@ struct tty_struct *devpts_get_tty(int nu
  48. return tty;
  49. }
  50. +__internal_export(devpts_get_tty);
  51. void devpts_pty_kill(int number)
  52. {
  53. @@ -218,6 +220,7 @@ void devpts_pty_kill(int number)
  54. }
  55. mutex_unlock(&devpts_root->d_inode->i_mutex);
  56. }
  57. +__internal_export(devpts_pty_kill);
  58. static int __init init_devpts_fs(void)
  59. {
  60. diff -rduNp linux-2.6.20.4.orig/fs/hfsplus/inode.c linux-2.6.20.4/fs/hfsplus/inode.c
  61. --- linux-2.6.20.4.orig/fs/hfsplus/inode.c 2007-03-13 19:27:08.000000000 +0100
  62. +++ linux-2.6.20.4/fs/hfsplus/inode.c 2007-03-24 20:14:10.000000000 +0100
  63. @@ -269,7 +269,7 @@ static int hfsplus_file_release(struct i
  64. }
  65. extern struct inode_operations hfsplus_dir_inode_operations;
  66. -extern struct file_operations hfsplus_dir_operations;
  67. +extern const struct file_operations hfsplus_dir_operations;
  68. static struct inode_operations hfsplus_file_inode_operations = {
  69. .lookup = hfsplus_file_lookup,
  70. diff -rduNp linux-2.6.20.4.orig/fs/hugetlbfs/inode.c linux-2.6.20.4/fs/hugetlbfs/inode.c
  71. --- linux-2.6.20.4.orig/fs/hugetlbfs/inode.c 2007-03-13 19:27:08.000000000 +0100
  72. +++ linux-2.6.20.4/fs/hugetlbfs/inode.c 2007-03-24 20:14:10.000000000 +0100
  73. @@ -45,6 +45,7 @@ static struct backing_dev_info hugetlbfs
  74. };
  75. int sysctl_hugetlb_shm_group;
  76. +__internal_export(sysctl_hugetlb_shm_group);
  77. static void huge_pagevec_release(struct pagevec *pvec)
  78. {
  79. @@ -562,6 +563,7 @@ const struct file_operations hugetlbfs_f
  80. .fsync = simple_sync_file,
  81. .get_unmapped_area = hugetlb_get_unmapped_area,
  82. };
  83. +__internal_export(hugetlbfs_file_operations);
  84. static struct inode_operations hugetlbfs_dir_inode_operations = {
  85. .create = hugetlbfs_create,
  86. @@ -701,6 +703,7 @@ int hugetlb_get_quota(struct address_spa
  87. return ret;
  88. }
  89. +__internal_export(hugetlb_get_quota);
  90. void hugetlb_put_quota(struct address_space *mapping)
  91. {
  92. @@ -712,6 +715,7 @@ void hugetlb_put_quota(struct address_sp
  93. spin_unlock(&sbinfo->stat_lock);
  94. }
  95. }
  96. +__internal_export(hugetlb_put_quota);
  97. static int hugetlbfs_get_sb(struct file_system_type *fs_type,
  98. int flags, const char *dev_name, void *data, struct vfsmount *mnt)
  99. @@ -794,6 +798,7 @@ out_shm_unlock:
  100. user_shm_unlock(size, current->user);
  101. return ERR_PTR(error);
  102. }
  103. +__internal_export(hugetlb_zero_setup);
  104. static int __init init_hugetlbfs_fs(void)
  105. {
  106. diff -rduNp linux-2.6.20.4.orig/fs/proc/base.c linux-2.6.20.4/fs/proc/base.c
  107. --- linux-2.6.20.4.orig/fs/proc/base.c 2007-03-13 19:27:08.000000000 +0100
  108. +++ linux-2.6.20.4/fs/proc/base.c 2007-03-24 20:18:09.000000000 +0100
  109. @@ -71,6 +71,7 @@
  110. #include <linux/cpuset.h>
  111. #include <linux/audit.h>
  112. #include <linux/poll.h>
  113. +#include <linux/module.h>
  114. #include <linux/nsproxy.h>
  115. #include <linux/oom.h>
  116. #include "internal.h"
  117. @@ -2030,6 +2031,7 @@ struct dentry *proc_pid_lookup(struct in
  118. out:
  119. return result;
  120. }
  121. +__internal_export(proc_flush_task);
  122. /*
  123. * Find the first task with tgid >= tgid
  124. diff -rduNp linux-2.6.20.4.orig/fs/proc/generic.c linux-2.6.20.4/fs/proc/generic.c
  125. --- linux-2.6.20.4.orig/fs/proc/generic.c 2007-03-13 19:27:08.000000000 +0100
  126. +++ linux-2.6.20.4/fs/proc/generic.c 2007-03-24 20:14:10.000000000 +0100
  127. @@ -20,8 +20,8 @@
  128. #include <linux/namei.h>
  129. #include <linux/bitops.h>
  130. #include <linux/spinlock.h>
  131. +#include <linux/module.h>
  132. #include <asm/uaccess.h>
  133. -
  134. #include "internal.h"
  135. static ssize_t proc_file_read(struct file *file, char __user *buf,
  136. @@ -38,6 +38,7 @@ int proc_match(int len, const char *name
  137. return 0;
  138. return !memcmp(name, de->name, len);
  139. }
  140. +__internal_export(proc_match);
  141. static struct file_operations proc_file_operations = {
  142. .llseek = proc_file_lseek,
  143. diff -rduNp linux-2.6.20.4.orig/fs/proc/kcore.c linux-2.6.20.4/fs/proc/kcore.c
  144. --- linux-2.6.20.4.orig/fs/proc/kcore.c 2007-03-13 19:27:08.000000000 +0100
  145. +++ linux-2.6.20.4/fs/proc/kcore.c 2007-03-24 20:14:10.000000000 +0100
  146. @@ -19,6 +19,7 @@
  147. #include <linux/vmalloc.h>
  148. #include <linux/highmem.h>
  149. #include <linux/init.h>
  150. +#include <linux/module.h>
  151. #include <asm/uaccess.h>
  152. #include <asm/io.h>
  153. @@ -66,6 +67,7 @@ kclist_add(struct kcore_list *new, void
  154. kclist = new;
  155. write_unlock(&kclist_lock);
  156. }
  157. +__internal_export(kclist_add);
  158. static size_t get_kcore_size(int *nphdr, size_t *elf_buflen)
  159. {
  160. diff -rduNp linux-2.6.20.4.orig/fs/proc/proc_tty.c linux-2.6.20.4/fs/proc/proc_tty.c
  161. --- linux-2.6.20.4.orig/fs/proc/proc_tty.c 2007-03-13 19:27:08.000000000 +0100
  162. +++ linux-2.6.20.4/fs/proc/proc_tty.c 2007-03-24 20:14:10.000000000 +0100
  163. @@ -201,6 +201,7 @@ void proc_tty_register_driver(struct tty
  164. driver->proc_entry = ent;
  165. }
  166. +__internal_export(proc_tty_register_driver);
  167. /*
  168. * This function is called by tty_unregister_driver()
  169. @@ -217,6 +218,7 @@ void proc_tty_unregister_driver(struct t
  170. driver->proc_entry = NULL;
  171. }
  172. +__internal_export(proc_tty_unregister_driver);
  173. /*
  174. * Called by proc_root_init() to initialize the /proc/tty subtree
  175. diff -rduNp linux-2.6.20.4.orig/fs/proc/root.c linux-2.6.20.4/fs/proc/root.c
  176. --- linux-2.6.20.4.orig/fs/proc/root.c 2007-03-13 19:27:08.000000000 +0100
  177. +++ linux-2.6.20.4/fs/proc/root.c 2007-03-24 20:14:10.000000000 +0100
  178. @@ -21,7 +21,9 @@
  179. #include "internal.h"
  180. -struct proc_dir_entry *proc_net, *proc_net_stat, *proc_bus, *proc_root_fs, *proc_root_driver;
  181. +struct proc_dir_entry *proc_net;
  182. +
  183. +struct proc_dir_entry *proc_net_stat, *proc_bus, *proc_root_fs, *proc_root_driver;
  184. #ifdef CONFIG_SYSCTL
  185. struct proc_dir_entry *proc_sys_root;
  186. @@ -91,6 +93,7 @@ void __init proc_root_init(void)
  187. #endif
  188. proc_bus = proc_mkdir("bus", NULL);
  189. }
  190. +__internal_export(proc_root_init);
  191. static int proc_root_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat
  192. )
  193. @@ -163,6 +166,7 @@ struct proc_dir_entry proc_root = {
  194. .parent = &proc_root,
  195. };
  196. +__internal_export(proc_sys_root);
  197. EXPORT_SYMBOL(proc_symlink);
  198. EXPORT_SYMBOL(proc_mkdir);
  199. EXPORT_SYMBOL(create_proc_entry);
  200. diff -rduNp linux-2.6.20.4.orig/fs/ramfs/inode.c linux-2.6.20.4/fs/ramfs/inode.c
  201. --- linux-2.6.20.4.orig/fs/ramfs/inode.c 2007-03-13 19:27:08.000000000 +0100
  202. +++ linux-2.6.20.4/fs/ramfs/inode.c 2007-03-24 20:14:10.000000000 +0100
  203. @@ -225,5 +225,6 @@ int __init init_rootfs(void)
  204. {
  205. return register_filesystem(&rootfs_fs_type);
  206. }
  207. +__internal_export(init_rootfs);
  208. MODULE_LICENSE("GPL");
  209. diff -rduNp linux-2.6.20.4.orig/fs/reiserfs/dir.c linux-2.6.20.4/fs/reiserfs/dir.c
  210. --- linux-2.6.20.4.orig/fs/reiserfs/dir.c 2007-03-13 19:27:08.000000000 +0100
  211. +++ linux-2.6.20.4/fs/reiserfs/dir.c 2007-03-24 20:14:10.000000000 +0100
  212. @@ -11,7 +11,7 @@
  213. #include <linux/buffer_head.h>
  214. #include <asm/uaccess.h>
  215. -extern struct reiserfs_key MIN_KEY;
  216. +extern const struct reiserfs_key MIN_KEY;
  217. static int reiserfs_readdir(struct file *, void *, filldir_t);
  218. static int reiserfs_dir_fsync(struct file *filp, struct dentry *dentry,
  219. diff -rduNp linux-2.6.20.4.orig/include/linux/module.h linux-2.6.20.4/include/linux/module.h
  220. --- linux-2.6.20.4.orig/include/linux/module.h 2007-03-13 19:27:08.000000000 +0100
  221. +++ linux-2.6.20.4/include/linux/module.h 2007-03-24 20:14:10.000000000 +0100
  222. @@ -20,6 +20,15 @@
  223. #include <asm/module.h>
  224. +
  225. +#ifdef CONFIG_COMBINED_COMPILE
  226. +#define __externally_visible__ __attribute__((externally_visible,used))
  227. +#define __internal_export(sym) extern typeof(sym) sym __externally_visible__
  228. +#else
  229. +#define __externally_visible__
  230. +#define __internal_export(sym)
  231. +#endif
  232. +
  233. /* Not Yet Implemented */
  234. #define MODULE_SUPPORTED_DEVICE(name)
  235. @@ -188,7 +197,7 @@ void *__symbol_get_gpl(const char *symbo
  236. /* For every exported symbol, place a struct in the __ksymtab section */
  237. #define __EXPORT_SYMBOL(sym, sec) \
  238. - extern typeof(sym) sym; \
  239. + extern typeof(sym) sym __externally_visible__; \
  240. __CRC_SYMBOL(sym, sec) \
  241. static const char __kstrtab_##sym[] \
  242. __attribute__((section("__ksymtab_strings"))) \
  243. @@ -212,8 +221,8 @@ void *__symbol_get_gpl(const char *symbo
  244. #define EXPORT_UNUSED_SYMBOL(sym) __EXPORT_SYMBOL(sym, "_unused")
  245. #define EXPORT_UNUSED_SYMBOL_GPL(sym) __EXPORT_SYMBOL(sym, "_unused_gpl")
  246. #else
  247. -#define EXPORT_UNUSED_SYMBOL(sym)
  248. -#define EXPORT_UNUSED_SYMBOL_GPL(sym)
  249. +#define EXPORT_UNUSED_SYMBOL(sym) __internal_export(sym)
  250. +#define EXPORT_UNUSED_SYMBOL_GPL(sym) __internal_export(sym)
  251. #endif
  252. #endif
  253. @@ -471,11 +480,12 @@ void module_add_driver(struct module *,
  254. void module_remove_driver(struct device_driver *);
  255. #else /* !CONFIG_MODULES... */
  256. -#define EXPORT_SYMBOL(sym)
  257. -#define EXPORT_SYMBOL_GPL(sym)
  258. -#define EXPORT_SYMBOL_GPL_FUTURE(sym)
  259. -#define EXPORT_UNUSED_SYMBOL(sym)
  260. -#define EXPORT_UNUSED_SYMBOL_GPL(sym)
  261. +
  262. +#define EXPORT_SYMBOL(sym) __internal_export(sym)
  263. +#define EXPORT_SYMBOL_GPL(sym) __internal_export(sym)
  264. +#define EXPORT_SYMBOL_GPL_FUTURE(sym) __internal_export(sym)
  265. +#define EXPORT_UNUSED_SYMBOL(sym) __internal_export(sym)
  266. +#define EXPORT_UNUSED_SYMBOL_GPL(sym) __internal_export(sym)
  267. /* Given an address, look for it in the exception tables. */
  268. static inline const struct exception_table_entry *
  269. diff -rduNp linux-2.6.20.4.orig/init/do_mounts.c linux-2.6.20.4/init/do_mounts.c
  270. --- linux-2.6.20.4.orig/init/do_mounts.c 2007-03-13 19:27:08.000000000 +0100
  271. +++ linux-2.6.20.4/init/do_mounts.c 2007-03-24 20:14:10.000000000 +0100
  272. @@ -26,6 +26,10 @@ static char __initdata saved_root_name[6
  273. dev_t ROOT_DEV;
  274. +__internal_export(root_mountflags);
  275. +__internal_export(rd_doload);
  276. +__internal_export(ROOT_DEV);
  277. +
  278. static int __init load_ramdisk(char *str)
  279. {
  280. rd_doload = simple_strtol(str,NULL,0) & 3;
  281. @@ -205,6 +209,7 @@ fail:
  282. res = 0;
  283. goto done;
  284. }
  285. +__internal_export(name_to_dev_t);
  286. static int __init root_dev_setup(char *line)
  287. {
  288. @@ -446,4 +451,4 @@ out:
  289. sys_chroot(".");
  290. security_sb_post_mountroot();
  291. }
  292. -
  293. +__internal_export(prepare_namespace);
  294. diff -rduNp linux-2.6.20.4.orig/init/do_mounts_initrd.c linux-2.6.20.4/init/do_mounts_initrd.c
  295. --- linux-2.6.20.4.orig/init/do_mounts_initrd.c 2007-03-13 19:27:08.000000000 +0100
  296. +++ linux-2.6.20.4/init/do_mounts_initrd.c 2007-03-24 20:18:32.000000000 +0100
  297. @@ -6,6 +6,7 @@
  298. #include <linux/romfs_fs.h>
  299. #include <linux/initrd.h>
  300. #include <linux/sched.h>
  301. +#include <linux/module.h>
  302. #include <linux/freezer.h>
  303. #include "do_mounts.h"
  304. @@ -16,6 +17,11 @@ unsigned int real_root_dev; /* do_proc_d
  305. static int __initdata old_fd, root_fd;
  306. static int __initdata mount_initrd = 1;
  307. +__internal_export(initrd_start);
  308. +__internal_export(initrd_end);
  309. +__internal_export(initrd_below_start_ok);
  310. +__internal_export(real_root_dev);
  311. +
  312. static int __init no_initrd(char *str)
  313. {
  314. mount_initrd = 0;
  315. diff -rduNp linux-2.6.20.4.orig/init/do_mounts_rd.c linux-2.6.20.4/init/do_mounts_rd.c
  316. --- linux-2.6.20.4.orig/init/do_mounts_rd.c 2007-03-13 19:27:08.000000000 +0100
  317. +++ linux-2.6.20.4/init/do_mounts_rd.c 2007-03-24 20:14:10.000000000 +0100
  318. @@ -7,12 +7,14 @@
  319. #include <linux/cramfs_fs.h>
  320. #include <linux/initrd.h>
  321. #include <linux/string.h>
  322. +#include <linux/module.h>
  323. #include "do_mounts.h"
  324. #define BUILD_CRAMDISK
  325. int __initdata rd_prompt = 1;/* 1 = prompt for RAM disk, 0 = don't prompt */
  326. +__internal_export(rd_prompt);
  327. static int __init prompt_ramdisk(char *str)
  328. {
  329. @@ -22,6 +24,7 @@ static int __init prompt_ramdisk(char *s
  330. __setup("prompt_ramdisk=", prompt_ramdisk);
  331. int __initdata rd_image_start; /* starting block # of image */
  332. +__internal_export(rd_image_start);
  333. static int __init ramdisk_start_setup(char *str)
  334. {
  335. diff -rduNp linux-2.6.20.4.orig/init/Kconfig linux-2.6.20.4/init/Kconfig
  336. --- linux-2.6.20.4.orig/init/Kconfig 2007-03-13 19:27:08.000000000 +0100
  337. +++ linux-2.6.20.4/init/Kconfig 2007-03-24 20:14:10.000000000 +0100
  338. @@ -526,6 +526,11 @@ config MODULE_FORCE_UNLOAD
  339. rmmod). This is mainly for kernel developers and desperate users.
  340. If unsure, say N.
  341. +config COMBINED_COMPILE
  342. + bool "Use combined compilation (gcc --combine)"
  343. + help
  344. + fish
  345. +
  346. config MODVERSIONS
  347. bool "Module versioning support"
  348. depends on MODULES
  349. diff -rduNp linux-2.6.20.4.orig/net/netfilter/core.c linux-2.6.20.4/net/netfilter/core.c
  350. --- linux-2.6.20.4.orig/net/netfilter/core.c 2007-03-13 19:27:08.000000000 +0100
  351. +++ linux-2.6.20.4/net/netfilter/core.c 2007-03-24 20:14:10.000000000 +0100
  352. @@ -279,3 +279,5 @@ void __init netfilter_init(void)
  353. if (netfilter_log_init() < 0)
  354. panic("cannot initialize nf_log");
  355. }
  356. +__internal_export(netfilter_init);
  357. +
  358. diff -rduNp linux-2.6.20.4.orig/scripts/Makefile.build linux-2.6.20.4/scripts/Makefile.build
  359. --- linux-2.6.20.4.orig/scripts/Makefile.build 2007-03-13 19:27:08.000000000 +0100
  360. +++ linux-2.6.20.4/scripts/Makefile.build 2007-03-24 20:14:10.000000000 +0100
  361. @@ -128,6 +128,11 @@ $(multi-objs-y:.o=.i) : modname = $(mo
  362. $(multi-objs-y:.o=.s) : modname = $(modname-multi)
  363. $(multi-objs-y:.o=.lst) : modname = $(modname-multi)
  364. +ifdef CONFIG_COMBINED_COMPILE
  365. +$(multi-used-m) : CFLAGS += -fwhole-program --combine $(sort $(addprefix $(srctree)/$(obj)/,$($(subst $(obj)/,,$(@:.o=-y)):.o=.c) $($(subst $(obj)/,,$(@:.o=-objs)):.o=.c)))
  366. +$(multi-used-y) : CFLAGS += -fwhole-program --combine $(sort $(addprefix $(srctree)/$(obj)/,$($(subst $(obj)/,,$(@:.o=-y)):.o=.c) $($(subst $(obj)/,,$(@:.o=-objs)):.o=.c)))
  367. +endif
  368. +
  369. quiet_cmd_cc_s_c = CC $(quiet_modtag) $@
  370. cmd_cc_s_c = $(CC) $(c_flags) -fverbose-asm -S -o $@ $<
  371. @@ -284,6 +289,22 @@ $(lib-target): $(lib-y) FORCE
  372. targets += $(lib-target)
  373. endif
  374. +ifdef CONFIG_COMBINED_COMPILE
  375. +# We would rather have a list of rules like
  376. +# foo.o: $(foo-objs)
  377. +# but that's not so easy, so we rather make all composite objects depend
  378. +# on the set of all their parts
  379. +
  380. +$(multi-used-y) : %.o: $(srctree)/dummy.c $(multi-objs-y:.o=.c) FORCE
  381. + $(call cmd,force_checksrc)
  382. + $(call if_changed_rule,cc_o_c)
  383. +
  384. +$(multi-used-m) : %.o: $(srctree)/dummy.c $(multi-objs-m:.o=.c) FORCE
  385. + $(call cmd,force_checksrc)
  386. + $(call if_changed_rule,cc_o_c)
  387. +
  388. +targets += $(multi-used-y) $(multi-used-m)
  389. +else
  390. #
  391. # Rule to link composite objects
  392. #
  393. @@ -314,7 +335,7 @@ $(multi-used-m) : %.o: $(multi-objs-m) F
  394. @{ echo $(@:.o=.ko); echo $(link_multi_deps); } > $(MODVERDIR)/$(@F:.o=.mod)
  395. targets += $(multi-used-y) $(multi-used-m)
  396. -
  397. +endif
  398. # Descending
  399. # ---------------------------------------------------------------------------