<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>275567</bug_id>
          
          <creation_ts>2024-06-17 08:07:49 -0700</creation_ts>
          <short_desc>[Win] Enable BUILTIN_FRAME_ADDRESS using _AddressOfReturnAddress()</short_desc>
          <delta_ts>2024-06-25 08:17:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 10</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ian Grunert">ian.grunert</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>fujii</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2041662</commentid>
    <comment_count>0</comment_count>
    <who name="Ian Grunert">ian.grunert</who>
    <bug_when>2024-06-17 08:07:49 -0700</bug_when>
    <thetext>Disabled on Windows as __builtin_frame_address(1) is unavailable, and cannot be recreated with __builtin_frame_address(0) due to how the stack frame is grown.

__builtin_frame_address(0) points at the current frame, and if the current function spills registers to the stack it&apos;s pointing at the first of four home spaces. Without knowing the size of the stack frame the compiler reserves we can&apos;t walk back up to find the RBP at function entry.

Could be implemented on Windows with __builtin_stack_address() once implemented in clang, as that returns the stack pointer at the time of function entry. With that we&apos;d either be able to access the RBP that was pushed to the stack by the function, or we could push it within CCallHelpers so we didn&apos;t have to rely on that.

Blocked on support for __builtin_stack_address() being added to clang - https://github.com/llvm/llvm-project/issues/82632</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2041785</commentid>
    <comment_count>1</comment_count>
    <who name="Ian Grunert">ian.grunert</who>
    <bug_when>2024-06-17 18:08:16 -0700</bug_when>
    <thetext>__builtin_stack_address() might still not do what we need, it sounds like it might point at the end of the function frame. The overall problem is that on Windows, the frame pointer is after local variables and callee-saved registers.

https://learn.microsoft.com/en-us/cpp/build/stack-usage?view=msvc-170

We might be able to get something that works using _AddressOfReturnAddress().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2042432</commentid>
    <comment_count>2</comment_count>
    <who name="Ian Grunert">ian.grunert</who>
    <bug_when>2024-06-21 07:46:36 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/30043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2042949</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-06-25 08:17:06 -0700</bug_when>
    <thetext>Committed 280335@main (0ced454cee73): &lt;https://commits.webkit.org/280335@main&gt;

Reviewed commits have been landed. Closing PR #30043 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2042951</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-06-25 08:17:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/130505408&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>