This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix the SH behavior for EF_SH_PIC flag in FDPIC ABI


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=fbedb42d07cdc97a5bc698d1f7732ee776763cbc

commit fbedb42d07cdc97a5bc698d1f7732ee776763cbc
Author: Rich Felker <dalias@libc.org>
Date:   Tue Sep 15 08:16:27 2015 +0900

    Fix the SH behavior for EF_SH_PIC flag in FDPIC ABI
    
    Fix it so that it's compatible with the kernel and other FDPIC targets.
    
    * elf32-sh.c (sh_elf_relocate_section): Set EF_SH_PIC flag
    instead of clearing it on cross-section relocations.
    (sh_elf_merge_private_data): Clear EF_SH_PIC flag by default.

Diff:
---
 bfd/ChangeLog  | 6 ++++++
 bfd/elf32-sh.c | 4 ++--
 2 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 14c68bc..2c4a6e0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2015-09-14  Rich Felker  <dalias@libc.org>
+
+	* elf32-sh.c (sh_elf_relocate_section): Set EF_SH_PIC flag
+	instead of clearing it on cross-section relocations.
+	(sh_elf_merge_private_data): Clear EF_SH_PIC flag by default.
+
 2015-09-12  Helge Deller  <deller@gmx.de>
 
 	PR ld/18514
diff --git a/bfd/elf32-sh.c b/bfd/elf32-sh.c
index 7b8d763..fdeadd0 100644
--- a/bfd/elf32-sh.c
+++ b/bfd/elf32-sh.c
@@ -5496,7 +5496,7 @@ sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
 		   input_bfd, input_section, rel->r_offset, symname);
 	    }
 
-	  elf_elfheader (output_bfd)->e_flags &= ~EF_SH_PIC;
+	  elf_elfheader (output_bfd)->e_flags |= EF_SH_PIC;
 	}
 
       if (r != bfd_reloc_ok)
@@ -6653,7 +6653,7 @@ sh_elf_merge_private_data (bfd *ibfd, bfd *obfd)
       elf_elfheader (obfd)->e_flags = elf_elfheader (ibfd)->e_flags;
       sh_elf_set_mach_from_flags (obfd);
       if (elf_elfheader (obfd)->e_flags & EF_SH_FDPIC)
-	elf_elfheader (obfd)->e_flags |= EF_SH_PIC;
+	elf_elfheader (obfd)->e_flags &= ~EF_SH_PIC;
     }
 
   if (! sh_merge_bfd_arch (ibfd, obfd))


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]