[prev in list] [next in list] [prev in thread] [next in thread]
List: sbcl-devel
Subject: Re: [Sbcl-devel] Breakage on PPC64LE and PPC64BE
From: Douglas Katzman via Sbcl-devel <sbcl-devel () lists ! sourceforge ! net>
Date: 2020-07-14 15:16:17
Message-ID: CAOrNasytwfkg=MT62eRjwecepyEAeBE0-_HttA2c+QsHnJcGxg () mail ! gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
>
> But isn't it possible to use a BSD-type API on macOS anyway? macOS 10.5
> should
> be POSIX-compliant, so I assume that should work.
>
Doesn't seem so. This is the ppc64 linux code I'm adding:
+ /* Copy ABI TLS value of 'current_thread' into lisp's thread base */
+ addis reg_THREAD,13,current_thread@tprel@ha
+ addi reg_THREAD,reg_THREAD,current_thread@tprel@l
+ ld reg_THREAD,0(reg_THREAD)
but look at what clang on macbook emits for this trivial function:
__thread int thing;
void setthing(int x) {
thing = x;
}
->
.cfi_startproc
## %bb.0:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
subq $16, %rsp
movl %edi, -4(%rbp)
movl -4(%rbp), %edi
movl %edi, -8(%rbp) ## 4-byte Spill
movq _thing@TLVP(%rip), %rdi
callq *(%rdi)
movl -8(%rbp), %ecx ## 4-byte Reload
movl %ecx, (%rax)
addq $16, %rsp
popq %rbp
retq
.cfi_endproc
## -- End function
.tbss _thing$tlv$init, 4, 2 ## @thing
[Attachment #5 (text/html)]
<div dir="ltr"><div dir="ltr"><br></div><div class="gmail_quote"><div> \
</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px \
solid rgb(204,204,204);padding-left:1ex"> <br>
But isn't it possible to use a BSD-type API on macOS anyway? macOS 10.5 \
should<br> be POSIX-compliant, so I assume that should \
work.<br></blockquote><div><br></div><div>Doesn't seem so. This is the ppc64 \
linux code I'm adding:</div><div>
<p class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-as \
ian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">+ <span \
class="gmail-Apple-converted-space"> </span>/* Copy ABI TLS value of \
'current_thread' into lisp's thread base */</span></p> <p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">+ <span \
class="gmail-Apple-converted-space"> </span>addis \
reg_THREAD,13,current_thread@tprel@ha</span></p> <p class="gmail-p1" \
style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stre \
tch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">+ <span \
class="gmail-Apple-converted-space"> </span>addi \
reg_THREAD,reg_THREAD,current_thread@tprel@l</span></p> <p class="gmail-p1" \
style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stre \
tch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">+ <span \
class="gmail-Apple-converted-space"> </span>ld \
reg_THREAD,0(reg_THREAD)</span></p><p class="gmail-p1" \
style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stre \
tch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"><br></span></p><p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
style="font-family:Arial,Helvetica,sans-serif;font-size:small;color:rgb(34,34,34)"><br></span></p><p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
style="font-family:Arial,Helvetica,sans-serif;font-size:small;color:rgb(34,34,34)">but \
look at what clang on macbook emits for this trivial function: </span><br></p><p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
style="font-family:Arial,Helvetica,sans-serif;font-size:small;color:rgb(34,34,34)"><br></span></p></div><div>
<p class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-as \
ian:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">__thread \
</span><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(45,150,30)">int</span><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"> </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">thing</span><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">;</span></p> <p \
class="gmail-p2" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0);min-height:13px"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(45,150,30)">void</span><span \
class="gmail-s4" style="font-variant-ligatures:no-common-ligatures"> </span><span \
class="gmail-s1" style="color:rgb(74,0,255);font-variant-ligatures:no-common-ligatures">setthing</span><span \
class="gmail-s4" style="font-variant-ligatures:no-common-ligatures">(</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures;color:rgb(45,150,30)">int</span><span \
class="gmail-s4" style="font-variant-ligatures:no-common-ligatures"> </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">x</span><span \
class="gmail-s4" style="font-variant-ligatures:no-common-ligatures">) {</span><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"></span></p> <p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>thing = x;</span></p> <p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures">}</span></p><p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures"><br></span></p><p \
class="gmail-p1" style="margin:0px;font-variant-numeric:normal;font-variant-east-asian \
:normal;font-stretch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
style="font-variant-ligatures:no-common-ligatures">-></span></p><p \
class="gmail-p1" style="margin:0px;font:11px Menlo;color:rgb(194,0,255)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures">.cfi_startproc</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">## </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%bb</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">.0:</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">pushq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"> <span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span></p><p \
class="gmail-p1" style="margin:0px;font:11px Menlo;color:rgb(194,0,255)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures">.cfi_def_cfa_offset</span><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"> \
16</span></p><p class="gmail-p2" style="margin:0px;font:11px \
Menlo;color:rgb(0,0,0)"><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">.cfi_offset</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"> </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">, \
-16</span></p><p class="gmail-p2" style="margin:0px;font:11px \
Menlo;color:rgb(0,0,0)"><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rsp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">, </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span></p><p \
class="gmail-p1" style="margin:0px;font:11px Menlo;color:rgb(194,0,255)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures">.cfi_def_cfa_register</span><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"> \
</span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">subq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>$16, </span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rsp</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movl</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%edi</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">, -4(</span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">)</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movl</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>-4(</span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">), </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%edi</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movl</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%edi</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">, -8(</span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">)<span \
class="gmail-Apple-converted-space"> </span>## 4-byte \
Spill</span></p><p class="gmail-p2" style="margin:0px;font:11px \
Menlo;color:rgb(0,0,0)"><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>_thing@TLVP(</span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rip</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">), </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rdi</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">callq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"> <span \
class="gmail-Apple-converted-space"> </span>*(</span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rdi</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">)</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movl</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>-8(</span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">), </span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%ecx</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>## 4-byte \
Reload</span></p><p class="gmail-p2" style="margin:0px;font:11px \
Menlo;color:rgb(0,0,0)"><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">movl</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%ecx</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">, (</span><span \
class="gmail-s3" style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rax</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures">)</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">addq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span>$16, </span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rsp</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">popq</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s3" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(193,101,28)">%rbp</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s4" \
style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">retq</span></p><p \
class="gmail-p1" style="margin:0px;font:11px Menlo;color:rgb(194,0,255)"><span \
class="gmail-s1" style="font-variant-ligatures:no-common-ligatures;color:rgb(0,0,0)"><span \
class="gmail-Apple-converted-space"> </span></span><span class="gmail-s2" \
style="font-variant-ligatures:no-common-ligatures">.cfi_endproc</span></p><p \
class="gmail-p2" style="margin:0px;font:11px Menlo;color:rgb(0,0,0)"><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"><span \
class="gmail-Apple-converted-space"> \
</span>## -- End function</span></p><p class="gmail-p1" \
style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stre \
tch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)">
</p><p class="gmail-p2" \
style="margin:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stre \
tch:normal;font-size:11px;line-height:normal;font-family:Menlo;color:rgb(0,0,0)"><span \
class="gmail-s4" style="font-variant-ligatures:no-common-ligatures;color:rgb(194,0,255)">.tbss</span><span \
class="gmail-s2" style="font-variant-ligatures:no-common-ligatures"> _thing$tlv$init, \
4, 2 <span class="gmail-Apple-converted-space"> </span>## \
@thing</span></p></div></div></div>
_______________________________________________
Sbcl-devel mailing list
Sbcl-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sbcl-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic