/* Zero for non-tls entries, or TLS_TLS and one of TLS_GD, TLS_LD,
TLS_TPREL or TLS_DTPREL for tls entries. */
- char tls_type;
+ unsigned char tls_type;
/* Non-zero if got.ent points to real entry. */
- char is_indirect;
+ unsigned char is_indirect;
/* Reference count until size_dynamic_sections, GOT offset thereafter. */
union
#define TLS_EXPLICIT 32 /* Marks TOC section TLS relocs. */
#define TLS_TPRELGD 64 /* TPREL reloc resulting from GD->IE. */
#define PLT_IFUNC 128 /* STT_GNU_IFUNC. */
- char tls_mask;
+ unsigned char tls_mask;
};
/* ppc64 ELF linker hash table. */
{
struct got_entry **local_got_ents = elf_local_got_ents (abfd);
struct plt_entry **local_plt;
- char *local_got_tls_masks;
+ unsigned char *local_got_tls_masks;
if (local_got_ents == NULL)
{
}
local_plt = (struct plt_entry **) (local_got_ents + symtab_hdr->sh_info);
- local_got_tls_masks = (char *) (local_plt + symtab_hdr->sh_info);
+ local_got_tls_masks = (unsigned char *) (local_plt + symtab_hdr->sh_info);
local_got_tls_masks[r_symndx] |= tls_type;
return local_plt + r_symndx;
unsigned long r_symndx;
enum elf_ppc64_reloc_type r_type;
struct elf_link_hash_entry *h = NULL;
- char tls_type = 0;
+ unsigned char tls_type = 0;
r_symndx = ELF64_R_SYM (rel->r_info);
r_type = ELF64_R_TYPE (rel->r_info);
{
struct plt_entry **local_plt = (struct plt_entry **)
(local_got_ents + symtab_hdr->sh_info);
- char *local_got_tls_masks = (char *)
+ unsigned char *local_got_tls_masks = (unsigned char *)
(local_plt + symtab_hdr->sh_info);
if ((local_got_tls_masks[r_symndx] & PLT_IFUNC) != 0)
ifunc = local_plt + r_symndx;
get_sym_h (struct elf_link_hash_entry **hp,
Elf_Internal_Sym **symp,
asection **symsecp,
- char **tls_maskp,
+ unsigned char **tls_maskp,
Elf_Internal_Sym **locsymsp,
unsigned long r_symndx,
bfd *ibfd)
if (tls_maskp != NULL)
{
struct got_entry **lgot_ents;
- char *tls_mask;
+ unsigned char *tls_mask;
tls_mask = NULL;
lgot_ents = elf_local_got_ents (ibfd);
{
struct plt_entry **local_plt = (struct plt_entry **)
(lgot_ents + symtab_hdr->sh_info);
- char *lgot_masks = (char *)
+ unsigned char *lgot_masks = (unsigned char *)
(local_plt + symtab_hdr->sh_info);
tls_mask = &lgot_masks[r_symndx];
}
type suitable for optimization, and 1 otherwise. */
static int
-get_tls_mask (char **tls_maskp,
+get_tls_mask (unsigned char **tls_maskp,
unsigned long *toc_symndx,
bfd_vma *toc_addend,
Elf_Internal_Sym **locsymsp,
struct elf_link_hash_entry *h;
Elf_Internal_Sym *sym;
asection *sym_sec;
- char *tls_mask;
- char tls_set, tls_clear, tls_type = 0;
+ unsigned char *tls_mask;
+ unsigned char tls_set, tls_clear, tls_type = 0;
bfd_vma value;
bfd_boolean ok_tprel, is_local;
long toc_ref_index = 0;
if (expecting_tls_get_addr == 2)
{
/* Check for toc tls entries. */
- char *toc_tls;
+ unsigned char *toc_tls;
int retval;
retval = get_tls_mask (&toc_tls, NULL, NULL,
struct got_entry **end_lgot_ents;
struct plt_entry **local_plt;
struct plt_entry **end_local_plt;
- char *lgot_masks;
+ unsigned char *lgot_masks;
bfd_size_type locsymcount;
Elf_Internal_Shdr *symtab_hdr;
asection *srel;
end_lgot_ents = lgot_ents + locsymcount;
local_plt = (struct plt_entry **) end_lgot_ents;
end_local_plt = local_plt + locsymcount;
- lgot_masks = (char *) end_local_plt;
+ lgot_masks = (unsigned char *) end_local_plt;
s = ppc64_elf_tdata (ibfd)->got;
srel = ppc64_elf_tdata (ibfd)->relgot;
for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks)
struct got_entry **end_lgot_ents;
struct plt_entry **local_plt;
struct plt_entry **end_local_plt;
- char *lgot_masks;
+ unsigned char *lgot_masks;
bfd_size_type locsymcount;
Elf_Internal_Shdr *symtab_hdr;
asection *s, *srel;
end_lgot_ents = lgot_ents + locsymcount;
local_plt = (struct plt_entry **) end_lgot_ents;
end_local_plt = local_plt + locsymcount;
- lgot_masks = (char *) end_local_plt;
+ lgot_masks = (unsigned char *) end_local_plt;
s = ppc64_elf_tdata (ibfd)->got;
srel = ppc64_elf_tdata (ibfd)->relgot;
for (; lgot_ents < end_lgot_ents; ++lgot_ents, ++lgot_masks)
&& irela != internal_relocs)
{
/* Get tls info. */
- char *tls_mask;
+ unsigned char *tls_mask;
if (!get_tls_mask (&tls_mask, NULL, NULL, &local_syms,
irela - 1, input_bfd))
const char *sym_name;
unsigned long r_symndx, toc_symndx;
bfd_vma toc_addend;
- char tls_mask, tls_gd, tls_type;
- char sym_type;
+ unsigned char tls_mask, tls_gd, tls_type;
+ unsigned char sym_type;
bfd_vma relocation;
bfd_boolean unresolved_reloc;
bfd_boolean warned;
{
struct plt_entry **local_plt = (struct plt_entry **)
(local_got_ents + symtab_hdr->sh_info);
- char *lgot_masks = (char *)
+ unsigned char *lgot_masks = (unsigned char *)
(local_plt + symtab_hdr->sh_info);
tls_mask = lgot_masks[r_symndx];
}
|| r_type == R_PPC64_TLSLD))
{
/* Check for toc tls entries. */
- char *toc_tls;
+ unsigned char *toc_tls;
if (!get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,
&local_syms, rel, input_bfd))
case R_PPC64_TOC16_LO_DS:
{
/* Check for toc tls entries. */
- char *toc_tls;
+ unsigned char *toc_tls;
int retval;
retval = get_tls_mask (&toc_tls, &toc_symndx, &toc_addend,