[PATCH] D86049: RFC: Implement optional exportable wrapper function generation for objc_direct methods.

Puyan Lotfi via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 28 10:18:25 PDT 2022


plotfi added a comment.

In D86049#3821183 <https://reviews.llvm.org/D86049#3821183>, @plotfi wrote:

> In D86049#3819109 <https://reviews.llvm.org/D86049#3819109>, @mwyman wrote:
>
>> In D86049#3818981 <https://reviews.llvm.org/D86049#3818981>, @plotfi wrote:
>>
>>> @ahatanak I can revive some of what I was working on from https://reviews.llvm.org/D86049?id=285923 if we think we need a thunk for the checks as @rjmccall mentioned.
>>
>> I believe the generated direct methods already handle the null checks and class init in `CGObjCCommonMac::GenerateDirectMethodPrologue`, meaning the thunks aren't strictly necessary for the callee to handle them.
>>
>> Could the thunks instead allow us to have publicly-visible mangled names (something akin to the new selector stubs `_objc_msgSend$selectorName` but for `_objc_direct$Class_selectorName`) while leaving the actual impl name alone, letting the stack traces see normal ObjC symbol names?
>
> I think the square brackets are still problematic for linking, so is LLVM's handling of \01 (I believe).

@mwyman @ahatanak The mangling code change is to appease ld64 by the way:

https://github.com/apple-oss-distributions/ld64/blob/ld64-609/src/ld/Options.cpp#L1378-L1408

The wildCardMatch function does some symbol stripping off of '?' and '['. I alter ']' just for stylistic consistency however. And the dropping of prefix byte is so that you get the preceding underbar that all visible Darwin symbols seem to need to have (but I am not as certain on that one).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D86049



More information about the cfe-commits mailing list