On Tue, Aug 8, 2017 at 6:54 PM, Uros Bizjak wrote: > Hello! > > Attached patch introduces -mstack-protector-guard-reg= and > -mstack-protector-guard-offset= options to make stack canary location > customizable. These are the same options powerpc has. Attached addition adds -mstack-protector-guard-symbol= option that overrides the offset to TLS stack protector canary with a symbol name. Using this option, stack protector canary can be loaded from specified symbol, relative to guard reg: gcc -O2 -fstack-protector-all -mstack-protector-guard=tls -mstack-protector-guard-reg=gs -mstack-protector-guard-symbol=my_guard movq %gs:my_guard(%rip), %rax movq %rax, 8(%rsp) xorl %eax, %eax movq 8(%rsp), %rax xorq %gs:my_guard(%rip), %rax 2017-08-09 Uros Bizjak PR target/81708 * config/i386/i386.opt (mstack-protector-guard-symbol=): New option * config/i386/i386.c (ix86_stack_protect_guard): Use ix86_stack_protect_guard_symbol_str to generate varible declaration. * doc/invoke.texi (x86 Options): Document -mstack-protector-guard-symbol= option. testsuite/ChangeLog: 2017-08-09 Uros Bizjak PR target/81708 * gcc.target/i386/stack-prot-sym.c: New test. Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. I plan to commit the patch to mainline SVN in a couple of days. Uros.