* elf32-sh.c (sh_elf_relocate_section): Allow R_SH_TLS_LE_32 for PIE.
authorKaz Kojima <kkojima@rr.iij4u.or.jp>
Wed, 22 Jun 2011 22:02:16 +0000 (22:02 +0000)
committerKaz Kojima <kkojima@rr.iij4u.or.jp>
Wed, 22 Jun 2011 22:02:16 +0000 (22:02 +0000)
(sh_elf_check_relocs): Likewise.

bfd/ChangeLog
bfd/elf32-sh.c

index 59cfd13b1fd9e42af13af29a4e7fc6e8f4784b18..877f0c8a69b11b21dc3bf2c780762ebe6a30972d 100644 (file)
@@ -1,3 +1,8 @@
+2011-06-22  Kaz Kojima  <kkojima@rr.iij4u.or.jp>
+
+       * elf32-sh.c (sh_elf_relocate_section): Allow R_SH_TLS_LE_32 for PIE.
+       (sh_elf_check_relocs): Likewise.
+
 2011-06-22  Richard Henderson  <rth@redhat.com>
 
        * elf64-alpha.c (elf64_alpha_check_relocs): No dynamic reloc for
index b85b7c2111b9e5c196ce5790b341b9335dbfacda..ca2c4af9058d8c518ffac0768df8fab084ee17ad 100644 (file)
@@ -5516,7 +5516,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 
            check_segment[0] = check_segment[1] = -1;
 
-           if (! info->shared)
+           if (! info->shared || info->pie)
              {
                relocation = tpoff (info, relocation);
                addend = rel->r_addend;
@@ -6614,7 +6614,7 @@ sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
          break;
 
        case R_SH_TLS_LE_32:
-         if (info->shared)
+         if (info->shared && !info->pie)
            {
              (*_bfd_error_handler)
                (_("%B: TLS local exec code cannot be linked into shared objects"),