mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 15:18:37 +08:00
* output.h: Formatting, whitespace.
This commit is contained in:
@ -1,3 +1,7 @@
|
|||||||
|
2012-12-03 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
|
* output.h: Formatting, whitespace.
|
||||||
|
|
||||||
i2012-12-03 Alan Modra <amodra@gmail.com>
|
i2012-12-03 Alan Modra <amodra@gmail.com>
|
||||||
|
|
||||||
* layout.h (Layout::get_executable_sections): Declare.
|
* layout.h (Layout::get_executable_sections): Declare.
|
||||||
|
208
gold/output.h
208
gold/output.h
@ -1033,7 +1033,7 @@ class Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
bool use_plt_offset);
|
bool use_plt_offset);
|
||||||
|
|
||||||
Output_reloc(Symbol* gsym, unsigned int type,
|
Output_reloc(Symbol* gsym, unsigned int type,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, bool is_relative,
|
unsigned int shndx, Address address, bool is_relative,
|
||||||
bool is_symbolless, bool use_plt_offset);
|
bool is_symbolless, bool use_plt_offset);
|
||||||
|
|
||||||
@ -1042,14 +1042,14 @@ class Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
Output_reloc(Sized_relobj<size, big_endian>* relobj,
|
Output_reloc(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
Output_data* od, Address address, bool is_relative,
|
Output_data* od, Address address, bool is_relative,
|
||||||
bool is_symbolless, bool is_section_symbol,
|
bool is_symbolless, bool is_section_symbol,
|
||||||
bool use_plt_offset);
|
bool use_plt_offset);
|
||||||
|
|
||||||
Output_reloc(Sized_relobj<size, big_endian>* relobj,
|
Output_reloc(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
unsigned int shndx, Address address, bool is_relative,
|
unsigned int shndx, Address address, bool is_relative,
|
||||||
bool is_symbolless, bool is_section_symbol,
|
bool is_symbolless, bool is_section_symbol,
|
||||||
bool use_plt_offset);
|
bool use_plt_offset);
|
||||||
|
|
||||||
// A reloc against the STT_SECTION symbol of an output section.
|
// A reloc against the STT_SECTION symbol of an output section.
|
||||||
|
|
||||||
@ -1100,10 +1100,10 @@ class Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
is_local_section_symbol() const
|
is_local_section_symbol() const
|
||||||
{
|
{
|
||||||
return (this->local_sym_index_ != GSYM_CODE
|
return (this->local_sym_index_ != GSYM_CODE
|
||||||
&& this->local_sym_index_ != SECTION_CODE
|
&& this->local_sym_index_ != SECTION_CODE
|
||||||
&& this->local_sym_index_ != INVALID_CODE
|
&& this->local_sym_index_ != INVALID_CODE
|
||||||
&& this->local_sym_index_ != TARGET_CODE
|
&& this->local_sym_index_ != TARGET_CODE
|
||||||
&& this->is_section_symbol_);
|
&& this->is_section_symbol_);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return whether this is a target specific relocation.
|
// Return whether this is a target specific relocation.
|
||||||
@ -1271,7 +1271,7 @@ class Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
Output_reloc(Symbol* gsym, unsigned int type,
|
Output_reloc(Symbol* gsym, unsigned int type,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend,
|
unsigned int shndx, Address address, Addend addend,
|
||||||
bool is_relative, bool is_symbolless, bool use_plt_offset)
|
bool is_relative, bool is_symbolless, bool use_plt_offset)
|
||||||
: rel_(gsym, type, relobj, shndx, address, is_relative,
|
: rel_(gsym, type, relobj, shndx, address, is_relative,
|
||||||
@ -1287,7 +1287,7 @@ class Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
bool is_symbolless, bool is_section_symbol,
|
bool is_symbolless, bool is_section_symbol,
|
||||||
bool use_plt_offset)
|
bool use_plt_offset)
|
||||||
: rel_(relobj, local_sym_index, type, od, address, is_relative,
|
: rel_(relobj, local_sym_index, type, od, address, is_relative,
|
||||||
is_symbolless, is_section_symbol, use_plt_offset),
|
is_symbolless, is_section_symbol, use_plt_offset),
|
||||||
addend_(addend)
|
addend_(addend)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -1298,7 +1298,7 @@ class Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
bool is_symbolless, bool is_section_symbol,
|
bool is_symbolless, bool is_section_symbol,
|
||||||
bool use_plt_offset)
|
bool use_plt_offset)
|
||||||
: rel_(relobj, local_sym_index, type, shndx, address, is_relative,
|
: rel_(relobj, local_sym_index, type, shndx, address, is_relative,
|
||||||
is_symbolless, is_section_symbol, use_plt_offset),
|
is_symbolless, is_section_symbol, use_plt_offset),
|
||||||
addend_(addend)
|
addend_(addend)
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
@ -1310,7 +1310,7 @@ class Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
{ }
|
{ }
|
||||||
|
|
||||||
Output_reloc(Output_section* os, unsigned int type,
|
Output_reloc(Output_section* os, unsigned int type,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend,
|
unsigned int shndx, Address address, Addend addend,
|
||||||
bool is_relative)
|
bool is_relative)
|
||||||
: rel_(os, type, relobj, shndx, address, is_relative), addend_(addend)
|
: rel_(os, type, relobj, shndx, address, is_relative), addend_(addend)
|
||||||
@ -1570,14 +1570,19 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_global(Symbol* gsym, unsigned int type, Output_data* od, Address address)
|
add_global(Symbol* gsym, unsigned int type, Output_data* od, Address address)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, false, false, false)); }
|
{
|
||||||
|
this->add(od, Output_reloc_type(gsym, type, od, address,
|
||||||
|
false, false, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address)
|
unsigned int shndx, Address address)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
{
|
||||||
false, false, false)); }
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
|
false, false, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global_generic(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_generic(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
@ -1607,17 +1612,19 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Address address)
|
Address address)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, true, true,
|
{
|
||||||
false)); }
|
this->add(od, Output_reloc_type(gsym, type, od, address, true, true,
|
||||||
|
false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address)
|
unsigned int shndx, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
true, true, false));
|
true, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a global relocation which does not use a symbol for the relocation,
|
// Add a global relocation which does not use a symbol for the relocation,
|
||||||
@ -1626,8 +1633,10 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
void
|
void
|
||||||
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
||||||
Output_data* od, Address address)
|
Output_data* od, Address address)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, false, true,
|
{
|
||||||
false)); }
|
this->add(od, Output_reloc_type(gsym, type, od, address, false, true,
|
||||||
|
false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
||||||
@ -1636,7 +1645,7 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
unsigned int shndx, Address address)
|
unsigned int shndx, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
false, true, false));
|
false, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a reloc against a local symbol.
|
// Add a reloc against a local symbol.
|
||||||
@ -1647,7 +1656,7 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
Output_data* od, Address address)
|
Output_data* od, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
||||||
address, false, false, false, false));
|
address, false, false, false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1689,17 +1698,17 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
Output_data* od, Address address)
|
Output_data* od, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
||||||
address, true, true, false, false));
|
address, true, true, false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
Output_data* od, unsigned int shndx, Address address)
|
Output_data* od, unsigned int shndx, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
||||||
address, true, true, false, false));
|
address, true, true, false, false));
|
||||||
@ -1714,7 +1723,7 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
Output_data* od, Address address)
|
Output_data* od, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od,
|
||||||
address, false, true, false, false));
|
address, false, true, false, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1733,20 +1742,20 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int input_shndx, unsigned int type,
|
unsigned int input_shndx, unsigned int type,
|
||||||
Output_data* od, Address address)
|
Output_data* od, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, input_shndx, type, od,
|
this->add(od, Output_reloc_type(relobj, input_shndx, type, od,
|
||||||
address, false, false, true, false));
|
address, false, false, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int input_shndx, unsigned int type,
|
unsigned int input_shndx, unsigned int type,
|
||||||
Output_data* od, unsigned int shndx, Address address)
|
Output_data* od, unsigned int shndx, Address address)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx,
|
this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx,
|
||||||
address, false, false, true, false));
|
address, false, false, true, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// A reloc against the STT_SECTION symbol of an output section.
|
// A reloc against the STT_SECTION symbol of an output section.
|
||||||
@ -1761,7 +1770,7 @@ class Output_data_reloc<elfcpp::SHT_REL, dynamic, size, big_endian>
|
|||||||
void
|
void
|
||||||
add_output_section(Output_section* os, unsigned int type, Output_data* od,
|
add_output_section(Output_section* os, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address)
|
unsigned int shndx, Address address)
|
||||||
{ this->add(od, Output_reloc_type(os, type, relobj, shndx, address, false)); }
|
{ this->add(od, Output_reloc_type(os, type, relobj, shndx, address, false)); }
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1866,16 +1875,20 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
void
|
void
|
||||||
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Address address, Addend addend)
|
Address address, Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, addend,
|
{
|
||||||
false, false, false)); }
|
this->add(od, Output_reloc_type(gsym, type, od, address, addend,
|
||||||
|
false, false, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address,
|
unsigned int shndx, Address address,
|
||||||
Addend addend)
|
Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
{
|
||||||
addend, false, false, false)); }
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
|
addend, false, false, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global_generic(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_generic(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
@ -1907,17 +1920,21 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Address address, Addend addend, bool use_plt_offset)
|
Address address, Addend addend, bool use_plt_offset)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, addend, true,
|
{
|
||||||
true, use_plt_offset)); }
|
this->add(od, Output_reloc_type(gsym, type, od, address, addend, true,
|
||||||
|
true, use_plt_offset));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
add_global_relative(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend,
|
unsigned int shndx, Address address, Addend addend,
|
||||||
bool use_plt_offset)
|
bool use_plt_offset)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
{
|
||||||
addend, true, true, use_plt_offset)); }
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
|
addend, true, true, use_plt_offset));
|
||||||
|
}
|
||||||
|
|
||||||
// Add a global relocation which does not use a symbol for the relocation,
|
// Add a global relocation which does not use a symbol for the relocation,
|
||||||
// but which gets its addend from a symbol.
|
// but which gets its addend from a symbol.
|
||||||
@ -1925,16 +1942,21 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
void
|
void
|
||||||
add_symbolless_global_addend(Symbol* gsym, unsigned int type, Output_data* od,
|
add_symbolless_global_addend(Symbol* gsym, unsigned int type, Output_data* od,
|
||||||
Address address, Addend addend)
|
Address address, Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, od, address, addend,
|
{
|
||||||
false, true, false)); }
|
this->add(od, Output_reloc_type(gsym, type, od, address, addend,
|
||||||
|
false, true, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
add_symbolless_global_addend(Symbol* gsym, unsigned int type,
|
||||||
Output_data* od,
|
Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend)
|
unsigned int shndx, Address address,
|
||||||
{ this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
Addend addend)
|
||||||
addend, false, true, false)); }
|
{
|
||||||
|
this->add(od, Output_reloc_type(gsym, type, relobj, shndx, address,
|
||||||
|
addend, false, true, false));
|
||||||
|
}
|
||||||
|
|
||||||
// Add a reloc against a local symbol.
|
// Add a reloc against a local symbol.
|
||||||
|
|
||||||
@ -1954,8 +1976,8 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
Addend addend)
|
Addend addend)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
||||||
address, addend, false, false, false,
|
address, addend, false, false, false,
|
||||||
false));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -1988,9 +2010,9 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
Output_data* od, Address address, Addend addend,
|
Output_data* od, Address address, Addend addend,
|
||||||
bool use_plt_offset)
|
bool use_plt_offset)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, address,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, od, address,
|
||||||
addend, true, true, false,
|
addend, true, true, false,
|
||||||
@ -1999,13 +2021,13 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
add_local_relative(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int local_sym_index, unsigned int type,
|
unsigned int local_sym_index, unsigned int type,
|
||||||
Output_data* od, unsigned int shndx, Address address,
|
Output_data* od, unsigned int shndx, Address address,
|
||||||
Addend addend, bool use_plt_offset)
|
Addend addend, bool use_plt_offset)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
||||||
address, addend, true, true, false,
|
address, addend, true, true, false,
|
||||||
use_plt_offset));
|
use_plt_offset));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a local relocation which does not use a symbol for the relocation,
|
// Add a local relocation which does not use a symbol for the relocation,
|
||||||
@ -2027,8 +2049,8 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
Address address, Addend addend)
|
Address address, Addend addend)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
this->add(od, Output_reloc_type(relobj, local_sym_index, type, shndx,
|
||||||
address, addend, false, true, false,
|
address, addend, false, true, false,
|
||||||
false));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a reloc against a local section symbol. This will be
|
// Add a reloc against a local section symbol. This will be
|
||||||
@ -2037,8 +2059,8 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
add_local_section(Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int input_shndx, unsigned int type,
|
unsigned int input_shndx, unsigned int type,
|
||||||
Output_data* od, Address address, Addend addend)
|
Output_data* od, Address address, Addend addend)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, input_shndx, type, od, address,
|
this->add(od, Output_reloc_type(relobj, input_shndx, type, od, address,
|
||||||
addend, false, false, true, false));
|
addend, false, false, true, false));
|
||||||
@ -2051,8 +2073,8 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
Addend addend)
|
Addend addend)
|
||||||
{
|
{
|
||||||
this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx,
|
this->add(od, Output_reloc_type(relobj, input_shndx, type, shndx,
|
||||||
address, addend, false, false, true,
|
address, addend, false, false, true,
|
||||||
false));
|
false));
|
||||||
}
|
}
|
||||||
|
|
||||||
// A reloc against the STT_SECTION symbol of an output section.
|
// A reloc against the STT_SECTION symbol of an output section.
|
||||||
@ -2064,10 +2086,12 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
|
|
||||||
void
|
void
|
||||||
add_output_section(Output_section* os, unsigned int type, Output_data* od,
|
add_output_section(Output_section* os, unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend)
|
unsigned int shndx, Address address, Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(os, type, relobj, shndx, address,
|
{
|
||||||
addend, false)); }
|
this->add(od, Output_reloc_type(os, type, relobj, shndx, address,
|
||||||
|
addend, false));
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
add_output_section_generic(Output_section* os, unsigned int type,
|
add_output_section_generic(Output_section* os, unsigned int type,
|
||||||
@ -2123,8 +2147,10 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
add_absolute(unsigned int type, Output_data* od,
|
add_absolute(unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend)
|
unsigned int shndx, Address address, Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(type, relobj, shndx, address, addend,
|
{
|
||||||
false)); }
|
this->add(od, Output_reloc_type(type, relobj, shndx, address, addend,
|
||||||
|
false));
|
||||||
|
}
|
||||||
|
|
||||||
// Add a relative relocation
|
// Add a relative relocation
|
||||||
|
|
||||||
@ -2137,8 +2163,10 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
|
|||||||
add_relative(unsigned int type, Output_data* od,
|
add_relative(unsigned int type, Output_data* od,
|
||||||
Sized_relobj<size, big_endian>* relobj,
|
Sized_relobj<size, big_endian>* relobj,
|
||||||
unsigned int shndx, Address address, Addend addend)
|
unsigned int shndx, Address address, Addend addend)
|
||||||
{ this->add(od, Output_reloc_type(type, relobj, shndx, address, addend,
|
{
|
||||||
true)); }
|
this->add(od, Output_reloc_type(type, relobj, shndx, address, addend,
|
||||||
|
true));
|
||||||
|
}
|
||||||
|
|
||||||
// Add a target specific relocation. A target which calls this must
|
// Add a target specific relocation. A target which calls this must
|
||||||
// define the reloc_symbol_index and reloc_addend virtual functions.
|
// define the reloc_symbol_index and reloc_addend virtual functions.
|
||||||
@ -2293,13 +2321,13 @@ class Output_data_got : public Output_data_got_base
|
|||||||
// relocation of type R_TYPE for the GOT entry.
|
// relocation of type R_TYPE for the GOT entry.
|
||||||
void
|
void
|
||||||
add_global_with_rel(Symbol* gsym, unsigned int got_type,
|
add_global_with_rel(Symbol* gsym, unsigned int got_type,
|
||||||
Output_data_reloc_generic* rel_dyn, unsigned int r_type);
|
Output_data_reloc_generic* rel_dyn, unsigned int r_type);
|
||||||
|
|
||||||
// Add a pair of entries for a global symbol to the GOT, and add
|
// Add a pair of entries for a global symbol to the GOT, and add
|
||||||
// dynamic relocations of type R_TYPE_1 and R_TYPE_2, respectively.
|
// dynamic relocations of type R_TYPE_1 and R_TYPE_2, respectively.
|
||||||
void
|
void
|
||||||
add_global_pair_with_rel(Symbol* gsym, unsigned int got_type,
|
add_global_pair_with_rel(Symbol* gsym, unsigned int got_type,
|
||||||
Output_data_reloc_generic* rel_dyn,
|
Output_data_reloc_generic* rel_dyn,
|
||||||
unsigned int r_type_1, unsigned int r_type_2);
|
unsigned int r_type_1, unsigned int r_type_2);
|
||||||
|
|
||||||
// Add an entry for a local symbol to the GOT. This returns true if
|
// Add an entry for a local symbol to the GOT. This returns true if
|
||||||
@ -2335,7 +2363,7 @@ class Output_data_got : public Output_data_got_base
|
|||||||
add_local_pair_with_rel(Relobj* object, unsigned int sym_index,
|
add_local_pair_with_rel(Relobj* object, unsigned int sym_index,
|
||||||
unsigned int shndx, unsigned int got_type,
|
unsigned int shndx, unsigned int got_type,
|
||||||
Output_data_reloc_generic* rel_dyn,
|
Output_data_reloc_generic* rel_dyn,
|
||||||
unsigned int r_type);
|
unsigned int r_type);
|
||||||
|
|
||||||
// Add a pair of entries for a local symbol to the GOT, and add
|
// Add a pair of entries for a local symbol to the GOT, and add
|
||||||
// a dynamic relocation of type R_TYPE using STN_UNDEF on the first.
|
// a dynamic relocation of type R_TYPE using STN_UNDEF on the first.
|
||||||
@ -2518,7 +2546,7 @@ class Output_data_dynamic : public Output_section_data
|
|||||||
// plus a constant offset.
|
// plus a constant offset.
|
||||||
void
|
void
|
||||||
add_section_plus_offset(elfcpp::DT tag, const Output_data* od,
|
add_section_plus_offset(elfcpp::DT tag, const Output_data* od,
|
||||||
unsigned int offset)
|
unsigned int offset)
|
||||||
{ this->add_entry(Dynamic_entry(tag, od, offset)); }
|
{ this->add_entry(Dynamic_entry(tag, od, offset)); }
|
||||||
|
|
||||||
// Add a new dynamic entry with the size of output data.
|
// Add a new dynamic entry with the size of output data.
|
||||||
@ -3050,7 +3078,7 @@ class Output_section : public Output_data
|
|||||||
template<int size, bool big_endian>
|
template<int size, bool big_endian>
|
||||||
off_t
|
off_t
|
||||||
add_input_section(Layout* layout, Sized_relobj_file<size, big_endian>* object,
|
add_input_section(Layout* layout, Sized_relobj_file<size, big_endian>* object,
|
||||||
unsigned int shndx, const char* name,
|
unsigned int shndx, const char* name,
|
||||||
const elfcpp::Shdr<size, big_endian>& shdr,
|
const elfcpp::Shdr<size, big_endian>& shdr,
|
||||||
unsigned int reloc_shndx, bool have_sections_script);
|
unsigned int reloc_shndx, bool have_sections_script);
|
||||||
|
|
||||||
@ -3607,13 +3635,13 @@ class Output_section : public Output_data
|
|||||||
// parameters.
|
// parameters.
|
||||||
bool
|
bool
|
||||||
is_merge_section(bool is_string, uint64_t entsize,
|
is_merge_section(bool is_string, uint64_t entsize,
|
||||||
uint64_t addralign) const
|
uint64_t addralign) const
|
||||||
{
|
{
|
||||||
return (this->shndx_ == (is_string
|
return (this->shndx_ == (is_string
|
||||||
? MERGE_STRING_SECTION_CODE
|
? MERGE_STRING_SECTION_CODE
|
||||||
: MERGE_DATA_SECTION_CODE)
|
: MERGE_DATA_SECTION_CODE)
|
||||||
&& this->u1_.entsize == entsize
|
&& this->u1_.entsize == entsize
|
||||||
&& this->addralign() == addralign);
|
&& this->addralign() == addralign);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return whether this is a merge section for some input section.
|
// Return whether this is a merge section for some input section.
|
||||||
@ -3675,7 +3703,7 @@ class Output_section : public Output_data
|
|||||||
{
|
{
|
||||||
gold_assert(!this->is_input_section());
|
gold_assert(!this->is_input_section());
|
||||||
Output_section_data* posd =
|
Output_section_data* posd =
|
||||||
this->is_relaxed_input_section() ? this->u2_.poris : this->u2_.posd;
|
this->is_relaxed_input_section() ? this->u2_.poris : this->u2_.posd;
|
||||||
posd->set_output_section(os);
|
posd->set_output_section(os);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4608,8 +4636,8 @@ class Output_segment
|
|||||||
// Set the section addresses in an Output_data_list.
|
// Set the section addresses in an Output_data_list.
|
||||||
uint64_t
|
uint64_t
|
||||||
set_section_list_addresses(Layout*, bool reset, Output_data_list*,
|
set_section_list_addresses(Layout*, bool reset, Output_data_list*,
|
||||||
uint64_t addr, off_t* poff, unsigned int* pshndx,
|
uint64_t addr, off_t* poff, unsigned int* pshndx,
|
||||||
bool* in_tls);
|
bool* in_tls);
|
||||||
|
|
||||||
// Return the number of Output_sections in an Output_data_list.
|
// Return the number of Output_sections in an Output_data_list.
|
||||||
unsigned int
|
unsigned int
|
||||||
@ -4742,7 +4770,7 @@ class Output_file
|
|||||||
get_output_view(off_t start, size_t size)
|
get_output_view(off_t start, size_t size)
|
||||||
{
|
{
|
||||||
gold_assert(start >= 0
|
gold_assert(start >= 0
|
||||||
&& start + static_cast<off_t>(size) <= this->file_size_);
|
&& start + static_cast<off_t>(size) <= this->file_size_);
|
||||||
return this->base_ + start;
|
return this->base_ + start;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user