- User Since
- Jan 9 2020, 2:26 PM (123 w, 4 d)
Dec 4 2020
Dec 3 2020
Dec 1 2020
Nov 23 2020
Nov 19 2020
Initially, I thought _fini is a label in the test case. However, I found, using readelf, that _fini isn't a label in the test case ~/src/elftoolchain/test/elfdump/ts/dso2/test.so. I found it in the symbol table (symtab) instead. Currently, symtab is not checked by addr2line so in order to pass this test a new feature to check symtab is needed.
This patch does help resolve labels addr. For example, when _init is in a DW_TAG_label:
Nov 10 2020
Cleaned up the code/design to make the tool easier to use.
Nov 6 2020
I added functions to find missing ioctl calls. The output has become significantly larger and kind of ugly. I wonder if it's a good idea to let user choose which part they want printed out (normal syscalls vs ioctl.
Here's a sorted version
Should the output list be sorted?
It prints out missing system calls.
Nov 5 2020
Nov 2 2020
Oct 30 2020
Oct 29 2020
Oct 27 2020
Oct 26 2020
Oct 23 2020
Oct 22 2020
Moved readelf revision here
I'll put readelf.c and usr.bin/readelf/Makefile into a separate review
@emaste Yup, I can do that.
Oct 21 2020
Oct 20 2020
Oct 19 2020
Added Version.map diff
From my understanding, doing work in the user interface functions is the same as doing work in user program, as they are the same process. It won't be allowed if program is in cap mode.
exec_command is called by Casper which is a different process, so doing work there is desirable.
It's the pattern I've seen from other Casper services.
I could be wrong though, would appreciate if someone could confirm.
Note that in Casper service user interface and Casper backend are separate processes. Casper does all the work and the user interface simply passes and receives parameters.
One issue I noticed is that the code is doing the actual work (closing fds) in the user interface commands cap_exec_open() and cap_exec_close(), this should be done from exec_command(), perhaps via functions cap_exec_command_open() and cap_exec_command_close(). cap_fileargs.c has a good example of how to do this.
Do you plan to add some test cases?
Oct 8 2020
Oct 7 2020
Oct 6 2020
Sep 22 2020
Sorry, that was my bad. It took me some times to put the diff file together since it was an older patch.
Sep 19 2020
-Added decompression function for Elf_Data.
-Add functions to get compression header.
Sep 15 2020
Sep 9 2020
Addressed the comments.
Sep 8 2020
I think all the comments are addressed. Is there anything else that needs to be fixed? Thanks
Apr 24 2020
Please ignore lines 2595-2598 in readelf.c. It was not meant to be added.
Apr 21 2020
Apr 16 2020
Apr 7 2020
Mar 20 2020
Mar 11 2020
Yes that would be great. Please go ahead.
Mar 6 2020
Any further comments? If not, feel free to accept this revision.
Feb 28 2020
Feb 21 2020
It looks like it's just the allocated memory for labels, as most of the memory used by check_labels are given back (freed) according to the picture.
Kernel probably has a lot of assembly files with a lot of labels. Is memory usage a problem?
Check labels seems to be using a lot of memory (20 Mb). There might be a bug somewhere. I'm looking into it.
Feb 19 2020
Added Makefile changes.
Feb 18 2020
Feb 11 2020
I added in line 482
if (lopc == curlopc) return (DW_DLV_ERROR);
for the case when DW_AT_Range is present so the program stops when we can't find an address.
Added comment on check_range()
Feb 7 2020
-f and -i flag outputs are now the same as original.
collect_func() needs gdb to get function name, so I added a field a CU to store this info in the cache.
- I fixed the issues mentioned in the code comments.
- I tested the performance with curlopc and with resetting cu to first cu every time(v2), below is the results:
v1 is addr2line with curlopc
v2 is the version that resets cu to first cu for every translation
10000seq stores 10k sorted addr of first 20k kernel addr.
1000rand stores 1k rand addr in all of kernel addr
r10000seq is 10000seq reversed
Which version should I keep?
- I didn't test with -f -i before. And having tested it just now I realized the output between the old version and my patch looks different. I'm looking into it now.