On Thu, Aug 19, 2021 at 09:57:39AM +0900, Masahiro Yamada wrote: > 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}. And same for this one. So much better! Reviewed-by: Kees Cook <keescook@xxxxxxxxxxxx> -Kees > > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > scripts/link-vmlinux.sh | 56 +++++++++++++++++------------------------ > 1 file changed, 23 insertions(+), 33 deletions(-) > > diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh > index 7b9c62e4d54a..d74cee5c4326 100755 > --- a/scripts/link-vmlinux.sh > +++ b/scripts/link-vmlinux.sh > @@ -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 > -- > 2.30.2 > -- Kees Cook