Hi,
Couple of questions here about perf/OpenCSD and dynamic code.
- what's the status of decode for arbitrarily loaded/unloaded shared objects? I.e. decode where the code is in an ELF binary and we just need to know which binaries are at what address and at what time. Can we match up mmap events with the captured ETM trace to do the decode, even with modules being unloaded and overwritten by other modules?
- what's the status of decode for JITted code? Here you'd need to capture the actual contents of the code cache, to be able to decode it.
Are these ready to go or is there still some work to do?
Thanks,
Al
Hello Al,
On 29 March 2017 at 13:32, Al Grant Al.Grant@arm.com wrote:
Hi,
Couple of questions here about perf/OpenCSD and dynamic code.
- what's the status of decode for arbitrarily loaded/unloaded shared objects?
I.e. decode where the code is in an ELF binary and we just need to know which binaries are at what address and at what time. Can we match up mmap events with the captured ETM trace to do the decode, even with modules being unloaded and overwritten by other modules?
It depends on what you're looking for. If you want to trace code in a kernel module that was just loaded, that won't work. On the flip side it is possible to specify filters on user space libraries and binaries. It is just a matter of specifying the offset to start tracing from and the infrastructure will do the rest for you.
- what's the status of decode for JITted code? Here you'd need to capture the
actual contents of the code cache, to be able to decode it.
That isn't supported.
Regards, Mathieu
Are these ready to go or is there still some work to do?
Thanks,
Al _______________________________________________ CoreSight mailing list CoreSight@lists.linaro.org https://lists.linaro.org/mailman/listinfo/coresight
It depends on what you're looking for. If you want to trace code in a kernel module that was just loaded, that won't work. On the flip side it is possible to specify filters on user space libraries and binaries. It is just a matter of specifying the offset to start tracing from and the infrastructure will do the rest for you.
Thanks, I wasn't thinking of trace filtering at source, more about decoding the trace once collected. For decode you need to know which ELF shared objects are loaded where and when. An application which used some kind of plugins might dynamically load shared objects quite a while after it started and might even unload objects and load others at the same address. I am just wondering if the mmap() records captured by perf, are used when decoding trace, so that the decoder knows which ELF files were loaded at any given time. And if so, are there any problems with time alignment.
Or is the decode just done using the mappings at process end?
- what's the status of decode for JITted code? Here you'd need to
capture the actual contents of the code cache, to be able to decode it.
That isn't supported.
Ok, thanks.
Al
Regards, Mathieu
Are these ready to go or is there still some work to do?
Thanks,
Al _______________________________________________ CoreSight mailing list CoreSight@lists.linaro.org https://lists.linaro.org/mailman/listinfo/coresight
On 29 March 2017 at 14:54, Al Grant Al.Grant@arm.com wrote:
It depends on what you're looking for. If you want to trace code in a kernel module that was just loaded, that won't work. On the flip side it is possible to specify filters on user space libraries and binaries. It is just a matter of specifying the offset to start tracing from and the infrastructure will do the rest for you.
Thanks, I wasn't thinking of trace filtering at source, more about decoding the trace once collected. For decode you need to know which ELF shared objects are loaded where and when. An application which used some kind of plugins might dynamically load shared objects quite a while after it started and might even unload objects and load others at the same address. I am just wondering if the mmap() records captured by perf, are used when decoding trace, so that the decoder knows which ELF files were loaded at any given time. And if so, are there any problems with time alignment.
The above scenario should work, as long as mmap() events are generated. For time alignment issues you would have to run your own tests in order to really iron out the context applicable to the context you are thinking about.
Or is the decode just done using the mappings at process end?
- what's the status of decode for JITted code? Here you'd need to
capture the actual contents of the code cache, to be able to decode it.
That isn't supported.
Ok, thanks.
Al
Regards, Mathieu
Are these ready to go or is there still some work to do?
Thanks,
Al _______________________________________________ CoreSight mailing list CoreSight@lists.linaro.org https://lists.linaro.org/mailman/listinfo/coresight