RFA/RFC: Add stack recursion limit to libiberty's demangler
Nick Clifton
nickc@redhat.com
Fri Nov 30 10:27:00 GMT 2018
Hi Jakub,
>> Also - Tom and Pedro have raised the issue that the patch introduces
>> a new static variable to the library that is not thread safe. I am
>> not sure of the best way to address this problem. Possibly the
>> variable could be made thread local ? Are there any other static
>
> Please don't.
OK. :-)
> Most of the demangler functions pass around a pointer to a struct with
> context, can't this be added in there?
Not without modifying the current demangling interface. The problem is
that the context structure is created for each invocation of a demangling
function (from outside the library), and no state is preserved across
demangling calls. Thus in order to have a recursion limit which is
configurable by the caller, you either need to have a global variable or
else extend the demangling interface to include a recursion limit parameter.
I did consider just having a fixed limit, that the user cannot change, but
I thought that this might be rejected by reviewers. (On the grounds that
different limits are appropriate to different execution environments).
Note - enabling or disabling the recursion limit is controlled by a separate
feature of the proposed patch, ie the new DMGL_RECURSE_LIMIT flag in the
options field of the cplus_demangleXXX() functions. But there is not enough
room in the options field to also include a recursion limit value.
Cheers
Nick
More information about the Binutils
mailing list