thurstond wrote:

> @thurstond So there is a significant overlap here with what my GSoC student 
> (@anthonyhatran) is working on right now (CC @MiB137). The project was 
> proposed 
> [here](https://llvm.org/OpenProjects.html#clang-improve-trapping-ubsan-2025).
> 
> During @anthonyhatran 's GSoC project he will be adding "trap reasons" to 
> UBSan traps so that they are easier to debug when the debugger is attached. 
> The intention is it this will be on by default and it will use the 
> `CGDebugInfo::CreateTrapFailureMessageFor` facility (originally created for 
> `__builtin_verbose_trap` and `-fbounds-safety`) which will be called in 
> `CodeGenFunction::EmitTrapCheck`.
> 
> Given that `CGDebugInfo::CreateTrapFailureMessageFor` and 
> `CGDebugInfo::CreateSyntheticInlineAt` use the same underlying mechanism 
> (fake inline frame) it seems that we might run into problems if both are used 
> at the same time because they will both try to add a fake inline frame to the 
> debug info on the trap instruction. Which ever fake inline frame ends on top 
> will claim it is inlined in to the other fake inline frame which probably 
> won't work in the debugger as intended.
> 
> I'd like to make sure we don't step on each others toes here.

:-)

> Am I right in understanding that the fake debug info added in this PR is off 
> by default (i.e. requires `fsanitize-annotate-debug-info=`)?

Yes, it is off by default.

> Do you have plans to switch it on by default?

I don't have plans to switch it on by default for upstream.

> What do you think the correct behavior should be when @anthonyhatran's 
> feature (which we intend to be on by default) is used with 
> `-fsanitize-annotate-debug-info=`? One option is to disable the feature that 
> @anthonyhatran's feature in that case.

I believe they will work together and provide slightly different information.

`-fsanitize-annotate-debug-info` is added during the SanitizerScope, so it 
encompasses all the UBSan-check instructions.

Since @anthonyhatran's feature modifies `CodeGenFunction::EmitTrapCheck`, it 
will only annotate a subset of the instructions.

IIUC if both are active and the debugger reaches the trap, 
`-fsanitize-annotate-debug-info` will have the second-top-most frame, while 
@anthonyhatran's feature will have the top-most frame, which is logically 
correct. If the debugger is at slightly prior to the trap, 
`-fsanitize-annotate-debug-info` will have the top-most frame.

https://github.com/llvm/llvm-project/pull/141997
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to