diff options
author | Ian Lance Taylor <iant@google.com> | 2007-10-04 22:28:36 +0000 |
---|---|---|
committer | Ian Lance Taylor <iant@google.com> | 2007-10-04 22:28:36 +0000 |
commit | d61c17ea24e92c49e54be26736a7f0f13a73a754 (patch) | |
tree | 4590de1d0e913d8a4d66857e9d5dbfdf0395312c /gold/i386.cc | |
parent | 0eadd5b4335f489d8dcb4a0aa06f888b862f931a (diff) | |
download | gdb-d61c17ea24e92c49e54be26736a7f0f13a73a754.zip gdb-d61c17ea24e92c49e54be26736a7f0f13a73a754.tar.gz gdb-d61c17ea24e92c49e54be26736a7f0f13a73a754.tar.bz2 |
From Craig Silverstein: x86_64 TLS support.
Diffstat (limited to 'gold/i386.cc')
-rw-r--r-- | gold/i386.cc | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gold/i386.cc b/gold/i386.cc index b041166..d8b47a8 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -741,6 +741,8 @@ Target_i386::Scan::local(const General_options&, case elfcpp::R_386_GLOB_DAT: case elfcpp::R_386_JUMP_SLOT: case elfcpp::R_386_RELATIVE: + // These are outstanding tls relocs, which are unexpected when + // linking. case elfcpp::R_386_TLS_TPOFF: case elfcpp::R_386_TLS_DTPMOD32: case elfcpp::R_386_TLS_DTPOFF32: @@ -751,6 +753,8 @@ Target_i386::Scan::local(const General_options&, gold_exit(false); break; + // These are initial tls relocs, which are expected when + // linking. case elfcpp::R_386_TLS_IE: case elfcpp::R_386_TLS_GOTIE: case elfcpp::R_386_TLS_LE: @@ -902,6 +906,8 @@ Target_i386::Scan::global(const General_options& options, case elfcpp::R_386_GLOB_DAT: case elfcpp::R_386_JUMP_SLOT: case elfcpp::R_386_RELATIVE: + // These are outstanding tls relocs, which are unexpected when + // linking. case elfcpp::R_386_TLS_TPOFF: case elfcpp::R_386_TLS_DTPMOD32: case elfcpp::R_386_TLS_DTPOFF32: @@ -912,6 +918,8 @@ Target_i386::Scan::global(const General_options& options, gold_exit(false); break; + // These are initial tls relocs, which are expected when + // linking. case elfcpp::R_386_TLS_IE: case elfcpp::R_386_TLS_GOTIE: case elfcpp::R_386_TLS_LE: @@ -1164,6 +1172,8 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo, case elfcpp::R_386_GLOB_DAT: case elfcpp::R_386_JUMP_SLOT: case elfcpp::R_386_RELATIVE: + // These are outstanding tls relocs, which are unexpected when + // linking. case elfcpp::R_386_TLS_TPOFF: case elfcpp::R_386_TLS_DTPMOD32: case elfcpp::R_386_TLS_DTPOFF32: @@ -1176,6 +1186,8 @@ Target_i386::Relocate::relocate(const Relocate_info<32, false>* relinfo, gold_exit(false); break; + // These are initial tls relocs, which are expected when + // linking. case elfcpp::R_386_TLS_IE: case elfcpp::R_386_TLS_GOTIE: case elfcpp::R_386_TLS_LE: @@ -1440,7 +1452,8 @@ Target_i386::Relocate::tls_gd_to_le(const Relocate_info<32, false>* relinfo, { Target_i386::Relocate::check_tls(relinfo, relnum, rel, (op1 & 0xf8) == 0x80 && (op1 & 7) != 4); - if (rel.get_r_offset() + 9 < view_size && view[9] == 0x90) + if (static_cast<off_t>(rel.get_r_offset() + 9) < view_size + && view[9] == 0x90) { // There is a trailing nop. Use the size byte subl. memcpy(view - 2, "\x65\xa1\0\0\0\0\x81\xe8\0\0\0", 12); |