<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<div name="messageBodySection">
<div dir="auto">In that case I shall create appropriate issues for the mentioned compilers in order to discuss the matter with them.<br />
<br />
I think I have found another issue with clang. In some cases it does not generate middle parameters: namely, it skipped the 2nd one yet included the 3rd one.<br />
It believe it does not match the standard (p91 line 6-7): "Call site parameter entries occur in the same order as the corresponding parameters in the source.", does it?<br /></div>
</div>
<div name="messageReplySection">On Jun 14, 2024, 15:11 +0300, Robinson, Paul <paul.robinson@sony.com>, wrote:<br />
<blockquote type="cite">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">I believe this is an issue with the implementations, although it is a bit odd that both gcc and clang behave the same way. There should be a DW_TAG_call_site_parameter for each parameter. DW_AT_location should describe the stack slot where the parameter is passed. It should not be a problem for the compiler to do that, the location description would be evaluated in the context of the caller.</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">--paulr</span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"> </span></p>
<div style="border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt">
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b> <span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Dwarf-discuss <dwarf-discuss-bounces+paul.robinson=sony.com@lists.dwarfstd.org> <b>On Behalf Of</b> Sergey via Dwarf-discuss<br />
<b>Sent:</b> Wednesday, June 12, 2024 9:57 AM<br />
<b>To:</b> dwarf-discuss@lists.dwarfstd.org<br />
<b>Subject:</b> [Dwarf-discuss] Request for clarification of handling stack-passed parameters</span></p>
</div>
</div>
<p class="MsoNormal"> </p>
<div name="messageBodySection">
<div>
<p class="MsoNormal"># Request for clarification of handling stack-passed parameters<br />
<br />
## Background<br />
<br />
I came across this while parsing parameters of a variadic function in C. Formal parameters are not sufficient for my case, since all the variadic arguments are described with a single `DW_TAG_unspecified_parameters`, whereas reading `DW_TAG_call_site_parameter` allows to get their locations and values.<br />
<br />
## Overview<br />
<br />
When generating a DWARF5 of a C function with **more than 6** parameters, the generated `DW_TAG_call_site` contains only **first 6** `DW_TAG_call_site_parameter`s (function's `DW_TAG_formal_parameter`s contain all of them).<br />
<br />
Something I have noticed is that the parameters, which do not get `DW_TAG_call_site_parameter` generated, are all **passed through stack**(whereas first 6 through registers), as evident by function's `DW_TAG_formal_parameter`'s `DW_AT_location` containing `DW_OP_fbreg`.<br />
<br />
## Request for clarification<br />
<br />
It happens both with gcc and clang, however I was unable to find any information in the standard regarding generation of only registed-passed parameters.<br />
<br />
I request clarification on whether it is an issue with implementations, or is there something in the standard which justifies the described behaviour.</p>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</body>
</html>