mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-06 02:50:43 +00:00
![Alexey Kardashevskiy](/assets/img/avatar_default.png)
With CONFIG_ZSTD_COMPRESS=m and CONFIG_ZSTD_DECOMPRESS=y we end up in a situation when files from lib/zstd/common/ are compiled once to be linked later for ZSTD_DECOMPRESS (build-in) and ZSTD_COMPRESS (module) even though CFLAGS are different for builtins and modules. So far somehow this was not a problem but enabling LLVM LTO exposes the problem as: ld.lld: error: linking module flags 'Code Model': IDs have conflicting values in 'lib/built-in.a(zstd_common.o at 5868)' and 'ld-temp.o' This particular conflict is caused by KBUILD_CFLAGS=-mcmodel=medium vs. KBUILD_CFLAGS_MODULE=-mcmodel=large , modules use the large model on POWERPC as explained at https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/powerpc/Makefile?h=v5.18-rc4#n127 but the current use of common files is wrong anyway. This works around the issue by introducing a zstd_common module with shared code. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
42 lines
1.4 KiB
Makefile
42 lines
1.4 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0+ OR BSD-3-Clause
|
|
# ################################################################
|
|
# Copyright (c) Facebook, Inc.
|
|
# All rights reserved.
|
|
#
|
|
# This source code is licensed under both the BSD-style license (found in the
|
|
# LICENSE file in the root directory of this source tree) and the GPLv2 (found
|
|
# in the COPYING file in the root directory of this source tree).
|
|
# You may select, at your option, one of the above-listed licenses.
|
|
# ################################################################
|
|
obj-$(CONFIG_ZSTD_COMPRESS) += zstd_compress.o
|
|
obj-$(CONFIG_ZSTD_DECOMPRESS) += zstd_decompress.o
|
|
obj-$(CONFIG_ZSTD_COMMON) += zstd_common.o
|
|
|
|
zstd_compress-y := \
|
|
zstd_compress_module.o \
|
|
compress/fse_compress.o \
|
|
compress/hist.o \
|
|
compress/huf_compress.o \
|
|
compress/zstd_compress.o \
|
|
compress/zstd_compress_literals.o \
|
|
compress/zstd_compress_sequences.o \
|
|
compress/zstd_compress_superblock.o \
|
|
compress/zstd_double_fast.o \
|
|
compress/zstd_fast.o \
|
|
compress/zstd_lazy.o \
|
|
compress/zstd_ldm.o \
|
|
compress/zstd_opt.o \
|
|
|
|
zstd_decompress-y := \
|
|
zstd_decompress_module.o \
|
|
decompress/huf_decompress.o \
|
|
decompress/zstd_ddict.o \
|
|
decompress/zstd_decompress.o \
|
|
decompress/zstd_decompress_block.o \
|
|
|
|
zstd_common-y := \
|
|
common/debug.o \
|
|
common/entropy_common.o \
|
|
common/error_private.o \
|
|
common/fse_decompress.o \
|
|
common/zstd_common.o \
|