On Thu, Aug 15, 2024 at 2:42 PM Eduard Zingerman <eddyz87@xxxxxxxxx> wrote: > > On Thu, 2024-08-15 at 14:15 -0700, Andrii Nakryiko wrote: > > [...] > > > > +/* program entry for main(), regular function prologue */ > > > +__jit_x86(" endbr64") > > > +__jit_x86(" nopl (%rax,%rax)") > > > +__jit_x86(" xorq %rax, %rax") > > > +__jit_x86(" pushq %rbp") > > > +__jit_x86(" movq %rsp, %rbp") > > > > I'm a bit too lazy to fish it out of the code, so I'll just ask. > > Does matching of __jit_x86() string behave in the same way as __msg(). > > I.e., there could be unexpected lines that would be skipped, as long > > as we find a match for each __jit_x86() one? > > Yes, behaves same way as __msg(). > > > Isn't that a bit counter-intuitive and potentially dangerous behavior > > for checking disassembly? If my assumption is correct, maybe we should > > add some sort of `__jit_x86("...")` placeholder to explicitly mark > > that we allow some amount of lines to be skipped, but otherwise be > > strict and require matching line-by-line? > > This is a valid concern. > What you suggest with "..." looks good. I'd add just that for now. _not and _next might be useful in the future, but meh. > Another option is to follow llvm-lit conventions and add > __jit_x86_next("<whatever>"), which would only match if pattern > is on line below any previous match. > (And later add __jit_x86_next_not, and make these *_not, *_next > variants accessible for every __msg-like macro). > > Link: https://llvm.org/docs/CommandGuide/FileCheck.html#the-check-next-directive > > [...] >