mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-29 10:17:38 +01:00
ARM: tests/Gtest-dyn1.c fixes.
Define an appropriate fdesc struct and its corresponding accessors that take care of the thumb marker on ARM. Call the __clear_cache built-in instead of flush_cache if the GNU compiler is used. Signed-off-by: Ken Werner <ken.werner@linaro.org>
This commit is contained in:
parent
a624812e2a
commit
3b917f2d16
1 changed files with 15 additions and 0 deletions
|
@ -62,6 +62,16 @@ struct fdesc
|
||||||
# define get_fdesc(fdesc,func) (fdesc = *(struct fdesc *) &(func))
|
# define get_fdesc(fdesc,func) (fdesc = *(struct fdesc *) &(func))
|
||||||
# define get_funcp(fdesc) ((template_t) &(fdesc))
|
# define get_funcp(fdesc) ((template_t) &(fdesc))
|
||||||
# define get_gp(fdesc) ((fdesc).gp)
|
# define get_gp(fdesc) ((fdesc).gp)
|
||||||
|
#elif __arm__
|
||||||
|
struct fdesc
|
||||||
|
{
|
||||||
|
long code;
|
||||||
|
long is_thumb;
|
||||||
|
};
|
||||||
|
# define get_fdesc(fdesc,func) ({(fdesc).code = (long) &(func) & ~0x1; \
|
||||||
|
(fdesc).is_thumb = (long) &(func) & 0x1;})
|
||||||
|
# define get_funcp(fdesc) ((template_t) ((fdesc).code | (fdesc).is_thumb))
|
||||||
|
# define get_gp(fdesc) (0)
|
||||||
#else
|
#else
|
||||||
struct fdesc
|
struct fdesc
|
||||||
{
|
{
|
||||||
|
@ -170,7 +180,12 @@ main (int argc, char *argv[])
|
||||||
memcpy (mem, (void *) fdesc.code, MAX_FUNC_SIZE);
|
memcpy (mem, (void *) fdesc.code, MAX_FUNC_SIZE);
|
||||||
mprotect ((void *) ((long) mem & ~(getpagesize () - 1)),
|
mprotect ((void *) ((long) mem & ~(getpagesize () - 1)),
|
||||||
2*getpagesize(), PROT_READ | PROT_WRITE | PROT_EXEC);
|
2*getpagesize(), PROT_READ | PROT_WRITE | PROT_EXEC);
|
||||||
|
|
||||||
|
#ifdef __GNUC__
|
||||||
|
__clear_cache(mem, mem + MAX_FUNC_SIZE);
|
||||||
|
#else
|
||||||
flush_cache (mem, MAX_FUNC_SIZE);
|
flush_cache (mem, MAX_FUNC_SIZE);
|
||||||
|
#endif
|
||||||
|
|
||||||
signal (SIGSEGV, sighandler);
|
signal (SIGSEGV, sighandler);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue