[AArch64] Improve BFD overflow warning message for -fpic
authorJiong Wang <jiong.wang@arm.com>
Tue, 11 Aug 2015 21:12:41 +0000 (22:12 +0100)
committerJiong Wang <jiong.wang@arm.com>
Tue, 11 Aug 2015 21:12:41 +0000 (22:12 +0100)
2015-08-11  Jiong Wang  <jiong.wang@arm.com>

bfd/
  * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Improve warning
  message for R_AARCH64_LD64_GOTPAGE_LO15/R_AARCH64_LD32_GOTPAGE_LO14.

bfd/ChangeLog
bfd/elfnn-aarch64.c

index 4b70d832547125aeeb52d7fbb60f4f68102e83d3..1e02625a0f39881d20ab4e8982823cf206ed3968 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-11  Jiong Wang  <jiong.wang@arm.com>
+
+       * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Improve warning
+       message for R_AARCH64_LD64_GOTPAGE_LO15/R_AARCH64_LD32_GOTPAGE_LO14.
+
 2015-08-11  Jiong Wang  <jiong.wang@arm.com>
 
        * elfnn-aarch64.c (IS_AARCH64_TLS_RELAX_RELOC): New.
index 1796ecd7757dfbe60a9970c36e42958a54511f54..fe10be60fef54bdd27c5d6226bc7ec2ea14798df 100644 (file)
@@ -5802,6 +5802,9 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
 
       if (r != bfd_reloc_ok && r != bfd_reloc_continue)
        {
+         bfd_reloc_code_real_type real_r_type
+           = elfNN_aarch64_bfd_reloc_from_type (r_type);
+
          switch (r)
            {
            case bfd_reloc_overflow:
@@ -5809,6 +5812,16 @@ elfNN_aarch64_relocate_section (bfd *output_bfd,
                  (info, (h ? &h->root : NULL), name, howto->name, (bfd_vma) 0,
                   input_bfd, input_section, rel->r_offset))
                return FALSE;
+             if (real_r_type == BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15
+                 || real_r_type == BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14)
+               {
+                 (*info->callbacks->warning)
+                   (info,
+                    _("Too many GOT entries for -fpic, "
+                      "please recompile with -fPIC"),
+                    name, input_bfd, input_section, rel->r_offset);
+                 return FALSE;
+               }
              break;
 
            case bfd_reloc_undefined: