| .. | .. |
|---|
| 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 |
|---|