]> sourceware.org Git - valgrind.git/log
valgrind.git
3 years agoFix impossible constraint issue in P10 testcase.
Carl Love [Fri, 3 Sep 2021 17:14:50 +0000 (17:14 +0000)]
Fix impossible constraint issue in P10 testcase.

This reworks the modulo operation as seen in
valgrind/none/tests/ppc64/test_isa_3_1_common.c:
  initialize_source_registers().

Due to a GCC issue (PR101882), we will try to avoid a modulo operation with
both input and outputs set to a hard register. In this case, we can apply
the modulo operation to the args[] array value used to initialize the ra
value.

https://bugs.kde.org/show_bug.cgi?id=440906

3 years agoRemove a unneeded / unnecessary prefix check.
Carl Love [Fri, 3 Sep 2021 16:36:31 +0000 (16:36 +0000)]
Remove a unneeded / unnecessary prefix check.

The pstxvp instruction is valid for R=1, i.e. use pc relative addressing.
The test should have been remmoved before committing the ISA 3.1 support.

https://bugs.kde.org/show_bug.cgi?id=441512

3 years agos390x: Wrap up misc-insn-3 and vec-enh-2 support
Andreas Arnez [Tue, 18 May 2021 17:59:32 +0000 (19:59 +0200)]
s390x: Wrap up misc-insn-3 and vec-enh-2 support

Wrap up support for the miscellaneous-instruction-extensions facility 3
and the vector-enhancements facility 2: Add 'case' statements for the
remaining unhandled arch13 instructions to 'guest_s390_toIR.c', document
the new support in 's390-opcodes.csv', adjust 's390-check-opcodes.pl', and
announce the new feature in 'NEWS'.

3 years agos390x: Vec-enh-2, test cases
Andreas Arnez [Mon, 17 May 2021 13:34:15 +0000 (15:34 +0200)]
s390x: Vec-enh-2, test cases

Add test cases for verifying the new/enhanced instructions in the
vector-enhancements facility 2.  For "vector string search" VSTRS add a
memcheck test case.

3 years agos390x: Mark arch13 features as supported
Andreas Arnez [Tue, 16 Feb 2021 16:52:09 +0000 (17:52 +0100)]
s390x: Mark arch13 features as supported

Make the STFLE instruction report the miscellaneous-instruction-extensions
facility 3 and the vector-enhancements facility 2 as supported.  Indicate
support for the latter in the HWCAP vector as well.

3 years agos390x: Vec-enh-2, VSTRS
Andreas Arnez [Wed, 10 Mar 2021 18:22:51 +0000 (19:22 +0100)]
s390x: Vec-enh-2, VSTRS

Support the new "vector string search" instruction VSTRS.  The
implementation is a full emulation and follows a similar approach as for
the other vector string instructions.

3 years agos390x: Vec-enh-2, VSLD and VSRD
Andreas Arnez [Tue, 23 Feb 2021 18:10:37 +0000 (19:10 +0100)]
s390x: Vec-enh-2, VSLD and VSRD

Support the new "vector shift left/right double by bit" instructions VSLD
and VSRD.

3 years agos390x: Vec-enh-2, VLBR and friends
Andreas Arnez [Tue, 16 Feb 2021 15:19:31 +0000 (16:19 +0100)]
s390x: Vec-enh-2, VLBR and friends

Add support for the new byte- and element-swapping vector load/store
instructions VLEBRH, VLEBRG, VLEBRF, VLLEBRZ, VLBRREP, VLBR, VLER,
VSTEBRH, VSTEBRG, VSTEBRF, VSTBR, and VSTER.

3 years agos390x: Vec-enh-2, extend VCDG, VCDLG, VCGD, and VCLGD
Andreas Arnez [Thu, 11 Feb 2021 19:02:03 +0000 (20:02 +0100)]
s390x: Vec-enh-2, extend VCDG, VCDLG, VCGD, and VCLGD

The vector-enhancements facility 2 extends the vector floating-point
conversion instructions VCDG, VCDLG, VCGD, and VCLGD.  In addition to
64-bit elements, they now also handle 32-bit elements.  Add support for
these new forms.

3 years agos390x: Vec-enh-2, extend VSL, VSRA, and VSRL
Andreas Arnez [Wed, 7 Apr 2021 10:29:32 +0000 (12:29 +0200)]
s390x: Vec-enh-2, extend VSL, VSRA, and VSRL

The vector-enhancements facility 2 extends the existing bitwise vector
shift instructions VSL, VSRA, and VSRL.  Now they allow the shift
vector (the third operand) to contain different shift amounts for each
byte.  Add support for these new forms.

3 years agos390x: Misc-insn-3, test case
Andreas Arnez [Tue, 2 Feb 2021 19:15:02 +0000 (20:15 +0100)]
s390x: Misc-insn-3, test case

Add a test case for the new instructions in the miscellaneous instruction
extensions facitility 3.

3 years agos390x: Misc-insn-3, MVCRL
Andreas Arnez [Fri, 29 Jan 2021 19:13:05 +0000 (20:13 +0100)]
s390x: Misc-insn-3, MVCRL

Add support for the "move right to left" instruction MVCRL.

3 years agos390x: Misc-insn-3, new POPCNT variant
Andreas Arnez [Thu, 28 Jan 2021 18:47:00 +0000 (19:47 +0100)]
s390x: Misc-insn-3, new POPCNT variant

Add support for the new POPCNT variant that has bit 0 of the M3 field set
and yields the total number of one bits in its 64-bit operand.

3 years agos390x: Misc-insn-3, "select" instructions
Andreas Arnez [Wed, 27 Jan 2021 17:11:06 +0000 (18:11 +0100)]
s390x: Misc-insn-3, "select" instructions

Add support for the instructions SELR, SELGR, and SELFHR.

3 years agos390x: Misc-insn-3, bitwise logical 3-way instructions
Andreas Arnez [Tue, 26 Jan 2021 14:06:47 +0000 (15:06 +0100)]
s390x: Misc-insn-3, bitwise logical 3-way instructions

Add support for the instructions NCRK, NCGRK, NNRK, NNGRK, NORK, NOGRK,
NXRK, NXGRK, OCRK, and OCGRK.  Introduce a common helper and use it for
the existing instructions NRK, NGRK, XRK, XGRK, ORK, and OGRK as well.

3 years agounhandled ppc64le-linux syscall: 252 (statfs64) and 253 (fstatfs64)
Mark Wielaard [Fri, 6 Aug 2021 17:08:17 +0000 (19:08 +0200)]
unhandled ppc64le-linux syscall: 252 (statfs64) and 253 (fstatfs64)

glibc 2.34 consolidated all statfs implementations. All other arches
that have statfs64/fstat64 (including ppc32) already had that syscall
hooked up, it was just ppc64 that was missing it.

https://bugs.kde.org/show_bug.cgi?id=440670

3 years agoGenerate a ENOSYS (sys_ni_syscall) for clone3 on all linux arches
Mark Wielaard [Wed, 21 Jul 2021 17:53:13 +0000 (19:53 +0200)]
Generate a ENOSYS (sys_ni_syscall) for clone3 on all linux arches

glibc 2.34 will try to use clone3 first before falling back to
the clone syscall. So implement clone3 as sys_ni_syscall which
simply return ENOSYS without producing a warning.

https://bugs.kde.org/show_bug.cgi?id=439590

3 years agoAdd 439590 glibc-2.34 breaks suppressions to NEWS
Mark Wielaard [Wed, 21 Jul 2021 17:51:16 +0000 (19:51 +0200)]
Add 439590  glibc-2.34 breaks suppressions to NEWS

3 years agoUpdate helgrind and drd suppression libc and libpthread paths in glibc 2.34
Mark Wielaard [Fri, 16 Jul 2021 19:47:08 +0000 (15:47 -0400)]
Update helgrind and drd suppression libc and libpthread paths in glibc 2.34

glibc 2.34 moved all pthread functions into the main libc library.
And it changed the (in memory) path of the main libc library to
libc.so.6 (before it was libc-2.xx.so).

This breaks various standard suppressions for helgrind and drd.
Fix this by doing a configure check for whether we are using glibc
2.34 by checking whether pthread_create is in libc instead of in
libpthread. If we are using glibc then define GLIBC_LIBC_PATH and
GLIBC_LIBPTHREAD_PATH variables that point to the (regexp) path
of the library that contains all libc functions and pthread functions
(which will be the same path for glibc 2.34+).

Rename glibc-2.34567-NPTL-helgrind.supp to glibc-2.X-helgrind.supp.in
and glibc-2.X-drd.supp to glibc-2.X-drd.supp.in and replace the
GLIBC_LIBC_PATH and GLIBC_LIBPTHREAD_PATH at configure time.

The same could be done for the glibc-2.X.supp.in file, but hasn't
yet because it looks like most suppressions in that file are obsolete.

3 years agom_debuginfo/debuginfo.c VG_(get_fnname_kind) _start is below main
Mark Wielaard [Wed, 21 Jul 2021 15:55:40 +0000 (17:55 +0200)]
m_debuginfo/debuginfo.c VG_(get_fnname_kind) _start is below main

With glibc 2.34 we might see the _start symbol as the frame that
called main instead of directly after __libc_start_main or
generic_start_main.

Fixes memcheck/tests/badjump[2], memcheck/tests/origin4-many,
helgrind/tests/tc04_free_lock, helgrind/tests/tc09_bad_unlock
and helgrind/tests/tc20_verifywrap.

3 years agogdbserver_tests: update filters for newer glibc/gdb
Mark Wielaard [Fri, 16 Jul 2021 19:37:21 +0000 (21:37 +0200)]
gdbserver_tests: update filters for newer glibc/gdb

With newer glibc/gdb we might see a __select call without anything
following on the line. Also when gdb cannot find a file it might
now print "Inappropriate ioctl for device" instead of the message
"No such file or directory"

3 years agoUn-break arm64 isel following 22bae4b1544fc5d82f131ef8fde4cea7666112c2
Julian Seward [Tue, 13 Jul 2021 10:52:10 +0000 (12:52 +0200)]
Un-break arm64 isel following 22bae4b1544fc5d82f131ef8fde4cea7666112c2

22bae4b1544fc5d82f131ef8fde4cea7666112c2 introduced an iropt-level rewrite rule

  64to16( 32Uto64 ( x )) --> 32to16(x)

that creates Iop_32to16 nodes.  The arm64 isel apparently has never seen these
before and so asserts.  This is a 1-liner fix.

3 years agoamd64 front end: Make uses of 8- and 16-bit GPRs GET the entire containing register.
Julian Seward [Tue, 13 Jul 2021 08:41:04 +0000 (10:41 +0200)]
amd64 front end: Make uses of 8- and 16-bit GPRs GET the entire containing register.

Until now, a read of a 32-bit GPR (eg, %ecx) in the amd64 front end actually
involved GETting the containing 64-bit reg (%rcx) and dropping off its top
32-bits, in the IR translation.  This makes IR optimisation work well for code
that mixes 32 and 64 bit integer operations, which is very commont.  In
particular it helps guarantee that PUT-to-GET and redundant-GET optimisations
work, hence that constant propagation/folding across such boundaries works,
and indirectly helps to avoid generating code in the back end that suffers
from store-forwarding or partial-register-read stalls.

This commit partially extends those advantages to 8- and 16-bit GPR reads.  In
particular, all 16-bit GPR fetches are now a GET of the whole 64-bit register
followed by an Iop_64to16 cast.  The same scheme is used for 8-bit register
fetches, except for the "anomalous four" (%ah, %bh, %ch, %dh), whose handling
is left unchanged.

With this in place, now, a wider write followed by a smaller read, will play
nice with constant folding, propagation, for example (somewhat artificially):

   movl $17, %ecx    // 32-bit write of %rcx
   shrl %cl, %r15    // 8-bit read of %rcx

The 17 will be propagated, in IR, up to the shift.

The commit also adds a couple more rewrite rules in ir_opt.c to remove some of
the resulting pointless conversion pairings.

3 years agoConsistently set CC_NDEP when setting the flags thunk.
Julian Seward [Tue, 13 Jul 2021 08:15:39 +0000 (10:15 +0200)]
Consistently set CC_NDEP when setting the flags thunk.

For most settings of the flags thunk (guest_CC_{OP,DEP1,DEP2,NDEP}), the value
of the NDEP field is irrelevant, because of the setting of the OP field, and
so it is usually not set in such cases, which are the vast majority.  This
saves a store (a PUT) in the final generated code.  But it has the bad effect
that the IR optimiser cannot know that preceding PUTs to the field are
possibly dead and can be removed.  Most of the time that is not important, but
just occasionally it can cause a lot of pointless extra computation (calling
of amd64g_calculate_rflags_all) to happen.  This was observed in a long basic
block involved in a hash calculation, like this:

   rolq ..   // sets CC_NDEP to the previous value of the flags,
             // as calculated by amd64g_calculate_rflags_all
   mulq ..
   (rolq/mulq repeated several times)

   addq ..   // effect is, all of the flag computation done for the rol/mul
             // sequence is irrelevant, but iropt can't see that

Setting CC_NDEP consistently to zero, even if it isn't needed, avoids the
problem.

3 years agoamd64 front end: more spec rules: S/NS after LOGICW, S after SHRL, Z after SHRW,...
Julian Seward [Tue, 13 Jul 2021 07:34:05 +0000 (09:34 +0200)]
amd64 front end: more spec rules: S/NS after LOGICW, S after SHRL, Z after SHRW, C after SUBW.

This adds a few more spec rules that seem useful for running Firefox built
with gcc-O3 and clang-O3.  At least one of them removes a false Memcheck
error.

There is also some improved debug printing, currently #if 0'd.

3 years agoRemove redundant assertions and conditionals in move_CEnt_to_top.
Julian Seward [Tue, 13 Jul 2021 07:12:43 +0000 (09:12 +0200)]
Remove redundant assertions and conditionals in move_CEnt_to_top.

move_CEnt_to_top is on the hot path when reading large amounts of debug info,
especially Dwarf inlined-function info.  It shows up in 'perf' profiles.  This
commit removes assertions which are asserted elsewhere, and tries to avoid a
couple of conditional branches.

3 years agoReimplement h_generic_calc_GetMSBs8x16 to be more efficient.
Julian Seward [Tue, 13 Jul 2021 07:07:45 +0000 (09:07 +0200)]
Reimplement h_generic_calc_GetMSBs8x16 to be more efficient.

h_generic_calc_GetMSBs8x16 concatenates the top bit of each 8-bit lane in a
128-bit value, producing a 16-bit scalar value.  (It is PMOVMSKB, really).
The existing implementation is excessively inefficient and shows up sometimes
in 'perf' profiles of V.  This commit replaces it with a logarithmic (4-stage)
algorithm which is hopefully much faster.

3 years agoIgnore redundant REX.W for some MOVDQU variants
Tom Hughes [Tue, 6 Jul 2021 12:46:28 +0000 (13:46 +0100)]
Ignore redundant REX.W for some MOVDQU variants

Fixes BZ#438871

3 years agoBug 438630 Adds zero variants of arm64 v8.2 FP compare instructions.
Assad Hashmi [Tue, 29 Jun 2021 14:49:28 +0000 (10:49 -0400)]
Bug 438630 Adds zero variants of arm64 v8.2 FP compare instructions.

This patch adds half-precision floating-point support for the following:
FCMEQ <Hd>, <Hn>, #0.0
FCMEQ <Vd>.<T>, <Vn>.<T>, #0.0
FCMGE <Hd>, <Hn>, #0.0
FCMGE <Vd>.<T>, <Vn>.<T>, #0.0
FCMGT <Hd>, <Hn>, #0.0
FCMGT <Vd>.<T>, <Vn>.<T>, #0.0
FCMLE <Hd>, <Hn>, #0.0
FCMLE <Vd>.<T>, <Vn>.<T>, #0.0
FCMLT <Hd>, <Hn>, #0.0
FCMLT <Vd>.<T>, <Vn>.<T>, #0.0

Fixes https://bugs.kde.org/show_bug.cgi?id=438630

3 years agoBug 438038 Adds arm64 v8.2 FP compare & conditional compare instructions.
Assad Hashmi [Tue, 29 Jun 2021 14:06:35 +0000 (10:06 -0400)]
Bug 438038 Adds arm64 v8.2 FP compare & conditional compare instructions.

This patch adds half-precision floating-point support for the following:
FCCMP <Hn>, <Hm>, #<nzcv>, <cond>
FCCMPE <Hn>, <Hm>, #<nzcv>, <cond>
FCMEQ <Hd>, <Hn>, <Hm>
FCMEQ <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
FCMGE <Hd>, <Hn>, <Hm>
FCMGE <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
FCMGT <Hd>, <Hn>, <Hm>
FCMGT <Vd>.<T>, <Vn>.<T>, <Vm>.<T>

Fixes https://bugs.kde.org/show_bug.cgi?id=438038

3 years agoPPC64 Enable the MMA bit in the HWCAP.
Carl Love [Fri, 11 Jun 2021 15:59:53 +0000 (10:59 -0500)]
PPC64 Enable the MMA bit in the HWCAP.

The MMA bit should have been enabled when the last of the MMA instructions
were committed.  Also, the header comments about filtering out the DARN
and SCV support should have been updated when DARN and SCV support was added.

3 years agoBug 436873 Added arm64 v8.2 vector FABD, FACGE, FACGT and FADD
Assad Hashmi [Tue, 8 Jun 2021 16:02:06 +0000 (12:02 -0400)]
Bug 436873 Added arm64 v8.2 vector FABD, FACGE, FACGT and FADD

This patch adds FP half-precision support for the following:
FADD <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
FABD <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
FACGT <Vd>.<T>, <Vn>.<T>, <Vm>.<T>
FACGE <Vd>.<T>, <Vn>.<T>, <Vm>.<T>

Fixes https://bugs.kde.org/show_bug.cgi?id=436873

3 years agoBug 436411 Added arm64 v8.2 scalar FABD, FACGE, FACGT and FADD
Assad Hashmi [Tue, 8 Jun 2021 10:20:58 +0000 (06:20 -0400)]
Bug 436411 Added arm64 v8.2 scalar FABD, FACGE, FACGT and FADD

This patch adds FP half-precision support for the following:
FADD <Hd>, <Hn>, <Hm>
FABD <Hd>, <Hn>, <Hm>
FACGT <Hd>, <Hn>, <Hm>
FACGE <Hd>, <Hn>, <Hm>

Fixes https://bugs.kde.org/show_bug.cgi?id=436411

3 years agos390x: Don't emit "vector or with complement" on z13
Andreas Arnez [Mon, 7 Jun 2021 12:01:53 +0000 (14:01 +0200)]
s390x: Don't emit "vector or with complement" on z13

The z/Architecture instruction "vector or with complement" (VOC) can be
used as an optimization to combine "vector or" with "vector nor".  This is
exploited in Valgrind since commit 6c1cb1a0128b00858b973e.  However, VOC
requires the vector-enhancements facility 1, which is not installed on a
z13 CPU.  Thus Valgrind can now run into SIGILL on z13 when trying to
execute vector string instructions.

Fix this by suppressing the VOC optimization unless the
vector-enhancements facility 1 is recognized on the host.

3 years agoPPC64: Add support for copy, cpabort, paste instructions
Carl Love [Thu, 27 May 2021 16:54:22 +0000 (11:54 -0500)]
PPC64: Add support for copy, cpabort, paste instructions

3 years agoDon't look for separate debuginfo if the image has a .debug_info section
Tom Hughes [Thu, 20 May 2021 16:16:06 +0000 (17:16 +0100)]
Don't look for separate debuginfo if the image has a .debug_info section

Fixes BZ#435908

3 years agoconfigure.ac: Fix portability of test(1) expression for C99 support
Michael Forney [Tue, 6 Oct 2020 22:31:54 +0000 (15:31 -0700)]
configure.ac: Fix portability of test(1) expression for C99 support

The == operator is non-standard, use = instead.

[ bvanassche: added "configure.ac: " prefix in front of patch subject ]

3 years agos390x: Add missing stdout.exp for vector string memcheck test
Andreas Arnez [Fri, 7 May 2021 16:13:03 +0000 (18:13 +0200)]
s390x: Add missing stdout.exp for vector string memcheck test

The file vistr.stdout.exp was missing from commit 32312d588.  Add it.

3 years agos390x: Fix/optimize Iop_64HLtoV128
Andreas Arnez [Tue, 30 Mar 2021 15:45:20 +0000 (17:45 +0200)]
s390x: Fix/optimize Iop_64HLtoV128

In s390_vr_fill() in guest_s390_toIR.c, filling a vector with two copies
of a 64-bit value is realized with Iop_64HLtoV128, since there is no such
operator as Iop_Dup64x2.  But the two args to Iop_64HLtoV128 use the same
expression, referenced twice.  Although this hasn't been seen to cause
real trouble yet, it's problematic and potentially inefficient, so change
it: Assign to a temp and pass that twice instead.

In the instruction selector, if Iop_64HLtoV128 is found to be used for a
duplication as above, select "v-vdup" instead of "v-vinitfromgprs".  This
mimicks the behavior we'd get if there actually was an operator
Iop_Dup64x2.

3 years agos390x: Add support for emitting "vector or with complement"
Andreas Arnez [Thu, 25 Mar 2021 17:48:07 +0000 (18:48 +0100)]
s390x: Add support for emitting "vector or with complement"

In the instruction selector, look out for IR expressions that fit "vector
or with complement (VOC)".  Emit when applicable.

This slighly reduces the generated code sometimes, such as for certain
vector string instructions, where such expressions occur quite frequently.

3 years agos390x: Rework insn "v-vdup" and add "v-vrep"
Andreas Arnez [Fri, 26 Mar 2021 18:27:47 +0000 (19:27 +0100)]
s390x: Rework insn "v-vdup" and add "v-vrep"

So far the only s390x insn for filling a vector with copies of the same
element is "v-vdup" (S390_VEC_DUPLICATE), which replicates the first
element of its vector argument.  This is fairly restrictive and can lead
to unnecessarily long code sequences.

Redefine "v-vdup" to replicate any scalar value instead.  And add
"v-vrep" (S390_INSN_VEC_REPLICATE) for replicating any given element of a
vector.  Select the latter for suitable expressions like

  Iop_Dup8x16(Iop_GetElem8x16(vector_expr, i))

This improves the generated code for some vector string instructions,
where a lot of element replications are performed.

3 years agos390x: Improve handling of amodes without base register
Andreas Arnez [Tue, 23 Mar 2021 13:55:09 +0000 (14:55 +0100)]
s390x: Improve handling of amodes without base register

Addressing modes without a base or index register represent constants.
They can occur in some special cases such as shift operations and when
accessing individual vector elements.  Perform some minor improvements to
the handling of such amodes.

3 years agoBug 434296 - s390x: Add memcheck test cases for vector string insns
Andreas Arnez [Fri, 16 Apr 2021 10:44:44 +0000 (12:44 +0200)]
Bug 434296 - s390x: Add memcheck test cases for vector string insns

Bug 434296 addresses memcheck false positives with the vector string
instructions VISTR, VSTRC, VFAE, VFEE, and VFENE.  Add test cases that
verify the fix for that bug.  Without the fix, memcheck yields many
complains with these tests, most of which are false positives.

3 years agoBug 434296 - s390x: Rework IR conversion of VISTR
Andreas Arnez [Tue, 27 Apr 2021 18:13:26 +0000 (20:13 +0200)]
Bug 434296 - s390x: Rework IR conversion of VISTR

The z/Architecture instruction VISTR is currently transformed to a dirty
helper that executes the instruction.  This can cause false positives with
memcheck if the input string contains undefined characters after the
string terminator.  Implement without a dirty helper and emulate the
instruction instead.

3 years agoBug 434296 - s390x: Rework IR conversion of VFENE
Andreas Arnez [Tue, 2 Mar 2021 13:12:29 +0000 (14:12 +0100)]
Bug 434296 - s390x: Rework IR conversion of VFENE

So far the z/Architecture instruction "vector find element not
equal" (VFENE) is transformed to a loop.  This can cause spurious
"conditional jump or move depends on uninitialised value(s)" messages by
memcheck.  Re-implement without a loop.

3 years agoBug 434296 - s390x: Rework IR conversion of VSTRC, VFAE, and VFEE
Andreas Arnez [Thu, 18 Mar 2021 17:01:10 +0000 (18:01 +0100)]
Bug 434296 - s390x: Rework IR conversion of VSTRC, VFAE, and VFEE

The z/Architecture instructions "vector string range compare" (VSTRC),
"vector find any element equal" (VFAE), and "vector find element
equal" (VFEE) are each implemented with a dirty helper that executes the
instruction.  Unfortunately this approach leads to memcheck false
positives, because these instructions may yield a defined result even if
parts of the input vectors are undefined.  There are multiple ways this
can happen: Wherever the flags in the fourth operand to VSTRC indicate
"match always" or "match never", the corresponding elements in the third
operand don't affect the result.  The same is true for the elements
following the first zero-element in the second operand if the ZS flag is
set, or for the elements following the first matching element, if any.

Re-implement the instructions without dirty helpers and transform into
lengthy IR instead.

3 years agos390x: Add convenience function mkV128()
Andreas Arnez [Wed, 7 Apr 2021 10:30:20 +0000 (12:30 +0200)]
s390x: Add convenience function mkV128()

Provide mkV128() as a short-hand notation for creating a vector constant from
a bit pattern, similar to other such functions like mkU64().

3 years agos390x: Support "expensive" comparisons Iop_ExpCmpNE32/64
Andreas Arnez [Wed, 7 Apr 2021 14:48:29 +0000 (16:48 +0200)]
s390x: Support "expensive" comparisons Iop_ExpCmpNE32/64

Add support for Iop_ExpCmpNE32 and Iop_ExpCmpNE64 in the s390x instruction
selector.  Handle them exactly like the "inexpensive" variants Iop_CmpNE32
and Iop_CmpNE64.

3 years agoPPC64: add support for the vectored system call instruction scv.
Carl Love [Tue, 4 May 2021 19:49:49 +0000 (14:49 -0500)]
PPC64: add support for the vectored system call instruction scv.

3 years agoPPC64: Add support for the darn instruction
Carl Love [Mon, 22 Mar 2021 22:55:05 +0000 (17:55 -0500)]
PPC64: Add support for the darn instruction

3 years agoBug 433863 - s390x: Remove memcheck test cases for cs, cds, and csg
Andreas Arnez [Wed, 28 Apr 2021 16:52:30 +0000 (18:52 +0200)]
Bug 433863 - s390x: Remove memcheck test cases for cs, cds, and csg

The fix for bug 429864 - "s390x: C++ atomic test_and_set yields
false-positive memcheck diagnostics" changes the memcheck behavior at
various compare-and-swap instructions.  The comparison between the old and
expected value now always yields a defined result, even if the input
values are (partially) undefined.  However, some existing test cases
explicitly verify that memcheck complains about the use of uninitialised
values here.  These test cases are no longer valid.  Remove them.

3 years agos390x: Add missing UNOP insns to s390_insn_as_string
Andreas Arnez [Tue, 30 Mar 2021 16:10:43 +0000 (18:10 +0200)]
s390x: Add missing UNOP insns to s390_insn_as_string

Some unary operator insns are not handled by s390_insn_as_string().  If
they are encountered while the appropriate trace flag is set, a vpanic
occurs.  Fix this: add handling for the missing insns.

3 years agodrd/tests/swapcontext: Add SIGALRM handler to avoid stacktrace
Yi Fan Yu [Thu, 1 Apr 2021 19:31:47 +0000 (15:31 -0400)]
drd/tests/swapcontext: Add SIGALRM handler to avoid stacktrace

During testing for oe-core build on QEMU,
SIGALRM can trigger during nanosleep.
This results a different stderr output than expected.

```
==277== Process terminating with default action of signal 14 (SIGALRM)
==277==    at 0x36C74C3943: clock_nanosleep@@GLIBC_2.17 (clock_nanosleep.c:43)
==277==    by 0x36C74C8726: nanosleep (nanosleep.c:25)
```

This stacktrace printing will not occur
if we add a handler that simply exits.

https://bugs.kde.org/show_bug.cgi?id=435160

Signed-off-by: Yi Fan Yu <yifan.yu@windriver.com>
3 years agoCallgrind: Broader handling of _dl_runtime_resolve variants
Josef Weidendorfer [Wed, 7 Apr 2021 22:34:48 +0000 (00:34 +0200)]
Callgrind: Broader handling of _dl_runtime_resolve variants

This is a supplement to commit 86277041

To improve its results, Callgrind does special handling for
the runtime linker entry point to resolve symbols. However,
it only used the exact symbol name "_dl_runtime_resolve",
as well as specific machine code templates (when the runtime
linker was stripped from symbol names) as basis.
Recent glibc added multiple similar symbol names as variants,
such as _dl_runtime_resolve_xsave.

The above-mentioned commit 86277041 solves this by extending
the check for machine code templates for specific Linux
distributions.
This patch extends this for more architectures and variants
by checking if a function starts with "_dl_runtime_resolve".
Furthermore, the original function names of the variants
still are visible in the output (and not forced to the prefix).

While the heuristic that every function symbol starting
with the prefix "_dl_runtime_resolve" as being an entry point
into the runtime linker for resolving a function address may
be a bit rough, this prefix is not expected to be used often in
other source code for anything else.

The worst case is a slightly misleading call graph only
visible in a very specific situation: if the wrongly-detected
function does a tail call (ie instead of returning, jumping
to another function), it will be shown as 2 calls in a row
from the original caller.

3 years agoPPC64 rename xvcvbf16sp to xvcvbf16spn. Fix up comments for xvcvspbf16 and xvcvbf16sp...
Carl Love [Mon, 5 Apr 2021 15:39:33 +0000 (10:39 -0500)]
PPC64 rename xvcvbf16sp to xvcvbf16spn. Fix up comments for xvcvspbf16 and xvcvbf16spn instructions.

3 years agoRecord BZ#423963 fix
Tom Hughes [Tue, 6 Apr 2021 23:54:51 +0000 (00:54 +0100)]
Record BZ#423963 fix

3 years agoOnly process clone results in the parent thread
Tom Hughes [Tue, 6 Apr 2021 21:44:36 +0000 (22:44 +0100)]
Only process clone results in the parent thread

Fixes BZ#423963

3 years agoCreate initial new release entry in NEWS file for a future release.
Carl Love [Thu, 1 Apr 2021 15:28:12 +0000 (10:28 -0500)]
Create initial new release entry in NEWS file for a future release.

3 years agoReduced precision Missing Integer based outer tests
root [Fri, 12 Feb 2021 21:00:53 +0000 (16:00 -0500)]
Reduced precision Missing Integer based outer tests

3 years agoPPC64: Reduced-Precision: Missing Integer-based Outer Product Operations
Carl Love [Fri, 26 Feb 2021 22:05:12 +0000 (16:05 -0600)]
PPC64: Reduced-Precision: Missing Integer-based Outer Product Operations

Add support for:

pmxvi16ger2 VSX Vector 16-bit Signed Integer GER (rank-2 update), Prefixed
   Masked
pmxvi16ger2pp VSX Vector 16-bit Signed Integer GER (rank-2 update) (Positive
   multiply, Positive accumulate), Prefixed Masked
pmxvi8ger4spp VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) with
   Saturation (Positive multiply, Positive accumulate), Prefixed Masked
xvi16ger2 VSX Vector 16-bit Signed Integer GER (rank-2 update)
xvi16ger2pp VSX Vector 16-bit Signed Integer GER (rank-2 update) (Positive
   multiply, Positive accumulate)
xvi8ger4spp VSX Vector 8-bit Signed/Unsigned Integer GER (rank-4 update) with
   Saturation (Positive multiply, Positive accumulate)

3 years agoReduced Precision bfloat16 outer product tests
root [Fri, 12 Feb 2021 20:59:32 +0000 (15:59 -0500)]
Reduced Precision bfloat16 outer product tests

3 years agoPPC64: Reduced-Precision - bfloat16 Outer Product & Format Conversion Operations
Carl Love [Fri, 26 Feb 2021 21:46:55 +0000 (15:46 -0600)]
PPC64: Reduced-Precision - bfloat16 Outer Product & Format Conversion Operations

Add support for:

pmxvbf16ger2 Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update)
pmxvbf16ger2pp Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Positive
  multiply, Positive accumulate
pmxvbf16ger2pn Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Positive
  multiply, Negative accumulate
pmxvbf16ger2np Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Negative
  multiply, Positive accumulate
pmxvbf16ger2nn Prefixed Masked VSX Vector bfloat16 GER (Rank-2 Update) Negative
  multiply, Negative accumulate
xvbf16ger2VSX Vector bfloat16 GER (Rank-2 Update)
xvbf16ger2pp VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Positive
  accumulate
xvbf16ger2pn VSX Vector bfloat16 GER (Rank-2 Update) Positive multiply, Negative
  accumulate
xvbf16ger2np VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Positive
  accumulate
xvbf16ger2nn VSX Vector bfloat16 GER (Rank-2 Update) Negative multiply, Negative
  accumulate
xvcvbf16sp VSX Vector Convert bfloat16 to Single-Precision format
xvcvspbf16 VSX Vector Convert with round Single-Precision to bfloat16 format

3 years agoVSX Permute Control Vector Generate Operation tests.
Carl Love [Tue, 17 Nov 2020 01:09:47 +0000 (19:09 -0600)]
VSX Permute Control Vector Generate Operation tests.

3 years agoPPC64: ISA 3.1 VSX PCV Generate Operations
Carl Love [Mon, 11 Jan 2021 22:00:57 +0000 (16:00 -0600)]
PPC64: ISA 3.1 VSX PCV Generate Operations

xgenpcvbm VSX Vector Generate PCV from Byte Mask
xxgenpcvdmVSX Vector Generate PCV from Doubleword Mask
xxgenpcvhmVSX Vector Generate PCV from Halfword Mask
xxgenpcvwmVSX Vector Generate PCV from Word Mask

3 years agomemcheck/tests/linux/stack_changes: Only run this test if setcontext() is available
Bart Van Assche [Mon, 29 Mar 2021 03:29:42 +0000 (20:29 -0700)]
memcheck/tests/linux/stack_changes: Only run this test if setcontext() is available

See also https://bugs.kde.org/show_bug.cgi?id=434775 .

3 years agoconfigure.ac: Sort AC_CHECK_FUNCS() arguments alphabetically
Bart Van Assche [Mon, 29 Mar 2021 03:24:58 +0000 (20:24 -0700)]
configure.ac: Sort AC_CHECK_FUNCS() arguments alphabetically

3 years agoconfigure, drd: Only build the swapcontext test if swapcontext() is available
Bart Van Assche [Tue, 23 Mar 2021 02:12:20 +0000 (19:12 -0700)]
configure, drd: Only build the swapcontext test if swapcontext() is available

Add a configure test for swapcontext() since MUSL does not provide a
swapcontext() implementation. See also
https://bugs.kde.org/show_bug.cgi?id=434775 .

3 years agoMove tag to 3.18.0.GIT. Onwards and upwards etc :-)
Julian Seward [Mon, 22 Mar 2021 15:07:30 +0000 (16:07 +0100)]
Move tag to 3.18.0.GIT.  Onwards and upwards etc :-)

3 years agoAdd musl.supp to SUPP_FILES
Paul Floyd [Sat, 20 Mar 2021 07:51:52 +0000 (08:51 +0100)]
Add musl.supp to SUPP_FILES

3 years ago-> 3.17.0 final. VALGRIND_3_17_0
Julian Seward [Fri, 19 Mar 2021 08:50:54 +0000 (09:50 +0100)]
-> 3.17.0 final.

3 years agoProperly guard an include of <sys/auxv.h>.
Julian Seward [Fri, 19 Mar 2021 08:08:54 +0000 (09:08 +0100)]
Properly guard an include of <sys/auxv.h>.

See comments at https://bugs.kde.org/show_bug.cgi?id=413547#c11.

3 years agoImprove the summary paragraph for the 3.17 NEWS entry.
Julian Seward [Wed, 17 Mar 2021 17:16:03 +0000 (18:16 +0100)]
Improve the summary paragraph for the 3.17 NEWS entry.

3 years agoAdd isa_3_1_register_defines.h to Makefile.am noinst_HEADERS
Mark Wielaard [Wed, 17 Mar 2021 16:56:07 +0000 (17:56 +0100)]
Add isa_3_1_register_defines.h to Makefile.am noinst_HEADERS

Make sure isa_3_1_register_defines.h ends up in the dist tarball.

3 years ago-> 3.17.0.RC2
Julian Seward [Wed, 17 Mar 2021 11:35:38 +0000 (12:35 +0100)]
-> 3.17.0.RC2

3 years agoTwo fixes for Darwin 'make check'
Paul Floyd [Wed, 17 Mar 2021 08:12:21 +0000 (09:12 +0100)]
Two fixes for Darwin 'make check'

mempcpy is not available on Darwin, so make it conditional like Solaris.

also sys/auxv.h does not exist so make including it conditional.

3 years agoBug 401416 - Compile failure with openmpi 4.0.
Julian Seward [Wed, 17 Mar 2021 07:10:49 +0000 (08:10 +0100)]
Bug 401416 - Compile failure with openmpi 4.0.

In short, use the missing symbol names only when compiling against OpenMPI
version 3 or below, or when compiling against a non-OpenMPI implementation.
Modified version of a patch originally from Mark Wielaard.

3 years agoAdd memcheck/tests/linux/debuginfod-check.pl to EXTRA_DIST
Mark Wielaard [Mon, 15 Mar 2021 14:47:48 +0000 (15:47 +0100)]
Add memcheck/tests/linux/debuginfod-check.pl to EXTRA_DIST

debuginfod-check.pl is necessary as pre-check for make regtest.

3 years ago-> 3.17.0.RC1
Julian Seward [Sat, 13 Mar 2021 19:52:01 +0000 (20:52 +0100)]
-> 3.17.0.RC1

3 years agoamd64 front end: try to avoid a Memcheck false positive related to CPUID. n-i-bz.
Julian Seward [Sat, 13 Mar 2021 18:20:50 +0000 (19:20 +0100)]
amd64 front end: try to avoid a Memcheck false positive related to CPUID.  n-i-bz.

In the amd64 front end, CPUID is implemented by calling dirty helper.  The way
the side-effects for this call are declared can lead to false positives from
Memcheck.  This is a somewhat inelegant "fix", but it's the least-worst that
can be done without changing parameter-passing for the helper functions
involved.  A big in-line comment explains the problem and fix.

3 years agomc_translate.c: enable further uses of DLexpensive for scalar EQ/NE comparisons
Julian Seward [Fri, 12 Mar 2021 16:55:46 +0000 (17:55 +0100)]
mc_translate.c: enable further uses of DLexpensive for scalar EQ/NE comparisons

mc_translate.c: enable further cases where scalar integer EQ/NE comparisons
use expensive instrumentation by default:

  x86, amd64  for 16-bit comparisons
  arm, arm64  for 32-bit comparisons

This fixes 'Bug 434193 - GCC 9+ inlined strcmp causes "Conditional jump or move depends on
uninitialised value" report'.

Patch from Mike Crowe <mac@mcrowe.com>.

3 years agos390x: Update "reading material" in README.s390
Andreas Arnez [Wed, 10 Mar 2021 18:16:00 +0000 (19:16 +0100)]
s390x: Update "reading material" in README.s390

Update the links to the z/Architecture and the s390x ABI.

3 years agos390x: Improve isel for Iop_V128to64 and friends
Andreas Arnez [Fri, 5 Mar 2021 19:16:46 +0000 (20:16 +0100)]
s390x: Improve isel for Iop_V128to64 and friends

The existing instruction selector for Iop_V128to64, Iop_V128HIto64, and
Iop_V128to32 stores the vector register on the stack and then reads the
requested integer value back from the stack into the target GPR.  This is
fairly inefficient.

Load the requested value directly from the vector register into the target
GPR instead, using S390_VEC_GET_ELEM.

3 years agos390x: Fix printing wrong/no vector registers in disassembler
Andreas Arnez [Fri, 5 Mar 2021 19:14:32 +0000 (20:14 +0100)]
s390x: Fix printing wrong/no vector registers in disassembler

A typo in s390_disasm.c causes some vector registers to be printed wrong,
or not at all.  This is fixed.

3 years agovgdb might crash if valgrind is killed
Mark Wielaard [Tue, 9 Mar 2021 17:51:57 +0000 (18:51 +0100)]
vgdb might crash if valgrind is killed

This is an odd corner case, but happens specifically with the gdb
testcase make check TESTS=gdb.base/valgrind-infcall-2.exp. At the
end valgrind gets killed with SIGKILL (-9) which cannot be blocked.
But vgdb at the time is inside waitstopped. It sees the process wasn't
exited (WIFEXITED(status) is false) and so assumes the process was
stopped by a signal. Which it asserts:

      assert (WIFSTOPPED(status));
      signal_received = WSTOPSIG(status);
      if (signal_received == signal_expected)
         break;

But the assert fails and vgdb dumps core. The gdb testcase doesn't care,
because it already finished its test and just makes sure all processes
are gone. But it slowly fills your disk with core files (if you have
enabled them) when running the testsuite.

The fix is to simply check first whether the program has termined
normally or by getting a fatal signal.

https://bugs.kde.org/show_bug.cgi?id=434035

3 years agoBug 430429 - s390x: Fix clang compile error in valgrind.h
Andreas Arnez [Tue, 9 Mar 2021 16:22:47 +0000 (17:22 +0100)]
Bug 430429 - s390x: Fix clang compile error in valgrind.h

It has been observed that clang emits an error in valgrind.h for the macro
VALGRIND_DO_CLIENT_REQUEST_EXPR:

 "[...] unsupported inline asm: input with type 'int' matching output with
 type 'volatile unsigned long'"

Fix this with an explicit cast of the input to 'unsigned long int.'

The patch has been suggested by Jonathan Albrecht.

3 years agoDon't look for debug alt file in debug image if it is already found
Balint Reczey [Thu, 28 Nov 2019 12:34:21 +0000 (13:34 +0100)]
Don't look for debug alt file in debug image if it is already found

With dwz the .gnu_debuglink section may appear duplicated in the
debug file referenced originally in the .gnu_debuglink section.

https://bugs.launchpad.net/ubuntu/+source/valgrind/+bug/1848211

https://bugs.kde.org/show_bug.cgi?id=396656
https://bugs.kde.org/show_bug.cgi?id=427969

Signed-off-by: Balint Reczey <balint.reczey@canonical.com>
3 years agoFix nlcontrolc.vgtest hanging on newer glibc and/or arm64
Philippe Waroquiers [Sun, 7 Mar 2021 21:29:27 +0000 (22:29 +0100)]
Fix nlcontrolc.vgtest hanging on newer glibc and/or arm64

This test verifies that GDB can interrupt a process with all threads
blocked in a long select syscall.
The test used to terminate by having GDB modifying the select argument.
However, modifying the select argument works only for specific arch
and/or specific versions of glibc.
The test then blocks on other architectures/glibc versions.

The previous version of the test was:
  * first launching sleepers so as to have all threads blocked in long select
  * interrupting these threads
  * changing the select time arg so that the threads burn cpu
  * and then change variables to have the program exit.

The new version does:
  * first launches sleepers so that all threads are burning cpu.
  * interrupting these threads
  * change the local variables of sleepers so that the threads will
    block in a long select syscall
  * interrupt these threads
  * kill the program.

With this new version, we still check the behaviour of gdb+vgdbserver
for both burning and sleep threads, but without having the termination
depending on modifying select syscall argument.

Tested on debian amd64 and on ubuntu arm64 (to check the test does not hang
on an arm64 platform).

3 years agoBug 432552 - [AArch64] invalid error emitted for pre-decremented byte and half-word...
Julian Seward [Fri, 5 Mar 2021 08:38:30 +0000 (09:38 +0100)]
Bug 432552 - [AArch64] invalid error emitted for pre-decremented byte and half-word addresses.

3 years agoVSX Mask Manipulation operation tests.
Carl Love [Tue, 17 Nov 2020 01:53:22 +0000 (19:53 -0600)]
VSX Mask Manipulation operation tests.

3 years agoISA 3.1 VSX Mask Manipulation Operations
Carl Love [Sat, 2 May 2020 04:49:33 +0000 (23:49 -0500)]
ISA 3.1 VSX Mask Manipulation Operations

Add support for:

mtvsrbmMove to VSR Byte Mask
mtvsrbmiMove To VSR Byte Mask Immediate
mtvsrdmMove to VSR Doubleword Mask
mtvsrhmMove to VSR Halfword Mask
mtvsrqmMove to VSR Quadword Mask
mtvsrwmMove to VSR Word Mask
vcntmbbVector Count Mask Bits Byte
vcntmbdVector Count Mask Bits Doubleword
vcntmbhVector Count Mask Bits Halfword
vcntmbwVector Count Mask Bits Word
vexpandbmVector Expand Byte Mask
vexpanddmVector Expand Doubleword Mask
vexpandhmVector Expand Halfword Mask
vexpandqmVector Expand Quadword Mask
vexpandwmVector Expand Word Mask
vextractbmVector Extract Byte Mask
vextractdmVector Extract Doubleword Mask
vextracthmVector Extract Halfword Mask
vextractqmVector Extract Quadword Mask
vextractwmVector Extract Word Mask

Re-implemented the copy_MSB_bit_fields() function.  It can be done similarly to
the implementation of the vgnb instruction leveraging the clean helpers
used for the vgnb instruction.

Reimplemented the vexpandXm instructions eliminating
the call to copy_MSB_bit_fileds() and the need for the
for(i = 0; i< max; i++) loop.

Reimplemented the mtvsrXm instructions to remove the
need for the for(i = 0; i< max; i++) loop.

The computations for vexpandXm and mtvsrXm instructions
can be done much more efficiently.

3 years agoarm64: Handle sp, lr, fp as DwReg in CfiExpr
Mark Wielaard [Thu, 4 Mar 2021 18:24:06 +0000 (19:24 +0100)]
arm64: Handle sp, lr, fp as DwReg in CfiExpr

When copy_convert_CfiExpr_tree sees a DwReg on arm64 we simply call
I_die_here; This causes an issue in the case we really do have to handle
that case (see https://bugzilla.redhat.com/show_bug.cgi?id=1923493).

Handle the stack pointer (sp), link register (x30) and frame pointer (x29),
which we already keep in D3UnwindRegs, like we do for other architectures
in evalCfiExpr and copy_convert_CfiExpr_tree.

https://bugs.kde.org/show_bug.cgi?id=433898

3 years agoAdd an entry on the new --track-fds=all option to NEWS.
Mark Wielaard [Wed, 3 Mar 2021 15:02:33 +0000 (16:02 +0100)]
Add an entry on the new --track-fds=all option to NEWS.

3 years agoKeep on churning.
Paul Floyd [Wed, 3 Mar 2021 07:53:51 +0000 (08:53 +0100)]
Keep on churning.

Without #define _XOPEN_SOURCE macports clang 9.0.1 on OSX 10.7.5 was
giving me

In file included from swapcontext.c:12:
/usr/include/ucontext.h:43:2: error: The deprecated ucontext routines require
      _XOPEN_SOURCE to be defined
 ^
swapcontext.

So I added #define _XOPEN_SOURCE

But that gives, on Solaris 11.3

In file included from /usr/include/limits.h:12:0,
                 from /usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/include-fixed/limits.h:168,
                 from /usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/include-fixed/syslimits.h:7,
                 from /usr/gcc/4.8/lib/gcc/i386-pc-solaris2.11/4.8.2/include-fixed/limits.h:34,
                 from swapcontext.c:7:
/usr/include/sys/feature_tests.h:354:2: error: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications  and pre-2001 POSIX applications"
 #error "Compiler or options invalid for pre-UNIX 03 X/Open applications \
  ^

So make the #define _XOPEN_SOURCE conditional on darwin.

3 years agoModify cxx17_aligned_new testcase to accommdate clang.
Paul Floyd [Tue, 2 Mar 2021 16:48:14 +0000 (17:48 +0100)]
Modify cxx17_aligned_new testcase to accommdate clang.

Explicitly use ordinary scalar delete and update the expecteds.
Otherwise g++ uses sized scalar delete whilse clang uses
ordinary scalar delete which causes a diff.

3 years agoAdded one redir too many on Solaris, which causes a runtime error.
Paul Floyd [Tue, 2 Mar 2021 16:45:22 +0000 (17:45 +0100)]
Added one redir too many on Solaris, which causes a runtime error.

3 years agoFix compilation on OS X
Paul Floyd [Tue, 2 Mar 2021 16:41:47 +0000 (17:41 +0100)]
Fix compilation on OS X

3 years agoBug 388787 - Support for C++17 new/delete
Paul Floyd [Tue, 2 Mar 2021 12:32:22 +0000 (13:32 +0100)]
Bug 388787 - Support for C++17 new/delete

These over-aligned new and delete operators were added in C++ 17.

3 years agoRemove deep-D.post.exp-ppc64 from EXTRA_DIST.
Mark Wielaard [Sun, 28 Feb 2021 23:39:31 +0000 (00:39 +0100)]
Remove deep-D.post.exp-ppc64 from EXTRA_DIST.

massif/tests/deep-D.post.exp-ppc64 was remove in commit 24a94df73
"VG_(get_fnname_kind): Recognize gcc "optimized" below main functions."
but was still listed in massif/tests/Makefile.am (EXTRA_DIST). Causing
make dist to fail.

3 years agoVG_(get_fnname_kind): Recognize gcc "optimized" below main functions.
Mark Wielaard [Sun, 28 Feb 2021 23:26:00 +0000 (00:26 +0100)]
VG_(get_fnname_kind): Recognize gcc "optimized" below main functions.

The VG_(get_fnname_kind) function detects some special "below main"
function names. Specifically __libc_start_main and generic_start_main
both of which are used to call the actual main () function from the
application. We already recognized one variant, generic_start_main.isra.0,
but only for powerpc. Recognize all possibly specialed optimized variants
gcc can produce by simply checking for the function name with dot as
prefix. This fixes the memcheck/tests/supp_unknown.vgtest and
massif/tests/deep-D.vgtest with gcc 11.

We can now also get rid of the special cases in
massif/tests/deep-D.post.exp-ppc64 and memcheck/tests/supp_unknown.supp.

https://bugs.kde.org/show_bug.cgi?id=430158

3 years agosys_newfstatat: don't complain if |file_name| is NULL.
Mike Hommey [Fri, 26 Feb 2021 08:09:52 +0000 (17:09 +0900)]
sys_newfstatat: don't complain if |file_name| is NULL.

This is a followup to 2a7d3ae76, in the case rust code runs against a
glibc that supports statx but a kernel that doesn't, in which case glibc
falls back to fstatat.

https://bugs.kde.org/show_bug.cgi?id=433641

This page took 0.067108 seconds and 5 git commands to generate.