aboutsummaryrefslogtreecommitdiff
path: root/gas/doc
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-09-08 13:02:31 +0930
committerAlan Modra <amodra@gmail.com>2020-09-08 22:30:38 +0930
commit7ba115508aa02ffbb01a09613b5dffdd0c6563e3 (patch)
tree9a0251fdea1dd80de80d22b01ca2172b8fab0b71 /gas/doc
parent7ade7fba756326c5f35f53a8e2d46443c6bab73f (diff)
downloadbinutils-7ba115508aa02ffbb01a09613b5dffdd0c6563e3.zip
binutils-7ba115508aa02ffbb01a09613b5dffdd0c6563e3.tar.gz
binutils-7ba115508aa02ffbb01a09613b5dffdd0c6563e3.tar.bz2
PR26580, Size and alignment of commons vs as-needed shared lib
Two pieces to this puzzle: 1) Revert HJ's fix for PR13250 so that size and alignment isn't sticky, instead attack the real underlying problem that _bfd_generic_link_add_one_symbol does the wrong thing in making a common section in a shared library bfd. 2) Save and restore common u.c.p fields, which hold the section and alignment. A better fix for (2) would be to throw away all of that horrible code saving and restoring the hash table when loading as-needed library symbols, and instead do a scan over as-needed library symbols before adding anything. bfd/ PR 13250 PR 26580 * elflink.c (_bfd_elf_merge_symbol): Make "override" a bfd**. Return oldbfd in override when old common should override new common. (_bfd_elf_add_default_symbol): Adjust to suit. (elf_link_add_object_symbols): Likewise. Pass "override" to _bfd_generic_link_add_one_symbol. Save and restore common u.c.p field for --as-needed shared libraries. Revert pr13250 changes. ld/ * testsuite/ld-elf/pr26580-a.s, * testsuite/ld-elf/pr26580-b.s, * testsuite/ld-elf/pr26580-1.sd, * testsuite/ld-elf/pr26580-2.sd: New tests * testsuite/ld-elf/comm-data.exp: Run new tests. * testsuite/ld-elf/pr26580-a.c, * testsuite/ld-elf/pr26580-b.c, * testsuite/ld-elf/pr26580-3.out, * testsuite/ld-elf/pr26580-4.out: New tests. * testsuite/ld-elf/shared.exp: Run new tests.
Diffstat (limited to 'gas/doc')
0 files changed, 0 insertions, 0 deletions