6l: Relocate CMOV* instructions
6l: Relocate CMOV* instructions

The linker avoids a GOT indirection by turning a MOV into
a LEA, but with x86-64 GCC has started emitting CMOV*
instructions which break the existing logic.

This will generate errors such as:

  unexpected GOT reloc for non-dynamic symbol luaO_nilobject_

The CMOV* instructions may be emitted with normal code like:

  if (o >= L->top) return cast(TValue *, luaO_nilobject);
  else return o;

Which gets compiled into (relocation offset at 1b):

  13: 48 3b 47 10             cmp    0x10(%rdi),%rax
  17: 48 0f 43 05 00 00 00    cmovae 0x0(%rip),%rax
  1e: 00

This change will allow the indirection through the GOT to
avoid the problem in those cases.

R=golang-dev, rsc
CC=golang-dev
http://codereview.appspot.com/4071044

Committer: Russ Cox <5ad239cb8a44f659eaaee0aa1ea5b94947abe557@golang.org>

glycerine/jeaten-go-arrayof-structof,sanjosh/sanjos100-tipc,rdp/rogerpack2005-golang,Triskite/willstone-goclone,rdp/rogerpack2005-golang,mhennings/marcohennings-go,webfd/go-zh,webfd/go-zh,mhennings/marcohennings-go,rflanagan/reginaldflanagan-project1,npe9/noahevans-go9,bryanxu/go-zh,webfd/go-zh,rflanagan/reginaldflanagan-project1,mhennings/marcohennings-go,bryanxu/go-zh,npe9/noahevans-go9,glycerine/jeaten-go-arrayof-structof,rflanagan/reginaldflanagan-project1,webfd/go-zh,bryanxu/go-zh,npe9/noahevans-go9,rdp/rogerpack2005-golang,glycerine/jeaten-go-arrayof-structof,rflanagan/reginaldflanagan-project1,sanjosh/sanjos100-tipc,mhennings/marcohennings-go,sanjosh/sanjos100-tipc,glycerine/jeaten-go-arrayof-structof,rflanagan/reginaldflanagan-project1,mhennings/marcohennings-go,d0f/go-zh,webfd/go-zh,rflanagan/reginaldflanagan-project1,glycerine/jeaten-go-arrayof-structof,d0f/go-zh,webfd/go-zh,npe9/noahevans-go9,rdp/rogerpack2005-golang,rflanagan/reginaldflanagan-project1,npe9/noahevans-go9,sanjosh/sanjos100-tipc,Triskite/willstone-goclone,sanjosh/sanjos100-tipc,bryanxu/go-zh,rdp/rogerpack2005-golang,glycerine/jeaten-go-arrayof-structof,d0f/go-zh,scirelli/scirelli-go,rdp/rogerpack2005-golang,rdp/rogerpack2005-golang,scirelli/scirelli-go,bryanxu/go-zh,sanjosh/sanjos100-tipc,Triskite/willstone-goclone,d0f/go-zh,mhennings/marcohennings-go,npe9/noahevans-go9,scirelli/scirelli-go,npe9/noahevans-go9,d0f/go-zh,bryanxu/go-zh,webfd/go-zh,Triskite/willstone-goclone,scirelli/scirelli-go,mhennings/marcohennings-go,d0f/go-zh,sanjosh/sanjos100-tipc,scirelli/scirelli-go,sanjosh/sanjos100-tipc,Triskite/willstone-goclone,Triskite/willstone-goclone,bryanxu/go-zh,mhennings/marcohennings-go,bryanxu/go-zh,scirelli/scirelli-go,rdp/rogerpack2005-golang,rflanagan/reginaldflanagan-project1,d0f/go-zh,glycerine/jeaten-go-arrayof-structof,Triskite/willstone-goclone,webfd/go-zh,npe9/noahevans-go9,Triskite/willstone-goclone,glycerine/jeaten-go-arrayof-structof,scirelli/scirelli-go,scirelli/scirelli-go,d0f/go-zh