aboutsummaryrefslogtreecommitdiff
path: root/bfd/elflink.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2003-03-29 01:26:33 +0000
committerH.J. Lu <hjl.tools@gmail.com>2003-03-29 01:26:33 +0000
commit5941afc1054ede37b6d8981269b8fe4519458eac (patch)
tree01a8d20c19b8dd0161326a942b96399e2f39b7d8 /bfd/elflink.h
parent962a53d175c625b39183f6d6a2780b65434c6298 (diff)
downloadgdb-5941afc1054ede37b6d8981269b8fe4519458eac.zip
gdb-5941afc1054ede37b6d8981269b8fe4519458eac.tar.gz
gdb-5941afc1054ede37b6d8981269b8fe4519458eac.tar.bz2
2003-03-28 H.J. Lu <hjl@gnu.org>
* elflink.h (elf_link_add_object_symbols): Correctly combine visibilities.
Diffstat (limited to 'bfd/elflink.h')
-rw-r--r--bfd/elflink.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/bfd/elflink.h b/bfd/elflink.h
index c39120d..3af34ee 100644
--- a/bfd/elflink.h
+++ b/bfd/elflink.h
@@ -1940,7 +1940,7 @@ elf_link_add_object_symbols (abfd, info)
might be needed here. */
if (isym->st_other != 0)
{
- unsigned char hvis, symvis, other;
+ unsigned char hvis, symvis, other, nvis;
/* Take the balance of OTHER from the definition. */
other = (definition ? isym->st_other : h->other);
@@ -1949,8 +1949,14 @@ elf_link_add_object_symbols (abfd, info)
/* Combine visibilities, using the most constraining one. */
hvis = ELF_ST_VISIBILITY (h->other);
symvis = ELF_ST_VISIBILITY (isym->st_other);
+ if (! hvis)
+ nvis = symvis;
+ else if (! symvis)
+ nvis = hvis;
+ else
+ nvis = hvis < symvis ? hvis : symvis;
- h->other = other | (hvis > symvis ? hvis : symvis);
+ h->other = other | nvis;
}
/* Set a flag in the hash table entry indicating the type of