[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&#39;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&#39;t seem so. This is the ppc64 \
linux code I&#39;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 \
&#39;current_thread&#39; into lisp&#39;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">-&gt;</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