Line 1... |
Line 1... |
// copy-relocs.cc -- handle COPY relocations for gold.
|
// copy-relocs.cc -- handle COPY relocations for gold.
|
|
|
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
// Written by Ian Lance Taylor <iant@google.com>.
|
// Written by Ian Lance Taylor <iant@google.com>.
|
|
|
// This file is part of gold.
|
// This file is part of gold.
|
|
|
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
Line 39... |
Line 39... |
{
|
{
|
// If the symbol is no longer defined in a dynamic object, then we
|
// If the symbol is no longer defined in a dynamic object, then we
|
// emitted a COPY relocation, and we do not want to emit this
|
// emitted a COPY relocation, and we do not want to emit this
|
// dynamic relocation.
|
// dynamic relocation.
|
if (this->sym_->is_from_dynobj())
|
if (this->sym_->is_from_dynobj())
|
reloc_section->add_global(this->sym_, this->reloc_type_,
|
reloc_section->add_global_generic(this->sym_, this->reloc_type_,
|
this->output_section_, this->relobj_,
|
this->output_section_, this->relobj_,
|
this->shndx_, this->address_,
|
this->shndx_, this->address_,
|
this->addend_);
|
this->addend_);
|
}
|
}
|
|
|
Line 113... |
Line 113... |
{
|
{
|
// Define the symbol as being copied.
|
// Define the symbol as being copied.
|
symtab->define_with_copy_reloc(sym, posd, offset);
|
symtab->define_with_copy_reloc(sym, posd, offset);
|
|
|
// Add the COPY relocation to the dynamic reloc section.
|
// Add the COPY relocation to the dynamic reloc section.
|
reloc_section->add_global(sym, this->copy_reloc_type_, posd, offset, 0);
|
reloc_section->add_global_generic(sym, this->copy_reloc_type_, posd,
|
|
offset, 0);
|
}
|
}
|
|
|
// Make a COPY relocation for SYM and emit it.
|
// Make a COPY relocation for SYM and emit it.
|
|
|
template<int sh_type, int size, bool big_endian>
|
template<int sh_type, int size, bool big_endian>
|