<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/78119>78119</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [LLDB] mismatch behavior for step-inst-over 
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            new issue
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          XMadrid
      </td>
    </tr>
</table>

<pre>
    ## Descriptions

LLDB executes `ni` like a `si` command in dynamically generated machine code.


## Environment

lldb version: 17.0.2
clang: Homebrew clang version 17.0.2
OS: MacOS 13.5.1 (22G90)

## Reproduce steps

with code
```c
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>

int add() {
    return 100;
}

int main() {
    size_t binarySize = getpagesize();
 void *ptr = mmap(NULL, binarySize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0);
    if (ptr == MAP_FAILED) {
 perror("mmap");
        return 1;
    }
    memcpy(ptr, (void *)&add, binarySize);

    if (mprotect(ptr, binarySize, PROT_READ | PROT_EXEC) == -1) {
        perror("mprotect");
        munmap(ptr, binarySize);
        return 1;
    }

    int (* func)() = ptr;
    int result = func();
    printf("memcpy call result: %d\n", result);

    int unmapResult = munmap(ptr, binarySize);
    if (unmapResult != 0) {
        perror("munmap");
        return 1;
 }
    return 0;
}
```

build command: `clang test.c -g`

LLDB operations: 
```shell
(lldb) file scripts/test
Current executable set to '/scripts/test' (arm64).
(lldb) breakpoint set --file test.c --line 26
Breakpoint 1: where = test`main + 208 at test.c:26:18, address = 0x0000000100003ea0
(lldb) target stop-hook add --one-liner "disassemble --pc"
Stop hook #1 added.
(lldb) r
Process 37668 launched: '/scripts/test' (arm64)
test`main:
-> 0x100003ea0 <+208>: ldr    x8, [sp, #0x10]
    0x100003ea4 <+212>: blr x8
    0x100003ea8 <+216>: str    w0, [sp, #0xc]
    0x100003eac <+220>: ldr    w9, [sp, #0xc]
Process 37668 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100003ea0 test`main at test.c:26:18
   23       }
   24  
 25       int (* func)() = ptr;
-> 26       int result = func();
   27 printf("memcpy call result: %d\n", result);
   28  
   29 int unmapResult = munmap(ptr, binarySize);
(lldb) ni
test`main:
-> 0x100003ea4 <+212>: blr    x8
    0x100003ea8 <+216>: str    w0, [sp, #0xc]
    0x100003eac <+220>: ldr    w9, [sp, #0xc]
    0x100003eb0 <+224>: mov    x8, x9
Process 37668 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = instruction step over
    frame #0: 0x0000000100003ea4 test`main at test.c:26:18
   23       }
   24  
 25       int (* func)() = ptr;
-> 26       int result = func();
   27 printf("memcpy call result: %d\n", result);
   28  
   29 int unmapResult = munmap(ptr, binarySize);
(lldb) ni
memcpy call result: 100
dyld`start:
->  0x19a8e3f28 <+2236>: mov    x19, x0
 0x19a8e3f2c <+2240>: ldur   x8, [x29, #-0x48]
    0x19a8e3f30 <+2244>: ldr x8, [x8, #0x8]
    0x19a8e3f34 <+2248>: ldr    w0, [x8, #0x44]
Process 37668 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = instruction step over
    frame #0: 0x000000019a8e3f28 dyld`start + 2236
dyld`start:
->  0x19a8e3f28 <+2236>: mov    x19, x0
    0x19a8e3f2c <+2240>: ldur   x8, [x29, #-0x48]
    0x19a8e3f30 <+2244>: ldr    x8, [x8, #0x8]
    0x19a8e3f34 <+2248>: ldr    w0, [x8, #0x44]
(lldb) 
```

</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzsWN9zo74R_2vklx08QmAMD35wYqe9mdwlk3zb3tuNQLKtHggqicS5v76zAtvgOE3a3t30oZ4MGdjdz_767AqbW6u2WsoFmV2R2WrCW7erzeLrZy6MEpO8Fi8LwiLCIlhJWxjVOFVrS-iK0GV3vb1dXYHcy6J10gJJqFYkoVCq7xI43lt_X9RVxbUApUG8aF6pgpflC2ylloY7KaDixU5pCUUt5HTooL92Uaz1kzK1rqR2Q2lZihyepLGq1iRaQjif0inrZEXJ9RYf_rmuZG7kM_gnB_WR7t0jKn7mxd0jhNF0Ng2BsJSxP2WUsOxCPA-yMbVoCwnWyWZUmGfldj6b_mFCu7_iCKB0UbZCAomurROqnu5ItL4kbbWyTrwpts4ovX1b_GIJu8HyD1X8VWkHXAjCUsIyIPOr7jEAgJGuNRpCSknUPybz1blxxZW-ZG3VD_nNQa40Ny-P6gcGsoKtdA3fShR2RkdoeKqVAMKWjTNetap4Q1j65S-3t4RdD4Dw7v7h7o9vD-vlCsi8v_vbw6c_1ij7vLz_tvxy98WL8Ob-4dNfl50sCPFKR44BQG2wy71ndI5mN8tPt-vVOLFGGlMbHzrrAmTnWMPSjQTH4uFNJauieemcYkiEpYcCICBLfFPGaZ_8nEdeNaZ2snAnvHfLtf66vva5dQljYc46iJ9RvkcnF3OuWt117EIE_26FBvlpB979EjatLnxt0j5uQE-jNmoHRtq2dF7cGaTn7hujtNv0Ofk2AK6i3hLHn7CZILNr7TO9Pggu11878Ik_nPx-vBJd90b2LEQI-n43eicf5N-IfL340lwfdtQwz7xVpTjsb1-fhHYb1EnrpgUE2zMLfyTUDS52f1qgzRjf7mRZHnZVitsbM96oUkJ3yuDGQvhO57o1RmrXHzM8RzXpwNVA2JywmzMbNse6clMlMWHZ9JWf3Ej-vamxeQgTBN7xIZugxGOIJZ3Z1Uk3xESed9J0y8y7SihuQCDsChhNgbsehkRLlpBoGaZIAS6EkdZ6M7qn3SfESyQ5fRWf42YrHVhXN8Gurr-jPQRBraWPzQBhTCjLrZUV1iIImgKp4HEeXd2AtyIsCtFUitclMN2Te1MXGFg0T5IUSt7qYie7Jr9f2A5iUAYS9QQISLQGuj9miKcQYVeMpnj-REsohUEm7n11yOzKNt0WjNCIzAZkPaHEB5SQ9Sh5aRDigm561E16Xeu8x2f62mPxhsPiAMLoOOzn7F-BjGuKTWykODRgCW5nJBe-OWj8j1a2HZ8Imxd1NeVNU8opljPoVH0nrj0QGMltrb36gMThNDzFvzG8kj4mjPg120a8vcTXAxKL-nUyXB4shn6Wgc16-YeXtKcFSwZm765rNv8ZCxuB0mPgACz7Lzb3YIq0-vAMXGZvNwP_YwQegeTH4WVxD1LVT6fh3We_lfVKW2faAs8V_8YN9ZM0HyZ__H_y_3zyXw4Lvzd4sXgpBZ74jhs3Hg4kWcZTGW3Yke4sSs5YFnqu7nu0gc2J3fGJ3q0ZHit7lvX8Dug-Ts8Z3gFFA4bHgzk5oaTHIXkLIj5BnB1xx3kdoMTx7z4s_sOxOXZn2MTuZQcb9Sv6OyzrL2_xCOgXdnkwNRdftCdiEYksyvhELsI5nbE0jSmb7BZxEYkwjuYspnEsaCI3Mgw3ORVUFEmWJBO1YJTFNAxnNAojxqZ5nOW0ENksFixJsg2Jqay4Kqdl-VRNa7OdKGtbuZinYZhNSp7L0vpffxjT8hm8EFfJbDUxC7QJ8nZrSUxLZZ09oTjlSv-zEb7sk9kKKmUr7ood5HLHn1RtYFMbT7YA2Rcg42DSmnKxc67BLwWE3RB2s1Vu1-bToq4Iu0H4_l_QmPrv_vvmjQ8KX0J90P8MAAD__yAUChs">