Small fix to HP timing printing

Message ID bcb6fbc7-a6a1-234e-fce4-0400e7542ebf@mentor.com
State Committed
Headers

Commit Message

Chung-Lin Tang Sept. 3, 2019, 12:55 p.m. UTC
  Hi, when developing my dynamic linker DSO sorting patch [1], and measuring its
cycle performance, I found a small error in the HP_TIMING_PRINT trailing zero
setting; the '\0' should be set at MIN(Len,string length), instead of always
at the 'Len' position. Encountered some weirdness in printing counter results
because of this.

Okay for master?

[1] https://sourceware.org/ml/libc-alpha/2019-07/msg00472.html
     https://sourceware.org/ml/libc-alpha/2019-07/msg00473.html

Thanks,
Chung-Lin

	* sysdeps/generic/hp-timing-common.h (HP_TIMING_PRINT): Correct position
	of string null termination.
  

Comments

Adhemerval Zanella Sept. 3, 2019, 1:41 p.m. UTC | #1
On 03/09/2019 09:55, Chung-Lin Tang wrote:
> Hi, when developing my dynamic linker DSO sorting patch [1], and measuring its
> cycle performance, I found a small error in the HP_TIMING_PRINT trailing zero
> setting; the '\0' should be set at MIN(Len,string length), instead of always
> at the 'Len' position. Encountered some weirdness in printing counter results
> because of this.
> 
> Okay for master?
> 
> [1] https://sourceware.org/ml/libc-alpha/2019-07/msg00472.html
>     https://sourceware.org/ml/libc-alpha/2019-07/msg00473.html
> 
> Thanks,
> Chung-Lin
> 
>     * sysdeps/generic/hp-timing-common.h (HP_TIMING_PRINT): Correct position
>     of string null termination.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>

> 
> hp-timing-common.h.patch
> 
> diff --git a/sysdeps/generic/hp-timing-common.h b/sysdeps/generic/hp-timing-common.h
> index 8749d25647..1fc92d1bd7 100644
> --- a/sysdeps/generic/hp-timing-common.h
> +++ b/sysdeps/generic/hp-timing-common.h
> @@ -56,5 +56,5 @@
>      char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0);		\
>      size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len);	\
>      memcpy (__dest, __cp, __cp_len);					\
> -    __dest[__len - 1] = '\0';						\
> +    __dest[__cp_len - 1] = '\0';					\
>    } while (0)
>
  

Patch

diff --git a/sysdeps/generic/hp-timing-common.h b/sysdeps/generic/hp-timing-common.h
index 8749d25647..1fc92d1bd7 100644
--- a/sysdeps/generic/hp-timing-common.h
+++ b/sysdeps/generic/hp-timing-common.h
@@ -56,5 +56,5 @@ 
     char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0);		\
     size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len);	\
     memcpy (__dest, __cp, __cp_len);					\
-    __dest[__len - 1] = '\0';						\
+    __dest[__cp_len - 1] = '\0';					\
   } while (0)