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: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Kees Cook <keescook@chromium.org>
This commit is contained in:
parent
d40aecd108
commit
5df77ad61f
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue