aboutsummaryrefslogtreecommitdiff
path: root/bfd/mach-o-x86-64.c
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/mach-o-x86-64.c')
-rw-r--r--bfd/mach-o-x86-64.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/bfd/mach-o-x86-64.c b/bfd/mach-o-x86-64.c
index 667c1d0..9ee93a4 100644
--- a/bfd/mach-o-x86-64.c
+++ b/bfd/mach-o-x86-64.c
@@ -117,6 +117,11 @@ static reloc_howto_type x86_64_howto_table[]=
complain_overflow_bitfield,
NULL, "BRANCH8",
FALSE, 0xff, 0xff, TRUE),
+ /* 12 */
+ HOWTO(BFD_RELOC_MACH_O_X86_64_TLV, 0, 2, 32, TRUE, 0,
+ complain_overflow_bitfield,
+ NULL, "TLV",
+ FALSE, 0xffffffff, 0xffffffff, TRUE),
};
static bfd_boolean
@@ -220,6 +225,13 @@ bfd_mach_o_x86_64_canonicalize_one_reloc (bfd * abfd,
return TRUE;
}
break;
+ case BFD_MACH_O_X86_64_RELOC_TLV:
+ if (reloc.r_length == 2 && reloc.r_pcrel && reloc.r_extern)
+ {
+ res->howto = &x86_64_howto_table[12];
+ return TRUE;
+ }
+ break;
default:
return FALSE;
}
@@ -288,6 +300,11 @@ bfd_mach_o_x86_64_swap_reloc_out (arelent *rel, bfd_mach_o_reloc_info *rinfo)
rinfo->r_pcrel = 1;
rinfo->r_length = 2;
break;
+ case BFD_RELOC_MACH_O_X86_64_TLV:
+ rinfo->r_type = BFD_MACH_O_X86_64_RELOC_TLV;
+ rinfo->r_pcrel = 1;
+ rinfo->r_length = 2;
+ break;
default:
return FALSE;
}