Fix typos in gold.
gold/: * dwarf_reader.cc: Remove outdated comment. * gold-threads.cc: Fix typo in error message. * archive.cc: Fix typos in comments. * archive.h: Likewise. * arm-reloc-property.cc: Likewise. * arm-reloc-property.h: Likewise. * arm-reloc.def: Likewise. * arm.cc: Likewise. * attributes.h: Likewise. * cref.cc: Likewise. * ehframe.cc: Likewise. * fileread.h: Likewise. * gold.h: Likewise. * i386.cc: Likewise. * icf.cc: Likewise. * incremental.h: Likewise. * int_encoding.cc: Likewise. * layout.h: Likewise. * main.cc: Likewise. * merge.h: Likewise. * object.cc: Likewise. * object.h: Likewise. * options.cc: Likewise. * readsyms.cc: Likewise. * reduced_debug_output.cc: Likewise. * reloc.cc: Likewise. * script-sections.cc: Likewise. * sparc.cc: Likewise. * symtab.h: Likewise. * target-reloc.h: Likewise. * target.cc: Likewise. * target.h: Likewise. * timer.cc: Likewise. * timer.h: Likewise. * x86_64.cc: Likewise.
This commit is contained in:
parent
b6c882c784
commit
9b547ce683
36 changed files with 148 additions and 114 deletions
|
@ -1,3 +1,41 @@
|
|||
2010-12-14 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
|
||||
* dwarf_reader.cc: Remove outdated comment.
|
||||
* gold-threads.cc: Fix typo in error message.
|
||||
* archive.cc: Fix typos in comments.
|
||||
* archive.h: Likewise.
|
||||
* arm-reloc-property.cc: Likewise.
|
||||
* arm-reloc-property.h: Likewise.
|
||||
* arm-reloc.def: Likewise.
|
||||
* arm.cc: Likewise.
|
||||
* attributes.h: Likewise.
|
||||
* cref.cc: Likewise.
|
||||
* ehframe.cc: Likewise.
|
||||
* fileread.h: Likewise.
|
||||
* gold.h: Likewise.
|
||||
* i386.cc: Likewise.
|
||||
* icf.cc: Likewise.
|
||||
* incremental.h: Likewise.
|
||||
* int_encoding.cc: Likewise.
|
||||
* layout.h: Likewise.
|
||||
* main.cc: Likewise.
|
||||
* merge.h: Likewise.
|
||||
* object.cc: Likewise.
|
||||
* object.h: Likewise.
|
||||
* options.cc: Likewise.
|
||||
* readsyms.cc: Likewise.
|
||||
* reduced_debug_output.cc: Likewise.
|
||||
* reloc.cc: Likewise.
|
||||
* script-sections.cc: Likewise.
|
||||
* sparc.cc: Likewise.
|
||||
* symtab.h: Likewise.
|
||||
* target-reloc.h: Likewise.
|
||||
* target.cc: Likewise.
|
||||
* target.h: Likewise.
|
||||
* timer.cc: Likewise.
|
||||
* timer.h: Likewise.
|
||||
* x86_64.cc: Likewise.
|
||||
|
||||
2010-12-09 Cary Coutant <ccoutant@google.com>
|
||||
|
||||
* layout.cc (Layout::layout_gnu_stack): Add warnings for executable
|
||||
|
|
|
@ -45,7 +45,7 @@ namespace gold
|
|||
{
|
||||
|
||||
// The header of an entry in the archive. This is all readable text,
|
||||
// padded with spaces where necesary. If the contents of an archive
|
||||
// padded with spaces where necessary. If the contents of an archive
|
||||
// are all text file, the entire archive is readable.
|
||||
|
||||
struct Archive::Archive_header
|
||||
|
@ -1019,7 +1019,7 @@ Lib_group::Lib_group(const Input_file_lib* lib, Task* task)
|
|||
}
|
||||
|
||||
// Select members from the lib group and add them to the link. We walk
|
||||
// through the the members, and check if each one up should be included.
|
||||
// through the members, and check if each one up should be included.
|
||||
// If the object says it should be included, we do so. We have to do
|
||||
// this in a loop, since including one member may create new undefined
|
||||
// symbols which may be satisfied by other members.
|
||||
|
|
|
@ -445,7 +445,7 @@ class Add_archive_symbols : public Task
|
|||
Task_token* next_blocker_;
|
||||
};
|
||||
|
||||
// This class represents the files surrunded by a --start-lib ... --end-lib.
|
||||
// This class represents the files surrounded by a --start-lib ... --end-lib.
|
||||
|
||||
class Lib_group
|
||||
{
|
||||
|
|
|
@ -259,7 +259,7 @@ Arm_reloc_property::Arm_reloc_property(
|
|||
|
||||
Arm_reloc_property_table::Arm_reloc_property_table()
|
||||
{
|
||||
// These appers in arm-reloc.def. Do not rename them.
|
||||
// These appear in arm-reloc.def. Do not rename them.
|
||||
Parse_expression A("A"), GOT_ORG("GOT_ORG"), NONE("NONE"), P("P"),
|
||||
Pa("Pa"), S("S"), T("T"), TLS("TLS"), tp("tp");
|
||||
const bool Y(true), N(false);
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
namespace gold
|
||||
{
|
||||
// The Arm_reloc_property class is to store information about a paticular
|
||||
// The Arm_reloc_property class is to store information about a particular
|
||||
// relocation code.
|
||||
|
||||
class Arm_reloc_property
|
||||
|
@ -282,8 +282,8 @@ class Arm_reloc_property
|
|||
bool uses_symbol_ : 1;
|
||||
};
|
||||
|
||||
// Arm_reloc_property_table. This table is used for looking up propeties
|
||||
// of relocationt types. The table entries are initialized using information
|
||||
// Arm_reloc_property_table. This table is used for looking up properties
|
||||
// of relocation types. The table entries are initialized using information
|
||||
// from arm-reloc.def.
|
||||
|
||||
class Arm_reloc_property_table
|
||||
|
@ -314,7 +314,7 @@ class Arm_reloc_property_table
|
|||
: NULL);
|
||||
}
|
||||
|
||||
// Return a string describing the a relocation code that is not
|
||||
// Return a string describing the relocation code that is not
|
||||
// an implemented static reloc code.
|
||||
std::string
|
||||
reloc_name_in_error_message(unsigned int code);
|
||||
|
@ -328,7 +328,7 @@ class Arm_reloc_property_table
|
|||
// arm-reloc.def into S-expression strings, which are parsed again to
|
||||
// build actual expression trees. We do not build the expression trees
|
||||
// directly because the parser for operations in arm-reloc.def is simpler
|
||||
// this way. Coversion from S-expressions to trees is simple.
|
||||
// this way. Conversion from S-expressions to trees is simple.
|
||||
class Parse_expression
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
// Architecture" (Document number ARM IHI 0044C). The first five columns of
|
||||
// the table below are derived from Table 4-8 in the ARM ELF document. Each
|
||||
// relocation from Table 4-8 corresponds to one relocation definition in the
|
||||
// table below. A relocation defintion has the following information:
|
||||
// table below. A relocation definition has the following information:
|
||||
//
|
||||
// Name: This is the name of the relocation without the "R_ARM_" prefix.
|
||||
//
|
||||
|
@ -40,7 +40,7 @@
|
|||
// is expected to handle these though they should not be generated by fully
|
||||
// conforming tool-chains.
|
||||
//
|
||||
// Operation: An expression specifying how the linker should performace a
|
||||
// Operation: An expression specifying how the linker should perform a
|
||||
// relocation. If there is no operation or the operation cannot be
|
||||
// specified, it is "NONE".
|
||||
//
|
||||
|
|
66
gold/arm.cc
66
gold/arm.cc
|
@ -116,7 +116,7 @@ const size_t ARM_TCB_SIZE = 8;
|
|||
|
||||
// Ideally we would like to avoid using global variables but this is used
|
||||
// very in many places and sometimes in loops. If we use a function
|
||||
// returning a static instance of Arm_reloc_property_table, it will very
|
||||
// returning a static instance of Arm_reloc_property_table, it will be very
|
||||
// slow in an threaded environment since the static instance needs to be
|
||||
// locked. The pointer is below initialized in the
|
||||
// Target::do_select_as_default_target() hook so that we do not spend time
|
||||
|
@ -598,10 +598,10 @@ class Reloc_stub : public Stub
|
|||
// If this is a local symbol, this is the index in the defining object.
|
||||
// Otherwise, it is invalid_index for a global symbol.
|
||||
unsigned int r_sym_;
|
||||
// If r_sym_ is invalid index. This points to a global symbol.
|
||||
// Otherwise, this points a relobj. We used the unsized and target
|
||||
// If r_sym_ is an invalid index, this points to a global symbol.
|
||||
// Otherwise, it points to a relobj. We used the unsized and target
|
||||
// independent Symbol and Relobj classes instead of Sized_symbol<32> and
|
||||
// Arm_relobj. This is done to avoid making the stub class a template
|
||||
// Arm_relobj, in order to avoid making the stub class a template
|
||||
// as most of the stub machinery is endianness-neutral. However, it
|
||||
// may require a bit of casting done by users of this class.
|
||||
union
|
||||
|
@ -895,8 +895,8 @@ class Stub_table : public Output_data
|
|||
current_data_size() const
|
||||
{ return this->current_data_size_for_child(); }
|
||||
|
||||
// Add a STUB with using KEY. Caller is reponsible for avoid adding
|
||||
// if already a STUB with the same key has been added.
|
||||
// Add a STUB using KEY. The caller is responsible for avoiding addition
|
||||
// if a STUB with the same key has already been added.
|
||||
void
|
||||
add_reloc_stub(Reloc_stub* stub, const Reloc_stub::Key& key)
|
||||
{
|
||||
|
@ -915,8 +915,8 @@ class Stub_table : public Output_data
|
|||
}
|
||||
|
||||
// Add a Cortex-A8 STUB that fixes up a THUMB branch at ADDRESS.
|
||||
// Caller is reponsible for avoid adding if already a STUB with the same
|
||||
// address has been added.
|
||||
// The caller is responsible for avoiding addition if a STUB with the same
|
||||
// address has already been added.
|
||||
void
|
||||
add_cortex_a8_stub(Arm_address address, Cortex_a8_stub* stub)
|
||||
{
|
||||
|
@ -1265,7 +1265,7 @@ class Arm_exidx_fixup
|
|||
// number of bytes to be deleted in output. If parts of the input EXIDX
|
||||
// section are merged a heap allocated Arm_exidx_section_offset_map is store
|
||||
// in the located PSECTION_OFFSET_MAP. The caller owns the map and is
|
||||
// reponsible for releasing it.
|
||||
// responsible for releasing it.
|
||||
template<bool big_endian>
|
||||
uint32_t
|
||||
process_exidx_section(const Arm_exidx_input_section* exidx_input_section,
|
||||
|
@ -1704,7 +1704,7 @@ class Arm_relobj : public Sized_relobj<32, big_endian>
|
|||
Target_arm<big_endian>*);
|
||||
|
||||
// Find the linked text section of an EXIDX section by looking at the
|
||||
// first reloction of the EXIDX section. PSHDR points to the section
|
||||
// first relocation of the EXIDX section. PSHDR points to the section
|
||||
// headers of a relocation section and PSYMS points to the local symbols.
|
||||
// PSHNDX points to a location storing the text section index if found.
|
||||
// Return whether we can find the linked section.
|
||||
|
@ -2023,7 +2023,7 @@ class Arm_output_data_got : public Output_data_got<32, big_endian>
|
|||
std::vector<Static_reloc> static_relocs_;
|
||||
};
|
||||
|
||||
// The ARM target has many relocation types with odd-sizes or incontigious
|
||||
// The ARM target has many relocation types with odd-sizes or noncontiguous
|
||||
// bits. The default handling of relocatable relocation cannot process these
|
||||
// relocations. So we have to extend the default code.
|
||||
|
||||
|
@ -2963,7 +2963,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
|||
typedef enum
|
||||
{
|
||||
STATUS_OKAY, // No error during relocation.
|
||||
STATUS_OVERFLOW, // Relocation oveflow.
|
||||
STATUS_OVERFLOW, // Relocation overflow.
|
||||
STATUS_BAD_RELOC // Relocation cannot be applied.
|
||||
} Status;
|
||||
|
||||
|
@ -3189,7 +3189,7 @@ class Arm_relocate_functions : public Relocate_functions<32, big_endian>
|
|||
|
||||
// Insert OFFSET to a 32-bit THUMB conditional branch and return the lower
|
||||
// instruction. LOWER_INSN is the original lower instruction of the branch.
|
||||
// Caller is reponsible for overflow checking.
|
||||
// The caller is responsible for overflow checking.
|
||||
static inline uint16_t
|
||||
thumb32_cond_branch_lower(uint16_t lower_insn, int32_t offset)
|
||||
{
|
||||
|
@ -4435,7 +4435,7 @@ Reloc_stub::Key::name() const
|
|||
// Determine the type of stub needed, if any, for a relocation of R_TYPE at
|
||||
// LOCATION to DESTINATION.
|
||||
// This code is based on the arm_type_of_stub function in
|
||||
// bfd/elf32-arm.c. We have changed the interface a liitle to keep the Stub
|
||||
// bfd/elf32-arm.c. We have changed the interface a little to keep the Stub
|
||||
// class simple.
|
||||
|
||||
Stub_type
|
||||
|
@ -4839,7 +4839,7 @@ Stub_factory::Stub_factory()
|
|||
|
||||
// Stub_table methods.
|
||||
|
||||
// Removel all Cortex-A8 stub.
|
||||
// Remove all Cortex-A8 stub.
|
||||
|
||||
template<bool big_endian>
|
||||
void
|
||||
|
@ -5525,7 +5525,7 @@ Arm_exidx_fixup::process_exidx_section(
|
|||
// dropping. If there is no entry (x0, y0) for an input offset x0,
|
||||
// the output offset y0 of it is determined by the output offset y1 of
|
||||
// the smallest input offset x1 > x0 that there is an (x1, y1) entry
|
||||
// in the map. If y1 is not -1, then y0 = y1 + x0 - x1. Othewise, y1
|
||||
// in the map. If y1 is not -1, then y0 = y1 + x0 - x1. Otherwise, y1
|
||||
// y0 is also -1.
|
||||
if (delete_entry != prev_delete_entry && i != 0)
|
||||
this->update_offset_map(i - 1, deleted_bytes, prev_delete_entry);
|
||||
|
@ -5687,7 +5687,7 @@ Arm_output_section<big_endian>::group_sections(
|
|||
section_size_type section_end_offset =
|
||||
section_begin_offset + p->data_size();
|
||||
|
||||
// Check to see if we should group the previously seens sections.
|
||||
// Check to see if we should group the previously seen sections.
|
||||
switch (state)
|
||||
{
|
||||
case NO_GROUP:
|
||||
|
@ -6335,7 +6335,7 @@ Arm_relobj<big_endian>::scan_sections_for_stubs(
|
|||
// harder because we cannot access this information. So we override the
|
||||
// do_count_local_symbol in parent and scan local symbols to mark
|
||||
// THUMB functions. This is not the most efficient way but I do not want to
|
||||
// slow down other ports by calling a per symbol targer hook inside
|
||||
// slow down other ports by calling a per symbol target hook inside
|
||||
// Sized_relobj<size, big_endian>::do_count_local_symbols.
|
||||
|
||||
template<bool big_endian>
|
||||
|
@ -6353,7 +6353,7 @@ Arm_relobj<big_endian>::do_count_local_symbols(
|
|||
if (loccount == 0)
|
||||
return;
|
||||
|
||||
// Intialize the thumb function bit-vector.
|
||||
// Initialize the thumb function bit-vector.
|
||||
std::vector<bool> empty_vector(loccount, false);
|
||||
this->local_symbol_is_thumb_function_.swap(empty_vector);
|
||||
|
||||
|
@ -6528,9 +6528,9 @@ Arm_relobj<big_endian>::do_relocate_sections(
|
|||
}
|
||||
}
|
||||
|
||||
// Find the linked text section of an EXIDX section by looking the the first
|
||||
// Find the linked text section of an EXIDX section by looking at the first
|
||||
// relocation. 4.4.1 of the EHABI specifications says that an EXIDX section
|
||||
// must be linked to to its associated code section via the sh_link field of
|
||||
// must be linked to its associated code section via the sh_link field of
|
||||
// its section header. However, some tools are broken and the link is not
|
||||
// always set. LD just drops such an EXIDX section silently, causing the
|
||||
// associated code not unwindabled. Here we try a little bit harder to
|
||||
|
@ -6663,7 +6663,7 @@ Arm_relobj<big_endian>::make_exidx_input_section(
|
|||
exidx_input_section->set_has_errors();
|
||||
}
|
||||
else if ((text_shdr.get_sh_flags() & elfcpp::SHF_EXECINSTR) == 0)
|
||||
// I would like to make this an error but currenlty ld just ignores
|
||||
// I would like to make this an error but currently ld just ignores
|
||||
// this.
|
||||
gold_warning(_("EXIDX section %s(%u) links to non-executable section "
|
||||
"%s(%u) in %s"),
|
||||
|
@ -6827,7 +6827,7 @@ Arm_relobj<big_endian>::do_read_symbols(Read_symbols_data* sd)
|
|||
|
||||
// Process relocations for garbage collection. The ARM target uses .ARM.exidx
|
||||
// sections for unwinding. These sections are referenced implicitly by
|
||||
// text sections linked in the section headers. If we ignore these implict
|
||||
// text sections linked in the section headers. If we ignore these implicit
|
||||
// references, the .ARM.exidx sections and any .ARM.extab sections they use
|
||||
// will be garbage-collected incorrectly. Hence we override the same function
|
||||
// in the base class to handle these implicit references.
|
||||
|
@ -8312,7 +8312,7 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab,
|
|||
// All the relocation above are branches except for the PREL31 ones.
|
||||
// A PREL31 relocation can point to a personality function in a shared
|
||||
// library. In that case we want to use a PLT because we want to
|
||||
// call the personality routine and the dyanmic linkers we care about
|
||||
// call the personality routine and the dynamic linkers we care about
|
||||
// do not support dynamic PREL31 relocations. An REL31 relocation may
|
||||
// point to a function whose unwinding behaviour is being described but
|
||||
// we will not mistakenly generate a PLT for that because we should use
|
||||
|
@ -8646,7 +8646,7 @@ Target_arm<big_endian>::do_finalize_sections(
|
|||
if (exidx_section != NULL
|
||||
&& exidx_section->type() == elfcpp::SHT_ARM_EXIDX)
|
||||
{
|
||||
// Create __exidx_start and __exdix_end symbols.
|
||||
// Create __exidx_start and __exidx_end symbols.
|
||||
symtab->define_in_output_data("__exidx_start", NULL,
|
||||
Symbol_table::PREDEFINED,
|
||||
exidx_section, 0, 0, elfcpp::STT_OBJECT,
|
||||
|
@ -9873,7 +9873,7 @@ Target_arm<big_endian>::get_real_reloc_type(unsigned int r_type)
|
|||
return elfcpp::R_ARM_ABS32;
|
||||
|
||||
case elfcpp::R_ARM_TARGET2:
|
||||
// This can be any reloc type but ususally is R_ARM_GOT_PREL
|
||||
// This can be any reloc type but usually is R_ARM_GOT_PREL
|
||||
return elfcpp::R_ARM_GOT_PREL;
|
||||
|
||||
default:
|
||||
|
@ -10457,7 +10457,7 @@ Target_arm<big_endian>::merge_object_attributes(
|
|||
|| (out_attr[elfcpp::Tag_ABI_align8_preserved].int_value()
|
||||
== 0)))
|
||||
{
|
||||
// This error message should be enabled once all non-conformant
|
||||
// This error message should be enabled once all non-conforming
|
||||
// binaries in the toolchain have had the attributes set
|
||||
// properly.
|
||||
// gold_error(_("output 8-byte data alignment conflicts with %s"),
|
||||
|
@ -10634,7 +10634,7 @@ Target_arm<big_endian>::merge_object_attributes(
|
|||
}
|
||||
break;
|
||||
case elfcpp::Tag_ABI_VFP_args:
|
||||
// Aready done.
|
||||
// Already done.
|
||||
break;
|
||||
case elfcpp::Tag_ABI_WMMX_args:
|
||||
if (in_attr[i].int_value() != out_attr[i].int_value()
|
||||
|
@ -11339,12 +11339,12 @@ Target_arm<big_endian>::scan_section_for_stubs(
|
|||
|
||||
// Group input sections for stub generation.
|
||||
//
|
||||
// We goup input sections in an output sections so that the total size,
|
||||
// We group input sections in an output section so that the total size,
|
||||
// including any padding space due to alignment is smaller than GROUP_SIZE
|
||||
// unless the only input section in group is bigger than GROUP_SIZE already.
|
||||
// Then an ARM stub table is created to follow the last input section
|
||||
// in group. For each group an ARM stub table is created an is placed
|
||||
// after the last group. If STUB_ALWATS_AFTER_BRANCH is false, we further
|
||||
// after the last group. If STUB_ALWAYS_AFTER_BRANCH is false, we further
|
||||
// extend the group after the stub table.
|
||||
|
||||
template<bool big_endian>
|
||||
|
@ -11391,7 +11391,7 @@ Target_arm<big_endian>::do_relax(
|
|||
{
|
||||
// Determine the stub group size. The group size is the absolute
|
||||
// value of the parameter --stub-group-size. If --stub-group-size
|
||||
// is passed a negative value, we restict stubs to be always after
|
||||
// is passed a negative value, we restrict stubs to be always after
|
||||
// the stubbed branches.
|
||||
int32_t stub_group_size_param =
|
||||
parameters->options().stub_group_size();
|
||||
|
@ -11657,7 +11657,7 @@ Target_arm<big_endian>::do_attributes_order(int num) const
|
|||
{
|
||||
// Reorder the known object attributes in output. We want to move
|
||||
// Tag_conformance to position 4 and Tag_conformance to position 5
|
||||
// and shift eveything between 4 .. Tag_conformance - 1 to make room.
|
||||
// and shift everything between 4 .. Tag_conformance - 1 to make room.
|
||||
if (num == 4)
|
||||
return elfcpp::Tag_conformance;
|
||||
if (num == 5)
|
||||
|
@ -11859,7 +11859,7 @@ Target_arm<big_endian>::apply_cortex_a8_workaround(
|
|||
switch (stub->stub_template()->type())
|
||||
{
|
||||
case arm_stub_a8_veneer_b_cond:
|
||||
// For a conditional branch, we re-write it to be a uncondition
|
||||
// For a conditional branch, we re-write it to be an unconditional
|
||||
// branch to the stub. We use the THUMB-2 encoding here.
|
||||
upper_insn = 0xf000U;
|
||||
lower_insn = 0xb800U;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// attributes.h -- object attributes for gold -*- C++ -*-
|
||||
|
||||
// Copyright 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Doug Kwan <dougkwan@google.com>.
|
||||
// This file contains code adapted from BFD.
|
||||
|
||||
|
@ -257,7 +257,7 @@ class Vendor_object_attributes
|
|||
other_attributes() const
|
||||
{ return &this->other_attributes_; }
|
||||
|
||||
// Return a new attribute asssociated with TAG.
|
||||
// Return a new attribute associated with TAG.
|
||||
Object_attribute*
|
||||
new_attribute(int tag);
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ class Cref_inputs
|
|||
void
|
||||
print_symbol_counts(const Symbol_table*, FILE*) const;
|
||||
|
||||
// Print a cross reference tabl.e
|
||||
// Print a cross reference table.
|
||||
void
|
||||
print_cref(const Symbol_table*, FILE*) const;
|
||||
|
||||
|
|
|
@ -271,10 +271,6 @@ Sized_dwarf_line_info<size, big_endian>::read_header_tables(
|
|||
|
||||
// Process a single opcode in the .debug.line structure.
|
||||
|
||||
// Templating on size and big_endian would yield more efficient (and
|
||||
// simpler) code, but would bloat the binary. Speed isn't important
|
||||
// here.
|
||||
|
||||
template<int size, bool big_endian>
|
||||
bool
|
||||
Sized_dwarf_line_info<size, big_endian>::process_one_opcode(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// ehframe.cc -- handle exception frame sections for gold
|
||||
|
||||
// Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
// Copyright 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -104,7 +104,7 @@ Eh_frame_hdr::set_final_data_size()
|
|||
this->set_data_size(data_size);
|
||||
}
|
||||
|
||||
// Write the data to the flie.
|
||||
// Write the data to the file.
|
||||
|
||||
void
|
||||
Eh_frame_hdr::do_write(Output_file* of)
|
||||
|
|
|
@ -249,7 +249,7 @@ class File_read
|
|||
{
|
||||
// Data owned by File object - nothing done in destructor.
|
||||
DATA_NOT_OWNED,
|
||||
// Data alocated with new[] and owned by this object - should
|
||||
// Data allocated with new[] and owned by this object - should
|
||||
// use delete[].
|
||||
DATA_ALLOCATED_ARRAY,
|
||||
// Data mmapped and owned by this object - should munmap.
|
||||
|
|
|
@ -404,7 +404,7 @@ Once::run_once(void* arg)
|
|||
|
||||
err = pthread_mutex_unlock(&once_pointer_control);
|
||||
if (err != 0)
|
||||
gold_fatal(_("pthread_mutex_unlock falied: %s"), strerror(err));
|
||||
gold_fatal(_("pthread_mutex_unlock failed: %s"), strerror(err));
|
||||
|
||||
#endif // defined(ENABLE_THREADS)
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
// The Solaris version of locale.h always includes libintl.h. If we
|
||||
// have been configured with --disable-nls then ENABLE_NLS will not
|
||||
// be defined and the dummy definitions of bindtextdomain (et al)
|
||||
// below will conflict with the defintions in libintl.h. So we
|
||||
// below will conflict with the definitions in libintl.h. So we
|
||||
// define these values to prevent the bogus inclusion of libintl.h.
|
||||
# define _LIBINTL_H
|
||||
# define _LIBGETTEXT_H
|
||||
|
|
|
@ -295,7 +295,7 @@ class Target_i386 : public Target_freebsd<32, false>
|
|||
bool
|
||||
do_is_call_to_non_split(const Symbol* sym, unsigned int) const;
|
||||
|
||||
// Adjust -fstack-split code which calls non-stack-split code.
|
||||
// Adjust -fsplit-stack code which calls non-split-stack code.
|
||||
void
|
||||
do_calls_non_split(Relobj* object, unsigned int shndx,
|
||||
section_offset_type fnoffset, section_size_type fnsize,
|
||||
|
@ -3217,7 +3217,7 @@ Target_i386::do_is_call_to_non_split(const Symbol* sym, unsigned int) const
|
|||
}
|
||||
|
||||
// FNOFFSET in section SHNDX in OBJECT is the start of a function
|
||||
// compiled with -fstack-split. The function calls non-stack-split
|
||||
// compiled with -fsplit-stack. The function calls non-split-stack
|
||||
// code. We have to change the function so that it always ensures
|
||||
// that it has enough stack space to run some random function.
|
||||
|
||||
|
|
|
@ -293,7 +293,7 @@ get_section_contents(bool first_iteration,
|
|||
for (; it_v != v.end(); ++it_v, ++it_s, ++it_a, ++it_o, ++it_addend_size)
|
||||
{
|
||||
// ADDEND_STR stores the symbol value and addend and offset,
|
||||
// each atmost 16 hex digits long. it_a points to a pair
|
||||
// each at most 16 hex digits long. it_a points to a pair
|
||||
// where first is the symbol value and second is the
|
||||
// addend.
|
||||
char addend_str[50];
|
||||
|
@ -550,7 +550,7 @@ get_section_contents(bool first_iteration,
|
|||
// KEPT_SECTION_ID : Vector which maps folded sections to kept sections.
|
||||
// ID_SECTION : Vector mapping a section to an unique integer.
|
||||
// IS_SECN_OR_GROUP_UNIQUE : To check if a section or a group of identical
|
||||
// sectionsis already known to be unique.
|
||||
// sections is already known to be unique.
|
||||
// SECTION_CONTENTS : Store the section's text and relocs to non-ICF
|
||||
// sections.
|
||||
|
||||
|
|
|
@ -125,7 +125,7 @@ class Incremental_binary
|
|||
|
||||
// Find the .gnu_incremental_inputs and related sections. It selects the
|
||||
// first section of type SHT_GNU_INCREMENTAL_INPUTS,
|
||||
// SHT_GNU_INCRMENTAL_SYMTAB, and SHT_GNU_INCREMENTAL_RELOCS.
|
||||
// SHT_GNU_INCREMENTAL_SYMTAB, and SHT_GNU_INCREMENTAL_RELOCS.
|
||||
// Returns false if the sections are not found.
|
||||
bool
|
||||
find_incremental_inputs_sections(unsigned int* p_inputs_shndx,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// varint.cc -- variable length and unaligned integer encoding support.
|
||||
// int_encoding.cc -- variable length and unaligned integer encoding support.
|
||||
|
||||
// Copyright 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Doug Kwan <dougkwan@google.com> by refactoring scattered
|
||||
// contents from other files in gold. Original code written by Ian
|
||||
// Lance Taylor <iant@google.com> and Caleb Howe <cshowe@google.com>.
|
||||
|
|
|
@ -1141,7 +1141,7 @@ class Layout
|
|||
Incremental_inputs* incremental_inputs_;
|
||||
// Whether we record output section data created in script
|
||||
bool record_output_section_data_from_script_;
|
||||
// List of output data that needs to be removed at relexation clean up.
|
||||
// List of output data that needs to be removed at relaxation clean up.
|
||||
Output_section_data_list script_output_section_data_list_;
|
||||
// Structure to save segment states before entering the relaxation loop.
|
||||
Segment_states* segment_states_;
|
||||
|
|
|
@ -214,7 +214,7 @@ main(int argc, char** argv)
|
|||
// The symbol table. We're going to guess here how many symbols
|
||||
// we're going to see based on the number of input files. Even when
|
||||
// this is off, it means at worst we don't quite optimize hashtable
|
||||
// resizing as well as we could have (perhap using more memory).
|
||||
// resizing as well as we could have (perhaps using more memory).
|
||||
Symbol_table symtab(command_line.number_of_input_files() * 1024,
|
||||
command_line.version_script());
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// merge.h -- handle section merging for gold -*- C++ -*-
|
||||
|
||||
// Copyright 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
// Copyright 2006, 2007, 2008, 2010 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -152,7 +152,7 @@ class Object_merge_map
|
|||
Input_merge_map*
|
||||
get_input_merge_map(unsigned int shndx);
|
||||
|
||||
// Get or make the the Input_merge_map to use for the section SHNDX
|
||||
// Get or make the Input_merge_map to use for the section SHNDX
|
||||
// with MERGE_MAP.
|
||||
Input_merge_map*
|
||||
get_or_make_input_merge_map(const Merge_map* merge_map, unsigned int shndx);
|
||||
|
@ -300,7 +300,7 @@ class Output_merge_base : public Output_section_data
|
|||
this->merge_map_.add_mapping(object, shndx, offset, length, output_offset);
|
||||
}
|
||||
|
||||
// This may be overriden by the child class.
|
||||
// This may be overridden by the child class.
|
||||
virtual bool
|
||||
do_is_string()
|
||||
{ return false; }
|
||||
|
|
|
@ -256,7 +256,7 @@ Object::handle_gnu_warning_section(const char* name, unsigned int shndx,
|
|||
}
|
||||
|
||||
// If NAME is the name of the special section which indicates that
|
||||
// this object was compiled with -fstack-split, mark it accordingly.
|
||||
// this object was compiled with -fsplit-stack, mark it accordingly.
|
||||
|
||||
bool
|
||||
Object::handle_split_stack_section(const char* name)
|
||||
|
@ -350,7 +350,7 @@ Relobj::is_section_name_included(const char* name)
|
|||
// Finalize the incremental relocation information. Allocates a block
|
||||
// of relocation entries for each symbol, and sets the reloc_bases_
|
||||
// array to point to the first entry in each block. Returns the next
|
||||
// available reloation index.
|
||||
// available relocation index.
|
||||
|
||||
void
|
||||
Relobj::finalize_incremental_relocs(Layout* layout)
|
||||
|
@ -669,7 +669,7 @@ Sized_relobj<size, big_endian>::do_read_symbols(Read_symbols_data* sd)
|
|||
|
||||
// Return the section index of symbol SYM. Set *VALUE to its value in
|
||||
// the object file. Set *IS_ORDINARY if this is an ordinary section
|
||||
// index. not a special cod between SHN_LORESERVE and SHN_HIRESERVE.
|
||||
// index, not a special code between SHN_LORESERVE and SHN_HIRESERVE.
|
||||
// Note that for a symbol which is not defined in this object file,
|
||||
// this will set *VALUE to 0 and return SHN_UNDEF; it will not return
|
||||
// the final value of the symbol in the link.
|
||||
|
|
|
@ -664,7 +664,7 @@ class Object
|
|||
Symbol_table*);
|
||||
|
||||
// If NAME is the name of the special section which indicates that
|
||||
// this object was compiled with -fstack-split, mark it accordingly,
|
||||
// this object was compiled with -fsplit-stack, mark it accordingly,
|
||||
// and return true. Otherwise return false.
|
||||
bool
|
||||
handle_split_stack_section(const char* name);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// options.c -- handle command line options for gold
|
||||
|
||||
// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -50,7 +50,7 @@ namespace options
|
|||
{
|
||||
|
||||
// This flag is TRUE if we should register the command-line options as they
|
||||
// are constructed. It is set after contruction of the options within
|
||||
// are constructed. It is set after construction of the options within
|
||||
// class Position_dependent_options.
|
||||
static bool ready_to_register = false;
|
||||
|
||||
|
@ -59,7 +59,7 @@ static std::vector<const One_option*> registered_options;
|
|||
|
||||
// These are set up at the same time -- the variables that accept one
|
||||
// dash, two, or require -z. A single variable may be in more than
|
||||
// one of thes data structures.
|
||||
// one of these data structures.
|
||||
typedef Unordered_map<std::string, One_option*> Option_map;
|
||||
static Option_map* long_options = NULL;
|
||||
static One_option* short_options[128];
|
||||
|
@ -542,7 +542,7 @@ General_options::parse_end_lib(const char*, const char*,
|
|||
}
|
||||
|
||||
// The function add_excluded_libs() in ld/ldlang.c of GNU ld breaks up a list
|
||||
// of names seperated by commas or colons and puts them in a linked list.
|
||||
// of names separated by commas or colons and puts them in a linked list.
|
||||
// We implement the same parsing of names here but store names in an unordered
|
||||
// map to speed up searching of names.
|
||||
|
||||
|
|
|
@ -167,7 +167,7 @@ Read_symbols::run(Workqueue* workqueue)
|
|||
this->next_blocker_));
|
||||
}
|
||||
|
||||
// Handle a whole lib group. Other then collecting statisticts, this just
|
||||
// Handle a whole lib group. Other than collecting statistics, this just
|
||||
// mimics what we do for regular object files in the command line.
|
||||
|
||||
bool
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// reduced_debug_output.cc -- output reduced debugging information to save space
|
||||
|
||||
// Copyright 2008 Free Software Foundation, Inc.
|
||||
// Copyright 2008, 2010 Free Software Foundation, Inc.
|
||||
// Written by Caleb Howe <cshowe@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -154,20 +154,20 @@ Output_reduced_debug_abbrev_section::set_final_data_size()
|
|||
abbrev_data += LEB_size;
|
||||
|
||||
// Together with the abbreviation number these fields make up
|
||||
// the header for each abbreviation
|
||||
// the header for each abbreviation.
|
||||
uint64_t abbrev_type = read_unsigned_LEB_128(abbrev_data, &LEB_size);
|
||||
abbrev_data += LEB_size;
|
||||
|
||||
// This would ordinarily be the has_children field of the
|
||||
// abbreviation. But it's going to be false after reducting the
|
||||
// information, so there's no point in storing it
|
||||
// abbreviation. But it's going to be false after reducing the
|
||||
// information, so there's no point in storing it.
|
||||
abbrev_data++;
|
||||
|
||||
// Read to the end of the current abbreviation
|
||||
// Read to the end of the current abbreviation.
|
||||
// This is indicated by two zero unsigned LEBs in a row. We don't
|
||||
// need to parse the data yet, so we just scan through the data
|
||||
// looking for two consecutive 0 bytes indicating the end of the
|
||||
// abbreviation
|
||||
// abbreviation.
|
||||
unsigned char* current_abbrev;
|
||||
for (current_abbrev = abbrev_data;
|
||||
current_abbrev[0] || current_abbrev[1];
|
||||
|
|
|
@ -369,7 +369,7 @@ Sized_relobj<size, big_endian>::do_read_relocs(Read_relocs_data* rd)
|
|||
}
|
||||
|
||||
// Process the relocs to generate mappings from source sections to referenced
|
||||
// sections. This is used during garbage colletion to determine garbage
|
||||
// sections. This is used during garbage collection to determine garbage
|
||||
// sections.
|
||||
|
||||
template<int size, bool big_endian>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// script-sections.cc -- linker script SECTIONS for gold
|
||||
|
||||
// Copyright 2008, 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2008, 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -592,7 +592,7 @@ class Sections_element
|
|||
{ }
|
||||
|
||||
// Set section addresses. This includes applying assignments if the
|
||||
// the expression is an absolute value.
|
||||
// expression is an absolute value.
|
||||
virtual void
|
||||
set_section_addresses(Symbol_table*, Layout*, uint64_t*, uint64_t*,
|
||||
uint64_t*)
|
||||
|
@ -804,7 +804,7 @@ class Output_section_element
|
|||
{ return false; }
|
||||
|
||||
// Set section addresses. This includes applying assignments if the
|
||||
// the expression is an absolute value.
|
||||
// expression is an absolute value.
|
||||
virtual void
|
||||
set_section_addresses(Symbol_table*, Layout*, Output_section*, uint64_t,
|
||||
uint64_t*, uint64_t*, Output_section**, std::string*,
|
||||
|
@ -3673,7 +3673,7 @@ Script_sections::total_header_size(Layout* layout) const
|
|||
return file_header_size + segment_headers_size;
|
||||
}
|
||||
|
||||
// Return the amount we have to subtract from the LMA to accomodate
|
||||
// Return the amount we have to subtract from the LMA to accommodate
|
||||
// headers of the given size. The complication is that the file
|
||||
// header have to be at the start of a page, as otherwise it will not
|
||||
// be at the start of the file.
|
||||
|
|
|
@ -3079,7 +3079,7 @@ Target_sparc<size, big_endian>::Relocate::relocate_tls(
|
|||
// The compiler can put the TLS_GD_ADD instruction
|
||||
// into the delay slot of the call. If so, we need
|
||||
// to transpose the two instructions so that the
|
||||
// the new sequence works properly.
|
||||
// new sequence works properly.
|
||||
//
|
||||
// The test we use is if the instruction in the
|
||||
// delay slot is an add with destination register
|
||||
|
|
|
@ -735,7 +735,7 @@ class Symbol
|
|||
return true;
|
||||
|
||||
// A reference to a symbol defined in a dynamic object or to a
|
||||
// symbol that is preemptible can not use a RELATIVE relocaiton.
|
||||
// symbol that is preemptible can not use a RELATIVE relocation.
|
||||
if (this->is_from_dynobj()
|
||||
|| this->is_undefined()
|
||||
|| this->is_preemptible())
|
||||
|
@ -1258,7 +1258,7 @@ class Symbol_table
|
|||
SORT_COMMONS_BY_ALIGNMENT_ASCENDING
|
||||
};
|
||||
|
||||
// COUNT is an estimate of how many symbosl will be inserted in the
|
||||
// COUNT is an estimate of how many symbols will be inserted in the
|
||||
// symbol table. It's ok to put 0 if you don't know; a correct
|
||||
// guess will just save some CPU by reducing hashtable resizes.
|
||||
Symbol_table(unsigned int count, const Version_script_info& version_script);
|
||||
|
@ -1471,7 +1471,7 @@ class Symbol_table
|
|||
{
|
||||
// No error.
|
||||
CFVS_OK,
|
||||
// Unspported symbol section.
|
||||
// Unsupported symbol section.
|
||||
CFVS_UNSUPPORTED_SYMBOL_SECTION,
|
||||
// No output section.
|
||||
CFVS_NO_OUTPUT_SECTION
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace gold
|
|||
// template parameter Scan must be a class type which provides two
|
||||
// functions: local() and global(). Those functions implement the
|
||||
// machine specific part of scanning. We do it this way to
|
||||
// avoidmaking a function call for each relocation, and to avoid
|
||||
// avoid making a function call for each relocation, and to avoid
|
||||
// repeating the generic code for each target.
|
||||
|
||||
template<int size, bool big_endian, typename Target_type, int sh_type,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// target.cc
|
||||
|
||||
// Copyright 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Doug Kwan <dougkwan@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -31,7 +31,7 @@ namespace gold
|
|||
{
|
||||
|
||||
// Return whether NAME is a local label name. This is used to implement the
|
||||
// --discard-locals options and can be overriden by children classes to
|
||||
// --discard-locals options and can be overridden by child classes to
|
||||
// implement system-specific behaviour. The logic here is the same as that
|
||||
// in _bfd_elf_is_local_label_name().
|
||||
|
||||
|
|
|
@ -467,7 +467,7 @@ class Target
|
|||
do_adjust_elf_header(unsigned char*, int) const
|
||||
{ }
|
||||
|
||||
// Virtual function which may be overriden by the child class.
|
||||
// Virtual function which may be overridden by the child class.
|
||||
virtual bool
|
||||
do_is_local_label_name(const char*) const;
|
||||
|
||||
|
@ -477,7 +477,7 @@ class Target
|
|||
do_reloc_symbol_index(void*, unsigned int) const
|
||||
{ gold_unreachable(); }
|
||||
|
||||
// Virtual function that must be overidden by a target which uses
|
||||
// Virtual function that must be overridden by a target which uses
|
||||
// target specific relocations.
|
||||
virtual uint64_t
|
||||
do_reloc_addend(void*, unsigned int, uint64_t) const
|
||||
|
@ -517,44 +517,44 @@ class Target
|
|||
}
|
||||
|
||||
#ifdef HAVE_TARGET_32_LITTLE
|
||||
// Virtual functions which may be overriden by the child class.
|
||||
// Virtual functions which may be overridden by the child class.
|
||||
virtual Object*
|
||||
do_make_elf_object(const std::string&, Input_file*, off_t,
|
||||
const elfcpp::Ehdr<32, false>&);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TARGET_32_BIG
|
||||
// Virtual functions which may be overriden by the child class.
|
||||
// Virtual functions which may be overridden by the child class.
|
||||
virtual Object*
|
||||
do_make_elf_object(const std::string&, Input_file*, off_t,
|
||||
const elfcpp::Ehdr<32, true>&);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TARGET_64_LITTLE
|
||||
// Virtual functions which may be overriden by the child class.
|
||||
// Virtual functions which may be overridden by the child class.
|
||||
virtual Object*
|
||||
do_make_elf_object(const std::string&, Input_file*, off_t,
|
||||
const elfcpp::Ehdr<64, false>& ehdr);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_TARGET_64_BIG
|
||||
// Virtual functions which may be overriden by the child class.
|
||||
// Virtual functions which may be overridden by the child class.
|
||||
virtual Object*
|
||||
do_make_elf_object(const std::string& name, Input_file* input_file,
|
||||
off_t offset, const elfcpp::Ehdr<64, true>& ehdr);
|
||||
#endif
|
||||
|
||||
// Virtual functions which may be overriden by the child class.
|
||||
// Virtual functions which may be overridden by the child class.
|
||||
virtual Output_section*
|
||||
do_make_output_section(const char* name, elfcpp::Elf_Word type,
|
||||
elfcpp::Elf_Xword flags);
|
||||
|
||||
// Virtual function which may be overriden by the child class.
|
||||
// Virtual function which may be overridden by the child class.
|
||||
virtual bool
|
||||
do_may_relax() const
|
||||
{ return parameters->options().relax(); }
|
||||
|
||||
// Virtual function which may be overriden by the child class.
|
||||
// Virtual function which may be overridden by the child class.
|
||||
virtual bool
|
||||
do_relax(int, const Input_objects*, Symbol_table*, Layout*, const Task*)
|
||||
{ return false; }
|
||||
|
@ -571,7 +571,7 @@ class Target
|
|||
set_view_to_nop(unsigned char* view, section_size_type view_size,
|
||||
section_offset_type offset, size_t len) const;
|
||||
|
||||
// This must be overriden by the child class if it has target-specific
|
||||
// This must be overridden by the child class if it has target-specific
|
||||
// attributes subsection in the attribute section.
|
||||
virtual int
|
||||
do_attribute_arg_type(int) const
|
||||
|
|
|
@ -42,7 +42,7 @@ Timer::Timer()
|
|||
this->start_time_.sys = 0;
|
||||
}
|
||||
|
||||
// Start couting the time.
|
||||
// Start counting the time.
|
||||
void
|
||||
Timer::start()
|
||||
{
|
||||
|
@ -63,8 +63,8 @@ Timer::start()
|
|||
# endif
|
||||
#endif
|
||||
|
||||
// times returns statistics in clock_t units. This variable will hold the
|
||||
// conversion factor to seconds. We use a variable that is initialize once
|
||||
// times returns statistics in clock_t units. This variable will hold the
|
||||
// conversion factor to seconds. We use a variable that is initialized once
|
||||
// because sysconf can be slow.
|
||||
static long ticks_per_sec;
|
||||
class Timer_init
|
||||
|
@ -77,7 +77,7 @@ class Timer_init
|
|||
};
|
||||
Timer_init timer_init;
|
||||
|
||||
// Write the current time infortamion.
|
||||
// Write the current time information.
|
||||
void
|
||||
Timer::get_time(TimeStats *now)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
// timer.h -- helper class for time accounting -*- C++ -*-
|
||||
|
||||
// Copyright 2009 Free Software Foundation, Inc.
|
||||
// Copyright 2009, 2010 Free Software Foundation, Inc.
|
||||
// Written by Rafael Avila de Espindola <espindola@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
@ -48,7 +48,7 @@ class Timer
|
|||
TimeStats
|
||||
get_elapsed_time();
|
||||
|
||||
// Start couting the time.
|
||||
// Start counting the time.
|
||||
void
|
||||
start();
|
||||
|
||||
|
@ -57,7 +57,7 @@ class Timer
|
|||
Timer(const Timer&);
|
||||
Timer& operator=(const Timer&);
|
||||
|
||||
// Write the current time infortamion.
|
||||
// Write the current time information.
|
||||
static void
|
||||
get_time(TimeStats* now);
|
||||
|
||||
|
|
|
@ -309,7 +309,7 @@ class Target_x86_64 : public Target_freebsd<64, false>
|
|||
do_plt_section_for_local(const Relobj*, unsigned int) const
|
||||
{ return this->plt_section(); }
|
||||
|
||||
// Adjust -fstack-split code which calls non-stack-split code.
|
||||
// Adjust -fsplit-stack code which calls non-split-stack code.
|
||||
void
|
||||
do_calls_non_split(Relobj* object, unsigned int shndx,
|
||||
section_offset_type fnoffset, section_size_type fnsize,
|
||||
|
@ -3238,7 +3238,7 @@ Target_x86_64::do_reloc_addend(void* arg, unsigned int r_type,
|
|||
}
|
||||
|
||||
// FNOFFSET in section SHNDX in OBJECT is the start of a function
|
||||
// compiled with -fstack-split. The function calls non-stack-split
|
||||
// compiled with -fsplit-stack. The function calls non-split-stack
|
||||
// code. We have to change the function so that it always ensures
|
||||
// that it has enough stack space to run some random function.
|
||||
|
||||
|
|
Loading…
Reference in a new issue