264 lines
14 KiB
Diff
264 lines
14 KiB
Diff
|
diff -cp ../binutils-2.22.orig/gold/dwarf_reader.cc gold/dwarf_reader.cc
|
||
|
*** ../binutils-2.22.orig/gold/dwarf_reader.cc 2012-01-13 12:20:00.279690374 +0000
|
||
|
--- gold/dwarf_reader.cc 2012-01-13 12:22:26.500694442 +0000
|
||
|
*************** Sized_dwarf_line_info<size, big_endian>:
|
||
|
*** 491,498 ****
|
||
|
&& (shndx == -1U || lsm.shndx == -1U || shndx == lsm.shndx))
|
||
|
{
|
||
|
Offset_to_lineno_entry entry
|
||
|
! = { lsm.address, this->current_header_index_,
|
||
|
! lsm.file_num, true, lsm.line_num };
|
||
|
std::vector<Offset_to_lineno_entry>&
|
||
|
map(this->line_number_map_[lsm.shndx]);
|
||
|
// If we see two consecutive entries with the same
|
||
|
--- 491,498 ----
|
||
|
&& (shndx == -1U || lsm.shndx == -1U || shndx == lsm.shndx))
|
||
|
{
|
||
|
Offset_to_lineno_entry entry
|
||
|
! = { (off_t) lsm.address, this->current_header_index_,
|
||
|
! (unsigned int) lsm.file_num, true, lsm.line_num };
|
||
|
std::vector<Offset_to_lineno_entry>&
|
||
|
map(this->line_number_map_[lsm.shndx]);
|
||
|
// If we see two consecutive entries with the same
|
||
|
Common subdirectories: ../binutils-2.22.orig/gold/gcctestdir1 and gold/gcctestdir1
|
||
|
Common subdirectories: ../binutils-2.22.orig/gold/gcctestdir2 and gold/gcctestdir2
|
||
|
Common subdirectories: ../binutils-2.22.orig/gold/gcctestdir2-r and gold/gcctestdir2-r
|
||
|
diff -cp ../binutils-2.22.orig/gold/i386.cc gold/i386.cc
|
||
|
*** ../binutils-2.22.orig/gold/i386.cc 2012-01-13 12:20:00.355690373 +0000
|
||
|
--- gold/i386.cc 2012-01-13 12:23:48.407696800 +0000
|
||
|
*************** Target_i386::do_code_fill(section_size_t
|
||
|
*** 3480,3529 ****
|
||
|
}
|
||
|
|
||
|
// Nop sequences of various lengths.
|
||
|
! const char nop1[1] = { 0x90 }; // nop
|
||
|
! const char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax
|
||
|
! const char nop3[3] = { 0x8d, 0x76, 0x00 }; // leal 0(%esi),%esi
|
||
|
! const char nop4[4] = { 0x8d, 0x74, 0x26, 0x00}; // leal 0(%esi,1),%esi
|
||
|
! const char nop5[5] = { 0x90, 0x8d, 0x74, 0x26, // nop
|
||
|
0x00 }; // leal 0(%esi,1),%esi
|
||
|
! const char nop6[6] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00 };
|
||
|
! const char nop7[7] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const char nop8[8] = { 0x90, 0x8d, 0xb4, 0x26, // nop
|
||
|
0x00, 0x00, 0x00, 0x00 }; // leal 0L(%esi,1),%esi
|
||
|
! const char nop9[9] = { 0x89, 0xf6, 0x8d, 0xbc, // movl %esi,%esi
|
||
|
0x27, 0x00, 0x00, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00 };
|
||
|
! const char nop10[10] = { 0x8d, 0x76, 0x00, 0x8d, // leal 0(%esi),%esi
|
||
|
0xbc, 0x27, 0x00, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00, 0x00 };
|
||
|
! const char nop11[11] = { 0x8d, 0x74, 0x26, 0x00, // leal 0(%esi,1),%esi
|
||
|
0x8d, 0xbc, 0x27, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const char nop12[12] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00, 0x8d, 0xbf, // leal 0L(%edi),%edi
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const char nop13[13] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00, 0x8d, 0xbc, // leal 0L(%edi,1),%edi
|
||
|
0x27, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const char nop14[14] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi
|
||
|
0x00, 0x00, 0x00, 0x8d, // leal 0L(%edi,1),%edi
|
||
|
0xbc, 0x27, 0x00, 0x00,
|
||
|
0x00, 0x00 };
|
||
|
! const char nop15[15] = { 0xeb, 0x0d, 0x90, 0x90, // jmp .+15
|
||
|
0x90, 0x90, 0x90, 0x90, // nop,nop,nop,...
|
||
|
0x90, 0x90, 0x90, 0x90,
|
||
|
0x90, 0x90, 0x90 };
|
||
|
|
||
|
! const char* nops[16] = {
|
||
|
NULL,
|
||
|
nop1, nop2, nop3, nop4, nop5, nop6, nop7,
|
||
|
nop8, nop9, nop10, nop11, nop12, nop13, nop14, nop15
|
||
|
};
|
||
|
|
||
|
! return std::string(nops[length], length);
|
||
|
}
|
||
|
|
||
|
// Return the value to use for the base of a DW_EH_PE_datarel offset
|
||
|
--- 3480,3529 ----
|
||
|
}
|
||
|
|
||
|
// Nop sequences of various lengths.
|
||
|
! const unsigned char nop1[1] = { 0x90 }; // nop
|
||
|
! const unsigned char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax
|
||
|
! const unsigned char nop3[3] = { 0x8d, 0x76, 0x00 }; // leal 0(%esi),%esi
|
||
|
! const unsigned char nop4[4] = { 0x8d, 0x74, 0x26, 0x00}; // leal 0(%esi,1),%esi
|
||
|
! const unsigned char nop5[5] = { 0x90, 0x8d, 0x74, 0x26, // nop
|
||
|
0x00 }; // leal 0(%esi,1),%esi
|
||
|
! const unsigned char nop6[6] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop7[7] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop8[8] = { 0x90, 0x8d, 0xb4, 0x26, // nop
|
||
|
0x00, 0x00, 0x00, 0x00 }; // leal 0L(%esi,1),%esi
|
||
|
! const unsigned char nop9[9] = { 0x89, 0xf6, 0x8d, 0xbc, // movl %esi,%esi
|
||
|
0x27, 0x00, 0x00, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00 };
|
||
|
! const unsigned char nop10[10] = { 0x8d, 0x76, 0x00, 0x8d, // leal 0(%esi),%esi
|
||
|
0xbc, 0x27, 0x00, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop11[11] = { 0x8d, 0x74, 0x26, 0x00, // leal 0(%esi,1),%esi
|
||
|
0x8d, 0xbc, 0x27, 0x00, // leal 0L(%edi,1),%edi
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop12[12] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00, 0x8d, 0xbf, // leal 0L(%edi),%edi
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop13[13] = { 0x8d, 0xb6, 0x00, 0x00, // leal 0L(%esi),%esi
|
||
|
0x00, 0x00, 0x8d, 0xbc, // leal 0L(%edi,1),%edi
|
||
|
0x27, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const unsigned char nop14[14] = { 0x8d, 0xb4, 0x26, 0x00, // leal 0L(%esi,1),%esi
|
||
|
0x00, 0x00, 0x00, 0x8d, // leal 0L(%edi,1),%edi
|
||
|
0xbc, 0x27, 0x00, 0x00,
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop15[15] = { 0xeb, 0x0d, 0x90, 0x90, // jmp .+15
|
||
|
0x90, 0x90, 0x90, 0x90, // nop,nop,nop,...
|
||
|
0x90, 0x90, 0x90, 0x90,
|
||
|
0x90, 0x90, 0x90 };
|
||
|
|
||
|
! const unsigned char* nops[16] = {
|
||
|
NULL,
|
||
|
nop1, nop2, nop3, nop4, nop5, nop6, nop7,
|
||
|
nop8, nop9, nop10, nop11, nop12, nop13, nop14, nop15
|
||
|
};
|
||
|
|
||
|
! return std::string((const char *) nops[length], length);
|
||
|
}
|
||
|
|
||
|
// Return the value to use for the base of a DW_EH_PE_datarel offset
|
||
|
Common subdirectories: ../binutils-2.22.orig/gold/po and gold/po
|
||
|
diff -cp ../binutils-2.22.orig/gold/resolve.cc gold/resolve.cc
|
||
|
*** ../binutils-2.22.orig/gold/resolve.cc 2012-01-13 12:20:00.288690373 +0000
|
||
|
--- gold/resolve.cc 2012-01-13 12:24:29.576697764 +0000
|
||
|
*************** Symbol_table::resolve(Sized_symbol<size>
|
||
|
*** 336,344 ****
|
||
|
&& to->name()[0] == '_' && to->name()[1] == 'Z')
|
||
|
{
|
||
|
Symbol_location fromloc
|
||
|
! = { object, orig_st_shndx, sym.get_st_value() };
|
||
|
Symbol_location toloc = { to->object(), to->shndx(&to_is_ordinary),
|
||
|
! to->value() };
|
||
|
this->candidate_odr_violations_[to->name()].insert(fromloc);
|
||
|
this->candidate_odr_violations_[to->name()].insert(toloc);
|
||
|
}
|
||
|
--- 336,344 ----
|
||
|
&& to->name()[0] == '_' && to->name()[1] == 'Z')
|
||
|
{
|
||
|
Symbol_location fromloc
|
||
|
! = { object, orig_st_shndx, (off_t) sym.get_st_value() };
|
||
|
Symbol_location toloc = { to->object(), to->shndx(&to_is_ordinary),
|
||
|
! (off_t) to->value() };
|
||
|
this->candidate_odr_violations_[to->name()].insert(fromloc);
|
||
|
this->candidate_odr_violations_[to->name()].insert(toloc);
|
||
|
}
|
||
|
Common subdirectories: ../binutils-2.22.orig/gold/testsuite and gold/testsuite
|
||
|
diff -cp ../binutils-2.22.orig/gold/x86_64.cc gold/x86_64.cc
|
||
|
*** ../binutils-2.22.orig/gold/x86_64.cc 2012-01-13 12:21:24.880692697 +0000
|
||
|
--- gold/x86_64.cc 2012-01-13 12:25:36.219699685 +0000
|
||
|
*************** Target_x86_64::do_code_fill(section_size
|
||
|
*** 3867,3916 ****
|
||
|
}
|
||
|
|
||
|
// Nop sequences of various lengths.
|
||
|
! const char nop1[1] = { 0x90 }; // nop
|
||
|
! const char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax
|
||
|
! const char nop3[3] = { 0x0f, 0x1f, 0x00 }; // nop (%rax)
|
||
|
! const char nop4[4] = { 0x0f, 0x1f, 0x40, 0x00}; // nop 0(%rax)
|
||
|
! const char nop5[5] = { 0x0f, 0x1f, 0x44, 0x00, // nop 0(%rax,%rax,1)
|
||
|
0x00 };
|
||
|
! const char nop6[6] = { 0x66, 0x0f, 0x1f, 0x44, // nopw 0(%rax,%rax,1)
|
||
|
0x00, 0x00 };
|
||
|
! const char nop7[7] = { 0x0f, 0x1f, 0x80, 0x00, // nopl 0L(%rax)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const char nop8[8] = { 0x0f, 0x1f, 0x84, 0x00, // nopl 0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const char nop9[9] = { 0x66, 0x0f, 0x1f, 0x84, // nopw 0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const char nop10[10] = { 0x66, 0x2e, 0x0f, 0x1f, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x84, 0x00, 0x00, 0x00,
|
||
|
0x00, 0x00 };
|
||
|
! const char nop11[11] = { 0x66, 0x66, 0x2e, 0x0f, // data16
|
||
|
0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const char nop12[12] = { 0x66, 0x66, 0x66, 0x2e, // data16; data16
|
||
|
0x0f, 0x1f, 0x84, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const char nop13[13] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x2e, 0x0f, 0x1f, 0x84, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const char nop14[14] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x66, 0x2e, 0x0f, 0x1f, // data16
|
||
|
0x84, 0x00, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00 };
|
||
|
! const char nop15[15] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x66, 0x66, 0x2e, 0x0f, // data16; data16
|
||
|
0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
|
||
|
! const char* nops[16] = {
|
||
|
NULL,
|
||
|
nop1, nop2, nop3, nop4, nop5, nop6, nop7,
|
||
|
nop8, nop9, nop10, nop11, nop12, nop13, nop14, nop15
|
||
|
};
|
||
|
|
||
|
! return std::string(nops[length], length);
|
||
|
}
|
||
|
|
||
|
// Return the addend to use for a target specific relocation. The
|
||
|
--- 3867,3916 ----
|
||
|
}
|
||
|
|
||
|
// Nop sequences of various lengths.
|
||
|
! const unsigned char nop1[1] = { 0x90 }; // nop
|
||
|
! const unsigned char nop2[2] = { 0x66, 0x90 }; // xchg %ax %ax
|
||
|
! const unsigned char nop3[3] = { 0x0f, 0x1f, 0x00 }; // nop (%rax)
|
||
|
! const unsigned char nop4[4] = { 0x0f, 0x1f, 0x40, 0x00}; // nop 0(%rax)
|
||
|
! const unsigned char nop5[5] = { 0x0f, 0x1f, 0x44, 0x00, // nop 0(%rax,%rax,1)
|
||
|
0x00 };
|
||
|
! const unsigned char nop6[6] = { 0x66, 0x0f, 0x1f, 0x44, // nopw 0(%rax,%rax,1)
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop7[7] = { 0x0f, 0x1f, 0x80, 0x00, // nopl 0L(%rax)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop8[8] = { 0x0f, 0x1f, 0x84, 0x00, // nopl 0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop9[9] = { 0x66, 0x0f, 0x1f, 0x84, // nopw 0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const unsigned char nop10[10] = { 0x66, 0x2e, 0x0f, 0x1f, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x84, 0x00, 0x00, 0x00,
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop11[11] = { 0x66, 0x66, 0x2e, 0x0f, // data16
|
||
|
0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop12[12] = { 0x66, 0x66, 0x66, 0x2e, // data16; data16
|
||
|
0x0f, 0x1f, 0x84, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00 };
|
||
|
! const unsigned char nop13[13] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x2e, 0x0f, 0x1f, 0x84, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00, 0x00,
|
||
|
0x00 };
|
||
|
! const unsigned char nop14[14] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x66, 0x2e, 0x0f, 0x1f, // data16
|
||
|
0x84, 0x00, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00 };
|
||
|
! const unsigned char nop15[15] = { 0x66, 0x66, 0x66, 0x66, // data16; data16; data16
|
||
|
0x66, 0x66, 0x2e, 0x0f, // data16; data16
|
||
|
0x1f, 0x84, 0x00, 0x00, // nopw %cs:0L(%rax,%rax,1)
|
||
|
0x00, 0x00, 0x00 };
|
||
|
|
||
|
! const unsigned char* nops[16] = {
|
||
|
NULL,
|
||
|
nop1, nop2, nop3, nop4, nop5, nop6, nop7,
|
||
|
nop8, nop9, nop10, nop11, nop12, nop13, nop14, nop15
|
||
|
};
|
||
|
|
||
|
! return std::string((const char *) nops[length], length);
|
||
|
}
|
||
|
|
||
|
// Return the addend to use for a target specific relocation. The
|