[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202108181942.1B116E786@keescook>
Date: Wed, 18 Aug 2021 19:43:29 -0700
From: Kees Cook <keescook@...omium.org>
To: Masahiro Yamada <masahiroy@...nel.org>
Cc: linux-kbuild@...r.kernel.org,
Sami Tolvanen <samitolvanen@...gle.com>,
linux-kernel@...r.kernel.org,
Michal Marek <michal.lkml@...kovi.net>,
Nick Desaulniers <ndesaulniers@...gle.com>
Subject: Re: [PATCH 08/13] kbuild: merge vmlinux_link() between ARCH=um and
other architectures
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@...omium.org>
-Kees
>
> Signed-off-by: Masahiro Yamada <masahiroy@...nel.org>
> ---
>
> 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
Powered by blists - more mailing lists