[valgrind] [Bug 398445] uninitialized memory false reports on shared memory

2018-09-12 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=398445

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #6 from Ivo Raisr  ---
(In reply to Stas Sergeev from comment #5)
> Think of the following use-case.
> Consider a very silly shm IPC that
> uses just one large struct with many
> input and output fields. Client fills
> in the output fields and copies the
> entire struct to the shm buffer. Server
> reads it, fills in the input fields
> and puts it back to shm. Client reads
> the struct back with all fields now
> properly initialized.
> valgrind in this scenario would still
> think some fields are uninitialized
> because it can't understand that server
> have already replaced the entire content
> in this buffer.

Yes, indeed. That's why we have syscall and ioctl wrappers in Valgrind.
They describe what the other side (kernel) expects from the buffers sent there
and in what shape they come back with buffers received.

It should be quite easy to extend this mechanism to an arbitrary client-server
protocol, be it via shm, sockets or any other IPC.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-08-22 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

--- Comment #20 from Ivo Raisr  ---
Thank you for your work. This is going to be a useful Valgrind tool.

I like the documentation for the latest patch. Reasoning explained well on
examples. You could mention that the default behaviour (fail unseen
allocations) can be heavily tuned by options which are described later.

As regards instrumentation: unfortunately I don't think the current scheme of
detecting function entry/return w.r.t. --toggle-fn is going to work.
Instruction instrumentation is done by blocks and their processing is mostly
orthogonal to the actual execution. I think Callgrind tool solves similar
problem - detecting when a function is entered and returned - try to have a
look there. I think it still suffers from some limitations on arm architecture,
though.

For coding style - please use explicit check for NULL or != NULL.
For example if (instr_callstack) => if (instr_callstack != NULL)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-07-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

--- Comment #14 from Ivo Raisr  ---
The current exp-allocfail crashes badly on my Ubuntu 18.04 box.
When running './vg-in-place --tool=exp-allocfail /bin/date', it crashes at
af_main.c:119.
That's because i is equal to an equivalent of '-1' (4294967295).

You need to fix the code at af_main.c:96
-   UInt i;
+   Int i;


With this fix in place, I was able to play with ordinary Linux/UNIX standalone
programs.
Will try to do 'make dist' and check if everything works ok tomorrow.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-07-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

--- Comment #13 from Ivo Raisr  ---
(In reply to roger.light from comment #8)
> Created attachment 114229 [details]
> Updated patch with fixes and text callstacks.

Looks quite good. There are just few nits:
- Please remove trailing whitespace you introduced (a few occurrences).
For example 'git am' gives the list.
- Please have a space between 'while' and the condition.
- Please do better job with fixed size buffers (for example in
write_callstack_line).
  Some times ago, Florian underwent a painful exercise auditing all fixed size
buffers.
- You can use C99 constructs.
- Description for command line option --callstack-file deserves a better
wording.
- Description for command line option --show-fail-traces should be probably
renamed to --show-failed-traces (or simply --show-failed). The sentence should
start with capital letter anyway.
- Fix indentation of function af_instrument.

I will post my findings about using tool in a separate reply.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-07-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

--- Comment #10 from Ivo Raisr  ---
(In reply to Philippe Waroquiers from comment #9)
> I am wondering also how much difficult it would be to somewhat more
> generalise the tool.
> 
> For example, we might want to make similar tests to check failing syscalls.

Injecting failures in general is a very good topic. However given the imminent
Valgrind release, we should decide if this exp-tool can make it for 3.14 in its
current shape (and with some regtests available) or not. This decision
eventually drives the scope...

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385409] s390x: z13 vector integer instructions not implemented

2018-07-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385409

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #19 from Ivo Raisr  ---
(In reply to Andreas Arnez from comment #18)

> Another suspicous construct is the type cast
>   (const s390x_vec_op_details_t*) &details
> where 'details' is a ULong.  I believe this violates the strict aliasing rule.

Indeed. In short words strict aliasing says you are not allowed to view the
same piece of memory through lenses of different types *other* than 'char *'.
I debugged once a nasty problem in SPEC2017 CPU due to a strict aliasing
violation combined with LTO.

The question is also whether strict aliasing is enabled for this compilation
unit...

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-07-30 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

--- Comment #7 from Ivo Raisr  ---
Alright, I think it would be preferable to have --num-callers used instead
of --depth. Users are already familiar with --num-callers.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384337] performance improvements to VEX register allocator v2 and v3

2018-07-30 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384337

Ivo Raisr  changed:

   What|Removed |Added

 Status|CONFIRMED   |RESOLVED
 Resolution|--- |FIXED

--- Comment #16 from Ivo Raisr  ---
Julian, I have closed this bug now. Register allocator v3 has been the default
in Valgrid for many months and all the improvements from this bug which made
sense have been already implemented.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 396290] [PATCH] Possible tool - allocfail

2018-07-30 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=396290

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |CONFIRMED
 CC||iv...@ivosh.net

--- Comment #5 from Ivo Raisr  ---
Thank you for sharing this tool with the Valgrind community.
I can see value of this tool in its systemic way in which it fails the
application and taking a central place in an automated solution for checking
memory allocation problems.

The idea of storing call stacks instead of hashes is of course welcome, as it
is much more user friendly and configurable.

Please could you also fix some small problems in your code, such as using
"naked" C types (char), missing space between 'if' and '{'. Also do not include
system files (fcntl.h) - use Valgrind's own ones (VKI_O_RDONLY etc.).

As regards '--depth' command line argument, please could you explain why
existing --num-callers is not suitable to use?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 381553] VEX register allocator v3

2018-07-24 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=381553

--- Comment #75 from Ivo Raisr  ---
And thank you, Julian, for your guidance.
Unfortunately I won't be able to finish the VEX enhancement/rework residing in
(I think) vex-jit-hacks-2 branch. Perhaps some brave soul will be able to
continue...

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 395682] Reading debug info of binaries with readonly PT_LOAD segments

2018-07-15 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=395682

Ivo Raisr  changed:

   What|Removed |Added

 CC||ori...@gmx.fr

--- Comment #14 from Ivo Raisr  ---
*** Bug 384727 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384727] [PATCH]valgrind does not support debug info for read only segments (generated by LLD)

2018-07-15 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384727

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|ASSIGNED|RESOLVED

--- Comment #6 from Ivo Raisr  ---


*** This bug has been marked as a duplicate of bug 395682 ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384727] [PATCH]valgrind does not support debug info for read only segments (generated by LLD)

2018-07-12 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384727

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Assignee|jsew...@acm.org |iv...@ivosh.net
 Status|UNCONFIRMED |ASSIGNED
 CC||iv...@ivosh.net

--- Comment #3 from Ivo Raisr  ---
Please could you try one of the patches from bug
https://bugs.kde.org/show_bug.cgi?id=395682
These two bugs seem to be very similar.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390471] suppression by specification of source-file line number

2018-06-25 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390471

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #7 from Ivo Raisr  ---
Fixed in changeset 410d736a9928f535e2591c9d5f32e8e0941f96d8.

https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=410d736a9928f535e2591c9d5f32e8e0941f96d8

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390471] suppression by specification of source-file line number

2018-06-25 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390471

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #110691|0   |1
is obsolete||

--- Comment #6 from Ivo Raisr  ---
Created attachment 113569
  --> https://bugs.kde.org/attachment.cgi?id=113569&action=edit
patch with NEWS updated

Patch cleaned up. Tests still pending.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390471] suppression by specification of source-file line number

2018-06-24 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390471

Ivo Raisr  changed:

   What|Removed |Added

 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1
 CC||iv...@ivosh.net
   Assignee|jsew...@acm.org |iv...@ivosh.net

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 197915] 80-bit floats are not supported on x86 and x86-64

2018-04-01 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=197915

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #33 from Ivo Raisr  ---
(In reply to Rich Felker from comment #32)
> Is something blocking fixing this issue still?

Lack of skilled manpower :-) Feel free to work this issue!

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 338252] building valgrind with -flto (link time optimisation) fails

2018-03-12 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=338252

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #15 from Ivo Raisr  ---
(In reply to Дилян Палаузов from comment #14)
> Autoconf users willing to compile everything with LTO just by calling
> ./configure put in /usr/local/etc/config.site:
> 
> CFLAGS="-O3 -fno-fat-lto-objects -flto" CXXFLAGS="-O3 -fno-fat-lto-objects
> -flto" LDFLAGS="-Wl,-O1,-s -flto=4"
> 
> And then any ./configure implies LTO.  Just as other programs relying on
> autoconf doing the right thing do not offer --enable-lto option in
> ./configure --help, can be compiled with LTO, valgrind./configure --help
> shall not print --enable-lto.  Programmer printing on --help "--enable-lto"
> don't understand autoconf.  This applies also for artificially added -g or
> -O2 from configure.ac or contained in Makefile*

Thank you for this insight and sharing your approach. It is really helpful to
know that other possibilities exists.
However I modifying /usr/local/etc/config.site affects all projects build on a
box. Also we cannot force Valgrind users and maintainers to modify global
configuration file [consider shared build machines, for example in the gcc
build farm]. Perhaps a merged approach could be found?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390524] use of 0b prefix for binary constants

2018-03-06 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390524

Ivo Raisr  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 CC||iv...@ivosh.net
 Resolution|--- |WONTFIX

--- Comment #3 from Ivo Raisr  ---
Support for binary constants has been around since gcc 4.3.0 (since 2008, 10
years ago). Also clang supports this notation. I don't see any reason why we
need to prefer compatibility with ancient compilers over readability and
maintainability.

I think your case is a singular one; majority of LTS distros have moved off of
such ancient gcc versions long time ago. You can't expect recent version of
Valgrind work with an ancient version of the compiler; neither is the case of
other toolchain components.

There are going to be more and more cases of Valgrind using compiler features
available only to reasonably recent compilers. You could get away for now with
a simple patch, changing the binary constants into hexadecimal ones, for
example. But with the evolution bringing new changes, you could end up with a
huge patchset eventually.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390524] use of 0b prefix for binary constants

2018-03-06 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390524

Ivo Raisr  changed:

   What|Removed |Added

   Assignee|jsew...@acm.org |iv...@ivosh.net

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

Ivo Raisr  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #12 from Ivo Raisr  ---
Pushed as 23185f46a17079fcfca35c2ef335a598812cb23b.

https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=23185f46a17079fcfca35c2ef335a598812cb23b

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

--- Comment #10 from Ivo Raisr  ---
:-)

There was also a problem with the actual replacement definition.
For example wcsnlen had the following:

#if defined(VGO_linux)
 STRNLEN(VG_Z_LIBC_SONAME, wcsnlen)
 STRNLEN(VG_Z_LIBC_SONAME, __GI_wcsnlen)
#endif

This could not have worked.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #42|0   |1
is obsolete||

--- Comment #8 from Ivo Raisr  ---
Created attachment 43
  --> https://bugs.kde.org/attachment.cgi?id=43&action=edit
Add-replacements-for-wmemchr-and-wcsnlen-on-Linux

Make wcslen() operate on Int as well.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

--- Comment #7 from Ivo Raisr  ---
Oh, alright, let's make it Int also for wcslen() so the whole file is
consistent.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #111086|0   |1
is obsolete||

--- Comment #5 from Ivo Raisr  ---
Created attachment 42
  --> https://bugs.kde.org/attachment.cgi?id=42&action=edit
0001-Add-replacements-for-wmemchr-and-wcsnlen-on-Linux.patch

Fixed patch originally from Nick Alcock.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

--- Comment #4 from Ivo Raisr  ---
Thank you for the patch.
I had to make some fixes to make it actually work and do not introduce
regressions. Please review the attachment.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

Ivo Raisr  changed:

   What|Removed |Added

   Assignee|jsew...@acm.org |iv...@ivosh.net
 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388862] Add replacements for wmemchr and wcsnlen on Linux

2018-03-02 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388862

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net
Summary|false positive of   |Add replacements for
   |__wcsnlen_sse4_1 with glibc |wmemchr and wcsnlen on
   |2.26|Linux

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390723] make xtree dump files world wide readable, similar to log files

2018-02-20 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390723

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #1 from Ivo Raisr  ---
Fixed in commit c014c2c43669106b4e2aeb6203a2fbe9e3e4ff48.

https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=c014c2c43669106b4e2aeb6203a2fbe9e3e4ff48

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390723] make xtree dump files world wide readable, similar to log files

2018-02-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390723

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |ASSIGNED
 CC||iv...@ivosh.net

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390723] make xtree dump files world wide readable, similar to log files

2018-02-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390723

Ivo Raisr  changed:

   What|Removed |Added

   Assignee|jsew...@acm.org |iv...@ivosh.net

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 390723] New: make xtree dump files world wide readable, similar to log files

2018-02-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=390723

Bug ID: 390723
   Summary: make xtree dump files world wide readable, similar to
log files
   Product: valgrind
   Version: 3.14 SVN
  Platform: Compiled Sources
OS: Linux
Status: UNCONFIRMED
  Severity: normal
  Priority: NOR
 Component: general
  Assignee: jsew...@acm.org
  Reporter: iv...@ivosh.net
  Target Milestone: ---

There is no reason why xtree dump files should not be world wide readable,
similar to log files.
Users can always set the corresponding umask to tighten the permissions.


diff --git a/coregrind/m_xtree.c b/coregrind/m_xtree.c
index 7d5766222..217cad9da 100644
--- a/coregrind/m_xtree.c
+++ b/coregrind/m_xtree.c
@@ -377,7 +377,7 @@ static VgFile* xt_open (const HChar* outfilename)
VgFile* fp;

fp = VG_(fopen)(outfilename, VKI_O_CREAT|VKI_O_WRONLY|VKI_O_TRUNC,
-   VKI_S_IRUSR|VKI_S_IWUSR);
+   VKI_S_IRUSR|VKI_S_IWUSR|VKI_S_IRGRP|VKI_S_IROTH);
if (fp == NULL) {
   VG_(message)(Vg_UserMsg,
"Error: can not open xtree output file `%s'\n",

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 389065] valgrind meets gcc flag -Wlogical-op

2018-01-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=389065

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #5 from Ivo Raisr  ---
Fixed in commit f19a956e0a96b4f6b37c50b00ae24ecf09a7a3f5.

https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=f19a956e0a96b4f6b37c50b00ae24ecf09a7a3f5

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2018-01-20 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

Ivo Raisr  changed:

   What|Removed |Added

 Status|CONFIRMED   |RESOLVED
 Resolution|--- |FIXED

--- Comment #9 from Ivo Raisr  ---
Pushed as commit bd077baa71a40b60dcf0286b9fb89d803323fd93.

https://sourceware.org/git/?p=valgrind.git;a=commit;h=bd077baa71a40b60dcf0286b9fb89d803323fd93

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2018-01-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

--- Comment #7 from Ivo Raisr  ---
Hi Julian, patch with Solaris implementation is attached.
The patch has been refreshed to apply cleanly to the latest git HEAD and a NEWS
entry added. It is ready to be pushed - let me know if I should do it.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2018-01-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #109872|0   |1
is obsolete||

--- Comment #6 from Ivo Raisr  ---
Created attachment 109992
  --> https://bugs.kde.org/attachment.cgi?id=109992&action=edit
Patch with Solaris implementation added

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 389065] valgrind meets gcc flag -Wlogical-op

2018-01-18 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=389065

Ivo Raisr  changed:

   What|Removed |Added

 Status|CONFIRMED   |ASSIGNED

--- Comment #4 from Ivo Raisr  ---
The attached patch enables -Wlogical-op (if supported) and fixes an obvious
typo.
I used https://github.com/mirage/xen/blob/master/tools/libxc/xc_monitor.c for
an inspiration.

My gcc 7.2.0 on Ubuntu 17.10 did not report a problem in priv/guest_arm_toIR.c
with -Wlogical-op. I guess the first reported problem must have been caused by
some other factor.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 389065] valgrind meets gcc flag -Wlogical-op

2018-01-18 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=389065

Ivo Raisr  changed:

   What|Removed |Added

   Assignee|jsew...@acm.org |iv...@ivosh.net

--- Comment #3 from Ivo Raisr  ---
Created attachment 109970
  --> https://bugs.kde.org/attachment.cgi?id=109970&action=edit
patch

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2018-01-17 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

Ivo Raisr  changed:

   What|Removed |Added

 Status|UNCONFIRMED |CONFIRMED
 Ever confirmed|0   |1

--- Comment #5 from Ivo Raisr  ---
(In reply to Julian Seward from comment #4)

> Addresses all review comments in comments 2 and 3.  Ivo, if you are
> happy with it, could you please do the Solaris version of 
> VG_(get_user_milliseconds)?

Will do that, Julian.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 389065] valgrind meets gcc flag -Wlogical-op

2018-01-16 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=389065

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net
 Status|UNCONFIRMED |CONFIRMED
 Ever confirmed|0   |1

--- Comment #1 from Ivo Raisr  ---
Thank you for the bug report.
Indeed, the second one is a bug in Valgrind code.
The first one is not a bug but merely a mental note for maintainer that this
piece of code handles both pkhbt (tb == 0) and pkhbt (tb == 1) variants.

Would you like to supply a patch for both the occurrences?
Would you like to supply a patch for extending Valgrind build with -Wlogical-op
(have a look at configure.ac, similar flags are enabled there).

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388895] LibVEX_FrontEnd assertion failure: `0 == sizeof(VexGuestX86State) % LibVEX_GUEST_STATE_ALIGN'

2018-01-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388895

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #3 from Ivo Raisr  ---
SVN is a past thing. Valgrind lives in GIT now:
http://valgrind.org/downloads/repository.html

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385408] s390x: z13 vector "support" instructions not implemented

2018-01-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385408

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net
 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 388493] exp-sgcheck fails on DW_TAG_subrange_type

2018-01-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=388493

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #3 from Ivo Raisr  ---
The DWARF problem is highly probably caused by an unimplemented functionality
in parse_type_DIE(). For DW_tag_subrange, the following is handled:

  /* Figure out if we have a definite range or not */
  if (have_lower && have_upper && (!have_count)) {
 boundE.Te.Bound.knownL = True;
 boundE.Te.Bound.knownU = True;
 boundE.Te.Bound.boundL = lower;
 boundE.Te.Bound.boundU = upper;
  }
  else if (have_lower && (!have_upper) && (!have_count)) {
 boundE.Te.Bound.knownL = True;
 boundE.Te.Bound.knownU = False;
 boundE.Te.Bound.boundL = lower;
 boundE.Te.Bound.boundU = 0;
  }
  else if ((!have_lower) && have_upper && (!have_count)) {
 boundE.Te.Bound.knownL = False;
 boundE.Te.Bound.knownU = True;
 boundE.Te.Bound.boundL = 0;
 boundE.Te.Bound.boundU = upper;
  }
  else if ((!have_lower) && (!have_upper) && (!have_count)) {
 boundE.Te.Bound.knownL = False;
 boundE.Te.Bound.knownU = False;
 boundE.Te.Bound.boundL = 0;
 boundE.Te.Bound.boundU = 0;
  } else {
 /* FIXME: handle more cases */
 goto_bad_DIE;
  }

So probably implementing the missing case would overcome the reported DWARF
problem.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 381819] amd64: unhandled instruction bextr (0x8F 0xEA 0x78 0x10 0xD0 0x8 0x4) from BMI1

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=381819

Ivo Raisr  changed:

   What|Removed |Added

 CC||x...@fictionpress.com

--- Comment #18 from Ivo Raisr  ---
*** Bug 328357 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 328357] TBM bextr instruction unsupported vex amd64->IR: unhandled instruction bytes: 0x8F 0xEA 0xF8 0x10 0xEF 0x3 0x5 0x0

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=328357

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 CC||iv...@ivosh.net
 Status|UNCONFIRMED |RESOLVED

--- Comment #10 from Ivo Raisr  ---


*** This bug has been marked as a duplicate of bug 381819 ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 381819] amd64: unhandled instruction bextr (0x8F 0xEA 0x78 0x10 0xD0 0x8 0x4) from BMI1

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=381819

Ivo Raisr  changed:

   What|Removed |Added

 CC||sgtcapsl...@lavabit.com

--- Comment #17 from Ivo Raisr  ---
*** Bug 322586 has been marked as a duplicate of this bug. ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 322586] Unknown instruction (bextr) in ld-2.15.so with --march=native on AMD FX-8350

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=322586

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |DUPLICATE
 Status|UNCONFIRMED |RESOLVED
 CC||iv...@ivosh.net

--- Comment #7 from Ivo Raisr  ---
The patch by "Petr Pisar" has been attached also to bug 381819.

*** This bug has been marked as a duplicate of bug 381819 ***

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 381819] amd64: unhandled instruction bextr (0x8F 0xEA 0x78 0x10 0xD0 0x8 0x4) from BMI1

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=381819

--- Comment #16 from Ivo Raisr  ---
Created attachment 109550
  --> https://bugs.kde.org/attachment.cgi?id=109550&action=edit
support for TBM bextr

Patch originally attached to bug https://bugs.kde.org/show_bug.cgi?id=322586
by "Petr Pisar"  titled "support for TBM bextr".

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 381819] amd64: unhandled instruction bextr (0x8F 0xEA 0x78 0x10 0xD0 0x8 0x4) from BMI1

2017-12-28 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=381819

--- Comment #15 from Ivo Raisr  ---
(In reply to Bernd Buschinski from comment #14)
> any chance we can push/fix/update this to official valgrind? I would happy
> to test new patches :)

As discussed previously, the patch attached in this bug is not 100% perfect as
it does not properly decode all bextr variants. So it is not ready yet to be
integrated into Valgrind source code.

And as Mark explained in bug 328357:
According to
https://en.wikipedia.org/wiki/Bit_Manipulation_Instruction_Sets#TBM_.28Trailing_Bit_Manipulation.29
TBM instructions are only supported on a few AMD processors (Piledriver,
Steamroller and Excavator).

> Btw is this also related to
> https://bugs.kde.org/show_bug.cgi?id=328357? Do we have 3 bugreports for
> (almost) the same thing?

Probably yes. I will make this bug the main one and close the others.

My take here is as follows: these instructions are supported only by a few AMD
processors and later versions removed the support. So unless the community will
be willing to dedicate some engineering time to support properly all the
instruction variants, not much will happen.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 387766] asm shifts cause false positive "Conditional jump or move depends on uninitialised value"

2017-12-10 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=387766

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #2 from Ivo Raisr  ---
(In reply to Markus Trippelsdorf from comment #0)
> Running gcc trunk under valgrind produces many false positives, e.g.:

Please provide a simple standalone reproducer. For example, could a part of
update_costs_from_copies() be isolated to reproduce the problem?

There is also a patch for Valgrind which makes it to spend some extra time to
accurately track definedness:
https://bugs.kde.org/show_bug.cgi?id=387664

Please could you try to build Valgrind with this patch and then run it with
--expensive-definedness-checks=yes (or --expensive-definedness-checks=auto).

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 208052] strlcpy error when n = 0

2017-11-14 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=208052

--- Comment #9 from Ivo Raisr  ---
Fixed in commit a5af4146e383dd442130905901b046e2cb4b0ed4,
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=a5af4146e383dd442130905901b046e2cb4b0ed4

NEWS updated in commit 4a8ea8908f7171f50ad3fa66346778e2f73e5976
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;a=commit;h=4a8ea8908f7171f50ad3fa66346778e2f73e5976

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 208052] strlcpy error when n = 0

2017-11-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=208052

--- Comment #7 from Ivo Raisr  ---
Tom, would you mind integrating the fix into Valgrind source code base at this
point? Alternatively, I could do it myself - just let me know.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 208052] strlcpy error when n = 0

2017-11-07 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=208052

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |CONFIRMED
 CC||iv...@ivosh.net

--- Comment #5 from Ivo Raisr  ---
(In reply to Jan Kryl from comment #4)
> I hit the same problem with strlcpy on FreeBSD 11 using valgrind-3.10.1

Please could you comment whether the attached patch by Tom works for you?
Preferably using Valgrind 3.13.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385939] Optionally exit on the first error

2017-11-04 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385939

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #5 from Ivo Raisr  ---
Pushed as commit c46053cc386be5757420abbd4b8a8cc6219ed33f.

https://sourceware.org/git/?p=valgrind.git;a=commit;h=c46053cc386be5757420abbd4b8a8cc6219ed33f

Thank you for the reworked patch.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 386318] valgrind.org/info/tools.html is missing SGCheck

2017-10-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=386318

Ivo Raisr  changed:

   What|Removed |Added

   Assignee|jsew...@acm.org |iv...@ivosh.net

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 386318] valgrind.org/info/tools.html is missing SGCheck

2017-10-31 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=386318

Ivo Raisr  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution|--- |FIXED

--- Comment #3 from Ivo Raisr  ---
Committed in revision 531.

Thank you for the patch.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 376257] helgrind history full speed up using a cached stack

2017-10-30 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=376257

--- Comment #5 from Ivo Raisr  ---
Nice work, Philippe!
I have just one question. In helgrind/hg_main.c, the last hunk,
there is a message containing a weird character: "re-àsetting it to 0".
Is this intended?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 386318] valgrind.org/info/tools.html is missing SGCheck

2017-10-30 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=386318

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #1 from Ivo Raisr  ---
These are experimental tools (prefixed with 'exp-').
They have been nearly untouched since their creation.
We can document them in "Experimental Tools" section, though.

http://valgrind.org/downloads/variants.html
would deserve some cleanup and update as well.

Please propose a patch.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385939] Optionally exit on the first error

2017-10-24 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385939

--- Comment #2 from Ivo Raisr  ---
Thank you for the patch and kudos for documenting the new option in the manual.


>From the high level perspective, I have the following comments and questions:
* It is not clear what happens in the XML mode. Is the XML correctly finalized
with --exit-on-first-error=yes?
* Valgrind does not print anything after it encounters the first error with
--exit-on-first-error=yes, even with '-v'. This could be potentially confusing
to the users. However they get what they wanted, anyway.
* There is no test case present in the patch. Please supply a test case which
exercises --exit-on-first-error=yes in text and XML mode. The test case will
belong under none/tests.


>From the lower level perspective, I have the following comments:
* Source code block indentation is 3 spaces (yes, 3 spaces). Please check all
occurrences.
* New option is listed in usage_NORETURN() but
none/tests/cmdline{1,2].stdout.exp do not reflect it. Please run the regression
tests.
* Please do not introduce trailing whitespace.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385939] Optionally exit on the first error

2017-10-24 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385939

Ivo Raisr  changed:

   What|Removed |Added

  Component|memcheck|general
Summary|Option to exit on first |Optionally exit on the
   |error   |first error

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385939] Option to exit on first error

2017-10-24 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385939

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net
   Assignee|jsew...@acm.org |iv...@ivosh.net
 Status|UNCONFIRMED |ASSIGNED
 Ever confirmed|0   |1

--- Comment #1 from Ivo Raisr  ---
I will have a look.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] VEX AMD64 backend should list more real registers as available for the register allocator

2017-10-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |WONTFIX
 Status|ASSIGNED|RESOLVED

--- Comment #4 from Ivo Raisr  ---
Even after bug 384987 has been fixed, the situation did not improve much.

Running Memcheck on perf/bz2 [number of instructions]:
baseline: total: 44,936,961,809; reg alloc: 168,848,160; ratio: 15.3
patched:  total: 44,933,693,157; reg alloc: 177,659,739; ratio: 15.3

Running Memcheck on perf/tinycc:
baseline: total: 3,938,404,232; reg alloc: 121,447,931; ratio 16.2
patched:  total: 3,939,903,162; reg alloc: 127,930,047; ratio 16.2

With perf/bz2, there is only a very minor improvement. With perf/tinycc there
is actually a very minor deterioration.

I am abandoning this bug for good.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385843] [PATCH] ARM: mark caller-save VFP registes as trashed by calls

2017-10-17 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385843

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
 Status|UNCONFIRMED |CONFIRMED
   Assignee|jsew...@acm.org |iv...@ivosh.net

--- Comment #11 from Ivo Raisr  ---
We do have a number of test programs under none/tests/arm which are supposed to
test VFP.

Please could you have a look if your test program would belong into one of
these; otherwise add it there.

Then post the results of running the regression test suite before and after
your changes are applied. I will then take your patch in.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385843] [PATCH] ARM: mark caller-save VFP registes as trashed by calls

2017-10-17 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385843

--- Comment #9 from Ivo Raisr  ---
(In reply to Sindre Aamås from comment #6)
> I have not looked at the stats, but the output is as follows.

As suspected, there is a code bloat in the generated code because of the
additional spilling before helper calls.
Ratio before: 15.9
Ratio after:  16.0

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385843] [PATCH] ARM: mark caller-save VFP registes as trashed by calls

2017-10-16 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385843

--- Comment #5 from Ivo Raisr  ---
Your fix touches register allocation. It is crucial that both ARMInstr_Call()
and  getRRegUniverse_ARM() are kept in sync (hinted in getRRegUniverse_ARM as
well)
and that register allocator is presented with the workable set of registers.

By marking all Q ones as caller saved (trashed for call), register allocator
would need to spill them all before the call. This creates a performance
penalty and bloats the generated r-code.

Would you try running Memcheck on a program which uses 128-bit VFP (q)
registers  with '--stats=yes' and note the difference on 'ratio' reported?

How prevalent are programs utilizing 128-bit VFP registers compared to 64-bit
ones? In other words, are compilers (gcc) likely to utilize those registers a
lot?


A clue for your answer might lie in the document you cited first:
"Registers s16-s31 (d8-d15, q4-q7) must be preserved across subroutine calls;
registers s0-s15 (d0-d7, q0-q3) do not need to be preserved (and can be used
for passing arguments or returning results in standard procedure-call
variants). Registers d16-d31 (q8-q15), if present, do not need to be
preserved."

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 385843] [PATCH] ARM: mark caller-save VFP registes as trashed by calls

2017-10-16 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=385843

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #2 from Ivo Raisr  ---
The comment in getRRegUniverse_ARM() should be more explicit about which
registers are caller save and callee save.

And if this is indeed the case, then the patch needs to take care of supplying
different set of Q registers for register allocator use. Callee saved registers
are preferred over caller saved ones.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #21 from Ivo Raisr  ---
Thank you all for your responses! They were really helpful.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #20 from Ivo Raisr  ---
Pushed as commits:
83cabd32492e6d19d483a63522e4e874fa64b617
074de238d44c0cdaf394489ea69a67b76916fbce

https://sourceware.org/git/?p=valgrind.git;a=commit;h=83cabd32492e6d19d483a63522e4e874fa64b617
https://sourceware.org/git/?p=valgrind.git;a=commit;h=074de238d44c0cdaf394489ea69a67b76916fbce

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #19 from Ivo Raisr  ---
(In reply to Julian Seward from comment #17)
> I expect arm(32) would also get a quite big improvement, because
> it's also pretty low on registers.  [This is not a request to measure,
> just random speculation.]

Unfortunately I do not have any machine with arm32 architecture.

> Assuming power looks sane (the generated code is at least not any bigger
> with the patch), and that everything is stable, I suggest you just land
> it whenever you like.

Actually profiling for the most used 200 blocks in perf/bz2 shows only the
following difference:
-VexExpansionRatio 228 3228   141 :10
+VexExpansionRatio 228 3196   140 :10
So this means that the majority of the blocks remained the same size;
one block is slightly smaller now.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-04 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #16 from Ivo Raisr  ---
I've fixed the problem with duplicate hregIsVirtual() in host_arch_defs.c
files.

Here are the performance numbers for amd64 and x86:

Running inner Memcheck on perf/bz2 (compiled with -O or -O2).
Numbers are instruction counts:

amd64 -O:total register allocatorratio
vanilla:   45,102,001,869   165,978,807  15.5
patches:   44,928,390,448   169,280,398  15.3

amd64 -O2:
vanilla:   44,309,403,899   191,289,068  16.5
patches:   44,108,763,444   195,193,491  16.3

x86 -O:
vanilla:   48,711,841,474   233,097,543  14.6
patches:   48,077,926,058   235,505,230  14.4

x86 -O2:
vanilla:   50,400,479,522   253,382,282  15.1
patches:   49,953,764,975   256,000,363  14.9

In all cases, the new implementation is faster and produces better (compact)
code.

I will investigate the situation on power and post the results here.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-04 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #108135|0   |1
is obsolete||

--- Comment #15 from Ivo Raisr  ---
Created attachment 108171
  --> https://bugs.kde.org/attachment.cgi?id=108171&action=edit
register allocation

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-04 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #108134|0   |1
is obsolete||

--- Comment #14 from Ivo Raisr  ---
Created attachment 108170
  --> https://bugs.kde.org/attachment.cgi?id=108170&action=edit
refactor MOV coalescing

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #6 from Ivo Raisr  ---
I've tested on amd64, ppc8le and arm64 architectures.
In all cases, the produced code was more compact and overall performance
better, when running inner Memcheck on perf/bz2.
Numbers are given as instruction count; ratio as reported by Memcheck with
'--stats=yes'.

amd64:
vanilla:45,112,349,784 total; 165,978,807 reg alloc; ratio 15.5
v3-reoder:  44,943,765,809 total; 167,403,237 reg alloc; ratio 15.3

power8le:
vanilla:61,928,020,284 total; 351,285,156 reg alloc; ratio 17.0
v3-reorder: 61,919,130,481 total; 343,001,581 reg alloc; ratio 17.0

arm64 [callgrind does not work on this arch]:
vanilla:ratio 14.7
v3-reorder: ratio 14.7
Manual inspection of top 200 SB profiled blocks showed VexExpansionRatio
always few instructions better than in vanilla.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #107964|0   |1
is obsolete||

--- Comment #5 from Ivo Raisr  ---
Created attachment 108135
  --> https://bugs.kde.org/attachment.cgi?id=108135&action=edit
register allocation

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #107963|0   |1
is obsolete||

--- Comment #4 from Ivo Raisr  ---
Created attachment 108134
  --> https://bugs.kde.org/attachment.cgi?id=108134&action=edit
refactor MOV coalescing

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-10-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384337

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384337] performance improvements to VEX register allocator v2 and v3

2017-10-03 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384337

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384987

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #3 from Ivo Raisr  ---
The only remaining thing is to refactor isMove callbacks in the remaining
architectures so that the information is available directly in HRegUsage.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

--- Comment #2 from Ivo Raisr  ---
Created attachment 107964
  --> https://bugs.kde.org/attachment.cgi?id=107964&action=edit
register allocation

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Status|CONFIRMED   |ASSIGNED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #1 from Ivo Raisr  ---
Created attachment 107963
  --> https://bugs.kde.org/attachment.cgi?id=107963&action=edit
refactor MOV coalescing

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] New: VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Bug ID: 384987
   Summary: VEX register allocator: allocate caller-save registers
for short lived vregs
   Product: valgrind
   Version: 3.14 SVN
  Platform: Compiled Sources
OS: Linux
Status: UNCONFIRMED
  Severity: normal
  Priority: NOR
 Component: vex
  Assignee: jsew...@acm.org
  Reporter: iv...@ivosh.net
  Target Milestone: ---

This is a performance improvement based on Peter Bergner's suggestion:
Allocate caller-saved registers for short lived vregs and callee-save registers
for vregs which span accross helper calls.

This idea is quite simple but MOV coalescing went in the way.
The first patch enhances MOV coalescing so it keeps better track of what
registers form the coalescing chain. The second patch actually changes
find_free_rreg().

With just a minor additional complexity, we get more compact generated code.
This not only helps for better performance; it should also help with i-cache
misses.

Measuring instruction count, running inner Memcheck:

perf/bz2:
vanilla:   45,112,349,784 total; reg alloc 165,978,807; ratio 15.5 (97,397
-> 1,506,163)
coalesce only: 45,120,691,777 total; reg alloc 167,035,575; ratio 15.5 (97,610
-> 1,509,396)
both patches:  44,943,765,809 total; reg alloc 167,403,237; ratio 15.3 (97,607
-> 1,493,722)

/bin/true:
vanilla:   3,514,906,884 total; reg alloc 60,779,126
coalesce only: 3,506,029,832 total; reg alloc 61,242,900
both patches:  3,503,495,437 total; reg alloc 61,395,160

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384987] VEX register allocator: allocate caller-save registers for short lived vregs

2017-09-23 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384987

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Assignee|jsew...@acm.org |iv...@ivosh.net
 Status|UNCONFIRMED |CONFIRMED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384337] performance improvements to VEX register allocator v2 and v3

2017-09-22 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384337

Ivo Raisr  changed:

   What|Removed |Added

 Attachment #107674|0   |1
is obsolete||
 Attachment #107676|0   |1
is obsolete||
 Attachment #107678|0   |1
is obsolete||
 Attachment #107711|0   |1
is obsolete||

--- Comment #14 from Ivo Raisr  ---
Created attachment 107958
  --> https://bugs.kde.org/attachment.cgi?id=107958&action=edit
Refactor tracking of MOV coalescing.

VReg<->VReg MOV coalescing status is now a part of the HRegUsage.
This allows register allocation to query it two times without incurring
a performance penalty. This in turn allows to better keep track of
vreg<->vreg MOV coalescing so that all vregs in the coalesce chain
get the effective |dead_before| of the last vreg.

A small performance improvement has been observed because this allows
to coalesce even spilled vregs (previously only assigned ones).

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384732] posix_spawn with glibc 2.25 causes an assertion

2017-09-19 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384732

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #8 from Ivo Raisr  ---
Solaris port had to support "proper" vfork semantics right from the beginning
because Solaris libc relies on its proper functioning.

So there are some clever workarounds how to "preserve" vfork semantics but
translate it to fork() at the same time.
Have a look at coregrind/m_syswrap/syswrap-solaris.c and
coregrind/vg_preloaded.c, search there for "vfork".
Apart from other stuff which goes on there, a pipe is created to communicate
error code from child to parent. This in fact emulates shared address space.

If I understand it correctly, pipe was used previously for the very same reason
in glibc <= 2.24. Perhaps this mechanism can be leveraged in Valgrind for glibc
>= 2.25?

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384729] __libc_freeres inhibits cross-platform valgrind

2017-09-15 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384729

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #2 from Ivo Raisr  ---
Calling optional __gnu_cxx::__freeres() already leverages weak reference
mechanism. So __libc__freeres() could use the same mechanism.

After you make __libc_freeres() optional, please delete references to it in
README_DEVELOPERS as it would be no longer needed.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-14 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

--- Comment #6 from Ivo Raisr  ---
At the end only %r11 was removed from the list in getRegUsage_AMD64Instr()
because it's used overall as a temporary register for destination address.

%rax, %rcx, %rdx could in theory be used as allocatable but performance
measurements did not prove it worthwhile (see bug 384676).

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-14 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

Ivo Raisr  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #5 from Ivo Raisr  ---
Committed as 00d4667295a821fef9eb198abcb0c942dffb6045.
https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=00d4667295a821fef9eb198abcb0c942dffb6045

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] VEX AMD64 backend should list more real registers as available for the register allocator

2017-09-14 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

--- Comment #2 from Ivo Raisr  ---
Unfortunately performance measurements do not confirm this as a good idea.

Measuring Memcheck on perf/bz2, instruction count:
v3 baseline: 45,110 M total; 168 M register allocator
v3 patched:  45,123 M total; 176 M register allocator
v2 baseline: 45,190 M total; 209 M register allocator
v2 patched:  45,266 M total; 220 M register allocator

Measuring Memcheck on tinycc, instruction count:
v3 baseline: 4,155,471 k total; 86,438 k register allocator
v3 patched:  4,155,207 k total; 91,193 k register allocator

I'd conclude that although two more registers are available to the register
allocator, it does not help because:
- they are caller saved registers
- register allocator needs to iterate over more registers

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

--- Comment #4 from Ivo Raisr  ---
The part with %rax, %rcx, %rdx, %r11 removal from getRegUsage_AMD64Instr() will
be removed from the patch.

The reason is explained in greater detail in:
Bug 384676 - VEX AMD64 backend should list more real registers as available for
the register allocator
https://bugs.kde.org/show_bug.cgi?id=384676

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384676

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] VEX AMD64 backend should list more real registers as available for the register allocator

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384584

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] VEX AMD64 backend should list more real registers as available for the register allocator

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #1 from Ivo Raisr  ---
Created attachment 107840
  --> https://bugs.kde.org/attachment.cgi?id=107840&action=edit
patch

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] VEX AMD64 backend should list more real registers as available for the register allocator

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

Ivo Raisr  changed:

   What|Removed |Added

 Ever confirmed|0   |1
   Assignee|jsew...@acm.org |iv...@ivosh.net
 Status|UNCONFIRMED |ASSIGNED

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384676] New: VEX AMD64 backend should list more real registers as available for the register allocator

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384676

Bug ID: 384676
   Summary: VEX AMD64 backend should list more real registers as
available for the register allocator
   Product: valgrind
   Version: 3.14 SVN
  Platform: Compiled Sources
OS: Linux
Status: UNCONFIRMED
  Severity: normal
  Priority: NOR
 Component: vex
  Assignee: jsew...@acm.org
  Reporter: iv...@ivosh.net
  Target Milestone: ---

Currently host_amd64_defs.* list RAX, RCX and RDX as not available to the
register allocator. I think this is a mistake and they should be made
available.

The more Int64 registers available to the register allocator, the better is the
final produced code.

Running Valgrind regression test suite shows that %rcx and %rdx can be enabled
with no problems. For %rax there is some unimplemented functionality (search
for FIXME in host_amd64_defs.c)

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

--- Comment #3 from Ivo Raisr  ---
And also please add the line explanation somewhere. User manual, verbose
output...

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384633] Add a simple progress-reporting facility

2017-09-13 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384633

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #2 from Ivo Raisr  ---
Thank you for the patch, Julian.

I will implement VG_(get_user_milliseconds)() for Solaris, that's not a
problem.

However I wonder why allowed values for --progress-interval are only 1..3600?
Why not 0, the default?

Please also do something with comments around next_report_due_at, they look
really scary. This is not the first static variable we have in Valgrind...

What happens if a Valgrind'ed process with --progress-interval > 0 is suspended
for several minutes? Is the logic in maybe_progress_report() able to cope
with this?

And the last nit - please use %u for "#thr" formatting instead of "%d".
nThreads is UInt.

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

Ivo Raisr  changed:

   What|Removed |Added

 CC||iv...@ivosh.net

--- Comment #1 from Ivo Raisr  ---
Created attachment 107794
  --> https://bugs.kde.org/attachment.cgi?id=107794&action=edit
patch

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384584] Callee saved registers listed first for AMD64, X86, and PPC architectures

2017-09-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384584

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384337

-- 
You are receiving this mail because:
You are watching all bug changes.

[valgrind] [Bug 384337] performance improvements to VEX register allocator v2 and v3

2017-09-11 Thread Ivo Raisr
https://bugs.kde.org/show_bug.cgi?id=384337

Ivo Raisr  changed:

   What|Removed |Added

   See Also||https://bugs.kde.org/show_b
   ||ug.cgi?id=384584

-- 
You are receiving this mail because:
You are watching all bug changes.

  1   2   3   4   5   6   7   >