[PATCH] D38680: [libunwind] Fix handling of DW_CFA_GNU_args_size

Reid Kleckner via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 12 14:07:57 PDT 2017


rnk accepted this revision.
rnk added a comment.

lgtm



================
Comment at: src/libunwind.cpp:188
+      co->getInfo(&info);
+      pint_t orgArgSize = (pint_t)info.gp;
+      uint64_t orgFuncStart = info.start_ip;
----------------
mstorsjo wrote:
> rnk wrote:
> > I think it makes sense to have this here: the contract is that if the personality sets the IP when the cursor pointed to a PC with a non-zero arg size, we should adjust SP for the personality.
> > 
> > However, it's not clear to me that we don't need the same adjustment when stepping across frames that use arg size without a frame pointer.
> When stepping across frames, the gnu args size is already included in, as part of the CFA offset, so with the current code, it steps too far.
OK, yes, now I see the code that does that. :)


https://reviews.llvm.org/D38680





More information about the cfe-commits mailing list