[prev in list] [next in list] [prev in thread] [next in thread]
List: strace
Subject: Re: strace of arm binaries on arm64
From: enh <enh () google ! com>
Date: 2014-02-27 2:09:39
Message-ID: CAJgzZopM2ny1mHAm5GPADbT6xh2cY1X0Y=TRBKJDNAQ3o7k1uw () mail ! gmail ! com
[Download RAW message or body]
thanks. that works for me on both arm and arm64.
On Wed, Feb 26, 2014 at 2:38 PM, Dmitry V. Levin <ldv@altlinux.org> wrote:
> On Wed, Feb 26, 2014 at 02:01:51PM -0800, enh wrote:
>> i notice that the decoding of sigaltstack's struct stack_t is wrong on
>> arm64 for a 32-bit process. looking at print_stack_t in strace, i
>> don't understand how this works for x86/x86_64 --- the first field is
>> a void*. so i'm a bit confused about how i should go about fixing this
>> for arm/arm64. anyone have a clue to spare?
>
> This is a demonstration why current multiarch approach is unreliable: every
> structure containing members whose size differs between personalities has
> to be open-coded. In case of stack_t, the fix is likely to be this:
>
> --- a/signal.c
> +++ b/signal.c
> @@ -1084,10 +1084,33 @@ static void
> print_stack_t(struct tcb *tcp, unsigned long addr)
> {
> stack_t ss;
> + int r;
>
> if (!addr) {
> tprints("NULL");
> - } else if (umove(tcp, addr, &ss) < 0) {
> + return;
> + }
> +
> +#if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
> + if (current_wordsize != sizeof(ss.ss_sp) && current_wordsize == 4) {
> + struct {
> + uint32_t ss_sp;
> + int32_t ss_flags;
> + uint32_t ss_size;
> + } ss32;
> + r = umove(tcp, addr, &ss32);
> + if (r >= 0) {
> + memset(&ss, 0, sizeof(ss));
> + ss.ss_sp = (void*)(unsigned long) ss32.ss_sp;
> + ss.ss_flags = ss32.ss_flags;
> + ss.ss_size = (unsigned long) ss32.ss_size;
> + }
> + } else
> +#endif
> + {
> + r = umove(tcp, addr, &ss);
> + }
> + if (r < 0) {
> tprintf("%#lx", addr);
> } else {
> tprintf("{ss_sp=%#lx, ss_flags=", (unsigned long) ss.ss_sp);
>
>
> --
> ldv
>
> ------------------------------------------------------------------------------
> Flow-based real-time traffic analytics software. Cisco certified tool.
> Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
> Customize your own dashboards, set traffic alerts and generate reports.
> Network behavioral analysis & security monitoring. All-in-one tool.
> http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
> _______________________________________________
> Strace-devel mailing list
> Strace-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/strace-devel
>
--
Elliott Hughes - http://who/enh - http://jessies.org/~enh/
Java i18n/JNI/NIO, or bionic questions? Mail me/drop by/add me as a reviewer.
------------------------------------------------------------------------------
Flow-based real-time traffic analytics software. Cisco certified tool.
Monitor traffic, SLAs, QoS, Medianet, WAAS etc. with NetFlow Analyzer
Customize your own dashboards, set traffic alerts and generate reports.
Network behavioral analysis & security monitoring. All-in-one tool.
http://pubads.g.doubleclick.net/gampad/clk?id=126839071&iu=/4140/ostg.clktrk
_______________________________________________
Strace-devel mailing list
Strace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/strace-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic