diff options
author | Rich Felker <dalias@libc.org> | 2015-09-15 08:16:27 +0900 |
---|---|---|
committer | Kaz Kojima <kkojima@rr.iij4u.or.jp> | 2015-09-15 08:34:12 +0900 |
commit | fbedb42d07cdc97a5bc698d1f7732ee776763cbc (patch) | |
tree | 8b8e9d6b6b6edb015b5568ada2d21bed12264c0d /bfd/elf32-sh.c | |
parent | 4c2f2a792a5971fcc7fe6511725eaf50d19d302b (diff) | |
download | gdb-fbedb42d07cdc97a5bc698d1f7732ee776763cbc.zip gdb-fbedb42d07cdc97a5bc698d1f7732ee776763cbc.tar.gz gdb-fbedb42d07cdc97a5bc698d1f7732ee776763cbc.tar.bz2 |
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.
Diffstat (limited to 'bfd/elf32-sh.c')
-rw-r--r-- | bfd/elf32-sh.c | 4 |
1 files changed, 2 insertions, 2 deletions
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)) |