Commit 9a6cfca4 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Masahiro Yamada

kbuild: thin archives use P option to ar

The P option makes ar do full path name matching and can prevent ar
from discarding files with duplicate names in some cases of creating
thin archives from thin archives. The sh architecture in particular
loses some object files from its kernel/cpu/sh*/ directories without
this option.

This could be a bug in binutils ar, but the P option should not cause
any negative effects so it is safe to use to work around this with.
Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMasahiro Yamada <yamada.masahiro@socionext.com>
parent 1328a1ae
...@@ -437,8 +437,8 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ; ...@@ -437,8 +437,8 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ;
ifdef builtin-target ifdef builtin-target
ifdef CONFIG_THIN_ARCHIVES ifdef CONFIG_THIN_ARCHIVES
cmd_make_builtin = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS) cmd_make_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS)
cmd_make_empty_builtin = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS) cmd_make_empty_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS)
quiet_cmd_link_o_target = AR $@ quiet_cmd_link_o_target = AR $@
else else
cmd_make_builtin = $(LD) $(ld_flags) -r -o cmd_make_builtin = $(LD) $(ld_flags) -r -o
...@@ -478,7 +478,7 @@ ifdef lib-target ...@@ -478,7 +478,7 @@ ifdef lib-target
quiet_cmd_link_l_target = AR $@ quiet_cmd_link_l_target = AR $@
ifdef CONFIG_THIN_ARCHIVES ifdef CONFIG_THIN_ARCHIVES
cmd_link_l_target = rm -f $@; $(AR) rcsT$(KBUILD_ARFLAGS) $@ $(lib-y) cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(lib-y)
else else
cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y) cmd_link_l_target = rm -f $@; $(AR) rcs$(KBUILD_ARFLAGS) $@ $(lib-y)
endif endif
...@@ -531,7 +531,7 @@ cmd_link_multi-link = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secana ...@@ -531,7 +531,7 @@ cmd_link_multi-link = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secana
ifdef CONFIG_THIN_ARCHIVES ifdef CONFIG_THIN_ARCHIVES
quiet_cmd_link_multi-y = AR $@ quiet_cmd_link_multi-y = AR $@
cmd_link_multi-y = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS) $@ $(link_multi_deps) cmd_link_multi-y = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(link_multi_deps)
else else
quiet_cmd_link_multi-y = LD $@ quiet_cmd_link_multi-y = LD $@
cmd_link_multi-y = $(cmd_link_multi-link) cmd_link_multi-y = $(cmd_link_multi-link)
......
...@@ -50,7 +50,7 @@ archive_builtin() ...@@ -50,7 +50,7 @@ archive_builtin()
if [ -n "${CONFIG_THIN_ARCHIVES}" ]; then if [ -n "${CONFIG_THIN_ARCHIVES}" ]; then
info AR built-in.o info AR built-in.o
rm -f built-in.o; rm -f built-in.o;
${AR} rcsT${KBUILD_ARFLAGS} built-in.o \ ${AR} rcsTP${KBUILD_ARFLAGS} built-in.o \
${KBUILD_VMLINUX_INIT} \ ${KBUILD_VMLINUX_INIT} \
${KBUILD_VMLINUX_MAIN} ${KBUILD_VMLINUX_MAIN}
fi fi
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment