This is an archive of the discontinued LLVM Phabricator instance.

Revert the lsda change to scan_eh_tab.
ClosedPublic

Authored by logan on Jun 27 2014, 10:47 AM.

Details

Reviewers
thakis
Summary

The r211745 adds a new argument to scan_eh_tab(), i.e. lsda.
However, IMO, calling _Unwind_GetLanguageSpecificData() directly in
scan_eh_tab() was more intuitive and reduces several function call
to _Unwind_GetLanguageSpecificData() in __cxx_personality_v0().
Thus, I feel that it well be better to revert the lsda change.

This commit reverts the lsda change, and it is verified that
libcxxabi+libunwind still passes all test cases.

Diff Detail

Event Timeline

logan updated this revision to Diff 10938.Jun 27 2014, 10:47 AM
logan retitled this revision from to Revert the lsda change to scan_eh_tab..
logan updated this object.
logan edited the test plan for this revision. (Show Details)
logan added a reviewer: thakis.
logan added a subscriber: Unknown Object (MLST).
thakis accepted this revision.Jun 29 2014, 12:02 PM
thakis edited edge metadata.

Looks good, thanks. I checked that all libcxxabi tests still pass on Android with this.

(We all think that we changed this for a good reason, but since the tests pass and we can't remember the reason let's land this. Worst case, we'll change it back once a good reason appears.)

This revision is now accepted and ready to land.Jun 29 2014, 12:02 PM
logan closed this revision.Jun 30 2014, 5:44 AM

Thanks. Committed as r212037.

ajwong added a subscriber: ajwong.Jun 30 2014, 4:05 PM

IIRC, we might end up revisiting this later when we clean up cxxabi.h for
EHABI. In EHABI, there isn't a _Unwind_GetLanguageSpecificData() and this
modification was necessary to share code. We can revisit if/when someone
gets to cleaning up cxxabi.h.

logan added a comment.Jul 1 2014, 6:08 AM

Hi Albert,

IMO, we can simply use #ifdef to provide different code for ARM EHABI.

There should be similar problem with _Unwind_GetRegionStart(), and I feel
it will be
less straightforward to introduce more and more arguments to scan_eh_tab().

Sincerely,
Logan