]> git.ipfire.org Git - thirdparty/valgrind.git/log
thirdparty/valgrind.git
11 years agoImprove performance of dwarf3 reader using a hashtable of parsed abbreviations
Philippe Waroquiers [Sun, 15 Jun 2014 10:51:14 +0000 (10:51 +0000)] 
Improve performance of dwarf3 reader using a hashtable of parsed abbreviations

For each DIE, the dwarf3 reader must know which data elements to read.
These elements are described by an abbreviation.
Re-reading these abbreviations for each DIE is costly as
the location of the needed abbreviation is found by scanning the full
abbv section, which is very costly.
(A small cache of 32 abbv offsets in the abbv section somewhat decreases
the cost, but reading the abbvs is still a hot spot, in particular for
big debug informations).

This patch:
  * adds an hash table of parsed abbreviations
  * all abbreviations for a CU are read in one single scan of the abbv
    section, when the CU header is read
So, with the patch, the di image is not accessed anymore for reading the abbvs
after the CU header parsing.

On a big executable, --read-var-info=yes user cpu changes from
  trunk:      320 seconds
to
  abbv cache: 270 seconds

This further improves on a previous (not committed) abbv cache that
was just caching up to 513 entries in the abbv pos cache and populating
the cache with an initial scan. The user cpu for this version was 285 seconds.

NB: this is some work in anticipation of a following patch that
will add reading dwarf3 inlined information, with the hope to make
this reading fast enough to activate it by default.

Note: on the examples I looked at, all abbreviations were numbered starting
from 1, with no holes. If that would always be the case, then one could use
an xarray of parsed abbreviations rather than an hash table. However,
I found nothing in the dwarf standard that guarantees that abbreviations
are numbered from 1. So, the hash table.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14035

11 years agosmall improvement in x86 unwind debug tracing
Philippe Waroquiers [Sat, 14 Jun 2014 22:12:37 +0000 (22:12 +0000)] 
small improvement in x86 unwind debug tracing

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14034

11 years agoDo not destroy the strpool if NULL
Philippe Waroquiers [Sat, 14 Jun 2014 19:09:22 +0000 (19:09 +0000)] 
Do not destroy the strpool if NULL
It is possible that a debug info contains no string (and so strpool
is never allocated).
A protection to avoid accessing strpool was already necessary
in ML_(canonicaliseTables) :
   if (di->strpool)
      VG_(freezeDedupPA) (di->strpool);

So, if a similar debug info is released, we need the same protection
to avoid accessing a NULL strpool.

Detect by Julian on arm64, but not (at least easily) reproduced on amd64.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14033

11 years agoAdd test cases for LD1R (single structure, replicate).
Julian Seward [Sat, 14 Jun 2014 18:06:14 +0000 (18:06 +0000)] 
Add test cases for LD1R (single structure, replicate).

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14032

11 years agodrd: Revert r14023
Bart Van Assche [Sat, 14 Jun 2014 16:39:46 +0000 (16:39 +0000)] 
drd: Revert r14023

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14031

11 years agodrd/tests/std_thread2: Disable this test temporarily such that the suppression patter...
Bart Van Assche [Sat, 14 Jun 2014 16:39:28 +0000 (16:39 +0000)] 
drd/tests/std_thread2: Disable this test temporarily such that the suppression patterns can be restored

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14030

11 years agoThis patch adds a 'de-duplicating memory pool allocator':
Philippe Waroquiers [Sat, 14 Jun 2014 16:30:09 +0000 (16:30 +0000)] 
This patch adds a 'de-duplicating memory pool allocator':
  include/pub_tool_deduppoolalloc.h
  coregrind/pub_core_deduppoolalloc.h
  coregrind/m_deduppoolalloc.c
and uses it (currently only) for the strings in m_debuginfo/storage.c
The idea is that such ddup pool allocator will also be used for other
highly duplicated information (e.g. the DiCFSI information), where
significant gains can also be achieved.
The dedup pool for strings also decreases significantly the memory
needed by the read inline information (patch still to be committed,
see bug 278972).

When testing with a big executable (tacot_process),
this reduces the size of the dinfo arena from
  trunk:  158941184/109760512  max/curr mmap'd, 156775944/107882728 max/curr,
to
  ddup:   157892608/106614784  max/curr mmap'd, 156362160/101414712 max/curr

(so 3Mb less mmap-ed once debug info is read, 1Mb less mmap-ed in peak,
6Mb less allocated once debug info is read).

This is all gained due to the string which changes from:
  trunk:   17,434,704 in       266: di.storage.addStr.1
to
  ddup:    10,966,608 in       750: di.storage.addStr.1
(6.5Mb less memory used by strings)
The gain in mmap-ed memory is smaller due to fragmentation.
Probably one could decrease the fragmentation by using bigger
size for the dedup pool, but then we would lose memory on the last
allocated pool (and for small libraries, we often do not use much
of a big pool block).
Solution might be to increase the pool size but have a "shrink_block"
operation. To be looked at in the future.

In terms of performance, startup of a big executable (on an old pentium)
is not influenced significantly (something like 0.1 seconds on 15 seconds
startup for a big executable, on a slow pentium).

The dedup pool uses a hash table. The hash function used currently
is the VG_(adler32) check sum. It is reported (and visible also here)
that this checksum is not a very good hash function (many collisions).

To have statistics about collisions, use  --stats -v -v -v

As an example of the collisions, on the strings in debug info of memcheck tool on x86,
one obtain:
   --4789-- dedupPA:di.storage.addStr.1 9983 allocs (8174 uniq) 11 pools (4820 bytes free in last pool)
   --4789-- nr occurences of chains of len N, N-plicated keys, N-plicated elts
   --4789-- N: 0 : nr chain   6975, nr keys      0, nr elts      0
   --4789-- N: 1 : nr chain   3670, nr keys   6410, nr elts   8174
   --4789-- N: 2 : nr chain   1070, nr keys    226, nr elts      0
   --4789-- N: 3 : nr chain    304, nr keys    100, nr elts      0
   --4789-- N: 4 : nr chain    104, nr keys     84, nr elts      0
   --4789-- N: 5 : nr chain     72, nr keys     42, nr elts      0
   --4789-- N: 6 : nr chain     44, nr keys     34, nr elts      0
   --4789-- N: 7 : nr chain     18, nr keys     13, nr elts      0
   --4789-- N: 8 : nr chain     17, nr keys      8, nr elts      0
   --4789-- N: 9 : nr chain      4, nr keys      6, nr elts      0
   --4789-- N:10 : nr chain      9, nr keys      4, nr elts      0
   --4789-- N:11 : nr chain      1, nr keys      0, nr elts      0
   --4789-- N:13 : nr chain      1, nr keys      1, nr elts      0
   --4789-- total nr of unique   chains:  12289, keys   6928, elts   8174
which shows that on 8174 different strings, we have only 6410 strings which have
a unique hash value. As other examples, N:13 line shows we have 13 strings
mapping to the same key. N:14 line shows we have 4 groups of 10 strings mapping to the
same key, etc.
So, adler32 is definitely a bad hash function.
Trials have been done with another hash function, giving a much lower
collision rate. So, a better (but still fast) hash function would probably
be beneficial. To be looked at ...

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14029

11 years agoEnhance slightly the x86 debug trace unwind code
Philippe Waroquiers [Sat, 14 Jun 2014 10:04:51 +0000 (10:04 +0000)] 
Enhance slightly the x86 debug trace unwind code

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14028

11 years agoFix the cleanup: line to avoid an error message in case the
Florian Krohm [Thu, 12 Jun 2014 15:37:15 +0000 (15:37 +0000)] 
Fix the cleanup: line to avoid an error message in case the
file does not exist.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14027

11 years agoAdd test cases for FMUL 2d_2d_d[], 4s_4s_s[], 2s_2s_s[].
Julian Seward [Thu, 12 Jun 2014 13:16:43 +0000 (13:16 +0000)] 
Add test cases for FMUL 2d_2d_d[], 4s_4s_s[], 2s_2s_s[].

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14026

11 years agoAdd tests for movi_4s_#imm8,lsl8 and ushr_d_d_#imm.
Julian Seward [Thu, 12 Jun 2014 10:13:44 +0000 (10:13 +0000)] 
Add tests for movi_4s_#imm8,lsl8 and ushr_d_d_#imm.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14025

11 years agoconfigure.ac: Fix Boost detection test
Bart Van Assche [Thu, 12 Jun 2014 07:45:23 +0000 (07:45 +0000)] 
configure.ac: Fix Boost detection test

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14024

11 years agoglibc-2.X-drd.supp: Add support for --num-callers=1
Bart Van Assche [Wed, 11 Jun 2014 06:57:02 +0000 (06:57 +0000)] 
glibc-2.X-drd.supp: Add support for --num-callers=1

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14023

11 years agodrd/tests/std_thread2: Make this test independent of the libstdc++ version
Bart Van Assche [Wed, 11 Jun 2014 06:39:03 +0000 (06:39 +0000)] 
drd/tests/std_thread2: Make this test independent of the libstdc++ version

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14022

11 years agoEnable test for movi_{16b,8b}_#imm8.
Julian Seward [Tue, 10 Jun 2014 22:53:01 +0000 (22:53 +0000)] 
Enable test for movi_{16b,8b}_#imm8.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14021

11 years agoUpdate.
Julian Seward [Tue, 10 Jun 2014 12:05:33 +0000 (12:05 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14020

11 years agodrd/tests/std_thread2: Filter out libstdc++ header file line numbers
Bart Van Assche [Tue, 10 Jun 2014 07:46:50 +0000 (07:46 +0000)] 
drd/tests/std_thread2: Filter out libstdc++ header file line numbers

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14019

11 years agoAvoid warnings due to implicit conversion between void*, Addr, and fn pointers
Philippe Waroquiers [Mon, 9 Jun 2014 22:08:45 +0000 (22:08 +0000)] 
Avoid warnings due to implicit conversion between void*, Addr, and fn pointers

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14018

11 years agoWhen enabling hostvisibility in gdbsrv, give a more user friendly
Philippe Waroquiers [Mon, 9 Jun 2014 15:47:46 +0000 (15:47 +0000)] 
When enabling hostvisibility in gdbsrv, give a more user friendly
message for the required GDB add-symbol-file command

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14017

11 years agodrd/tests: Update Subversion ignore list
Bart Van Assche [Mon, 9 Jun 2014 09:20:20 +0000 (09:20 +0000)] 
drd/tests: Update Subversion ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14016

11 years agodrd: Ignore ordering introduced by a mutex used in the thread creation wrapper
Bart Van Assche [Mon, 9 Jun 2014 09:19:26 +0000 (09:19 +0000)] 
drd: Ignore ordering introduced by a mutex used in the thread creation wrapper

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14015

11 years agodrd/tests/std_thread2: Add
Bart Van Assche [Mon, 9 Jun 2014 09:01:46 +0000 (09:01 +0000)] 
drd/tests/std_thread2: Add

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14014

11 years agodrd/tests/local_static: Disable because g++ does not yet allow proper interception...
Bart Van Assche [Mon, 9 Jun 2014 09:00:42 +0000 (09:00 +0000)] 
drd/tests/local_static: Disable because g++ does not yet allow proper interception of initialization of local static variables

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14013

11 years agodrd: Add __cxa_guard_*() intercepts
Bart Van Assche [Mon, 9 Jun 2014 07:55:14 +0000 (07:55 +0000)] 
drd: Add __cxa_guard_*() intercepts

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14012

11 years agodrd/tests/local_static: Fix a typo
Bart Van Assche [Mon, 9 Jun 2014 07:38:32 +0000 (07:38 +0000)] 
drd/tests/local_static: Fix a typo

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14011

11 years agodrd/tests: Update Subversion ignore list
Bart Van Assche [Mon, 9 Jun 2014 06:56:06 +0000 (06:56 +0000)] 
drd/tests: Update Subversion ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14010

11 years agodrd/tests/local_static: Add
Bart Van Assche [Mon, 9 Jun 2014 06:54:30 +0000 (06:54 +0000)] 
drd/tests/local_static: Add

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14009

11 years agogdbserver_tests: Update Subversion ignore list
Bart Van Assche [Mon, 9 Jun 2014 06:53:13 +0000 (06:53 +0000)] 
gdbserver_tests: Update Subversion ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14008

11 years agomemcheck/tests: Update Subversion ignore list
Bart Van Assche [Mon, 9 Jun 2014 06:52:46 +0000 (06:52 +0000)] 
memcheck/tests: Update Subversion ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14007

11 years agonone/tests/amd64: Update Subversion ignore list
Bart Van Assche [Mon, 9 Jun 2014 06:52:24 +0000 (06:52 +0000)] 
none/tests/amd64: Update Subversion ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14006

11 years agoshared: Update ignore list
Bart Van Assche [Mon, 9 Jun 2014 06:51:03 +0000 (06:51 +0000)] 
shared: Update ignore list

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14005

11 years agodrd manual: Fix C++11 instructions
Bart Van Assche [Sat, 7 Jun 2014 13:16:24 +0000 (13:16 +0000)] 
drd manual: Fix C++11 instructions

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14004

11 years agodrd/tests/std_thread: Remove two superfluous macro definitions
Bart Van Assche [Sat, 7 Jun 2014 13:13:45 +0000 (13:13 +0000)] 
drd/tests/std_thread: Remove two superfluous macro definitions

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14003

11 years agodrd/tests/std_thread: Minimize diffs with original
Bart Van Assche [Sat, 7 Jun 2014 07:48:04 +0000 (07:48 +0000)] 
drd/tests/std_thread: Minimize diffs with original

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14002

11 years agodrd/tests/std_thread: Enable this test program
Bart Van Assche [Sat, 7 Jun 2014 07:31:56 +0000 (07:31 +0000)] 
drd/tests/std_thread: Enable this test program

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14001

11 years agohave helgrind filter_stderr transforming tid n into tid #x
Philippe Waroquiers [Fri, 6 Jun 2014 23:45:46 +0000 (23:45 +0000)] 
have helgrind filter_stderr transforming tid n into tid #x
to avoid gdbserver_tests/hginfo random failures
caused by thread scheduling differences

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14000

11 years agodrd manual: Document how to avoid false positive reports on the C++11 std::thread...
Bart Van Assche [Fri, 6 Jun 2014 07:23:06 +0000 (07:23 +0000)] 
drd manual: Document how to avoid false positive reports on the C++11 std::thread class

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13998

11 years agoEnable sys_fchmodat.
Julian Seward [Wed, 4 Jun 2014 23:22:29 +0000 (23:22 +0000)] 
Enable sys_fchmodat.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13997

11 years agoFix out-of-range constants for some 32 bit insns, presumably tolerated
Julian Seward [Wed, 4 Jun 2014 21:55:16 +0000 (21:55 +0000)] 
Fix out-of-range constants for some 32 bit insns, presumably tolerated
by older assembler versions but not newer ones.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13996

11 years agoAdd test cases for ADC/ADCS/SBC/SBCS. Pertains to #335496.
Julian Seward [Wed, 4 Jun 2014 13:13:05 +0000 (13:13 +0000)] 
Add test cases for ADC/ADCS/SBC/SBCS.  Pertains to #335496.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13995

11 years agomips64: Tests for Cavium MIPS Octeon Atomic and Count Instructions.
Dejan Jevtic [Wed, 4 Jun 2014 11:36:21 +0000 (11:36 +0000)] 
mips64: Tests for Cavium MIPS Octeon Atomic and Count Instructions.

Tests for instructions:
baddu, pop, dpop, saa, saad, laa, laad, lai, laid, lad, ladd, law, lawd,
las, lasd, lac, lacd

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13994

11 years agoMake each test disable-able, and enable tests of instructions that are
Julian Seward [Wed, 4 Jun 2014 11:20:18 +0000 (11:20 +0000)] 
Make each test disable-able, and enable tests of instructions that are
currently supported.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13993

11 years agoUpdate.
Julian Seward [Sun, 1 Jun 2014 17:46:18 +0000 (17:46 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13992

11 years agoImprove address description for address in the stack.
Philippe Waroquiers [Thu, 22 May 2014 23:48:24 +0000 (23:48 +0000)] 
Improve address description for address in the stack.
--read-var-info=yes is very memory and cpu intensive.
This patch ensures that even witout --read-var-info=yes that
the frame where the address point is reported in the address
description.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13991

11 years agoCheck for setcap executables, as we already do for setuid and
Tom Hughes [Thu, 22 May 2014 08:57:06 +0000 (08:57 +0000)] 
Check for setcap executables, as we already do for setuid and
setgid ones, and refuse to run them in the same way. BZ#335143.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13990

11 years agoUpdate.
Julian Seward [Wed, 21 May 2014 20:23:43 +0000 (20:23 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13989

11 years agoForgot to update NEWS file with bugzilla 335155 fix.
Carl Love [Wed, 21 May 2014 19:33:57 +0000 (19:33 +0000)] 
Forgot to update NEWS file with bugzilla 335155 fix.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13988

11 years agovgdb, fix error print statement.
Carl Love [Wed, 21 May 2014 19:06:59 +0000 (19:06 +0000)] 
vgdb, fix error print statement.

This patch fixes printing the first not delivered signal.

Signed-off-by: Carl Love <carll@us.ibm.com>
This bug was reported in bugzilla 335155.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13987

11 years agoAdd test cases for PCMPxSTRx cases 0x0E, 0x34, 0x14, and reformat some
Julian Seward [Wed, 21 May 2014 14:43:11 +0000 (14:43 +0000)] 
Add test cases for PCMPxSTRx cases 0x0E, 0x34, 0x14, and reformat some
of the associated switch statements.  Pertains to #326469, #327639,
#328878 respectively.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13986

11 years agoNEWS: Add #333072
Bart Van Assche [Sun, 18 May 2014 19:33:39 +0000 (19:33 +0000)] 
NEWS: Add #333072

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13985

11 years agodrd: Add semaphore annotations (#333072)
Bart Van Assche [Sun, 18 May 2014 19:32:26 +0000 (19:32 +0000)] 
drd: Add semaphore annotations (#333072)

This is a slightly modified version of a patch from Ivo Raisr <ivosh@ivosh.net>

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13984

11 years agoon ppc64, pthread_create_WRK is not (always) produced in the stacktrace
Philippe Waroquiers [Sun, 18 May 2014 17:09:44 +0000 (17:09 +0000)] 
on ppc64, pthread_create_WRK is not (always) produced in the stacktrace
showing where a thread was created.
This makes many tests fail => use sed to delete pthread_create_WRK
from the stacktrace to let tests succeed on ppc64.
With this change, on ppc64 gcc110 (fedora 18), helgrind failures
goes from 28 tests failing to 4, with following reasons:
helgrind/tests/pth_cond_destroy_busy     (stderr)
    (6 errors instead of 3 in the summary line ???)
helgrind/tests/tc06_two_races_xml        (stderr)
    similar change needed in filter_xml to del pthread_create_WRK
helgrind/tests/tc18_semabuse             (stderr)
   -   with error code 22 (EINVAL: Invalid argument)
   +   with error code 38 (ENOSYS: Function not implemented)
helgrind/tests/tc20_verifywrap           (stderr)
   -   with error code 22 (EINVAL: Invalid argument)
   +   with error code 38 (ENOSYS: Function not implemented)

More details about the stacktrace not containing pthread_create_WRK:
--------------------------------------------------------------------
Here is the stacktrace obtained by GDB+vgdb:
(gdb) bt
#0  0x0000008074f7ac5c in .__clone () from /lib64/libc.so.6
#1  0x000000807517b1ec in do_clone (pd=0x4c6f200, attr=0x8075189c90 <default_attr>, stackaddr=<optimized out>, stopped=<optimized out>,
    fct=@0x80751a01e0: 0x807517c500 <start_thread>, clone_flags=4001536) at ../nptl/sysdeps/pthread/createthread.c:74
#2  0x000000000403ed0c in pthread_create_WRK (thread=<error reading variable: value has been optimized out>,
    attr=<error reading variable: value has been optimized out>, start=<error reading variable: value has been optimized out>,
    arg=0xfff00ee18) at hg_intercepts.c:269
#3  0x000000000403ef1c in _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa (thread=<optimized out>, attr=<optimized out>,
    start=<optimized out>, arg=<optimized out>) at hg_intercepts.c:300
#4  0x000000003806f1d8 in ?? ()
#5  0x0000008074e9fb94 in generic_start_main (main=@0x100200d8: 0x100013a0 <main>, argc=<optimized out>, ubp_av=0xfff00f2d8,
    auxvec=0xfff00f408, init=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>, fini=<optimized out>)
    at ../csu/libc-start.c:225
#6  0x0000008074e9fd90 in __libc_start_main (argc=<optimized out>, ubp_av=<optimized out>, ubp_ev=<optimized out>,
    auxvec=<optimized out>, rtld_fini=<optimized out>, stinfo=<optimized out>, stack_on_entry=<optimized out>)
    at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:91
#7  0x0000000000000000 in ?? ()
(gdb)

and here is the stacktrace produced by Valgrind unwinder:
Thread 1: status = VgTs_Runnable
==41687==    at 0x8074F7AC5C: clone (in /usr/lib64/libc-2.16.so)
==41687==    by 0x807517B1EB: do_clone.constprop.3 (createthread.c:74)
==41687==    by 0x403EF1B: pthread_create@* (hg_intercepts.c:300)
==41687==    by 0x10001597: main (tc19_shadowmem.c:172)
valgrind stack top usage: 15328 of 1048576

When the 2nd clone break is encountered (in the child thread), here is
the GDB stacktraces:

Thread 2 (Thread 6028):
#0  0x0000008074f75fb0 in .madvise () from /lib64/libc.so.6
#1  0x000000807517c700 in start_thread (arg=0x4c6f200) at pthread_create.c:402
#2  0x0000008074f7acf0 in .__clone () from /lib64/libc.so.6

Thread 1 (Thread 41687):
#0  pthread_create_WRK (thread=0xfff00ee10, attr=0x0, start=@0x100200e8: 0x10001dd0 <steer>, arg=0xfff00ee18) at hg_intercepts.c:248
#1  0x000000000403ef1c in _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa (thread=<optimized out>, attr=<optimized out>,
    start=<optimized out>, arg=<optimized out>) at hg_intercepts.c:300
#2  0x000000003806f1d8 in ?? ()
#3  0x0000008074e9fb94 in generic_start_main (main=@0x100200d8: 0x100013a0 <main>, argc=<optimized out>, ubp_av=0xfff00f2d8,
    auxvec=0xfff00f408, init=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>, fini=<optimized out>)
    at ../csu/libc-start.c:225
#4  0x0000008074e9fd90 in __libc_start_main (argc=<optimized out>, ubp_av=<optimized out>, ubp_ev=<optimized out>,
    auxvec=<optimized out>, rtld_fini=<optimized out>, stinfo=<optimized out>, stack_on_entry=<optimized out>)
    at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:91
#5  0x0000000000000000 in ?? ()
(gdb)

Here are the valgrind stacktraces:
Thread 1: status = VgTs_Runnable
==41687==    at 0x403EBE0: pthread_create_WRK (hg_intercepts.c:248)
==41687==    by 0x403EF1B: pthread_create@* (hg_intercepts.c:300)
==41687==    by 0x8074E9FB93: generic_start_main.isra.0 (libc-start.c:225)
==41687==    by 0x8074E9FD8F: (below main) (libc-start.c:91)
valgrind stack top usage: 15328 of 1048576

Thread 2: status = VgTs_WaitSys
==41687==    at 0x8074F75FB0: madvise (in /usr/lib64/libc-2.16.so)
==41687==    by 0x807517C6FF: start_thread (pthread_create.c:402)
valgrind stack top usage: 10320 of 1048576

And then after a few more next/breaks:
Thread 1: status = VgTs_Runnable
==41687==    at 0x8074F7AC5C: clone (in /usr/lib64/libc-2.16.so)
==41687==    by 0x807517B1EB: do_clone.constprop.3 (createthread.c:74)
==41687==    by 0x403EF1B: pthread_create@* (hg_intercepts.c:300)
==41687==    by 0x100015BB: main (tc19_shadowmem.c:173)
valgrind stack top usage: 15328 of 1048576

Thread 2: status = VgTs_WaitSys
==41687==    at 0x8074F75FB0: madvise (in /usr/lib64/libc-2.16.so)
==41687==    by 0x807517C6FF: start_thread (pthread_create.c:402)
valgrind stack top usage: 10320 of 1048576

So, pthread_create_WRK is not in the stacktrace anymore.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13983

11 years agoFix exp-bbv testcases such that they can be built out-of-tree.
Florian Krohm [Sun, 18 May 2014 16:16:13 +0000 (16:16 +0000)] 
Fix exp-bbv testcases such that they can be built out-of-tree.
Part of fixing #333628.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13982

11 years agoEnable vgdb ptrace invoker for aarch64.
Philippe Waroquiers [Sat, 17 May 2014 13:50:02 +0000 (13:50 +0000)] 
Enable vgdb ptrace invoker for aarch64.

This only works in non-bi arch mode. If ever aarch64+arm
are compiled bi-arch, then some more work is needed to have
a 64 bits vgdb able to ptrace invoke a 32 bits valgrind.

Note also that PTRACE_GETREGSET is defined on other platforms
(e.g. ppc64 fedora 18 defines it), but it is not used on
these platforms, as again, PTRACE_GETREGSET implies some
work for bi-arch to work properly.
So, on all platforms except arm64, we use PTRACE_GETREGS
or PTRACE_PEEKUSER.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13981

11 years agodrd/tests/atomic_var: Revert r13876.
Bart Van Assche [Sat, 17 May 2014 10:44:00 +0000 (10:44 +0000)] 
drd/tests/atomic_var: Revert r13876.

r13876 was a workaround for false ordering introduced by platform-specific
(Solaris) code. The conclusion of an off-list discussion was that this has
to be solved in the drd tool itself and not by modifying test programs. Hence
this revert.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13980

11 years agoFix 334788 clarify doc about --log-file initial program directory
Philippe Waroquiers [Sat, 17 May 2014 05:50:46 +0000 (05:50 +0000)] 
Fix 334788  clarify doc about --log-file initial program directory
Behaviour is kept unchanged, a paragraph is added in the doc to
clarify.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13979

11 years agoRevert "Tools should explain why an option is bad when using fmsg_bad_option."
Mark Wielaard [Fri, 16 May 2014 22:38:46 +0000 (22:38 +0000)] 
Revert "Tools should explain why an option is bad when using fmsg_bad_option."

This reverts valgrind svn r13975. This was a work in progress, still being
discussed in bug #334802. It should not yet been pushed.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13978

11 years agoOn old kernel, poll syscall being ptraced (vgdb+ptrace) is not necessarily
Philippe Waroquiers [Fri, 16 May 2014 22:37:57 +0000 (22:37 +0000)] 
On old kernel, poll syscall being ptraced (vgdb+ptrace) is not necessarily
properly restarted. Instead, it can fail with EINTR, even if no signal was
effectively received.

Handle such case by retrying the poll syscall when the poll syscall
is failing due to EINTR

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13977

11 years agoRevert configure support for adding -Werror=format-security.
Mark Wielaard [Fri, 16 May 2014 22:28:48 +0000 (22:28 +0000)] 
Revert configure support for adding -Werror=format-security.

This reverts part of valgrind svn r13962. There was a typo in the configure
check that caused failures when -Werror=format-security wasn't supported
and the flag interfered badly with -Wno-format-zero-length. So remove
for now and only add back when properly tested on various (older) setups.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13976

11 years agoTools should explain why an option is bad when using fmsg_bad_option.
Mark Wielaard [Fri, 16 May 2014 22:28:42 +0000 (22:28 +0000)] 
Tools should explain why an option is bad when using fmsg_bad_option.

Add an explanation of why an option was bad to fmsg_bad_option calls that
were just using "" as argument. Fixes bug #334802.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13975

11 years agoarm64-linux: enable sys_sched_setaffinity, sys_linkat.
Julian Seward [Fri, 16 May 2014 15:02:09 +0000 (15:02 +0000)] 
arm64-linux: enable sys_sched_setaffinity, sys_linkat.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13974

11 years agoUpdate.
Julian Seward [Fri, 16 May 2014 12:22:50 +0000 (12:22 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13973

11 years agoEnable: sys_add_key, sys_keyctl, apparently needed by glibc-2.19.90 on
Julian Seward [Thu, 15 May 2014 16:47:56 +0000 (16:47 +0000)] 
Enable: sys_add_key, sys_keyctl, apparently needed by glibc-2.19.90 on
arm64-linux.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13972

11 years agoMake the PLAT_ identification work properly for mingw-win64. Problem was
Julian Seward [Thu, 15 May 2014 13:50:47 +0000 (13:50 +0000)] 
Make the PLAT_ identification work properly for mingw-win64.  Problem was
that mingw64 also defines __MINGW32__, which led to the 32-bit definitions
being used in the 64-bit case.  n-i-bz.  (Bernhard.Loos@ruecker.de)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13971

11 years agoAdd more test cases: trn1, trn2, uzp1, uzp2, zip1, zip2, urecpe, ursqrte.
Julian Seward [Thu, 15 May 2014 12:18:17 +0000 (12:18 +0000)] 
Add more test cases: trn1, trn2, uzp1, uzp2, zip1, zip2, urecpe, ursqrte.
This completes the test cases for the SIMD integer instructions.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13970

11 years agoAdd more test cases: sqrshrn, uqrshrn, sqshrn, uqshrn, sqrshrun,
Julian Seward [Thu, 15 May 2014 11:55:56 +0000 (11:55 +0000)] 
Add more test cases: sqrshrn, uqrshrn, sqshrn, uqshrn, sqrshrun,
sqshrun, sqshl, uqshl, sqshlu, sqxtn, uqxtn, sqxtun, srhadd, urhadd,
sshl, ushl, shl, sshr, ushr, ssra, usra, srshl, urshl, srshr, urshr,
srsra, ursra, suqadd, usqadd.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13969

11 years agoAdd more test cases: sqdmulh, sqrdmulh, sqshl, uqshl, sqrshl, uqrshl,
Julian Seward [Thu, 15 May 2014 08:22:34 +0000 (08:22 +0000)] 
Add more test cases: sqdmulh, sqrdmulh, sqshl, uqshl, sqrshl, uqrshl,
sqrshrn, uqrshrn, sqshrn, uqshrn, sqrshrun, sqshrun.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13968

11 years agoAdd tests for VFPv4 VFMA/VMFS. Pertains to #331057.
Julian Seward [Thu, 15 May 2014 00:12:36 +0000 (00:12 +0000)] 
Add tests for VFPv4 VFMA/VMFS.  Pertains to #331057.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13967

11 years agominor comment reformatting
Philippe Waroquiers [Wed, 14 May 2014 21:53:48 +0000 (21:53 +0000)] 
minor comment reformatting

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13966

11 years agoFactorises the address code description and printing
Philippe Waroquiers [Wed, 14 May 2014 20:39:27 +0000 (20:39 +0000)] 
Factorises the address code description and printing
of memcheck and helgrind in a common module:
  pub_tool_addrinfo.h pub_core_addrinfo.h m_addrinfo.c

At the same time, the factorised code is made usable by other
tools also (and is used by the gdbserver command 'v.info location'
which replaces the helgrind 'describe addr' introduced 1 week ago
and which is now callable by all tools).

The new address description code can describe more addresses
(e.g. for memcheck, if the block is not on the free list anymore,
but is in an arena free list, this will also be described).

Similarly, helgrind address description can now describe more addresses
when --read-var-info=no is given (e.g. global symbols are
described, or addresses on the stack are described as
being on the stack, freed blocks in the arena free list are
described, ...).
See e.g. the change in helgrind/tests/annotate_rwlock.stderr.exp
or locked_vs_unlocked2.stderr.exp

The patch touches many files, but is basically a lot of improvements
in helgrind output files.
The code changes are mostly refactorisation of existing code.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13965

11 years agoUpdate.
Julian Seward [Wed, 14 May 2014 13:29:04 +0000 (13:29 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13964

11 years agoUse safe_to_deref in coregrind syswrap-generic.c (msghdr_foreachfield).
Mark Wielaard [Wed, 14 May 2014 11:35:54 +0000 (11:35 +0000)] 
Use safe_to_deref in coregrind syswrap-generic.c (msghdr_foreachfield).

Call ML_(safe_to_deref) before using msghdr msg_name, msg_iov or msg_control.
Fixes bug #334705.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13963

11 years agoSupport -Wformat -Werror=format-security.
Mark Wielaard [Wed, 14 May 2014 10:50:14 +0000 (10:50 +0000)] 
Support -Wformat -Werror=format-security.

Check if gcc supports -Wformat -Werror=format-security and use it if so.
Fix m_gdbserver/remote-utils.c sr_perror call. Fixes Bug #334727.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13962

11 years agoAdd send_signal to gdbserver_tests/Makefile.am (dist_noinst_SCRIPTS).
Mark Wielaard [Tue, 13 May 2014 20:42:04 +0000 (20:42 +0000)] 
Add send_signal to gdbserver_tests/Makefile.am (dist_noinst_SCRIPTS).

If the send_signal script is missing the nlvgdbsigqueue test would hang.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13961

11 years agoFollowup to r13958: add reg-trash lists to inline assembly in
Julian Seward [Tue, 13 May 2014 16:15:56 +0000 (16:15 +0000)] 
Followup to r13958: add reg-trash lists to inline assembly in
TESTINSTPCMISALIGNED TESTINSTPCMISALIGNED_DWORDOUT
TESTINSTPCMISALIGNED_2OUT and nice up the the indentation a bit.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13960

11 years agoThumb encoding: add test case for assertion failure caused by
Julian Seward [Tue, 13 May 2014 15:55:00 +0000 (15:55 +0000)] 
Thumb encoding: add test case for assertion failure caused by
"ldr.w pc, [reg, #imm]".  See #333428.  (dimitry@google.com)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13959

11 years agoThumb encoding: add test cases for misaligned loads of the form
Julian Seward [Tue, 13 May 2014 14:45:54 +0000 (14:45 +0000)] 
Thumb encoding: add test cases for  misaligned loads of the form
   LD Rt, [Rn +/- #imm12]  when Rn == PC
See #333145.  (dimitry@google.com)

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13958

11 years agoOn 32-bit x86, allow lzcnt to be detected on Intel CPUs as well as on
Julian Seward [Tue, 13 May 2014 14:10:44 +0000 (14:10 +0000)] 
On 32-bit x86, allow lzcnt to be detected on Intel CPUs as well as on
AMDs.  64-bit equivalent does not have this bug.  Fixes #334049.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13957

11 years agoAdd more test cases: shll, shrn, rshrn, sli, sri, smaxp, umaxp, sminp,
Julian Seward [Tue, 13 May 2014 09:34:54 +0000 (09:34 +0000)] 
Add more test cases: shll, shrn, rshrn, sli, sri, smaxp, umaxp, sminp,
uminp, smlal, umlal, smlsl, umlsl, smull, umull, sqabs, sqneg, sqadd,
uqadd, sqsub, uqsub, sqdmlal, sqdmlsl, sqdmull, sqrdmulh.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13956

11 years agoMinor updates.
Julian Seward [Tue, 13 May 2014 09:29:33 +0000 (09:29 +0000)] 
Minor updates.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13955

11 years agoUpdate.
Julian Seward [Tue, 13 May 2014 09:28:19 +0000 (09:28 +0000)] 
Update.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13954

11 years agoIn case gdbsrv poll syscall fails, produces more information
Philippe Waroquiers [Mon, 12 May 2014 20:29:17 +0000 (20:29 +0000)] 
In case gdbsrv poll syscall fails, produces more information
gdbsrv poll syscall seems to very infrequently (1 on 100000 vgdb invocations§)
to be EINTR-upted.
So, when poll syscall fails, output stacktrace + sigmask status
to capture more info about the problem.
This is a follow-up/extension of r13748, which showed poll was interrupted
but it is not clear why. In particular, all async signals are supposed
to be masked at the time vgdb has forced an invocation

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13953

11 years agoUpdate __VALGRIND_MINOR__ before it gets forgotten again.
Julian Seward [Mon, 12 May 2014 10:12:08 +0000 (10:12 +0000)] 
Update __VALGRIND_MINOR__ before it gets forgotten again.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13952

11 years ago3_9_BUGSTATUS.txt: looked at all bugs in the file. Moved fixed ones
Julian Seward [Fri, 9 May 2014 16:13:21 +0000 (16:13 +0000)] 
3_9_BUGSTATUS.txt: looked at all bugs in the file.  Moved fixed ones
to NEWS (if not already there).  Put the rest of them into a set of
categories depending on which part of the code base is affected, which
divides them up into -- IMO -- much more managable groups.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13951

11 years agoAdd uninstall-local rules to make distcheck happy.
Mark Wielaard [Fri, 9 May 2014 14:25:39 +0000 (14:25 +0000)] 
Add uninstall-local rules to make distcheck happy.

Also remove generated FAQ.txt in docs distclean-local rule.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13950

11 years agoOut of tree build. Partial fix for Bug 333628.
Mark Wielaard [Fri, 9 May 2014 13:34:13 +0000 (13:34 +0000)] 
Out of tree build. Partial fix for Bug 333628.

Patch by Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>.
Partial fix. make && make check now works with builddir != srcdir.
But make regtest doesn't yet.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13949

11 years agoAdd test for MPX instructions and bnd prefix. Bug #333666.
Mark Wielaard [Fri, 9 May 2014 11:41:46 +0000 (11:41 +0000)] 
Add test for MPX instructions and bnd prefix. Bug #333666.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13948

11 years agoUpdate bug list.
Julian Seward [Fri, 9 May 2014 11:24:50 +0000 (11:24 +0000)] 
Update bug list.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13947

11 years agoAdd more test cases: mul, mvni, not, pmul, pmull, rbit, rev16/32/64,
Julian Seward [Fri, 9 May 2014 09:36:56 +0000 (09:36 +0000)] 
Add more test cases: mul, mvni, not, pmul, pmull, rbit, rev16/32/64,
saba, uaba, sabal, uabal, sabd, uabd, sabdl, uabdl, sadalp, uadalp,
saddl, uaddl, ssubl, usubl, saddlp, uaddlp, saddlv, uaddlv, saddw,
uaddw, ssubw, usubw, shadd, uhadd, shsub, uhsub.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13946

11 years agoAdd more test cases: ext, ins, mla, mls, movi.
Julian Seward [Thu, 8 May 2014 22:19:16 +0000 (22:19 +0000)] 
Add more test cases: ext, ins, mla, mls, movi.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13945

11 years agoKeep the reading side of the FIFO opened after a vgdb disconnect
Philippe Waroquiers [Thu, 8 May 2014 20:42:08 +0000 (20:42 +0000)] 
Keep the reading side of the FIFO opened after a vgdb disconnect
Otherwise, if the valgrind process has just forked before
the vgdb connect, and the child has not yet closed the FIFO it inheritates
from its parent, and a 2nd vgdb is started before the parent has
re-opened the reading side FIFO, the 2nd vgdb can connect to the child,
which will not handle the wakeup character/connection request, and
vgdb will have a write error and/or block.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13944

11 years agoWhen constructing a signal frame, tell the tool that the registers
Julian Seward [Thu, 8 May 2014 15:14:48 +0000 (15:14 +0000)] 
When constructing a signal frame, tell the tool that the registers
that carry the arguments (signo, siginfo, mcontext) for the handler,
have been written.  In particular this makes Memcheck think
(correctly) they are defined and so removes a bunch of false positives
that can happen in the signal handler, should the registers have been
marked undefined before the signal.

The same fix needs to be applied to various other of these
sigframe-*.c files.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13943

11 years ago* document the %ps / %pS extensions to printf
Philippe Waroquiers [Wed, 7 May 2014 22:03:59 +0000 (22:03 +0000)] 
* document the %ps / %pS extensions to printf
* remove (from memcheck) emiN, as PRINTF_CHECK can be done properly

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13942

11 years agoOn a big application linking with gtk, using the compilation options
Philippe Waroquiers [Wed, 7 May 2014 21:09:16 +0000 (21:09 +0000)] 
On a big application linking with gtk, using the compilation options
-ffunction-sections -fdata-sections and the linker option
-Wl,--gc-sections, --read-var-info=yes gives the following:

    valgrind: m_debuginfo/d3basics.c:973 (vgModuleLocal_evaluate_GX): Assertion 'aMax == ~(Addr)0' failed.

    host stacktrace:
    ==18521==    at 0x38057C54: show_sched_status_wrk (m_libcassert.c:308)
    ==18521==    by 0x38057F50: report_and_quit (m_libcassert.c:367)
    ==18521==    by 0x38058151: vgPlain_assert_fail (m_libcassert.c:432)
    ==18521==    by 0x3813F084: vgModuleLocal_evaluate_GX (d3basics.c:973)
    ==18521==    by 0x38098300: data_address_is_in_var (debuginfo.c:2769)
    ==18521==    by 0x38099E26: vgPlain_get_data_description (debuginfo.c:3298)
    ...

The problem is that -Wl,--gc-sections eliminates the unused functions
but keeps some debug info for the functions or their compilation units.
The dwarf entry has low and high pc, but both are equal to 0.
The dwarf reader of Valgrind is confused by this, as the varstack becomes
empty, while it should not. This then causes local (eliminated) variables
to be put in the global scope, leading afterwards to evaluation errors
when describing any other variables.

The fix is to also push something on the varstack when
a CU that has low and high pc given but with 0 value.
This is similar to the varstack_push done for a CU that has
no low pc, no high pc and no range.
Despite considerable effort to make a small reproducer, the problem
could only be produced with a big executable.
After the fix, everything was working properly.

The wrong behaviour for dwarf entries produce the following trace:
     <2><2ff291a>: Abbrev Number: 23 (DW_TAG_formal_parameter)
         DW_AT_name        : AET
         DW_AT_decl_file   : 1
         DW_AT_decl_line   : 243
         DW_AT_type        : <2ff2811>
         DW_AT_location    : 18288554
      Recording this variable, with 1 PC range(s)
    ....
    <2ff291a> addVar: level 0: AET :: EdgeTableEntry*
      Loc=GX(final){[0x0,0x8]=50,[0x9,0x1d]=53,[0x1e,0x26]=51,[0x27,0x29]=53,[0x2a,0x2f]=51,[0x44,0x4a]=53,[0x4d,0x5e]=51,[0x5f,0x62]=53}
      FrB=none
      declared at: gdkpolyreg-generic.c:243
      ACQUIRE for range(s) [0x0,0xffffffff]

The AET is a formal parameter of a function, but is wrongly added
at level 0, with a PC range covering the full space. It has a Loc GX
which uses non biased program counters (e.g. 0x0,0x8).
This dwarf entry will require a FrB (and registers when evaluating)
but no such things are available (or given) when evaluating a variable
in the global scope.

The fix is to handle compilation units with lo and hi pc == 0x0
similarly to a CU that has no lo and hi pc.
With this fix, valgrind --read-var-info=yes could properly
handle a big application with plenty of eliminated functions.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13941

11 years agoEnable test cases for SMULH.
Julian Seward [Wed, 7 May 2014 09:44:55 +0000 (09:44 +0000)] 
Enable test cases for SMULH.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13940

11 years agoFix two warnings of unusued variable or variable set but not used
Philippe Waroquiers [Tue, 6 May 2014 21:54:09 +0000 (21:54 +0000)] 
Fix two warnings of unusued variable or variable set but not used

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13939

11 years agoFor the following c program:
Philippe Waroquiers [Tue, 6 May 2014 20:15:55 +0000 (20:15 +0000)] 
For the following c program:

main(int argc)
{
   typedef
      struct {
      int before_name;
      char name[argc];
      int after_name;
   }
   namet;
  namet n;

}

compiled with gcc 4.7.4, the trunk --read-var-info=yes gives:
parse_type_DIE: confused by:
 <2><51>: DW_TAG_structure_type
     DW_AT_decl_file   : 1
     DW_AT_decl_line   : 4
     DW_AT_sibling     : <83>

This is because that dwarf entry defines a struct with no size.
This happens when the struct has a VLA array in the middle
of a struct. This is a C gcc extension, and is a standard
feature of Ada.
The proper solution would be to have the size calculated at runtime,
using the gnat extensions or dwarf entries (to be generated by
the compiler).

The patch fixes this problem by defining the size of such structure
as 1 byte.
Another approach tried was to put the max possible size.
This had the disadvantage that any address on the stack was seen
as belonging to this variable.
This allows the description to work for the 1st byte of the variable
but cannot properly describe the 2nd and following bytes :
    (gdb) p &n
    $9 = (namet *) 0xbefbc070
    (gdb) mo c d 0xbefbc070
    Address 0xBEFBC070 len 1 not defined:
    Uninitialised value at 0xBEFBC070
    ==1396==  Location 0xbefbc070 is 0 bytes inside n.before_name,
    ==1396==  declared at crec.c:10, in frame #0 of thread 1
    (gdb) mo c d 0xbefbc071
    Address 0xBEFBC071 len 1 not defined:
    Uninitialised value at 0xBEFBC071
    ==1396==  Address 0xbefbc071 is on thread 1's stack
    (gdb)

A possible refinement would be to use a huge size but have the
logic of variable description understanding this and describing
all between this var and hte next var on the stack as being
in the VLA variable.

In the meantime, the size 1 avoids --read-var-info=yes to fail.

Also, the 'goto bad_DIE' have been replaced by a macro
goto_bad_DIE that ensures the line nr at which the bad DIE has
been detected is reported in the error msg.
This makes it easier to understand what is the problem.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13938

11 years agoFill in some SIMD integer test cases.
Julian Seward [Tue, 6 May 2014 14:46:44 +0000 (14:46 +0000)] 
Fill in some SIMD integer test cases.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13937

11 years agoBig reorganisation:
Julian Seward [Tue, 6 May 2014 09:30:29 +0000 (09:30 +0000)] 
Big reorganisation:

* add lane type descriptors, to be used by the random data
  generators -- as-yet unused

* move existing tests into new groupings, and rename some of
  them to be more consistent with the new notation.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13936

11 years agoRename these two test files to make their names a bit less cumbersome.
Julian Seward [Mon, 5 May 2014 13:38:37 +0000 (13:38 +0000)] 
Rename these two test files to make their names a bit less cumbersome.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13935