<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Hi Jan,<br>
</p>
<div class="moz-cite-prefix">On 2/12/2024 11:42 PM, Srinath
Parvathaneni wrote:<br>
</div>
<blockquote type="cite" cite="mid:7d26c9ec-8816-4643-a5e8-8162803971d9@arm.com">Hi Jan,
<br>
<br>
On 2/12/2024 7:39 AM, Jan Beulich wrote:
<br>
<blockquote type="cite">Srinath,
<br>
<br>
may I ask against what specification this was written? There are
two
<br>
aspects I can't bring in line with what DDI0596 from December
has, i.e.
<br>
even newer than the patch (dating back to October):
<br>
<br>
1) gcspopcx, gcspopx, and gcspushx supposedly all have an
optional
<br>
register operand, which gas 2.42 doesn't accept.
<br>
</blockquote>
<br>
My understanding from the following specs is that the above
mentioned
<br>
<br>
instructions does not take any optional arguments and this is
aligned with
<br>
<br>
LLVM compiler behaviour.
<br>
<br>
<a class="moz-txt-link-freetext" href="https://developer.arm.com/documentation/ddi0601/2023-12/AArch64-Instructions/GCSPUSHX--Guarded-Control-Stack-Push-exception-return-record?lang=en">https://developer.arm.com/documentation/ddi0601/2023-12/AArch64-Instructions/GCSPUSHX--Guarded-Control-Stack-Push-exception-return-record?lang=en</a>
<br>
<br>
However, I am unsure about the statement "The value in the
register by <Xt> is ignored" in the
<br>
<br>
specs and need further clarification. I will discuss this
internally and get back to you with an update.
<br>
</blockquote>
<pre class="bz_comment_text" id="comment_text_1" style="font-size: medium; font-family: monospace; white-space: pre-wrap; width: 50em; color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">There is some confusion over the document for mentioned gcspushx, gcspopx and gcspopcx instructions.
The correct documentation for these instructions is here:
<a rel="ugc" href="https://developer.arm.com/documentation/ddi0601/2023-12/AArch64-Instructions/GCSPOPX--Guarded-Control-Stack-Pop-exception-return-record?lang=en" style="color: rgb(96, 112, 207);" class="moz-txt-link-freetext">https://developer.arm.com/documentation/ddi0601/2023-12/AArch64-Instructions/GCSPOPX--Guarded-Control-Stack-Pop-exception-return-record?lang=en</a>
As per above documentation, the mentioned instructions does not take optional argument and the current binutils implementation of these instructions is correct.</pre>
<blockquote type="cite" cite="mid:7d26c9ec-8816-4643-a5e8-8162803971d9@arm.com">
<blockquote type="cite">2) gcsstr and gcssttr supposedly have a
memory-form 2nd operand, i.e.
<br>
a register name enclosed in square brackets. Gas 2.42
expects a
<br>
plain register name instead.
<br>
</blockquote>
<br>
I agree this is a coding bug, I will create a bugzilla ticket and
work on fixing this issue.
<br>
</blockquote>
<p>I have committed the fix for this issue to master and
binutils-2_42-branch.</p>
<p>Regards,</p>
<p>Srinath.<br>
</p>
<blockquote type="cite" cite="mid:7d26c9ec-8816-4643-a5e8-8162803971d9@arm.com">Thank You.
<br>
<br>
Regards,
<br>
<br>
Srinath
<br>
<br>
<blockquote type="cite">Despite being newer it's of course
possible that documentation is what
<br>
actually needs fixing. Can you please clarify which way it is?
<br>
<br>
Thanks, Jan
<br>
</blockquote>
</blockquote>
</body>
</html>