Commit 5df77ad6 authored by Masahiro Yamada's avatar Masahiro Yamada
Browse files

kbuild: merge vmlinux_link() between ARCH=um and other architectures



For ARCH=um, ${CC} is used as the linker driver. Hence, the linker
options are prefixed with -Wl, .

Merge the similar code.

I replaced the -T option with the long option --script= so that it
works well with/without ${wl}.

Signed-off-by: default avatarMasahiro Yamada <masahiroy@kernel.org>
Reviewed-by: default avatarKees Cook <keescook@chromium.org>
parent d40aecd1
Loading
Loading
Loading
Loading
+23 −33
Original line number Diff line number Diff line
@@ -149,13 +149,12 @@ objtool_link()
# ${2}, ${3}, ... - optional extra .o files
vmlinux_link()
{
	local lds="${objtree}/${KBUILD_LDS}"
	local output=${1}
	local objects
	local strip_debug
	local map_option
	local objs
	local libs
	local ld
	local ldflags
	local ldlibs

	info LD ${output}

@@ -171,42 +170,33 @@ vmlinux_link()
		libs="${KBUILD_VMLINUX_LIBS}"
	fi

	if [ "${SRCARCH}" = "um" ]; then
		wl=-Wl,
		ld="${CC}"
		ldflags="${CFLAGS_vmlinux}"
		ldlibs="-lutil -lrt -lpthread"
	else
		wl=
		ld="${LD}"
		ldflags="${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}"
		ldlibs=
	fi

	ldflags="${ldflags} ${wl}--script=${objtree}/${KBUILD_LDS}"

	# The kallsyms linking does not need debug symbols included.
	if [ "$output" != "${output#.tmp_vmlinux.kallsyms}" ] ; then
		strip_debug=-Wl,--strip-debug
		ldflags="${ldflags} ${wl}--strip-debug"
	fi

	if [ -n "${CONFIG_VMLINUX_MAP}" ]; then
		map_option="-Map=${output}.map"
		ldflags="${ldflags} ${wl}-Map=${output}.map"
	fi

	if [ "${SRCARCH}" != "um" ]; then
		objects="--whole-archive ${objs} --no-whole-archive	\
			 --start-group ${libs} --end-group		\
			 $@"

		${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}	\
			${strip_debug#-Wl,}			\
			-o ${output}				\
			${map_option}				\
			-T ${lds} ${objects}
	else
		objects="-Wl,--whole-archive			\
			${KBUILD_VMLINUX_OBJS}			\
			-Wl,--no-whole-archive			\
			-Wl,--start-group			\
			${KBUILD_VMLINUX_LIBS}			\
			-Wl,--end-group				\
			${@}"

		${CC} ${CFLAGS_vmlinux}				\
			${strip_debug}				\
			-o ${output}				\
			${map_option:+-Wl,${map_option}}	\
			-Wl,-T,${lds}				\
			${objects}				\
			-lutil -lrt -lpthread
	fi
	${ld} ${ldflags} -o ${output}					\
		${wl}--whole-archive ${objs} ${wl}--no-whole-archive	\
		${wl}--start-group ${libs} ${wl}--end-group		\
		$@ ${ldlibs}
}

# generate .BTF typeinfo from DWARF debuginfo