Merge commit 459e8e948 from llvm git (by Justin Hibbits):
[PowerPC]: Don't allow r0 as a target for LD_GOT_TPREL_L/32 Summary: The linker is free to relax this (relocation R_PPC_GOT_TPREL16) against R_PPC_TLS, if it sees fit (initial exec to local exec). If r0 is used, this can generate execution-invalid code (converts to 'addi %rX, %r0, FOO, which translates in PPC-lingo to li %rX, FOO). Forbid this instead. This fixes static binaries using locales on FreeBSD/powerpc (tested on FreeBSD/powerpcspe). Reviewed By: nemanjai Differential Revision: https://reviews.llvm.org/D76662 Requested by: jhibbits MFC after: 6 weeks X-MFC-With: 358851
This commit is contained in:
parent
5b5f869e87
commit
6dce2be1c7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=359334
@ -1110,7 +1110,7 @@ def ADDISgotTprelHA: PPCEmitTimePseudo<(outs g8rc:$rD), (ins g8rc_nox0:$reg, s16
|
|||||||
(PPCaddisGotTprelHA i64:$reg,
|
(PPCaddisGotTprelHA i64:$reg,
|
||||||
tglobaltlsaddr:$disp))]>,
|
tglobaltlsaddr:$disp))]>,
|
||||||
isPPC64;
|
isPPC64;
|
||||||
def LDgotTprelL: PPCEmitTimePseudo<(outs g8rc:$rD), (ins s16imm64:$disp, g8rc_nox0:$reg),
|
def LDgotTprelL: PPCEmitTimePseudo<(outs g8rc_nox0:$rD), (ins s16imm64:$disp, g8rc_nox0:$reg),
|
||||||
"#LDgotTprelL",
|
"#LDgotTprelL",
|
||||||
[(set i64:$rD,
|
[(set i64:$rD,
|
||||||
(PPCldGotTprelL tglobaltlsaddr:$disp, i64:$reg))]>,
|
(PPCldGotTprelL tglobaltlsaddr:$disp, i64:$reg))]>,
|
||||||
|
@ -3167,7 +3167,7 @@ def PPC32GOT: PPCEmitTimePseudo<(outs gprc:$rD), (ins), "#PPC32GOT",
|
|||||||
def PPC32PICGOT: PPCEmitTimePseudo<(outs gprc:$rD, gprc:$rT), (ins), "#PPC32PICGOT",
|
def PPC32PICGOT: PPCEmitTimePseudo<(outs gprc:$rD, gprc:$rT), (ins), "#PPC32PICGOT",
|
||||||
[]>, NoEncode<"$rT">;
|
[]>, NoEncode<"$rT">;
|
||||||
|
|
||||||
def LDgotTprelL32: PPCEmitTimePseudo<(outs gprc:$rD), (ins s16imm:$disp, gprc_nor0:$reg),
|
def LDgotTprelL32: PPCEmitTimePseudo<(outs gprc_nor0:$rD), (ins s16imm:$disp, gprc_nor0:$reg),
|
||||||
"#LDgotTprelL32",
|
"#LDgotTprelL32",
|
||||||
[(set i32:$rD,
|
[(set i32:$rD,
|
||||||
(PPCldGotTprelL tglobaltlsaddr:$disp, i32:$reg))]>;
|
(PPCldGotTprelL tglobaltlsaddr:$disp, i32:$reg))]>;
|
||||||
|
Loading…
Reference in New Issue
Block a user