diff options
-rw-r--r-- | bfd/ChangeLog | 8 | ||||
-rw-r--r-- | bfd/elflink.c | 26 | ||||
-rw-r--r-- | ld/ChangeLog | 6 | ||||
-rw-r--r-- | ld/testsuite/ld-elfcomm/elfcomm.exp | 6 |
4 files changed, 35 insertions, 11 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2b466f7..1f9b7ec 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,11 @@ +2023-06-07 Nick Clifton <nickc@redhat.com> + + PR 30499 + * elflink.c (elf_link_add_object_symbols): Add a message + indicating that alignment and size discrepancies between the + definition of common symbols and normal symbols are serious and + should be investigated. + 2023-05-31 Tristan Gingold <tgingold@free.fr> PR 30444 diff --git a/bfd/elflink.c b/bfd/elflink.c index f10faa5..4f87900 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -5302,10 +5302,14 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) else _bfd_error_handler /* xgettext:c-format */ - (_("warning: alignment %u of symbol `%s' in %pB" - " is smaller than %u in %pB"), + (_("warning: alignment %u of normal symbol `%s' in %pB" + " is smaller than %u used by the common definition in %pB"), 1 << normal_align, name, normal_bfd, 1 << common_align, common_bfd); + + /* PR 30499: make sure that users understand that this warning is serious. */ + _bfd_error_handler + (_("warning: NOTE: alignment discrepancies can cause real problems. Investigation is advised.")); } } @@ -5317,12 +5321,18 @@ elf_link_add_object_symbols (bfd *abfd, struct bfd_link_info *info) if (h->size != 0 && h->size != isym->st_size && ! size_change_ok) - _bfd_error_handler - /* xgettext:c-format */ - (_("warning: size of symbol `%s' changed" - " from %" PRIu64 " in %pB to %" PRIu64 " in %pB"), - name, (uint64_t) h->size, old_bfd, - (uint64_t) isym->st_size, abfd); + { + _bfd_error_handler + /* xgettext:c-format */ + (_("warning: size of symbol `%s' changed" + " from %" PRIu64 " in %pB to %" PRIu64 " in %pB"), + name, (uint64_t) h->size, old_bfd, + (uint64_t) isym->st_size, abfd); + + /* PR 30499: make sure that users understand that this warning is serious. */ + _bfd_error_handler + (_("warning: NOTE: size discrepancies can cause real problems. Investigation is advised.")); + } h->size = isym->st_size; } diff --git a/ld/ChangeLog b/ld/ChangeLog index 1acef2a..d722d0b 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,9 @@ +2023-06-07 Nick Clifton <nickc@redhat.com> + + PR 30499 + * testsuite/ld-elfcomm/elfcomm.exp: Update regexps to match new + output from the linker. + 2023-05-17 Luca Bacci <luca.bacci@outlook.com> PR 30421 diff --git a/ld/testsuite/ld-elfcomm/elfcomm.exp b/ld/testsuite/ld-elfcomm/elfcomm.exp index 4a9ffa9..80df9fe 100644 --- a/ld/testsuite/ld-elfcomm/elfcomm.exp +++ b/ld/testsuite/ld-elfcomm/elfcomm.exp @@ -186,13 +186,13 @@ if { [ld_link $ld tmpdir/common1.o $options] } { # This test fails on MIPS because the backend sets type_change_ok. # The size change warning is suppressed. Same on hppa64. if {[istarget mips*-*-*] || [istarget hppa*64*-*-*]} { - if { ![regexp "warning: alignment (\[0-9\]+) of symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 in tmpdir/common1a.o" $link_output] } { + if { ![regexp "warning: alignment (\[0-9\]+) of normal symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 used by the common definition in tmpdir/common1a.o" $link_output] } { fail $test1w1 } else { pass $test1w1 } } else { - if { ![regexp "warning: alignment (\[0-9\]+) of symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 in tmpdir/common1a.o" $link_output] + if { ![regexp "warning: alignment (\[0-9\]+) of normal symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 used by the common definition in tmpdir/common1a.o" $link_output] || ![regexp "warning: size of symbol \`_?foo1\' changed from 2 in tmpdir/common1a.o to 21 in tmpdir/common1b.o" $link_output] } { fail $test1w1 } else { @@ -211,7 +211,7 @@ if { [ld_link $ld tmpdir/common1.o $options] } { return } -if { ![regexp "warning: alignment (\[0-9\]+) of symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 in tmpdir/common1a.o" $link_output] } { +if { ![regexp "warning: alignment (\[0-9\]+) of normal symbol \`_?foo1\' in tmpdir/common1b.o is smaller than 64 used by the common definition in tmpdir/common1a.o" $link_output] } { fail $test1w2 } else { pass $test1w2 |