ychen added a comment.

In D132592#3751561 <https://reviews.llvm.org/D132592#3751561>, @aaron.ballman 
wrote:

> In D132592#3749567 <https://reviews.llvm.org/D132592#3749567>, @ychen wrote:
>
>> Thanks for taking a look!
>>
>> In D132592#3749261 <https://reviews.llvm.org/D132592#3749261>, 
>> @aaron.ballman wrote:
>>
>>> Do we have any evidence that users need this level of control or will 
>>> understand how to properly use the attribute? The command line option makes 
>>> sense to me because it's an all-or-nothing flag, but I'm not certain I 
>>> understand the need for per-function control.
>>
>> https://github.com/llvm/llvm-project/blob/064a08cd955019da9130f1109bfa534e79b8ec7c/llvm/include/llvm/IR/Function.h#L639-L641,
>>  per-function unwind table entry depends on both nounwind and uwtable. We 
>> have nothrow attribute for nounwind but not nouwtable for uwtable. With 
>> this, a user could use function attributes to control unwind table entry 
>> generation which could only be achieved by inline assembly or writing 
>> assembly files directly. I'd consider this a companion of nothrow. So making 
>> them both per-function attribute seems natural?
>>
>>> Also, if a user gets this wrong (applies the attribute where they 
>>> shouldn't), what is the failure mode (does it introduce any exploitable 
>>> behavior)?
>>
>> The flag may only suppress unwind table emission instead of causing more, 
>> the lack of unwind table may only stop control flow rather than giving it 
>> more freedom. So I think this is safe from a security perspective. Using it 
>> wrong may cause unnecessary crashes just like any other memory bugs, but not 
>> a malicious binary.
>
> Thank you for the explanations, that helped. :-)
>
> You're missing all of the semantic tests (that the attr takes no arguments, 
> only applies to function-like things, etc). Also, the subject you picked is 
> `FunctionLike` so you should have some test coverage showing how this works 
> when calling through a function pointer with the attribute (or you should 
> pick a more appropriate subject if that one is wrong).

Yes, `Function` is more proper than `FunctionLike`.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D132592

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

Reply via email to