mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 10:03:47 +08:00
Prevent the linker from overestimating the alignment requirement of common symbols on targets with octets that are larger than one byte.
PR 26543 * linker.c (bfd_generic_define_common_symbol): Force the alignment to 1 if the section has now alignment requirement.
This commit is contained in:
parent
626d23209f
commit
1e597a8997
@ -1,3 +1,9 @@
|
||||
2020-08-28 Tuckker <tuckkern+sourceware@gmail.com>
|
||||
|
||||
PR 26543
|
||||
* linker.c (bfd_generic_define_common_symbol): Force the alignment
|
||||
to 1 if the section has now alignment requirement.
|
||||
|
||||
2020-08-28 Cooper Qu <cooper.qu@linux.alibaba.com>
|
||||
|
||||
* elf32-csky.c (csky_archs): Fix arch names.
|
||||
|
@ -3095,8 +3095,13 @@ bfd_generic_define_common_symbol (bfd *output_bfd,
|
||||
section = h->u.c.p->section;
|
||||
|
||||
/* Increase the size of the section to align the common symbol.
|
||||
The alignment must be a power of two. */
|
||||
alignment = bfd_octets_per_byte (output_bfd, section) << power_of_two;
|
||||
The alignment must be a power of two. But if the section does
|
||||
not have any alignment requirement then do not increase the
|
||||
alignment unnecessarily. */
|
||||
if (power_of_two)
|
||||
alignment = bfd_octets_per_byte (output_bfd, section) << power_of_two;
|
||||
else
|
||||
alignment = 1;
|
||||
BFD_ASSERT (alignment != 0 && (alignment & -alignment) == alignment);
|
||||
section->size += alignment - 1;
|
||||
section->size &= -alignment;
|
||||
|
Loading…
Reference in New Issue
Block a user