X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2Fmerge.cc;h=8c60f50f3665f54b46c635437174ab7aa4bf4e25;hb=54ac3df1adbf7b4b3470a8df08caa0aea4c89616;hp=de00ee9ae9c0f90c6327bcda7d4665530f1c0ee1;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/merge.cc b/gold/merge.cc index de00ee9ae9..8c60f50f36 100644 --- a/gold/merge.cc +++ b/gold/merge.cc @@ -1,6 +1,6 @@ // merge.cc -- handle section merging for gold -// Copyright (C) 2006-2018 Free Software Foundation, Inc. +// Copyright (C) 2006-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -440,9 +440,11 @@ Output_merge_string::do_add_input_section(Relobj* object, { section_size_type sec_len; bool is_new; + uint64_t addralign = this->addralign(); const unsigned char* pdata = object->decompressed_section_contents(shndx, &sec_len, - &is_new); + &is_new, + &addralign); const Char_type* p = reinterpret_cast(pdata); const Char_type* pend = p + sec_len / sizeof(Char_type); @@ -494,7 +496,7 @@ Output_merge_string::do_add_input_section(Relobj* object, // aligned, so each string within the section must retain the same // modulo. uintptr_t init_align_modulo = (reinterpret_cast(pdata) - & (this->addralign() - 1)); + & (addralign - 1)); bool has_misaligned_strings = false; while (p < pend) @@ -503,7 +505,7 @@ Output_merge_string::do_add_input_section(Relobj* object, // Within merge input section each string must be aligned. if (len != 0 - && ((reinterpret_cast(p) & (this->addralign() - 1)) + && ((reinterpret_cast(p) & (addralign - 1)) != init_align_modulo)) has_misaligned_strings = true;