.. | .. |
---|
3 | 3 | # Makefile for some libs needed in the kernel. |
---|
4 | 4 | # |
---|
5 | 5 | |
---|
6 | | -ifdef CONFIG_FUNCTION_TRACER |
---|
7 | | -ORIG_CFLAGS := $(KBUILD_CFLAGS) |
---|
8 | | -KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS)) |
---|
9 | | -endif |
---|
| 6 | +ccflags-remove-$(CONFIG_FUNCTION_TRACER) += $(CC_FLAGS_FTRACE) |
---|
10 | 7 | |
---|
11 | 8 | # These files are disabled because they produce lots of non-interesting and/or |
---|
12 | 9 | # flaky coverage that is not a function of syscall inputs. For example, |
---|
.. | .. |
---|
16 | 13 | KCOV_INSTRUMENT_list_debug.o := n |
---|
17 | 14 | KCOV_INSTRUMENT_debugobjects.o := n |
---|
18 | 15 | KCOV_INSTRUMENT_dynamic_debug.o := n |
---|
| 16 | +KCOV_INSTRUMENT_fault-inject.o := n |
---|
| 17 | + |
---|
| 18 | +# string.o implements standard library functions like memset/memcpy etc. |
---|
| 19 | +# Use -ffreestanding to ensure that the compiler does not try to "optimize" |
---|
| 20 | +# them into calls to themselves. |
---|
| 21 | +CFLAGS_string.o := -ffreestanding |
---|
19 | 22 | |
---|
20 | 23 | # Early boot use of cmdline, don't instrument it |
---|
21 | 24 | ifdef CONFIG_AMD_MEM_ENCRYPT |
---|
22 | 25 | KASAN_SANITIZE_string.o := n |
---|
23 | 26 | |
---|
24 | | -ifdef CONFIG_FUNCTION_TRACER |
---|
25 | | -CFLAGS_REMOVE_string.o = -pg |
---|
| 27 | +CFLAGS_string.o += -fno-stack-protector |
---|
26 | 28 | endif |
---|
27 | 29 | |
---|
28 | | -CFLAGS_string.o := $(call cc-option, -fno-stack-protector) |
---|
29 | | -endif |
---|
| 30 | +# Used by KCSAN while enabled, avoid recursion. |
---|
| 31 | +KCSAN_SANITIZE_random32.o := n |
---|
30 | 32 | |
---|
31 | 33 | lib-y := ctype.o string.o vsprintf.o cmdline.o \ |
---|
32 | | - rbtree.o radix-tree.o timerqueue.o\ |
---|
33 | | - idr.o int_sqrt.o extable.o \ |
---|
34 | | - sha1.o irq_regs.o argv_split.o \ |
---|
| 34 | + rbtree.o radix-tree.o timerqueue.o xarray.o \ |
---|
| 35 | + idr.o extable.o sha1.o irq_regs.o argv_split.o \ |
---|
35 | 36 | flex_proportions.o ratelimit.o show_mem.o \ |
---|
36 | 37 | is_single_threaded.o plist.o decompress.o kobject_uevent.o \ |
---|
37 | 38 | earlycpio.o seq_buf.o siphash.o dec_and_lock.o \ |
---|
38 | | - nmi_backtrace.o nodemask.o win_minmax.o |
---|
| 39 | + nmi_backtrace.o nodemask.o win_minmax.o memcat_p.o |
---|
39 | 40 | |
---|
40 | 41 | lib-$(CONFIG_PRINTK) += dump_stack.o |
---|
41 | | -lib-$(CONFIG_MMU) += ioremap.o |
---|
42 | 42 | lib-$(CONFIG_SMP) += cpumask.o |
---|
43 | 43 | |
---|
44 | 44 | lib-y += kobject.o klist.o |
---|
45 | 45 | obj-y += lockref.o |
---|
46 | 46 | |
---|
47 | | -obj-y += bcd.o div64.o sort.o parser.o debug_locks.o random32.o \ |
---|
| 47 | +obj-y += bcd.o sort.o parser.o debug_locks.o random32.o \ |
---|
48 | 48 | bust_spinlocks.o kasprintf.o bitmap.o scatterlist.o \ |
---|
49 | | - gcd.o lcm.o list_sort.o uuid.o flex_array.o iov_iter.o clz_ctz.o \ |
---|
| 49 | + list_sort.o uuid.o iov_iter.o clz_ctz.o \ |
---|
50 | 50 | bsearch.o find_bit.o llist.o memweight.o kfifo.o \ |
---|
51 | | - percpu-refcount.o rhashtable.o reciprocal_div.o \ |
---|
52 | | - once.o refcount.o usercopy.o errseq.o bucket_locks.o |
---|
| 51 | + percpu-refcount.o rhashtable.o \ |
---|
| 52 | + once.o refcount.o usercopy.o errseq.o bucket_locks.o \ |
---|
| 53 | + generic-radix-tree.o |
---|
53 | 54 | obj-$(CONFIG_STRING_SELFTEST) += test_string.o |
---|
54 | 55 | obj-y += string_helpers.o |
---|
55 | 56 | obj-$(CONFIG_TEST_STRING_HELPERS) += test-string_helpers.o |
---|
.. | .. |
---|
59 | 60 | obj-$(CONFIG_FIND_BIT_BENCHMARK) += find_bit_benchmark.o |
---|
60 | 61 | obj-$(CONFIG_TEST_BPF) += test_bpf.o |
---|
61 | 62 | obj-$(CONFIG_TEST_FIRMWARE) += test_firmware.o |
---|
| 63 | +obj-$(CONFIG_TEST_BITOPS) += test_bitops.o |
---|
| 64 | +CFLAGS_test_bitops.o += -Werror |
---|
62 | 65 | obj-$(CONFIG_TEST_SYSCTL) += test_sysctl.o |
---|
63 | 66 | obj-$(CONFIG_TEST_HASH) += test_hash.o test_siphash.o |
---|
64 | 67 | obj-$(CONFIG_TEST_IDA) += test_ida.o |
---|
65 | | -obj-$(CONFIG_TEST_KASAN) += test_kasan.o |
---|
| 68 | +obj-$(CONFIG_KASAN_KUNIT_TEST) += test_kasan.o |
---|
66 | 69 | CFLAGS_test_kasan.o += -fno-builtin |
---|
| 70 | +CFLAGS_test_kasan.o += $(call cc-disable-warning, vla) |
---|
| 71 | +obj-$(CONFIG_KASAN_MODULE_TEST) += test_kasan_module.o |
---|
| 72 | +CFLAGS_test_kasan_module.o += -fno-builtin |
---|
67 | 73 | obj-$(CONFIG_TEST_UBSAN) += test_ubsan.o |
---|
| 74 | +CFLAGS_test_ubsan.o += $(call cc-disable-warning, vla) |
---|
68 | 75 | UBSAN_SANITIZE_test_ubsan.o := y |
---|
69 | 76 | obj-$(CONFIG_TEST_KSTRTOX) += test-kstrtox.o |
---|
70 | 77 | obj-$(CONFIG_TEST_LIST_SORT) += test_list_sort.o |
---|
| 78 | +obj-$(CONFIG_TEST_MIN_HEAP) += test_min_heap.o |
---|
71 | 79 | obj-$(CONFIG_TEST_LKM) += test_module.o |
---|
| 80 | +obj-$(CONFIG_TEST_VMALLOC) += test_vmalloc.o |
---|
72 | 81 | obj-$(CONFIG_TEST_OVERFLOW) += test_overflow.o |
---|
73 | 82 | obj-$(CONFIG_TEST_RHASHTABLE) += test_rhashtable.o |
---|
74 | 83 | obj-$(CONFIG_TEST_SORT) += test_sort.o |
---|
.. | .. |
---|
77 | 86 | obj-$(CONFIG_TEST_STATIC_KEYS) += test_static_key_base.o |
---|
78 | 87 | obj-$(CONFIG_TEST_PRINTF) += test_printf.o |
---|
79 | 88 | obj-$(CONFIG_TEST_BITMAP) += test_bitmap.o |
---|
80 | | -obj-$(CONFIG_TEST_BITFIELD) += test_bitfield.o |
---|
| 89 | +obj-$(CONFIG_TEST_STRSCPY) += test_strscpy.o |
---|
81 | 90 | obj-$(CONFIG_TEST_UUID) += test_uuid.o |
---|
| 91 | +obj-$(CONFIG_TEST_XARRAY) += test_xarray.o |
---|
82 | 92 | obj-$(CONFIG_TEST_PARMAN) += test_parman.o |
---|
83 | 93 | obj-$(CONFIG_TEST_KMOD) += test_kmod.o |
---|
84 | 94 | obj-$(CONFIG_TEST_DEBUG_VIRTUAL) += test_debug_virtual.o |
---|
.. | .. |
---|
86 | 96 | obj-$(CONFIG_TEST_OBJAGG) += test_objagg.o |
---|
87 | 97 | CFLAGS_test_stackinit.o += $(call cc-disable-warning, switch-unreachable) |
---|
88 | 98 | obj-$(CONFIG_TEST_STACKINIT) += test_stackinit.o |
---|
| 99 | +obj-$(CONFIG_TEST_BLACKHOLE_DEV) += test_blackhole_dev.o |
---|
89 | 100 | obj-$(CONFIG_TEST_MEMINIT) += test_meminit.o |
---|
| 101 | +obj-$(CONFIG_TEST_LOCKUP) += test_lockup.o |
---|
| 102 | +obj-$(CONFIG_TEST_HMM) += test_hmm.o |
---|
| 103 | +obj-$(CONFIG_TEST_FREE_PAGES) += test_free_pages.o |
---|
| 104 | + |
---|
| 105 | +# |
---|
| 106 | +# CFLAGS for compiling floating point code inside the kernel. x86/Makefile turns |
---|
| 107 | +# off the generation of FPU/SSE* instructions for kernel proper but FPU_FLAGS |
---|
| 108 | +# get appended last to CFLAGS and thus override those previous compiler options. |
---|
| 109 | +# |
---|
| 110 | +FPU_CFLAGS := -msse -msse2 |
---|
| 111 | +ifdef CONFIG_CC_IS_GCC |
---|
| 112 | +# Stack alignment mismatch, proceed with caution. |
---|
| 113 | +# GCC < 7.1 cannot compile code using `double` and -mpreferred-stack-boundary=3 |
---|
| 114 | +# (8B stack alignment). |
---|
| 115 | +# See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53383 |
---|
| 116 | +# |
---|
| 117 | +# The "-msse" in the first argument is there so that the |
---|
| 118 | +# -mpreferred-stack-boundary=3 build error: |
---|
| 119 | +# |
---|
| 120 | +# -mpreferred-stack-boundary=3 is not between 4 and 12 |
---|
| 121 | +# |
---|
| 122 | +# can be triggered. Otherwise gcc doesn't complain. |
---|
| 123 | +FPU_CFLAGS += -mhard-float |
---|
| 124 | +FPU_CFLAGS += $(call cc-option,-msse -mpreferred-stack-boundary=3,-mpreferred-stack-boundary=4) |
---|
| 125 | +endif |
---|
| 126 | + |
---|
| 127 | +obj-$(CONFIG_TEST_FPU) += test_fpu.o |
---|
| 128 | +CFLAGS_test_fpu.o += $(FPU_CFLAGS) |
---|
| 129 | + |
---|
| 130 | +obj-$(CONFIG_TEST_LIVEPATCH) += livepatch/ |
---|
| 131 | + |
---|
| 132 | +obj-$(CONFIG_KUNIT) += kunit/ |
---|
90 | 133 | |
---|
91 | 134 | ifeq ($(CONFIG_DEBUG_KOBJECT),y) |
---|
92 | 135 | CFLAGS_kobject.o += -DDEBUG |
---|
.. | .. |
---|
96 | 139 | obj-$(CONFIG_DEBUG_INFO_REDUCED) += debug_info.o |
---|
97 | 140 | CFLAGS_debug_info.o += $(call cc-option, -femit-struct-debug-detailed=any) |
---|
98 | 141 | |
---|
99 | | -obj-y += crypto/ |
---|
| 142 | +obj-y += math/ crypto/ |
---|
100 | 143 | |
---|
101 | 144 | obj-$(CONFIG_GENERIC_IOMAP) += iomap.o |
---|
102 | 145 | obj-$(CONFIG_GENERIC_PCI_IOMAP) += pci_iomap.o |
---|
.. | .. |
---|
104 | 147 | obj-$(CONFIG_CHECK_SIGNATURE) += check_signature.o |
---|
105 | 148 | obj-$(CONFIG_DEBUG_LOCKING_API_SELFTESTS) += locking-selftest.o |
---|
106 | 149 | |
---|
107 | | -obj-y += logic_pio.o |
---|
| 150 | +lib-y += logic_pio.o |
---|
108 | 151 | |
---|
109 | 152 | obj-$(CONFIG_GENERIC_HWEIGHT) += hweight.o |
---|
110 | 153 | |
---|
.. | .. |
---|
116 | 159 | obj-$(CONFIG_DEBUG_OBJECTS) += debugobjects.o |
---|
117 | 160 | |
---|
118 | 161 | obj-$(CONFIG_BITREVERSE) += bitrev.o |
---|
119 | | -obj-$(CONFIG_RATIONAL) += rational.o |
---|
| 162 | +obj-$(CONFIG_LINEAR_RANGES) += linear_ranges.o |
---|
| 163 | +obj-$(CONFIG_PACKING) += packing.o |
---|
120 | 164 | obj-$(CONFIG_CRC_CCITT) += crc-ccitt.o |
---|
121 | 165 | obj-$(CONFIG_CRC16) += crc16.o |
---|
122 | 166 | obj-$(CONFIG_CRC_T10DIF)+= crc-t10dif.o |
---|
.. | .. |
---|
135 | 179 | obj-$(CONFIG_842_DECOMPRESS) += 842/ |
---|
136 | 180 | obj-$(CONFIG_ZLIB_INFLATE) += zlib_inflate/ |
---|
137 | 181 | obj-$(CONFIG_ZLIB_DEFLATE) += zlib_deflate/ |
---|
| 182 | +obj-$(CONFIG_ZLIB_DFLTCC) += zlib_dfltcc/ |
---|
138 | 183 | obj-$(CONFIG_REED_SOLOMON) += reed_solomon/ |
---|
139 | 184 | obj-$(CONFIG_BCH) += bch.o |
---|
140 | 185 | obj-$(CONFIG_LZO_COMPRESS) += lzo/ |
---|
.. | .. |
---|
153 | 198 | lib-$(CONFIG_DECOMPRESS_XZ) += decompress_unxz.o |
---|
154 | 199 | lib-$(CONFIG_DECOMPRESS_LZO) += decompress_unlzo.o |
---|
155 | 200 | lib-$(CONFIG_DECOMPRESS_LZ4) += decompress_unlz4.o |
---|
| 201 | +lib-$(CONFIG_DECOMPRESS_ZSTD) += decompress_unzstd.o |
---|
156 | 202 | |
---|
157 | 203 | obj-$(CONFIG_TEXTSEARCH) += textsearch.o |
---|
158 | 204 | obj-$(CONFIG_TEXTSEARCH_KMP) += ts_kmp.o |
---|
.. | .. |
---|
164 | 210 | |
---|
165 | 211 | obj-$(CONFIG_IOMMU_HELPER) += iommu-helper.o |
---|
166 | 212 | obj-$(CONFIG_FAULT_INJECTION) += fault-inject.o |
---|
| 213 | +obj-$(CONFIG_FAULT_INJECTION_USERCOPY) += fault-inject-usercopy.o |
---|
167 | 214 | obj-$(CONFIG_NOTIFIER_ERROR_INJECTION) += notifier-error-inject.o |
---|
168 | 215 | obj-$(CONFIG_PM_NOTIFIER_ERROR_INJECT) += pm-notifier-error-inject.o |
---|
169 | 216 | obj-$(CONFIG_NETDEV_NOTIFIER_ERROR_INJECT) += netdev-notifier-error-inject.o |
---|
.. | .. |
---|
176 | 223 | |
---|
177 | 224 | obj-$(CONFIG_HAVE_ARCH_TRACEHOOK) += syscall.o |
---|
178 | 225 | |
---|
179 | | -obj-$(CONFIG_DYNAMIC_DEBUG) += dynamic_debug.o |
---|
| 226 | +obj-$(CONFIG_DYNAMIC_DEBUG_CORE) += dynamic_debug.o |
---|
| 227 | +obj-$(CONFIG_SYMBOLIC_ERRNAME) += errname.o |
---|
180 | 228 | |
---|
181 | 229 | obj-$(CONFIG_NLATTR) += nlattr.o |
---|
182 | 230 | |
---|
.. | .. |
---|
190 | 238 | |
---|
191 | 239 | obj-$(CONFIG_CPU_RMAP) += cpu_rmap.o |
---|
192 | 240 | |
---|
193 | | -obj-$(CONFIG_CORDIC) += cordic.o |
---|
194 | | - |
---|
195 | 241 | obj-$(CONFIG_DQL) += dynamic_queue_limits.o |
---|
196 | 242 | |
---|
197 | 243 | obj-$(CONFIG_GLOB) += glob.o |
---|
198 | 244 | obj-$(CONFIG_GLOB_SELFTEST) += globtest.o |
---|
199 | 245 | |
---|
200 | 246 | obj-$(CONFIG_MPILIB) += mpi/ |
---|
| 247 | +obj-$(CONFIG_DIMLIB) += dim/ |
---|
201 | 248 | obj-$(CONFIG_SIGNATURE) += digsig.o |
---|
202 | 249 | |
---|
203 | 250 | lib-$(CONFIG_CLZ_TAB) += clz_tab.o |
---|
204 | | - |
---|
205 | | -obj-$(CONFIG_DDR) += jedec_ddr_data.o |
---|
| 251 | +lib-$(CONFIG_LIB_MEMNEQ) += memneq.o |
---|
206 | 252 | |
---|
207 | 253 | obj-$(CONFIG_GENERIC_STRNCPY_FROM_USER) += strncpy_from_user.o |
---|
208 | 254 | obj-$(CONFIG_GENERIC_STRNLEN_USER) += strnlen_user.o |
---|
.. | .. |
---|
211 | 257 | |
---|
212 | 258 | obj-$(CONFIG_SG_SPLIT) += sg_split.o |
---|
213 | 259 | obj-$(CONFIG_SG_POOL) += sg_pool.o |
---|
| 260 | +obj-$(CONFIG_MEMREGION) += memregion.o |
---|
214 | 261 | obj-$(CONFIG_STMP_DEVICE) += stmp_device.o |
---|
215 | 262 | obj-$(CONFIG_IRQ_POLL) += irq_poll.o |
---|
216 | 263 | |
---|
| 264 | +# stackdepot.c should not be instrumented or call instrumented functions. |
---|
| 265 | +# Prevent the compiler from calling builtins like memcmp() or bcmp() from this |
---|
| 266 | +# file. |
---|
| 267 | +CFLAGS_stackdepot.o += -fno-builtin |
---|
217 | 268 | obj-$(CONFIG_STACKDEPOT) += stackdepot.o |
---|
218 | 269 | KASAN_SANITIZE_stackdepot.o := n |
---|
219 | 270 | KCOV_INSTRUMENT_stackdepot.o := n |
---|
220 | 271 | |
---|
221 | 272 | libfdt_files = fdt.o fdt_ro.o fdt_wip.o fdt_rw.o fdt_sw.o fdt_strerror.o \ |
---|
222 | | - fdt_empty_tree.o |
---|
| 273 | + fdt_empty_tree.o fdt_addresses.o |
---|
223 | 274 | $(foreach file, $(libfdt_files), \ |
---|
224 | | - $(eval CFLAGS_$(file) = -I$(src)/../scripts/dtc/libfdt)) |
---|
| 275 | + $(eval CFLAGS_$(file) = -I $(srctree)/scripts/dtc/libfdt)) |
---|
225 | 276 | lib-$(CONFIG_LIBFDT) += $(libfdt_files) |
---|
| 277 | + |
---|
| 278 | +obj-$(CONFIG_BOOT_CONFIG) += bootconfig.o |
---|
226 | 279 | |
---|
227 | 280 | obj-$(CONFIG_RBTREE_TEST) += rbtree_test.o |
---|
228 | 281 | obj-$(CONFIG_INTERVAL_TREE_TEST) += interval_tree_test.o |
---|
.. | .. |
---|
233 | 286 | |
---|
234 | 287 | obj-$(CONFIG_FONT_SUPPORT) += fonts/ |
---|
235 | 288 | |
---|
236 | | -obj-$(CONFIG_PRIME_NUMBERS) += prime_numbers.o |
---|
237 | | - |
---|
238 | | -hostprogs-y := gen_crc32table |
---|
239 | | -hostprogs-y += gen_crc64table |
---|
| 289 | +hostprogs := gen_crc32table |
---|
| 290 | +hostprogs += gen_crc64table |
---|
240 | 291 | clean-files := crc32table.h |
---|
241 | 292 | clean-files += crc64table.h |
---|
242 | 293 | |
---|
.. | .. |
---|
273 | 324 | clean-files += oid_registry_data.c |
---|
274 | 325 | |
---|
275 | 326 | obj-$(CONFIG_UCS2_STRING) += ucs2_string.o |
---|
| 327 | +ifneq ($(CONFIG_UBSAN_TRAP),y) |
---|
276 | 328 | obj-$(CONFIG_UBSAN) += ubsan.o |
---|
| 329 | +endif |
---|
277 | 330 | |
---|
278 | 331 | UBSAN_SANITIZE_ubsan.o := n |
---|
279 | 332 | KASAN_SANITIZE_ubsan.o := n |
---|
280 | | -CFLAGS_ubsan.o := $(call cc-option, -fno-stack-protector) $(DISABLE_STACKLEAK_PLUGIN) |
---|
| 333 | +KCSAN_SANITIZE_ubsan.o := n |
---|
| 334 | +CFLAGS_ubsan.o := -fno-stack-protector $(DISABLE_STACKLEAK_PLUGIN) |
---|
281 | 335 | |
---|
282 | 336 | obj-$(CONFIG_SBITMAP) += sbitmap.o |
---|
283 | 337 | |
---|
.. | .. |
---|
290 | 344 | obj-$(CONFIG_GENERIC_LIB_MULDI3) += muldi3.o |
---|
291 | 345 | obj-$(CONFIG_GENERIC_LIB_CMPDI2) += cmpdi2.o |
---|
292 | 346 | obj-$(CONFIG_GENERIC_LIB_UCMPDI2) += ucmpdi2.o |
---|
| 347 | +obj-$(CONFIG_OBJAGG) += objagg.o |
---|
| 348 | + |
---|
| 349 | +# pldmfw library |
---|
| 350 | +obj-$(CONFIG_PLDMFW) += pldmfw/ |
---|
| 351 | + |
---|
| 352 | +# KUnit tests |
---|
| 353 | +obj-$(CONFIG_BITFIELD_KUNIT) += bitfield_kunit.o |
---|
| 354 | +obj-$(CONFIG_LIST_KUNIT_TEST) += list-test.o |
---|
| 355 | +obj-$(CONFIG_LINEAR_RANGES_TEST) += test_linear_ranges.o |
---|
| 356 | +obj-$(CONFIG_BITS_TEST) += test_bits.o |
---|