Re: more build problems with "Makefile: move stackprotector availability out of Kconfig"

From: Arnd Bergmann
Date: Tue Oct 17 2017 - 14:41:22 EST


On Tue, Oct 17, 2017 at 8:26 PM, Kees Cook <keescook@xxxxxxxxxxxx> wrote:
> On Tue, Oct 17, 2017 at 8:52 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
>> On Tue, Oct 17, 2017 at 5:34 PM, Kees Cook <keescook@xxxxxxxxxxxx> wrote:

>> index dbfb978..d5bc694 100755
>> --- a/config.guess
>> +++ b/config.guess
>> @@ -1021,7 +1021,7 @@ EOF
>> echo ${UNAME_MACHINE}-dec-linux-${LIBC}
>> exit ;;
>> x86_64:Linux:*:*)
>> - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
>> + echo ${UNAME_MACHINE}-pc-linux-${LIBC}
>> exit ;;
>> xtensa*:Linux:*:*)
>> echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
>>
>> I still don't know why that makes a difference, but all versions
>> prior to gcc-6.1 have the problem for me.
>
> What happens if you add -mstack-protector-guard=tls ?

With gcc-4.8 an earlier, I get build failure:

cc1: error: unrecognized command line option "-mstack-protector-guard=tls"

With gcc-4.9 and gcc-5, I get this output:

.file ""
.text
.globl foo
.type foo, @function
foo:
pushq %rbp
movq %rsp, %rbp
subq $208, %rsp
movq __stack_chk_guard(%rip), %rax
movq %rax, -8(%rbp)
xorl %eax, %eax
movl $3, %eax
movq -8(%rbp), %rdx
xorq __stack_chk_guard(%rip), %rdx
je .L3
call __stack_chk_fail
.L3:
leave
ret
.size foo, .-foo
.ident "GCC: (GNU) 5.4.1 20170626"
.section .note.GNU-stack,"",@progbits

Arnd