diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2014-06-13 12:41:24 -0700 |
---|---|---|
committer | Andrew Hsieh <andrewhsieh@google.com> | 2014-06-13 12:41:24 -0700 |
commit | bcfb04363768d7eb2910bbefb263effae28ace10 (patch) | |
tree | ae6a83c097abff3d8925159b3c1d50138059f556 /binutils-2.25/gold/object.cc | |
parent | 54f1b3cf509cd889905287cb8ce6c5ae33911a21 (diff) | |
download | toolchain_binutils-bcfb04363768d7eb2910bbefb263effae28ace10.zip toolchain_binutils-bcfb04363768d7eb2910bbefb263effae28ace10.tar.gz toolchain_binutils-bcfb04363768d7eb2910bbefb263effae28ace10.tar.bz2 |
[2.25] apply local patches
7a17fb955bb42018c3c84e003700ac120c3502d4
b2a417bdb17191ef2afc20bbd308e308c0730403
e0bca373a85fa71b89d9ea42370433b3c0499b9d
57fbbfbda5a77b558c24a44e7eed8c4030c31bcd
160ce55a90bcdcb3000d74805795969edc3f8422
b33d0ddc123435be5e60ebb15a37b3bfb651dc7e
f25603579c0a04b3d5099259cf54c5b3c8775b78
1000fadfaa979b623e1fbd0c87858be4f5b6dffd
83cabeb81083ac53719eaaf68c48734ff9c48fa9
Change-Id: I174be6632426ed720e643bca7c48a9077b31d34b
Diffstat (limited to 'binutils-2.25/gold/object.cc')
-rw-r--r-- | binutils-2.25/gold/object.cc | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/binutils-2.25/gold/object.cc b/binutils-2.25/gold/object.cc index c98b3c5..b1feacc 100644 --- a/binutils-2.25/gold/object.cc +++ b/binutils-2.25/gold/object.cc @@ -1704,6 +1704,28 @@ Sized_relobj_file<size, big_endian>::do_layout(Symbol_table* symtab, if (!is_pass_two) layout->layout_gnu_stack(seen_gnu_stack, gnu_stack_flags, this); + // Handle the .eh_frame sections after the other sections. + gold_assert(!is_pass_one || eh_frame_sections.empty()); + for (std::vector<unsigned int>::const_iterator p = eh_frame_sections.begin(); + p != eh_frame_sections.end(); + ++p) + { + unsigned int i = *p; + const unsigned char* pshdr; + pshdr = section_headers_data + i * This::shdr_size; + typename This::Shdr shdr(pshdr); + + this->layout_eh_frame_section(layout, + symbols_data, + symbols_size, + symbol_names_data, + symbol_names_size, + i, + shdr, + reloc_shndx[i], + reloc_type[i]); + } + // When doing a relocatable link handle the reloc sections at the // end. Garbage collection and Identical Code Folding is not // turned on for relocatable code. @@ -1756,28 +1778,6 @@ Sized_relobj_file<size, big_endian>::do_layout(Symbol_table* symtab, out_section_offsets[i] = invalid_address; } - // Handle the .eh_frame sections at the end. - gold_assert(!is_pass_one || eh_frame_sections.empty()); - for (std::vector<unsigned int>::const_iterator p = eh_frame_sections.begin(); - p != eh_frame_sections.end(); - ++p) - { - unsigned int i = *p; - const unsigned char* pshdr; - pshdr = section_headers_data + i * This::shdr_size; - typename This::Shdr shdr(pshdr); - - this->layout_eh_frame_section(layout, - symbols_data, - symbols_size, - symbol_names_data, - symbol_names_size, - i, - shdr, - reloc_shndx[i], - reloc_type[i]); - } - // When building a .gdb_index section, scan the .debug_info and // .debug_types sections. gold_assert(!is_pass_one |