From 9dee3b3c89077e7a5dd4720077af0c667534219d Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 24 Jan 2012 06:21:11 +0000 Subject: PR gold/13617 * i386.cc (Target_i386::do_code_fill): When using a jmp instruction, pad with nop instructions. * x86_64.cc (Target_x86_64::do_code_fill): Likewise. --- gold/ChangeLog | 7 +++++++ gold/i386.cc | 5 +++-- gold/x86_64.cc | 5 +++-- 3 files changed, 13 insertions(+), 4 deletions(-) (limited to 'gold') diff --git a/gold/ChangeLog b/gold/ChangeLog index 649668a..2c51569 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2012-01-23 Ian Lance Taylor + + PR gold/13617 + * i386.cc (Target_i386::do_code_fill): When using a jmp + instruction, pad with nop instructions. + * x86_64.cc (Target_x86_64::do_code_fill): Likewise. + 2012-01-22 H.J. Lu * x86_64.cc (gc_process_relocs): Add typename on types used in diff --git a/gold/i386.cc b/gold/i386.cc index efb6248..b4174bc 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -1,6 +1,7 @@ // i386.cc -- i386 target support for gold. -// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 +// Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -3470,7 +3471,7 @@ Target_i386::do_code_fill(section_size_type length) const jmp[0] = 0xe9; elfcpp::Swap_unaligned<32, false>::writeval(jmp + 1, length - 5); return (std::string(reinterpret_cast(&jmp[0]), 5) - + std::string(length - 5, '\0')); + + std::string(length - 5, static_cast(0x90))); } // Nop sequences of various lengths. diff --git a/gold/x86_64.cc b/gold/x86_64.cc index df11441..cfc6384 100644 --- a/gold/x86_64.cc +++ b/gold/x86_64.cc @@ -1,6 +1,7 @@ // x86_64.cc -- x86_64 target support for gold. -// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +// Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 +// Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -3991,7 +3992,7 @@ Target_x86_64::do_code_fill(section_size_type length) const jmp[0] = 0xe9; elfcpp::Swap_unaligned<32, false>::writeval(jmp + 1, length - 5); return (std::string(reinterpret_cast(&jmp[0]), 5) - + std::string(length - 5, '\0')); + + std::string(length - 5, static_cast(0x90))); } // Nop sequences of various lengths. -- cgit v1.1