]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2001-05-10 H.J. Lu <hjl@gnu.org>
authorH.J. Lu <hjl.tools@gmail.com>
Thu, 10 May 2001 22:59:29 +0000 (22:59 +0000)
committerH.J. Lu <hjl.tools@gmail.com>
Thu, 10 May 2001 22:59:29 +0000 (22:59 +0000)
* linker.c (_bfd_generic_link_add_one_symbol): Check loop on
indirect symbols.

bfd/ChangeLog
bfd/linker.c

index 6703eadd256721938606433917d08cc40e56f1fc..29d153c0b299d20c5553154b4eb223d75508d673 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-10  H.J. Lu  <hjl@gnu.org>
+
+       * linker.c (_bfd_generic_link_add_one_symbol): Check loop on
+       indirect symbols.
+
 2001-05-09  H.J. Lu  <hjl@gnu.org>
 
        * elflink.h (elf_link_add_object_symbols): Fix a typo. Allocate
index 3efaf665d7f83e62990a82910ec90a7baf6a56bb..087728948903f220f9b94e1536383ac7b88ee849 100644 (file)
@@ -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;