labath added subscribers: MaskRay, krytarowski.
labath added a comment.

I don't really understand what's going on, but it seems that the lack of the 
`.note.GNU-stack` section causes the data section to be executable too (at 
least on my machine, anyway). Which means that using the data address will not 
help. :( I'm cc'ing some people who know more about dynamic linkers to see if 
anyone can explain this behavior...

One sure way to get a non-executable memory address would be to allocate 
something on the heap (in the C file), but I think @jankratochvil's approach of 
adding the .note.GNU-stack is simpler, and so far it seems that it works 
everywhere. The section directive will trip up the non-linux assemblers though, 
so it needs to be `#ifdef __linux__` (afaict `#ifdefs` work just fine in asm 
files when invoking the processing through clang)...



================
Comment at: lldb/test/Shell/Unwind/Inputs/thread-step-out-ret-addr-check.s:18
 
         add $0x10, %rsp
         ret
----------------
This should be 0x08, or you'll should push one more value to stack in asm_main.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D71789/new/

https://reviews.llvm.org/D71789



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to