<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in x86AssemblyInspectionEngine.cpp</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>4871dfc6 - [LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#4871dfc6</link>
        <description>[LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2Improve LLDB reliability by fixing the following &quot;uninitialized variables&quot; static code inspection warnings fromscan.coverity.com:1476275, 1274012, 1455035, 1364789, 14542821467483, 1406152, 1406255, 1454837, 14544161467446, 1462022, 1461909, 1420566, 13272281367767, 1431254, 1467299, 1312678, 14317801454731, 1490403Differential Revision: https://reviews.llvm.org/D130528

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Mon, 25 Jul 2022 22:52:21 +0000</pubDate>
        <dc:creator>Slava Gurevich &lt;sgurevich@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>9877159d - Revert &quot;[LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2&quot;</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#9877159d</link>
        <description>Revert &quot;[LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2&quot;This reverts commit b9aedd94e6796e4b4866ab4c091b736b3db58cb7.

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Tue, 26 Jul 2022 01:23:19 +0000</pubDate>
        <dc:creator>Slava Gurevich &lt;sgurevich@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>b9aedd94 - [LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#b9aedd94</link>
        <description>[LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan. Part 2Improve LLDB reliability by fixing the following &quot;uninitialized variables&quot; static code inspection warnings fromscan.coverity.com:1476275, 1274012, 1455035, 1364789, 14542821467483, 1406152, 1406255, 1454837, 14544161467446, 1462022, 1461909, 1420566, 13272281367767, 1431254, 1467299, 1312678, 14317801454731, 1490403Differential Revision: https://reviews.llvm.org/D130528

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Mon, 25 Jul 2022 22:52:21 +0000</pubDate>
        <dc:creator>Slava Gurevich &lt;sgurevich@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>459cfa5e - [LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scan</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#459cfa5e</link>
        <description>[LLDB][NFC][Reliability] Fix uninitialized variables from Coverity scanImprove LLDB reliability by fixing the following &quot;uninitialized variables&quot; static code inspection warnings fromscan.coverity.com:1094796 1095721 1095728 1095737 10957411095756 1095779 1095789 1095805 12145521229457 1232475 1274006 1274010 12934271364800 1364802 1364804 1364812 13648161374902 1374909 1384975 1399312 14204511431704 1454230 1454554 1454615 14545791454594 1454832 1457759 1458696 14619091467658 1487814 1487830 1487845Differential Revision: https://reviews.llvm.org/D130098

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Wed, 20 Jul 2022 20:32:53 +0000</pubDate>
        <dc:creator>Slava Gurevich &lt;sgurevich@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>80814287 - [lldb][NFC] Fix all formatting errors in .cpp file headers</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#80814287</link>
        <description>[lldb][NFC] Fix all formatting errors in .cpp file headersSummary:A *.cpp file header in LLDB (and in LLDB) should like this:```//===-- TestUtilities.cpp -------------------------------------------------===//```However in LLDB most of our source files have arbitrary changes to this format andthese changes are spreading through LLDB as folks usually just use the existingsource files as templates for their new files (most notably the unnecessaryeditor language indicator `-*- C++ -*-` is spreading and in every reviewsomeone is pointing out that this is wrong, resulting in people pointing out that thisis done in the same way in other files).This patch removes most of these inconsistencies including the editor language indicators,all the different missing/additional &apos;-&apos; characters, files that center the file name, missingtrailing `===//` (mostly caused by clang-format breaking the line).Reviewers: aprantl, espindola, jfb, shafik, JDevlieghereReviewed By: JDevlieghereSubscribers: dexonsmith, wuzish, emaste, sdardis, nemanjai, kbarton, MaskRay, atanasyan, arphaman, jfb, abidh, jsji, JDevlieghere, usaxena95, lldb-commitsTags: #lldbDifferential Revision: https://reviews.llvm.org/D73258

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Fri, 24 Jan 2020 07:23:27 +0000</pubDate>
        <dc:creator>Raphael Isemann &lt;teemperor@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>50703223 - Fix the unwinding plan augmentation from x86 assembly</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#50703223</link>
        <description>Fix the unwinding plan augmentation from x86 assemblyUnwind plan augmentation should compute the plan row at offset x fromthe instruction before offset x, but currently we compute it from theinstruction at offset x. Note that this behavior is a regressionintroduced when moving the x86 assembly inspection engine to its ownfile(https://github.com/llvm/llvm-project/commit/1c9858b298d79ce82c45a2954096718b39550109#diff-375a2be066db6f34bb9a71442c9b71fcL913);the original version handled this properly by copying the previousinstruction out before advancing the instruction pointer.The relevant bug with more info is here: https://bugs.llvm.org/show_bug.cgi?id=43561Differential Revision: https://reviews.llvm.org/D68454Patch by Jaroslav Sevcik &lt;jarin@google.com&gt;.llvm-svn: 374342

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Thu, 10 Oct 2019 13:23:09 +0000</pubDate>
        <dc:creator>Pavel Labath &lt;pavel@labath.sk&gt;</dc:creator>
    </item>
<item>
        <title>3fd917d8 - Support Linux signal return trampolines in frame initialization</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#3fd917d8</link>
        <description>Support Linux signal return trampolines in frame initializationSummary:Add __kernel_rt_sigreturn to the list of trap handlers for Linux (it&apos;sused as such on aarch64 at least), and __restore_rt as well (used onx86_64).Skip decrement-and-recompute for trap handlers inInitializeNonZerothFrame, as signal dispatch may point the child frame&apos;sreturn address to the start of the return trampoline.Parse the &apos;S&apos; flag for signal handlers from eh_frame augmentation, andpropagate it to the unwind plan.Reviewers: labath, jankratochvil, compnerd, jfb, jasonmolendaReviewed By: jasonmolendaSubscribers: clayborg, MaskRay, wuzish, nemanjai, kbarton, jrtc27, atanasyan, jsji, javed.absar, kristof.beyls, lldb-commitsTags: #lldbDifferential Revision: https://reviews.llvm.org/D63667llvm-svn: 366580

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Fri, 19 Jul 2019 14:05:55 +0000</pubDate>
        <dc:creator>Joseph Tremoulet &lt;jotrem@microsoft.com&gt;</dc:creator>
    </item>
<item>
        <title>ff918fb4 - Fix -Wsign-compare by explicit cast after r362557</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#ff918fb4</link>
        <description>Fix -Wsign-compare by explicit cast after r362557llvm-svn: 362570

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Wed, 05 Jun 2019 01:49:06 +0000</pubDate>
        <dc:creator>Fangrui Song &lt;maskray@google.com&gt;</dc:creator>
    </item>
<item>
        <title>c93b9958 - Call abs to avoid signed/unsigned comparison warning.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#c93b9958</link>
        <description>Call abs to avoid signed/unsigned comparison warning.llvm-svn: 362557

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Tue, 04 Jun 2019 22:46:20 +0000</pubDate>
        <dc:creator>Jason Molenda &lt;jmolenda@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>dbb4322e - [lldb] Fix out-of-bounds read after c3ea7c66fec021867e005ad1b02f3c7e80feaa85</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#dbb4322e</link>
        <description>[lldb] Fix out-of-bounds read after c3ea7c66fec021867e005ad1b02f3c7e80feaa85&quot;Add support for mid-function epilogues on x86 that end in a non-local jump.&quot;Detected by asan.llvm-svn: 362510

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Tue, 04 Jun 2019 15:27:19 +0000</pubDate>
        <dc:creator>James Y Knight &lt;jyknight@google.com&gt;</dc:creator>
    </item>
<item>
        <title>c3ea7c66 - Add support for mid-function epilogues on x86 that end in a non-local jump.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#c3ea7c66</link>
        <description>Add support for mid-function epilogues on x86 that end in a non-local jump.The x86 assembly inspection engine has code to support detecting amid-function epilogue that ends in a RET instruction; add support for recognizing an epilogue that ends in a JMP, and add a check that theunwind state has been restored to the original stack setup; reinstatethe post-prologue unwind state after this JMP instruction.The assembly inspection engine used for other architectures, UnwindAssemblyInstEmulation, detects mid-function epilogues by tracking branch instructions within the function and &quot;forwards&quot;the current unwind state to the targets of the branches.  Ifan epilogue unwinds the stack and exits, followed by a branchtarget, we get back to the correct unwind state.  The x86 unwinder should move to this same algorithm, or possibly evenlook at implementing an x86 instruction emulation plugin andget UnwindAssemblyInstEmulation to work for x86 too.  I addeda branch instruction recognizier method that will be necessaryif we want to switch the algorithm.Differential Revision: https://reviews.llvm.org/D62764&lt;rdar://problem/51074422&gt; llvm-svn: 362456

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Mon, 03 Jun 2019 22:34:12 +0000</pubDate>
        <dc:creator>Jason Molenda &lt;jmolenda@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>796ac80b - Use std::make_shared in LLDB (NFC)</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#796ac80b</link>
        <description>Use std::make_shared in LLDB (NFC)Unlike std::make_unique, which is only available since C++14,std::make_shared is available since C++11. Not only is std::make_shareda lot more readable compared to ::reset(new), it also performs a singleheap allocation for the object and control block.Differential revision: https://reviews.llvm.org/D57990llvm-svn: 353764

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Mon, 11 Feb 2019 23:13:08 +0000</pubDate>
        <dc:creator>Jonas Devlieghere &lt;jonas@devlieghere.com&gt;</dc:creator>
    </item>
<item>
        <title>d1307ec4 - Fix x86 return pattern detection</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#d1307ec4</link>
        <description>Fix x86 return pattern detectionSummary: Replace 0xc9 (LEAVE) with 0xcb (RETF) in ret_pattern_p(). Also put 0xc3 first, since it is the most common form and will match first.Reviewers: jasonmolendaReviewed By: jasonmolendaSubscribers: labath, lldb-commitsTags: #lldbDifferential Revision: https://reviews.llvm.org/D57928llvm-svn: 353643

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Sun, 10 Feb 2019 15:41:53 +0000</pubDate>
        <dc:creator>Raphael Isemann &lt;teemperor@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>823c66b6 - [x64] Process the B field of the REX prefix correctly for the PUSH and POP</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#823c66b6</link>
        <description>[x64] Process the B field of the REX prefix correctly for the PUSH and POPinstructionsSummary: This patch makes `x86AssemblyInspectionEngine` to process zero value ofthe `B` field of the `REX` prefix in a correct way for `PUSH` and `POP`instructions. MSVC sometimes emits `pushq %rbp` instruction as `0x40 0x55`, andit was not parsed correctly before.Reviewers: jasonmolenda, labathReviewed By: jasonmolenda, labathSubscribers: abidh, lldb-commitsTags: #lldbDifferential Revision: https://reviews.llvm.org/D57745llvm-svn: 353281

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Wed, 06 Feb 2019 08:48:30 +0000</pubDate>
        <dc:creator>Aleksandr Urakov &lt;aleksandr.urakov@jetbrains.com&gt;</dc:creator>
    </item>
<item>
        <title>2946cd70 - Update the file headers across all of the LLVM projects in the monorepo</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#2946cd70</link>
        <description>Update the file headers across all of the LLVM projects in the monorepoto reflect the new license.We understand that people may be surprised that we&apos;re moving the headerentirely to discuss the new license. We checked this carefully with theFoundation&apos;s lawyer and we believe this is the correct approach.Essentially, all code in the project is now made available by the LLVMproject under our new license, so you will see that the license headersinclude that license only. Some of our contributors have contributedcode under our old license, and accordingly, we have retained a copy ofour old license notice in the top-level files in each project andrepository.llvm-svn: 351636

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Sat, 19 Jan 2019 08:50:56 +0000</pubDate>
        <dc:creator>Chandler Carruth &lt;chandlerc@gmail.com&gt;</dc:creator>
    </item>
<item>
        <title>a6682a41 - Simplify Boolean expressions</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#a6682a41</link>
        <description>Simplify Boolean expressionsThis patch simplifies boolean expressions acorss LLDB. It was generatedusing clang-tidy with the following command:run-clang-tidy.py -checks=&apos;-*,readability-simplify-boolean-expr&apos; -format -fix $PWDDifferential revision: https://reviews.llvm.org/D55584llvm-svn: 349215

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Sat, 15 Dec 2018 00:15:33 +0000</pubDate>
        <dc:creator>Jonas Devlieghere &lt;jonas@devlieghere.com&gt;</dc:creator>
    </item>
<item>
        <title>4538ed3b - [x86] Fix issues with a realigned stack in MSVC compiled applications</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#4538ed3b</link>
        <description>[x86] Fix issues with a realigned stack in MSVC compiled applicationsSummary:This patch fixes issues with a stack realignment.MSVC maintains two frame pointers (`ebx` and `ebp`) for a realigned stack - oneis used for access to function parameters, while another is used for access tolocals. To support this the patch:- adds an alternative frame pointer (`ebx`);- considers stack realignment instructions (e.g. `and esp, -32`);- along with CFA (Canonical Frame Address) which point to the position next to  the saved return address (or to the first parameter on the stack) introduces  AFA (Aligned Frame Address) which points to the position of the stack pointer  right after realignment. AFA is used for access to registers saved after the  realignment (see the test);Here is an example of the code with the realignment:```struct __declspec(align(256)) OverAligned {  char c;};void foo(int foo_arg) {  OverAligned oa_foo = { 1 };  auto aaa_foo = 1234;}void bar(int bar_arg) {  OverAligned oa_bar = { 2 };  auto aaa_bar = 5678;  foo(1111);}int main() {  bar(2222);  return 0;}```and here is the `bar` disassembly:```push    ebxmov     ebx, espsub     esp, 8and     esp, -100hadd     esp, 4push    ebpmov     ebp, [ebx+4]mov     [esp+4], ebpmov     ebp, espsub     esp, 200hmov     byte ptr [ebp-200h], 2mov     dword ptr [ebp-4], 5678push    1111            ; foo_argcall    j_?foo@@YAXH@Z  ; foo(int)add     esp, 4mov     esp, ebppop     ebpmov     esp, ebxpop     ebxretn```Reviewers: labath, zturner, jasonmolenda, stella.stamenovaReviewed By: jasonmolendaSubscribers: abidh, lldb-commitsTags: #lldbDifferential Revision: https://reviews.llvm.org/D53435llvm-svn: 345577

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Tue, 30 Oct 2018 10:07:08 +0000</pubDate>
        <dc:creator>Aleksandr Urakov &lt;aleksandr.urakov@jetbrains.com&gt;</dc:creator>
    </item>
<item>
        <title>05097246 - Reflow paragraphs in comments.</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#05097246</link>
        <description>Reflow paragraphs in comments.This is intended as a clean up after the big clang-format commit(r280751), which unfortunately resulted in many of the commentparagraphs in LLDB being very hard to read.FYI, the script I used was:import textwrapimport commandsimport osimport sysimport retmp = &quot;%s.tmp&quot;%sys.argv[1]out = open(tmp, &quot;w+&quot;)with open(sys.argv[1], &quot;r&quot;) as f:  header = &quot;&quot;  text = &quot;&quot;  comment = re.compile(r&apos;^( *//) ([^ ].*)$&apos;)  special = re.compile(r&apos;^((([A-Z]+[: ])|([0-9]+ )).*)|(.*;)$&apos;)  for line in f:      match = comment.match(line)      if match and not special.match(match.group(2)):          # skip intentionally short comments.          if not text and len(match.group(2)) &lt; 40:              out.write(line)              continue          if text:              text += &quot; &quot; + match.group(2)          else:              header = match.group(1)              text = match.group(2)          continue      if text:          filled = textwrap.wrap(text, width=(78-len(header)),                                 break_long_words=False)          for l in filled:              out.write(header+&quot; &quot;+l+&apos;\n&apos;)              text = &quot;&quot;      out.write(line)os.rename(tmp, sys.argv[1])Differential Revision: https://reviews.llvm.org/D46144llvm-svn: 331197

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Mon, 30 Apr 2018 16:49:04 +0000</pubDate>
        <dc:creator>Adrian Prantl &lt;aprantl@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>f6208045 - The x86 instruction unwinder can be asked to disassemble non-instruction </title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#f6208045</link>
        <description>The x86 instruction unwinder can be asked to disassemble non-instruction blocks of memory, and if the final bytes of that block look like a longx86 instruction, it can cause the llvm disassembler to read past the endof the buffer.  Use the maximum allowed instruction length that we passto the llvm disassembler as a way to limit this to the size of the buffer.An example of how to trigger this is when lldb does a function call, itputs a breakpoint on the beginning of main() and uses that as the returnaddress from the function call.  When we stop at that location, lldb maytry to find the first frame up the stack.  Because this is on the firstinstruction of a function, it will get the word-size value at the stackpointer and assume that this was the caller&apos;s pc value.  But this is randomstack memory and could point to anything - an object in memory, somethingin the data section, whatever.  And if we have a symbol for that thing,we&apos;ll try to disassemble it.This was leading to infrequent crashes in customer scenarios; figured outwhat was happening with address sanitizer.&lt;rdar://problem/30463256&gt; llvm-svn: 307454

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Sat, 08 Jul 2017 00:12:15 +0000</pubDate>
        <dc:creator>Jason Molenda &lt;jmolenda@apple.com&gt;</dc:creator>
    </item>
<item>
        <title>8996346b - [UnwindAssembly/x86] Add support for &quot;lea imm(%ebp), %esp&quot; pattern</title>
        <link>http://172.16.0.5:8080/history/llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp#8996346b</link>
        <description>[UnwindAssembly/x86] Add support for &quot;lea imm(%ebp), %esp&quot; patternSummary:The instruction pattern:and $-16, %espsub $imm, %esp...lea imm(%ebp), %espappears when the compiler is realigning the stack (for example inmain(), or almost everywhere with -mstackrealign switch). The &quot;and&quot;instruction is very difficult to model, but that&apos;s not necessary, asthese frames are always %ebp-based (the compiler also needs a way torestore the original %esp). Therefore the plans we were generating forthese function were almost correct already. The only place we were doingit wrong were the last instructions of the epilogue (usually just&quot;ret&quot;), where we had to revert to %esp-based unwinding, as the %ebp hadbeen popped already.This was wrong because our &quot;distance of esp from cfa&quot; counter had pickedup the &quot;sub&quot; instruction (and incremented the counter) but it had notseen that the register was reset by the &quot;lea&quot; instruction.This patch fixes that shortcoming, and adds a test for handlingfunctions like this.I have not been able to tickle the compiler into producing a 64-bitfunction with this pattern, but I don&apos;t see a reason why it couldn&apos;tproduce it, if it chose to, so I add a x86_64 test as well.Reviewers: jasonmolenda, tberghammerSubscribers: lldb-commitsDifferential Revision: https://reviews.llvm.org/D34750llvm-svn: 306666

            List of files:
            /llvm-project-15.0.7/lldb/source/Plugins/UnwindAssembly/x86/x86AssemblyInspectionEngine.cpp</description>
        <pubDate>Thu, 29 Jun 2017 12:40:13 +0000</pubDate>
        <dc:creator>Pavel Labath &lt;labath@google.com&gt;</dc:creator>
    </item>
</channel>
</rss>
