mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-18 21:34:13 +08:00
2009-10-20 Doug Kwan <dougkwan@google.com>
* object.cc (Sized_relobj::do_finalize_local_symbols): Handle section symbols of relaxed input sections. * output.h (Output_section::find_relaxed_input_section): Make method public.
This commit is contained in:
@ -1,3 +1,10 @@
|
|||||||
|
2009-10-20 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
|
* object.cc (Sized_relobj::do_finalize_local_symbols): Handle section
|
||||||
|
symbols of relaxed input sections.
|
||||||
|
* output.h (Output_section::find_relaxed_input_section): Make
|
||||||
|
method public.
|
||||||
|
|
||||||
2009-10-16 Doug Kwan <dougkwan@google.com>
|
2009-10-16 Doug Kwan <dougkwan@google.com>
|
||||||
|
|
||||||
* dynobj.cc (Versions::Versions): Initialize version_script_.
|
* dynobj.cc (Versions::Versions): Initialize version_script_.
|
||||||
|
@ -1711,12 +1711,18 @@ Sized_relobj<size, big_endian>::do_finalize_local_symbols(unsigned int index,
|
|||||||
}
|
}
|
||||||
else if (!os->find_starting_output_address(this, shndx, &start))
|
else if (!os->find_starting_output_address(this, shndx, &start))
|
||||||
{
|
{
|
||||||
// This is a section symbol, but apparently not one
|
// This is a section symbol, but apparently not one in a
|
||||||
// in a merged section. Just use the start of the
|
// merged section. First check to see if this is a relaxed
|
||||||
// output section. This happens with relocatable
|
// input section. If so, use its address. Otherwise just
|
||||||
// links when the input object has section symbols
|
// use the start of the output section. This happens with
|
||||||
// for arbitrary non-merge sections.
|
// relocatable links when the input object has section
|
||||||
lv.set_output_value(os->address());
|
// symbols for arbitrary non-merge sections.
|
||||||
|
const Output_section_data* posd =
|
||||||
|
os->find_relaxed_input_section(this, shndx);
|
||||||
|
if (posd != NULL)
|
||||||
|
lv.set_output_value(posd->address());
|
||||||
|
else
|
||||||
|
lv.set_output_value(os->address());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2585,6 +2585,11 @@ class Output_section : public Output_data
|
|||||||
convert_input_sections_to_relaxed_sections(
|
convert_input_sections_to_relaxed_sections(
|
||||||
const std::vector<Output_relaxed_input_section*>& sections);
|
const std::vector<Output_relaxed_input_section*>& sections);
|
||||||
|
|
||||||
|
// Find a relaxed input section to an input section in OBJECT
|
||||||
|
// with index SHNDX. Return NULL if none is found.
|
||||||
|
const Output_section_data*
|
||||||
|
find_relaxed_input_section(const Relobj* object, unsigned int shndx) const;
|
||||||
|
|
||||||
// Print merge statistics to stderr.
|
// Print merge statistics to stderr.
|
||||||
void
|
void
|
||||||
print_merge_stats();
|
print_merge_stats();
|
||||||
@ -3208,11 +3213,6 @@ class Output_section : public Output_data
|
|||||||
Output_section_data*
|
Output_section_data*
|
||||||
find_merge_section(const Relobj* object, unsigned int shndx) const;
|
find_merge_section(const Relobj* object, unsigned int shndx) const;
|
||||||
|
|
||||||
// Find a relaxed input section to an input section in OBJECT
|
|
||||||
// with index SHNDX. Return NULL if none is found.
|
|
||||||
const Output_section_data*
|
|
||||||
find_relaxed_input_section(const Relobj* object, unsigned int shndx) const;
|
|
||||||
|
|
||||||
// Build a relaxation map.
|
// Build a relaxation map.
|
||||||
void
|
void
|
||||||
build_relaxation_map(
|
build_relaxation_map(
|
||||||
|
Reference in New Issue
Block a user