<html>
<head>
<base href="https://bugs.llvm.org/">
</head>
<body><span class="vcard"><a class="email" href="mailto:marklmi26-fbsd@yahoo.com" title="Mark Millard <marklmi26-fbsd@yahoo.com>"> <span class="fn">Mark Millard</span></a>
</span> changed
<a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED INVALID - __builtin_eh_return is not fully implemented for PPC nor PPC64: no DW_CFA_offset output for scratch registers( r3-r6) [still true of 8.0.0]"
href="https://bugs.llvm.org/show_bug.cgi?id=26844">bug 26844</a>
<br>
<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>What</th>
<th>Removed</th>
<th>Added</th>
</tr>
<tr>
<td style="text-align:right;">Status</td>
<td>NEW
</td>
<td>RESOLVED
</td>
</tr>
<tr>
<td style="text-align:right;">Resolution</td>
<td>---
</td>
<td>INVALID
</td>
</tr></table>
<p>
<div>
<b><a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED INVALID - __builtin_eh_return is not fully implemented for PPC nor PPC64: no DW_CFA_offset output for scratch registers( r3-r6) [still true of 8.0.0]"
href="https://bugs.llvm.org/show_bug.cgi?id=26844#c18">Comment # 18</a>
on <a class="bz_bug_link
bz_status_RESOLVED bz_closed"
title="RESOLVED INVALID - __builtin_eh_return is not fully implemented for PPC nor PPC64: no DW_CFA_offset output for scratch registers( r3-r6) [still true of 8.0.0]"
href="https://bugs.llvm.org/show_bug.cgi?id=26844">bug 26844</a>
from <span class="vcard"><a class="email" href="mailto:marklmi26-fbsd@yahoo.com" title="Mark Millard <marklmi26-fbsd@yahoo.com>"> <span class="fn">Mark Millard</span></a>
</span></b>
<pre>FreeBSD head (13) is now llvm/clang 9.0.1 based and looking at
what it produces for powerpc64 shows that:
g++9 has r3-r6 scratch register information in the
with_unwind_init_save_restore and
with_unwind_init_and_eh_return_save_restore example
code, even when based on FreeBSD headers and libraries:
g++9 -std=c++17 -std=c++17 -Wno-psabi -nostdinc -nostdinc++
-I/usr/include/c++/v1 -I/usr/include -nodefaultlibs -lc++ -lcxxrt -lthr -lm -lc
-lgcc_s -o normal_and_special_save_restore.gcc
normal_and_special_save_restore.cpp
leads to, for example, normal_and_special_save_restore.gcc
having:
< 5><0x10000c6c:0x10000d04><><cie offset 0x00000114::cie index 0><fde
offset 0x00000110 length: 0x00000030>
<eh aug data len 0x0>
0x10000c6c: <off cfa=00(r1) >
0x10000c70: <off cfa=112(r1) >
0x10000c84: <off cfa=112(r1) > <off r3=-40(cfa) > <off r4=-32(cfa) >
<off r5=-24(cfa) > <off r6=-16(cfa) > <off r31=-8(cfa) >
0x10000ca0: <off cfa=112(r31) > <off r2=24(cfa) > <off r3=-40(cfa) >
<off r4=-32(cfa) > <off r5=-24(cfa) > <off r6=-16(cfa) > <off r31=-8(cfa) >
<off r70=-64(cfa) > <off r71=-56(cfa) > <off r7
2=-48(cfa) >
0x10000cc0: <off cfa=00(r1) > <off r2=24(cfa) > <off r3=-40(cfa) > <off
r4=-32(cfa) > <off r5=-24(cfa) > <off r6=-16(cfa) > <off r31=-8(cfa) > <off
r70=-64(cfa) > <off r71=-56(cfa) > <off r72=
-48(cfa) >
. . .
C++ (clang++) does not have any r3, r4, r5, or r6 (scratch
register) information in its dwarf information for the
example.
However, with the use of llvm's libunwind instead of the old
library code in head for powerpc64, the access(es) that expected
to find scratch register descriptions do not happen and there
is no SIGSEGV.
So, if there is some sort of problem here now, such as a clang
vs. gcc ABI mismatch that prevents using one of the compilers,
it is a different problem than was originally being reported
as far as FeeBSD is concerned. (The original technical detail
is still true but the library context changed.)
So a form of "overcome by events". As far as I can tell INVALID
is the best-fit for the status, so that is what I'm selecting.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>