Age | Commit message (Collapse) | Author |
|
|
|
Change-Id: Ic601f4b03add21135f9179b82e478c1c5d91da54
|
|
This will be used for automated notification of external vulnerability
reports.
Change-Id: Iee30634e4b64caf97b3222126a4f913b5c11fb78
|
|
Change-Id: I2bc07526df79bcbda57b850d077350859afe92f8
|
|
We pick up elfutils and libunwind headers for free by linking the libraries.
Change-Id: Icd5006766ac9dc8a208a22f762865ee60f82a455
|
|
Bug: 18930951
Change-Id: I5b2cc82f2bc4fcb95de0a0ef7ecf4ab0178d20fb
|
|
The files that need _GNU_SOURCE define it themselves, and bionic
now correctly takes that to imply the latest _POSIX_C_SOURCE (which
this _wasn't_ getting, leading to a missing declaration for open_memstream).
Bug: 17361504
Change-Id: Idd1c2abb6818d5216a7cdcdbaa235a113447831f
|
|
(Needs a bionic <sys/user.h> change.)
Bug: 13889008
Change-Id: Id2d067af58eae01fb4b9ddaeef749ed79b8a9a37
|
|
|
|
We need to fix the dependency on user_fpregs_struct.
Change-Id: Iaa1212bed9fa018fb3f151a2edc987f92de6e49b
|
|
Change-Id: Ic9345c28f5b02da43600c6ec2086c8c734f54ebd
|
|
|
|
1) Fix missing error.h in plt.c.
2) Add a TODO to fix missing relplt_count in mips plt.c.
3) Enforce operator precedence between * and != which is apparently incorrect for the mips compiler.
Change-Id: I2d5d925566daf81a0380724bc103570c80e381e7
|
|
Change-Id: I1e80c3ee1693452f8f1669027fcd0a225e986eb2
|
|
- Add Android.mk.
- Work around missing stpcpy() and rindex().
Change-Id: Iffdd707b22a84b1a1c6a802574ded05b289cee0a
|
|
Include stdio.h in files that use fprintf()
Signed-off-by: dann frazier <dannf@debian.org>
|
|
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>
|
|
Change-Id: Idc777be3224fb1533183d645f3974c77fec28c0c
|
|
|
|
|
|
|
|
|
|
- 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.
|
|
- 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.
|
|
- 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.
|
|
- 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.
|
|
|
|
- Moved a bunch of preexisting HFA tests to a separate test case (and
converted them to new style in the process). Added another bunch of
HFA tests.
|
|
|
|
In prelinked binaries, ltrace has to unprelinks PLT slots in order to
catch calls done through PLT. This makes the calls done through these
slots invalid, because the special first PLT slot is not initialized,
and dynamic linker SIGSEGVs because of this. Ltrace relies on
arranging breakpoints such that the dynamic linker is not actually
entered, and moves PC around itself to simulate the effects of a call
through PLT.
Originally, arch_elf_add_plt_entry was called only for symbols that
were actually traced. Later this was changed and it's now called for
all PLT entries, and the resulting candidate list is filtered
afterwards. This gives backends a chance to rename the symbol, as is
useful with IRELATIVE PLT calls, where symbol name may not be
available at all. But the PPC backend was never updated to reflect
this, and unresolved all symbols for which arch_elf_add_plt_entry was
called, thus rendering _all_ PLT slots invalid, even those that
weren't later procted by breakpoints. Thus calls done through any
untraced slots failed.
This patch fixes this problem by deferring the unprelinking of PLT
slots into the on_install hook of breakpoints.
|
|
|
|
|
|
|
|
GCC 4.4.7 isn't smart enough to realize own_libsym will always be zero
when it sees the goto done which might jump over the initialization of
libsym. And so will produce a warning like:
cc1: warnings being treated as errors
trace.c: In function ‘ifunc_ret_hit’:
trace.c:1433: error: ‘libsym’ may be used uninitialized in this function
|
|
This adds support for using elfutils as unwinder with -w. Since elfutils
0.158 elfutils contains a simple unwinder interface that matches nicely
on the ltrace backtrace support.
The code reuses the libunwind infrastructure already in ltrace where
possible (by defining HAVE_UNWINDER which is 1 if either libunwind or
elfutils is used). It also reuses the ltrace proc_add_library callback
to keep track of the ELF files mapped for the unwinder.
The current implementation matches the output as if libunwind was used.
But elfutils can also provide some more information since it can lookup
the DWARF debuginfo. So if the source info of an address can be found
through elfutils the backtrace will also include this as an additional
output line per frame.
|
|
|
|
In order to avoid single-stepping through large portions of the
dynamic linker, ltrace remembers at which address the instruction that
resolved a PLT slot is. It then puts a breakpoint to this address so
that it can fast-forward to that address next time it needs to catch a
PLT slot being resolved.
When a process is cloned, the pointer to this breakpoint is simply
copied over to the new process, instead of being looked up in the new
process structures. This patches fixes this.
|
|
|
|
- Fix some coding style issues in output.c
- Add a couple items to TODO
|
|
This bug was introduced in af452c6
Reported-by: Petr Machata <pmachata@redhat.com>
|
|
|
|
Before printng the current procedure name and IP verify their validity
|
|
Every distribution should create its own specific files
|
|
|
|
This was caught by system_call_params.exp test case:
exe->mount("source", "target", "filesystemtype", 0, nil <unfinished ...>
mount@SYS("", "target", "filesystemtype", 0, nil) = -2
<... mount resumed> = -1
Note how the first parameter disappears--r2 now holds syscall number
(21 in this case), and the original value is stored in orig_gpr2 in
save area.
|
|
- In general they are. But IRELATIVE relocations are sorted to come
last, and PLT entries are not sorted accordingly.
|
|
- This cleans up a lot of stuff. The actual substance is addition of
account_current_callstack in handle_event.c (which however uses
those cleaned-up interfaces).
- trace-exec.exp was extended to check that the exec syscall can be
seen in -c output. That's one of the symptoms of what this fixes.
- This hides dict_opt_c in summary.c. It also gets rid of the global
variable current_time_spent--instead, the information is passed via
a function argument in a struct timedelta (so that we never confuse
absolute time with relative). callstack_element.time_spent was renamed
to .enter_time, as that is what it has always been.
|
|
|
|
|
|
|