diff options
-rw-r--r-- | gold/ChangeLog | 2 | ||||
-rw-r--r-- | gold/x86_64.cc | 6 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 18e2a30..e44f2ba 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -2,6 +2,8 @@ * i386.cc (Target_i386::do_calls_non_split): Recognize -fsplit-stack prologue for a function with a static chain. + * x86_64.cc (Target_x86_64::do_calls_non_split): Recognize + -fsplit-stack prologue when using %r11. 2009-12-21 Sriraman Tallam <tmsriram@google.com> diff --git a/gold/x86_64.cc b/gold/x86_64.cc index e51b4ab..c31949f 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -2692,7 +2692,11 @@ Target_x86_64::do_calls_non_split(Relobj* object, unsigned int shndx, this->set_view_to_nop(view, view_size, fnoffset + 1, 8); } // lea NN(%rsp),%r10 - else if (this->match_view(view, view_size, fnoffset, "\x4c\x8d\x94\x24", 4) + // lea NN(%rsp),%r11 + else if ((this->match_view(view, view_size, fnoffset, + "\x4c\x8d\x94\x24", 4) + || this->match_view(view, view_size, fnoffset, + "\x4c\x8d\x9c\x24", 4)) && fnsize > 8) { // This is loading an offset from the stack pointer for a |