[PATCH] record: Add wrappers for malloc() functions
Chris Johns
chrisj at rtems.org
Mon Sep 2 06:00:18 UTC 2019
On 2/9/19 3:37 pm, Sebastian Huber wrote:
> On 01/09/2019 04:29, Chris Johns wrote:
>> On 30/8/19 11:07 pm, Sebastian Huber wrote:
>>> Introduce new library librtemsrecordwrap.a which contains wrappers for
>>> operating system functions which produce entry/exit events.
>>
>> Why not enhance the trace linker to handle the recorder you have developed? It
>> has been able to wrap malloc and friends for a while now, it is just lacking
>> support for your recent tracing effort.
>>
>> Currently the trace linker does not uses the DWARF information to determine the
>> function signature as the DWARF support was added to the tool kit after it was
>> created and it has not been updated. The idea is to have DWARF provide the
>> signature of any suitable function so it can be wrapped.
>
> With the DWARF information at hand it should be possible to generate generic
> record events for function calls with up to 10 input arguments
> (RTEMS_RECORD_ARG_[0-9]) and up to 10 return values (RTEMS_RECORD_RETURN_[0-9]).
> We need two events for generic function entry/exit:
>
> RTEMS_RECORD_FUNCTION_ENTRY
> RTEMS_RECORD_FUNCTION_EXIT
>
> The event data for these two is the function address.
>
>>
>> I do not see any upside adding this library or wrapping specific functions
>> this way.
>
> The benefits are:
>
> * Slightly more compact (the event indicates the function and the data can be
> used for the caller address instead, the generic function entry/exit needs two
> events for this).
Could you please explain this, sorry I am not sure what this means? If the code
is what needs to be generated then why not generate?
> * It works without extra tools to build the application.
You need a bunch of extra tools to record the data and view it. The trace linker
is built and installed when the tools are built and installed.
> * It can be tested through the RTEMS test suite.
We lack better tests for our external tools and adding this would be good to
have. If you need a way to test the template adding it to a specific test would
work.
> * You don't need the ELF file to produce a report.
I recommend all users archive the ELF image of an executable with full debug
info because you can look into crash dumps. Without it you can only guess.
> The only strong argument is the first one. A future support in the trace linker
> could use the librtemsrecordwrap.a and only generate generic stubs for other
> functions.
It complicates the management of wrapping become you have some functions in a
special library and others being wrapped.
> Adding the DWARF support could be a GSoC 2020 project.
Sure, or it can be added if we have need.
As I said I do not see the value only a convenience for a specific use case for
some work flows. I do see confusion for other users, ie where is a function I
would like to trace. Maybe explaining the performance issue will help.
Chris
More information about the devel
mailing list