On 9/6/19 12:59 AM, Yonghong Song wrote:
> 
> 
> On 9/5/19 10:59 AM, Andrii Nakryiko wrote:
>> ${@:2} is BASH-specific extension, which makes link-vmlinux.sh rely on
>> BASH. Use shift and ${@} instead to fix this issue.
>>
>> Reported-by: Stephen Rothwell <s...@canb.auug.org.au>
>> Fixes: 341dfcf8d78e ("btf: expose BTF info through sysfs")
>> Cc: Stephen Rothwell <s...@canb.auug.org.au>
>> Cc: Masahiro Yamada <yamada.masah...@socionext.com>
>> Signed-off-by: Andrii Nakryiko <andr...@fb.com>
> 
> Tested with bash/sh/csh, all works.

Thanks for testing, Yonghong! In my system sh is an alias to bash, so it 
still behaved like bash and didn't fail even with existing code. I 
didn't have an opportunity to install csh at that time and try it, so 
thanks a lot for confirming. I basically relied on documentation to 
verify shift and $@ is not BASH'ism.

> Acked-by: Yonghong Song <y...@fb.com>
> 
>> ---
>>    scripts/link-vmlinux.sh | 16 +++++++++++-----
>>    1 file changed, 11 insertions(+), 5 deletions(-)
>>
>> diff --git a/scripts/link-vmlinux.sh b/scripts/link-vmlinux.sh
>> index 0d8f41db8cd6..8c59970a09dc 100755
>> --- a/scripts/link-vmlinux.sh
>> +++ b/scripts/link-vmlinux.sh
>> @@ -57,12 +57,16 @@ modpost_link()
>>    
>>    # Link of vmlinux
>>    # ${1} - output file
>> -# ${@:2} - optional extra .o files
>> +# ${2}, ${3}, ... - optional extra .o files
>>    vmlinux_link()
>>    {
>>      local lds="${objtree}/${KBUILD_LDS}"
>> +    local output=${1}
>>      local objects
>>    
>> +    # skip output file argument
>> +    shift
>> +
>>      if [ "${SRCARCH}" != "um" ]; then
>>              objects="--whole-archive                        \
>>                      ${KBUILD_VMLINUX_OBJS}                  \
>> @@ -70,9 +74,10 @@ vmlinux_link()
>>                      --start-group                           \
>>                      ${KBUILD_VMLINUX_LIBS}                  \
>>                      --end-group                             \
>> -                    ${@:2}"
>> +                    ${@}"
>>    
>> -            ${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux} -o ${1}      \
>> +            ${LD} ${KBUILD_LDFLAGS} ${LDFLAGS_vmlinux}      \
>> +                    -o ${output}                            \
>>                      -T ${lds} ${objects}
>>      else
>>              objects="-Wl,--whole-archive                    \
>> @@ -81,9 +86,10 @@ vmlinux_link()
>>                      -Wl,--start-group                       \
>>                      ${KBUILD_VMLINUX_LIBS}                  \
>>                      -Wl,--end-group                         \
>> -                    ${@:2}"
>> +                    ${@}"
>>    
>> -            ${CC} ${CFLAGS_vmlinux} -o ${1}                 \
>> +            ${CC} ${CFLAGS_vmlinux}                         \
>> +                    -o ${output}                            \
>>                      -Wl,-T,${lds}                           \
>>                      ${objects}                              \
>>                      -lutil -lrt -lpthread
>>

Reply via email to