diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2001-05-10 22:59:29 +0000 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2001-05-10 22:59:29 +0000 |
commit | 689effed707a39631d63921f38a03f670d6ce380 (patch) | |
tree | 91ab1969e5127439c1225eba40d860ba7d813c65 /bfd/linker.c | |
parent | 9a0f0643ee3bfb0a2243c195e02971b3b31c64dd (diff) | |
download | gdb-689effed707a39631d63921f38a03f670d6ce380.zip gdb-689effed707a39631d63921f38a03f670d6ce380.tar.gz gdb-689effed707a39631d63921f38a03f670d6ce380.tar.bz2 |
2001-05-10 H.J. Lu <hjl@gnu.org>
* linker.c (_bfd_generic_link_add_one_symbol): Check loop on
indirect symbols.
Diffstat (limited to 'bfd/linker.c')
-rw-r--r-- | bfd/linker.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/bfd/linker.c b/bfd/linker.c index 3efaf66..0877289 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1801,6 +1801,15 @@ _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section, value, copy, false); if (inh == (struct bfd_link_hash_entry *) NULL) return false; + if (inh->type == bfd_link_hash_indirect + && inh->u.i.link == h) + { + (*_bfd_error_handler) + (_("%s: indirect symbol `%s' to `%s' is a loop"), + bfd_get_filename (abfd), name, string); + bfd_set_error (bfd_error_invalid_operation); + return false; + } if (inh->type == bfd_link_hash_new) { inh->type = bfd_link_hash_undefined; |