Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2014-08-22 | Made activate_latent_in() iterations much more efficient | Dima Kogan | 3 | -71/+33 | |
Previously activate_latent_in() iterations looked like for(export names in lib1) // hash table iteration { for(symbol names in lib2) // list iteration { if(names equal && libsym->latent) { proc_activate_latent_symbol(proc, libsym) } } } This is inefficient both due to the double iteration but also since iterating over a hash table in slow (have to look through all cells, even empty ones). This patch turns this logic into for(symbol names in lib2) // list iteration { if(name in lib1 export names && libsym->latent) // hash table lookup { proc_activate_latent_symbol(proc, libsym) } } So there's no more double iteration, and the hash iteration was turned into a hash lookup. Much better. | |||||
2014-08-22 | removed needless #include | Dima Kogan | 1 | -1/+0 | |
2014-08-22 | library_exported_names_each_alias(), library_exported_names_each() now ↵ | Dima Kogan | 4 | -40/+52 | |
restartable These function now takes a *start_after, and return a pointer to the first failing key, like the other ltrace iterators | |||||
2014-08-22 | added forgotten free(), forgotten return | Dima Kogan | 1 | -1/+4 | |
2014-08-22 | clarified some int return code checking | Dima Kogan | 1 | -6/+6 | |
2014-08-22 | whitespace 'if(' -> 'if (' | Dima Kogan | 1 | -14/+14 | |
2014-08-22 | renamed _dtor_* and _clone_* functions to remove the leading _ | Dima Kogan | 1 | -9/+9 | |
2014-08-22 | DWARF prototypes are now generated with both the plain and the linkage names | Dima Kogan | 1 | -13/+35 | |
If a die has a DW_AT_linkage_name, I now use it: this is required for C++ code, in particular. I use the plain name regardless, since sometimes the exported symbol corresponds to the plain name, NOT the linkage name. For instance I see this on my Debian/sid amd64 box. In its libc, the linkage name of __nanosleep is __GI___nanosleep, but the export is __nanosleep | |||||
2014-08-22 | We now use known prototypes for all aliased symbols (same address) | Dima Kogan | 6 | -76/+346 | |
Some libraries have multiple names for the same function. Prior to this patch, it was possible to define a prototype for a symbol, and not have ltrace use it because it saw a different symbol be called. libc is a common source of this. For instance (on my amd64 Debian box) it defines the nanosleep symbol as both 'nanosleep' and '__GI___nanosleep', at the same address. If a calling library calls '__GI___nanosleep', then an ltrace prototype for 'nanosleep' would not be used, even though it should apply to this call | |||||
2014-08-22 | dict_hash_uint64: do not ignore upper 32 bits of the quantity | Petr Machata | 1 | -6/+4 | |
2014-08-22 | added hash and equality functions for uint64_t | Dima Kogan | 2 | -0/+23 | |
The hash function is identical to the 32-bit signed int hash function. This function is unideal for such extended use, but is sufficient for now | |||||
2014-08-22 | added NEWS, CREDITS info about the new DWARF prototyping code | Dima Kogan | 2 | -0/+7 | |
2014-08-22 | Added manpage section giving examples of -x, -e and -l usage | Dima Kogan | 1 | -17/+121 | |
2014-08-22 | Making sure to not double-examine the same DWARF CU | Dima Kogan | 6 | -16/+27 | |
2014-08-22 | CREDITS update for ppc64el support | Thierry Fauck | 1 | -0/+4 | |
Signed-off-by: Thierry Fauck <thierry@linux.vnet.ibm.com> | |||||
2014-08-22 | In ppc-lwarx.exp, Dwarf backend may resolve atomic_add's prototype | Petr Machata | 1 | -4/+4 | |
- in which case the patterns are wrong. Change the pattern to match both cases. | |||||
2014-08-22 | Support for powerpc64 arch ppc64el | Thierry Fauck | 7 | -36/+356 | |
Signed-off-by: Thierry Fauck <thierry@linux.vnet.ibm.com> Add support for ppc64le proc and ELF ABIv2. Provides support for irelative and wchar | |||||
2014-08-22 | I only build the dwarf_prototypes if we have libdw | Dima Kogan | 2 | -3/+9 | |
2014-08-22 | removed needless cast | Dima Kogan | 1 | -1/+1 | |
2014-08-22 | added forgotten error checking to some ltrace calls | Dima Kogan | 1 | -12/+35 | |
2014-08-22 | fixed typo | Dima Kogan | 1 | -1/+1 | |
2014-08-22 | I only explicitly look at sizeof(long) if it differs from sizeof(int) | Dima Kogan | 1 | -8/+11 | |
If they're the same, checking for both in a switch() is a compile error | |||||
2014-08-22 | style whitespace changes | Dima Kogan | 1 | -25/+25 | |
- * with name, not type - if (blah), not if( blah ) | |||||
2014-08-22 | whitespace style change | Dima Kogan | 4 | -259/+309 | |
- Tabs should be 8 characters. - Lines should be no longer than 80 characters - Pointer star belongs to the variable, not the type - Lines shouldn't be formatted into tables arbitrarily - if and while should get a space before the paren | |||||
2014-08-22 | a bit more debug printing | Dima Kogan | 1 | -0/+1 | |
2014-08-22 | added a bit more diagnostic printing | Dima Kogan | 2 | -0/+5 | |
2014-08-22 | fixed memory leaks | Dima Kogan | 1 | -22/+1 | |
Two leaks plugged: 1. value used for array-length 2. prototype return type | |||||
2014-08-22 | fixed prototype memory leak | Dima Kogan | 1 | -27/+18 | |
protolib_add_prototype() makes a copy of the prototype, so allocating a new pointer there was an error | |||||
2014-08-22 | removed notes | Dima Kogan | 1 | -13/+0 | |
2014-08-22 | removed, commented testing code | Dima Kogan | 1 | -25/+1 | |
2014-08-22 | dwarf diagnostic output now controlled by -D | Dima Kogan | 1 | -8/+4 | |
2014-08-22 | fixed broken diagnostic output | Dima Kogan | 1 | -5/+5 | |
2014-08-22 | reworked error and memory handling | Dima Kogan | 1 | -175/+363 | |
I now longer exit() on the slightest sign of trouble, nor do I leak all my heap memory allocations | |||||
2014-08-22 | unknown pointers now return void*, not void | Dima Kogan | 1 | -1/+1 | |
2014-08-22 | DWARF parser now looks for exported types | Dima Kogan | 1 | -1/+1 | |
I now pass true to protolib_lookup_type(). Thus the user can now define a type in .ltrace.conf, and it would be picked up | |||||
2014-08-22 | renamed type_hash -> type_dieoffset_hash | Dima Kogan | 1 | -30/+30 | |
2014-08-22 | type_hash is no longer global | Dima Kogan | 1 | -34/+46 | |
2014-08-22 | I now read the DWARF data in addition to the .conf files | Dima Kogan | 1 | -1/+3 | |
Previously if a .conf file for a library was available, the corresponding DWARF data would not be parsed. Now I use one to complement the other | |||||
2014-08-22 | If a functions is defined in a .conf, I do not parse the DWARF | Dima Kogan | 1 | -7/+6 | |
Previously I would parse the DWARF data for such a function, but I wouldn't use the result. Now I don't even parse | |||||
2014-08-22 | types defined in .conf files now take precedence over DWARF types | Dima Kogan | 1 | -14/+29 | |
2014-08-22 | style whitespace | Dima Kogan | 1 | -64/+64 | |
2014-08-22 | import_DWARF_prototypes() now takes JUST a lib argument | Dima Kogan | 3 | -5/+11 | |
2014-08-22 | moved DWARF prototype reading to library_get_prototype() | Dima Kogan | 4 | -8/+26 | |
2014-08-22 | updated error message to reflect the new dwfl use case | Dima Kogan | 1 | -1/+1 | |
2014-08-22 | whitespace | Dima Kogan | 1 | -2/+2 | |
2014-08-22 | Stylistic refactoring. No functional changes | Dima Kogan | 1 | -98/+93 | |
2014-08-22 | I now import functions using their linkage name | Dima Kogan | 1 | -1/+14 | |
This is required for C++ methods | |||||
2014-08-22 | enums are no longer assumed to have type 'int' | Dima Kogan | 1 | -18/+40 | |
2014-08-22 | reworked attr_numeric() to report failures | Dima Kogan | 1 | -41/+71 | |
This whole file is thus copyright me | |||||
2014-08-22 | added a disabled stub for complex float support | Dima Kogan | 1 | -0/+17 | |