OSDN Git Service

2004-01-25 H.J. Lu <hongjiu.lu@intel.com>
authorH.J. Lu <hjl@lucon.org>
Mon, 26 Jan 2004 20:32:08 +0000 (20:32 +0000)
committerH.J. Lu <hjl@lucon.org>
Mon, 26 Jan 2004 20:32:08 +0000 (20:32 +0000)
* elfxx-ia64.c (elfNN_ia64_relocate_section): Disallow imm
relocations against dynamic symbols.

bfd/ChangeLog
bfd/elfxx-ia64.c

index 00748f3..57b09bc 100644 (file)
@@ -1,3 +1,8 @@
+2004-01-25  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * elfxx-ia64.c (elfNN_ia64_relocate_section): Disallow imm
+       relocations against dynamic symbols.
+
 2004-01-23  Daniel Jacobowitz  <drow@mvista.com>
 
        * elf32-arm.h (elf32_arm_check_relocs): Revert part of 2004-01-13
index c699922..c33aec1 100644 (file)
@@ -3951,6 +3951,24 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
 
              BFD_ASSERT (srel != NULL);
 
+             switch (r_type)
+               {
+               case R_IA64_IMM14:
+               case R_IA64_IMM22:
+               case R_IA64_IMM64:
+                 /* ??? People shouldn't be doing non-pic code in
+                    shared libraries nor dynamic executables.  */
+                 (*_bfd_error_handler)
+                   (_("%s: non-pic code with imm relocation against dynamic symbol `%s'"),
+                    bfd_archive_filename (input_bfd),
+                    h->root.root.string);
+                 ret_val = FALSE;
+                 continue;
+
+               default:
+                 break;
+               }
+
              /* If we don't need dynamic symbol lookup, find a
                 matching RELATIVE relocation.  */
              dyn_r_type = r_type;
@@ -3978,17 +3996,7 @@ elfNN_ia64_relocate_section (output_bfd, info, input_bfd, input_section,
                      break;
 
                    default:
-                     /* We can't represent this without a dynamic symbol.
-                        Adjust the relocation to be against an output
-                        section symbol, which are always present in the
-                        dynamic symbol table.  */
-                     /* ??? People shouldn't be doing non-pic code in
-                        shared libraries.  Hork.  */
-                     (*_bfd_error_handler)
-                       (_("%s: linking non-pic code in a shared library"),
-                        bfd_archive_filename (input_bfd));
-                     ret_val = FALSE;
-                     continue;
+                     break;
                    }
                  dynindx = 0;
                  addend = value;