José Bollo [Wed, 17 Dec 2014 10:17:33 +0000 (11:17 +0100)]
Fix bug in `expr_clone`
On allocation failure of nhls for EXPR_OP_CALL2,
EXPR_OP_UP, EXPR_OP_CALL1, the correct behaviour,
that is returning -1, was only effective if
node->kind == EXPR_OP_CALL2 and node->u.call.own_rhs
This change implements the correct behaviour.
It also solves a warning when compiling with gcc4.9 that
broke integration when compiling with -Werror: the compiler
was hurt to use nrhs that he suspected (wrongly) to be
uninitialised.
Change-Id: I184fea5e121d38fa1df5d0a8680edf51e9fff1a8
Signed-off-by: José Bollo <jose.bollo@open.eurogiciel.org>
Chanho Park [Fri, 22 Aug 2014 11:40:09 +0000 (20:40 +0900)]
packaging: update to 0.7.91
Change-Id: I2e383896f948a19dcd5ba07b8e7f60b6de0c5c74
Signed-off-by: Chanho Park <chanho61.park@samsung.com>
Anas Nashif [Wed, 31 Jul 2013 16:52:41 +0000 (12:52 -0400)]
do not error on warnings
Alexandru Cornea [Mon, 1 Jul 2013 17:10:06 +0000 (20:10 +0300)]
resetting manifest requested domain to floor
Anas Nashif [Fri, 10 May 2013 05:03:25 +0000 (01:03 -0400)]
do not depend on dejagnu
Anas Nashif [Tue, 15 Jan 2013 16:39:26 +0000 (08:39 -0800)]
Update to 0.7.2
Anas Nashif [Tue, 15 Jan 2013 16:33:50 +0000 (08:33 -0800)]
Update to 0.7.2
Anas Nashif [Sun, 9 Dec 2012 00:10:58 +0000 (16:10 -0800)]
do not run tests
Anas Nashif [Fri, 7 Dec 2012 21:51:33 +0000 (13:51 -0800)]
clean up spec
Anas Nashif [Tue, 13 Nov 2012 15:29:26 +0000 (07:29 -0800)]
demangle lib.cstdlib
Anas Nashif [Tue, 13 Nov 2012 15:28:55 +0000 (07:28 -0800)]
add packaging
Petr Machata [Tue, 12 Aug 2014 08:01:09 +0000 (10:01 +0200)]
Guard a dwarf_prototypes.h include with a conditional
- Thanks to Kai Noda for reporting this.
Petr Machata [Fri, 8 Aug 2014 22:04:45 +0000 (00:04 +0200)]
Mention support of powerpc64le ELFv2 in README and NEWS
Petr Machata [Fri, 8 Aug 2014 21:26:55 +0000 (23:26 +0200)]
PowerPC: convert ELFv2 conditionals form preprocessor to plain conditions
- The reason being that this way, all of the code is exposed all the
time, which should make future refactoring easier. There's nothing
that needs hiding, no system-specific constants or such.
Petr Machata [Fri, 8 Aug 2014 21:26:30 +0000 (23:26 +0200)]
Fix coding style in PowerPC's arch.h
Petr Machata [Fri, 8 Aug 2014 21:10:21 +0000 (23:10 +0200)]
Fix bugs in fetch backend of powerpc64le
- One bug was in a function that returned a small structure and whose
first argument was a pointer that pointed to stack. The old code
assumed that meant that the structure was returned by implicit
reference instead of in registers.
- Another was in passing large HFA's (larger than 8 elements) in
arguments, and in returning HFA's.
Petr Machata [Fri, 8 Aug 2014 15:09:58 +0000 (17:09 +0200)]
Recognize powerpc64le in configure
Petr Machata [Fri, 8 Aug 2014 15:05:46 +0000 (17:05 +0200)]
Fix an error path problem introduced in last commit
Petr Machata [Fri, 8 Aug 2014 14:53:41 +0000 (16:53 +0200)]
In config files, allow whitespace between identifier and opening paren
Dima Kogan [Sat, 26 Jul 2014 04:20:06 +0000 (21:20 -0700)]
minor whitespace-only style fix
Dima Kogan [Mon, 21 Jul 2014 20:50:47 +0000 (13:50 -0700)]
fixed testsuite typos: ltarce -> ltrace
Petr Machata [Thu, 31 Jul 2014 09:45:10 +0000 (11:45 +0200)]
Add a missing license blurb
Petr Machata [Thu, 31 Jul 2014 09:44:58 +0000 (11:44 +0200)]
Normalize some include guards
Petr Machata [Thu, 31 Jul 2014 09:37:09 +0000 (11:37 +0200)]
Drop uses of #pragma once
Alexandre Belloni [Tue, 29 Jul 2014 11:04:21 +0000 (13:04 +0200)]
PPC: fix PPC32 build
Compilation on PPC32 fails because STACK_FRAME_OVERHEAD is never defined
in arch.h.
Define it to 112 on that platform to restore the same behaviour as
before commit
eea4ad2cce289753aaa35b4e0258a76d8f8f367c.
Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Petr Machata [Fri, 25 Jul 2014 11:03:59 +0000 (13:03 +0200)]
Copy struct library.should_activate_latent on clone
- I don't think it makes actual difference, as the only consumer of this
symbol is proc_add_library, and that's not called from proc_clone (the
clone is done by directly iterating the library list). But the code is
more obviously right this way.
Petr Machata [Fri, 25 Jul 2014 10:40:52 +0000 (12:40 +0200)]
Fix cloning of libraries with Dwarf support
- struct library::dwfl_module was left unitialized after
library_clone. Garbage was kept in, which prevented proper
initialization later, and resulted in segmentation violation.
Dima Kogan [Sat, 12 Jul 2014 00:04:48 +0000 (17:04 -0700)]
I now always build the export list
Previously I only built the export list when tracing with -l. Since I was using
this export list to resolve aliased symbols in addition to setting breakpoints,
this aliased symbol resolution was only working with -l. I now always build the
export list to make aliased symbol resolution always work.
I now have a separate variable to control whether we should activate latent
symbols or not; previously the existence of the export list was used to make
this determination.
Furthermore populate_this_symtab() now takes an extra argument to indicate that
ONLY the export list should be filled in
Dima Kogan [Thu, 10 Jul 2014 23:02:51 +0000 (16:02 -0700)]
un-consted some variables to build with older (<= gcc-4.6) compilers
Dima Kogan [Wed, 9 Jul 2014 08:09:33 +0000 (01:09 -0700)]
Made activate_latent_in() iterations much more efficient
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.
Dima Kogan [Wed, 9 Jul 2014 07:45:42 +0000 (00:45 -0700)]
removed needless #include
Dima Kogan [Thu, 26 Jun 2014 05:22:12 +0000 (22:22 -0700)]
library_exported_names_each_alias(), library_exported_names_each() now restartable
These function now takes a *start_after, and return a pointer to the first
failing key, like the other ltrace iterators
Dima Kogan [Thu, 26 Jun 2014 04:50:15 +0000 (21:50 -0700)]
added forgotten free(), forgotten return
Dima Kogan [Thu, 26 Jun 2014 04:50:00 +0000 (21:50 -0700)]
clarified some int return code checking
Dima Kogan [Thu, 26 Jun 2014 00:27:20 +0000 (17:27 -0700)]
whitespace 'if(' -> 'if ('
Dima Kogan [Thu, 26 Jun 2014 00:22:28 +0000 (17:22 -0700)]
renamed _dtor_* and _clone_* functions to remove the leading _
Dima Kogan [Tue, 3 Jun 2014 00:43:16 +0000 (17:43 -0700)]
DWARF prototypes are now generated with both the plain and the linkage names
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
Dima Kogan [Mon, 2 Jun 2014 09:01:57 +0000 (02:01 -0700)]
We now use known prototypes for all aliased symbols (same address)
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
Petr Machata [Tue, 17 Jun 2014 15:06:00 +0000 (17:06 +0200)]
dict_hash_uint64: do not ignore upper 32 bits of the quantity
Dima Kogan [Mon, 2 Jun 2014 06:37:28 +0000 (23:37 -0700)]
added hash and equality functions for uint64_t
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
Dima Kogan [Mon, 12 May 2014 00:02:16 +0000 (17:02 -0700)]
added NEWS, CREDITS info about the new DWARF prototyping code
Dima Kogan [Tue, 3 Jun 2014 06:00:50 +0000 (23:00 -0700)]
Added manpage section giving examples of -x, -e and -l usage
Dima Kogan [Wed, 21 May 2014 10:47:33 +0000 (03:47 -0700)]
Making sure to not double-examine the same DWARF CU
Thierry Fauck [Thu, 15 May 2014 15:21:52 +0000 (11:21 -0400)]
CREDITS update for ppc64el support
Signed-off-by: Thierry Fauck <thierry@linux.vnet.ibm.com>
Petr Machata [Thu, 15 May 2014 15:12:23 +0000 (17:12 +0200)]
In ppc-lwarx.exp, Dwarf backend may resolve atomic_add's prototype
- in which case the patterns are wrong. Change the pattern to match
both cases.
Thierry Fauck [Tue, 13 May 2014 11:48:24 +0000 (07:48 -0400)]
Support for powerpc64 arch ppc64el
Signed-off-by: Thierry Fauck <thierry@linux.vnet.ibm.com>
Add support for ppc64le proc and ELF ABIv2.
Provides support for irelative and wchar
Dima Kogan [Mon, 12 May 2014 20:14:04 +0000 (13:14 -0700)]
I only build the dwarf_prototypes if we have libdw
Dima Kogan [Sun, 11 May 2014 21:20:12 +0000 (14:20 -0700)]
removed needless cast
Dima Kogan [Sun, 11 May 2014 19:44:55 +0000 (12:44 -0700)]
added forgotten error checking to some ltrace calls
Dima Kogan [Sun, 11 May 2014 19:22:11 +0000 (12:22 -0700)]
fixed typo
Dima Kogan [Sun, 11 May 2014 19:22:00 +0000 (12:22 -0700)]
I only explicitly look at sizeof(long) if it differs from sizeof(int)
If they're the same, checking for both in a switch() is a compile error
Dima Kogan [Sun, 11 May 2014 19:21:24 +0000 (12:21 -0700)]
style whitespace changes
- * with name, not type
- if (blah), not if( blah )
Dima Kogan [Sat, 3 May 2014 08:08:40 +0000 (01:08 -0700)]
whitespace style change
- 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
Dima Kogan [Sat, 3 May 2014 07:39:38 +0000 (00:39 -0700)]
a bit more debug printing
Dima Kogan [Fri, 2 May 2014 00:21:55 +0000 (17:21 -0700)]
added a bit more diagnostic printing
Dima Kogan [Thu, 1 May 2014 08:15:18 +0000 (01:15 -0700)]
fixed memory leaks
Two leaks plugged:
1. value used for array-length
2. prototype return type
Dima Kogan [Thu, 1 May 2014 08:01:18 +0000 (01:01 -0700)]
fixed prototype memory leak
protolib_add_prototype() makes a copy of the prototype, so allocating a new
pointer there was an error
Dima Kogan [Wed, 30 Apr 2014 11:25:58 +0000 (04:25 -0700)]
removed notes
Dima Kogan [Wed, 30 Apr 2014 11:25:41 +0000 (04:25 -0700)]
removed, commented testing code
Dima Kogan [Wed, 30 Apr 2014 11:17:35 +0000 (04:17 -0700)]
dwarf diagnostic output now controlled by -D
Dima Kogan [Wed, 30 Apr 2014 11:10:52 +0000 (04:10 -0700)]
fixed broken diagnostic output
Dima Kogan [Wed, 30 Apr 2014 10:35:13 +0000 (03:35 -0700)]
reworked error and memory handling
I now longer exit() on the slightest sign of trouble, nor do I leak all my heap
memory allocations
Dima Kogan [Wed, 30 Apr 2014 06:57:39 +0000 (23:57 -0700)]
unknown pointers now return void*, not void
Dima Kogan [Mon, 28 Apr 2014 16:24:39 +0000 (09:24 -0700)]
DWARF parser now looks for exported types
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
Dima Kogan [Sun, 27 Apr 2014 23:30:12 +0000 (16:30 -0700)]
renamed type_hash -> type_dieoffset_hash
Dima Kogan [Sun, 27 Apr 2014 23:29:02 +0000 (16:29 -0700)]
type_hash is no longer global
Dima Kogan [Wed, 23 Apr 2014 23:15:57 +0000 (16:15 -0700)]
I now read the DWARF data in addition to the .conf files
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
Dima Kogan [Wed, 23 Apr 2014 22:55:41 +0000 (15:55 -0700)]
If a functions is defined in a .conf, I do not parse the DWARF
Previously I would parse the DWARF data for such a function, but I wouldn't use
the result. Now I don't even parse
Dima Kogan [Wed, 23 Apr 2014 22:54:49 +0000 (15:54 -0700)]
types defined in .conf files now take precedence over DWARF types
Dima Kogan [Wed, 23 Apr 2014 22:45:40 +0000 (15:45 -0700)]
style whitespace
Dima Kogan [Wed, 23 Apr 2014 10:41:55 +0000 (03:41 -0700)]
import_DWARF_prototypes() now takes JUST a lib argument
Dima Kogan [Wed, 23 Apr 2014 10:01:20 +0000 (03:01 -0700)]
moved DWARF prototype reading to library_get_prototype()
Dima Kogan [Wed, 23 Apr 2014 09:43:21 +0000 (02:43 -0700)]
updated error message to reflect the new dwfl use case
Dima Kogan [Wed, 23 Apr 2014 09:42:58 +0000 (02:42 -0700)]
whitespace
Dima Kogan [Wed, 23 Apr 2014 07:47:52 +0000 (00:47 -0700)]
Stylistic refactoring. No functional changes
Dima Kogan [Wed, 23 Apr 2014 07:06:45 +0000 (00:06 -0700)]
I now import functions using their linkage name
This is required for C++ methods
Dima Kogan [Wed, 23 Apr 2014 07:02:34 +0000 (00:02 -0700)]
enums are no longer assumed to have type 'int'
Dima Kogan [Tue, 22 Apr 2014 23:22:08 +0000 (16:22 -0700)]
reworked attr_numeric() to report failures
This whole file is thus copyright me
Dima Kogan [Tue, 22 Apr 2014 22:15:55 +0000 (15:15 -0700)]
added a disabled stub for complex float support
Dima Kogan [Tue, 22 Apr 2014 22:15:27 +0000 (15:15 -0700)]
a bit more debug printing
Dima Kogan [Tue, 22 Apr 2014 20:21:32 +0000 (13:21 -0700)]
style changes
- no spaces in ()
- hanging braces
- no camelCase
- collapsed long lines
Dima Kogan [Tue, 22 Apr 2014 19:58:13 +0000 (12:58 -0700)]
debug-printing via complain()
Dima Kogan [Tue, 22 Apr 2014 19:57:03 +0000 (12:57 -0700)]
added explicit support for some more types
- boolean constant
- long long double (as void)
- variable-length array (assuming len 0)
- union (as void)
- empty compile units
Dima Kogan [Tue, 22 Apr 2014 11:20:32 +0000 (04:20 -0700)]
added some optional debug printing
Dima Kogan [Tue, 22 Apr 2014 11:19:25 +0000 (04:19 -0700)]
tree dumping goes to stderr
Dima Kogan [Sat, 12 Apr 2014 03:39:34 +0000 (20:39 -0700)]
initial prototypes-from-dwarf implementation
Dima Kogan [Sun, 13 Apr 2014 04:59:26 +0000 (21:59 -0700)]
fixed typo: toplevel_format_lens() now uses ptr data when talking about pointers
Petr Machata [Tue, 6 May 2014 10:53:03 +0000 (12:53 +0200)]
Fix lookup of prototypes from non-leader threads
Petr Machata [Tue, 6 May 2014 10:23:54 +0000 (12:23 +0200)]
Add a couple TODO items
Petr Machata [Mon, 28 Apr 2014 09:50:49 +0000 (11:50 +0200)]
Improve wording on -e, -x, -l in ltrace.1
dann frazier [Wed, 12 Mar 2014 21:57:23 +0000 (15:57 -0600)]
Add missing #include stdio.h
Include stdio.h in files that use fprintf()
Signed-off-by: dann frazier <dannf@debian.org>
dann frazier [Wed, 12 Mar 2014 21:51:44 +0000 (15:51 -0600)]
add missing <stdint.h> include
aarch64's fetch.c uses the uintptr_t typedef defined by stdint.h without
including it. This doesn't currently cause a build failure because stdint.h
is indirectly included via proc.h.
Signed-off-by: dann frazier <dannf@debian.org>
Petr Machata [Fri, 28 Feb 2014 11:37:15 +0000 (12:37 +0100)]
Add --config to man, drop -X from options.c
Petr Machata [Thu, 13 Feb 2014 15:02:50 +0000 (16:02 +0100)]
Initialize struct process.e_machine and .e_class for secondary threads
Petr Machata [Wed, 5 Feb 2014 02:31:07 +0000 (21:31 -0500)]
Add some stuff to libc.so.conf
Petr Machata [Wed, 5 Feb 2014 01:46:07 +0000 (02:46 +0100)]
Update NEWS, README
Petr Machata [Thu, 23 Jan 2014 23:50:06 +0000 (00:50 +0100)]
Implement aarch64 support
- IFUNC support is not implemented, the rest works well. The only
other failure is in wide char functions, and that occurs on x86_64
as well.
Petr Machata [Wed, 5 Feb 2014 00:57:50 +0000 (19:57 -0500)]
Set child stack alignment in trace-clone.c
- This is important on aarch64, which requires 16-byte aligned
stack pointer. This might be relevant on other arches as well,
I suspect we just happened to get the 16-byte boundary in some
cases.
Petr Machata [Fri, 31 Jan 2014 00:42:16 +0000 (19:42 -0500)]
Force use of SYS_open on aarch64 as well
- That system call is not implemented on aarch64, but we don't
care, we are only calling it to see if the parameters get decoded
properly. So call using the "syscall" wrapper, and hard-code
SYS_open value on aarch64, where glibc doesn't define it.
Petr Machata [Fri, 31 Jan 2014 00:37:26 +0000 (19:37 -0500)]
Rewrite system_calls.exp
- Port this to new style test case
- Be more clever about what syscalls were invoked from main,
as opposed to the multitude of calls that the dynamic linker
typically makes
- Allow some basic calls to come in XXXat variants (e.g. openat
instead of open), such is the case on aarch64.