Age | Commit message (Collapse) | Author |
|
|
|
- ... from sysdeps/linux-gnu/hooks.c to sysdeps/linux-gnu/trace.c
where it fits better.
|
|
- Just like on PPC64, we need to move IRELATIVE relocations from
.rela.dyn to the vector of PLT relocations
- Just like on PPC64, we may need to rename the symbol--except the
symbol to looked is the one with the address of PLT slot address,
not of rela addend.
|
|
|
|
|
|
- Because the IRELATIVE entries have no associated symbol name, we
need to allow arch_elf_add_plt_entry to override the name. This is
done by that callback returning PLT_OK and returning the new symbol
via libsym-chain return argument. Filtering is postponed until we
have that symbol, and the filter is applied to the whole returned
chain.
- Add linux_elf_add_plt_entry_irelative to support proper naming of
IRELATIVE PLT entries. This needs to be called from arch backend,
as the numbers of IRELATIVE relocations differ per-architecture.
|
|
|
|
|
|
- Before we would let the breakpoint be removed and later reinserted it.
But that's unnecessarily cumbersome, and besides breaks on ARM Thumb,
where the reinserted breakpoint would be ARM breakpoint instead of
Thumb. This is easier and fixes that issue.
|
|
The reason being that the actual breakpoint address might be different
from the address requested. One example is Thumb, where Thumb
breakpoints are requested for address+1 (lowest bit set). Whether
this is clean solution is very questionable though.
|
|
|
|
- In many places, DICT_FIND was awkward to use, as it required the use
of pointers even in cases that the dictionary already stored
pointers. For those cases, add DICT_FIND_VAL.
- Rename the original DICT_FIND to DICT_FIND_REF to make the
disctinction clear. That is useful if the dictionary holds actual
structures.
|
|
It's now a bit more strongly typed, can grow and shrink on demand, and has
a more complete interface.
It uses open addressing scheme to store hashes.
|
|
Simply continuing on SPARC is probably broken. The breakpoint isn't
disabled at that point, and continuing just hits it again.
That __ia64___ in ifdef is never defined even on an IA64 machine.
It's a typo, note the three underscores.
|
|
This needs to be handled differently on non-Linux platforms.
|
|
- After the refactoring, the prototype changed and it doesn't
return int anymore. Of course C happily implicitly converts
this. Ho hum.
|
|
- The old name came from PPC implementation, where the feature was used for
skipping atomic instructions. But this is more useful, was reused for
fully software singlestepping on MIPS, and will be similarly used for ARM.
So rename the interface, and make the prototype more explicit.
- Also document the method in backend.h.
- And convert several void*'s to arch_addr_t's while there.
|
|
|
|
|
|
Rationale: coding style consistency.
|
|
This is for consistency with other structures, and ultimately with
Linux coding style. The typedef ("Process") was dropped as well for
this reason.
This opportunity was used to fix coding style around the impacted
lines.
|
|
Include it also in events.c, where we use them as well.
|
|
This is all now code coming from the threads branch. Hopefully no patches
against this are in the wild.
|
|
Signed-off-by: Edgar E. Iglesias <edgar@axis.com>
|
|
Note that the placement under arch.h is currently conceptual only. Since
no backend defines ARCH_HAVE_ADDRESS_TYPES, it's actually in sysdep.h in
all cases.
|
|
|
|
|
|
|
|
- the reason being that the que-handling was declared on global level, but
was only implemented in one back end. If this is deemed generally useful,
it should all be moved to front end, but as things are it's all the same,
so I'm preferring the less invasive change
|
|
|
|
- none of this is plugged in yet
- expr.c/.h is not in yet, so we still express array length with len_spec
integer. Some function are mocked out so the thing compiles
|
|
Also, for several requests that ignore addr, we pass 1.
Change these back to 0.
This patch is largely based on work by Florian Echtler <floe@butterbrot.org>.
|
|
error is not standard so it has no business being used in generic code.
The linux-gnu back end is useful for android, and that doesn't have that
interface either.
|
|
|
|
|
|
Previously we assumed that that breakpoint would still be around in the
breakpoint table, but now that they are actually erased on removal, it
doesn't hold anymore. If it should hold (which might happen), then
insert_breakpoint knows to just piggy-back on an existing breakpoint.
|
|
|
|
- Support branches in atomic blocks
- Fix interaction between atomic skip and single stepping
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- doesn't help to fix the weird singlestepping problem on ppc64 though
|
|
|
|
|
|
|
|
- though more generalizing may be needed
|