Commit 8f130512 authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

kbuild: merge vmlinux_link() between the ordinary link and Clang LTO



When Clang LTO is enabled, vmlinux_link() reuses vmlinux.o instead of
re-linking ${KBUILD_VMLINUX_OBJS} and ${KBUILD_VMLINUX_LIBS}.

That is the only difference here, so merge the similar code.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
parent a8390ba9
Loading
Loading
Loading
Loading
+14 −16
Original line number Diff line number Diff line
@@ -154,12 +154,23 @@ vmlinux_link()
	local objects
	local strip_debug
	local map_option
	local objs
	local libs

	info LD ${output}

	# skip output file argument
	shift

	if [ -n "${CONFIG_LTO_CLANG}" ]; then
		# Use vmlinux.o instead of performing the slow LTO link again.
		objs=vmlinux.o
		libs=
	else
		objs="${KBUILD_VMLINUX_OBJS}"
		libs="${KBUILD_VMLINUX_LIBS}"
	fi

	# The kallsyms linking does not need debug symbols included.
	if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; then
		strip_debug=-Wl,--strip-debug
@@ -170,22 +181,9 @@ vmlinux_link()
	fi

	if [ "${SRCARCH}" != "um" ]; then
		if [ -n "${CONFIG_LTO_CLANG}" ]; then
			# Use vmlinux.o instead of performing the slow LTO
			# link again.
			objects="--whole-archive		\
				vmlinux.o 			\
				--no-whole-archive		\
				${@}"
		else
			objects="--whole-archive		\
				${KBUILD_VMLINUX_OBJS}		\
				--no-whole-archive		\
				--start-group			\
				${KBUILD_VMLINUX_LIBS}		\
				--end-group			\
				${@}"
		fi
		objects="--whole-archive ${objs} --no-whole-archive	\
			 --start-group ${libs} --end-group		\
			 $@"

		${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}	\
			${strip_debug#-Wl,}			\