
Created Mon Sep 8 13:22:16 CEST 2014.  All new bugs after this point
go in here.

==================

Bugs that didn't make 3.10.0, that might be considered for 3.10.1

335618  mov.w rN, pc/sp (ARM32)

327427  ifunc crash when symbols are discarded
330321  debuginfo readers complain about DT_AT_signature

330147  libmpiwrap PMPI_Get_count (should take; simple fix)
326487  child of debugged process exits without becoming zombie
338781  OSX: unable to read debug info

arm64 critical regtest fails:
  getregset.stderr.out   sys 117, ptrace
  proc-auxv no auxv?
  memcheck/tests/linux/stack_changes asserts
  sigaltstack.stderr.out segfaults -- host seems broken too
     recursive signal delivery (!)

==================

New bugs reported in 3.10.0

211529  valgrind doesn't show proper call stacks for programs compiled
        by newer versions of visual c++

339160  Running signal handler with alternate stack allocated on current 
        stack crashes callgrind

339215  Valgrind 3.10.0 contain 2013 in copyrights notice
        Should fix

339218  AVX2 binaries compiled with the Intel compiler fail to
        run under Valgrind 3.10.0
        FIXME: should we enable this now?

339288  support Cavium Octeon MIPS specific BBIT*32 instructions

339330  Feature request: Add support for C++11's std::atomic
        Helgrind

339405  Adds ability to invoke a script in order to determine a
        log-file name for a child being forked
        Has plausible patch, should take

339416  unhandled instruction bytes 0xC5 0xF1 0xEF 0xC9
        (possible AVX on 32-bit, can't tell)

339424  Full support of KVM ioctl
        In progress

339499  memcheck does not always detect access beyond mmaped page

339542  Experiences with compiling valgrind with ICC
        -> 3.11

339563  The DVB demux DMX_STOP ioctl doesn't have a wrapper
        -> 3.11

339596  vex amd64->IR: 0x8F 0xE8 0x78 0xCD 0xC1 0x4 0xC5 0xF9
        XOP/FMA -- should take

339605  vgpreload_helgrind-arm-linux.so is not liked to libc.so 
        and can't find sched_yield, pthread_self and so on
        recent Android

339636  Use fxsave64 and fxrstor64 mnemonics instead of rex64 prefix
        Should apply

339744  warning: evaluate_Dwarf3_Expr: unhandled DW_OP_ 0xf2
        no action so far

339745  Valgrind crash when check Marmalade app (OSX 10.?)
        magic_delta on 32-bit; may be easy to fix

339755  Valgrind on Mac 10.9 should suppress setenv() mem leak
        Still needed?

339762  missing replacement alias for glibc __strchr_sse42, __strcpy_sse2,
        __strcpy_ssse3

339778  Linux/TileGx platform support to Valgrind
        Should action

339780  [PATCH] Valgrind on Mac 10.9 should suppress pthread_rwlock_init()
        I suspect this is now redundant following recent work on Yosemite

339820  vex amd64->IR: 0x66 0xF 0x3A 0x63 0xA 0x42 0x74 0x9
        (pcmpistrix  $0x42, (%rdx), %xmm1)
        Should fix

339861  Remove Elf32_Nhdr definition for Android

339862  v6intThumb.c does not compile when -pie options is specified
        should possible takes; causes build failures on newer Android

339945  Patch: replace #if !defined (VGPV_*_linux_android) with
        #ifndef AT_FPUCW  (probably WONTFIX)

340021  sgcheck tool does not work properly on ARM
        == 296166

340320  replacement malloc command line options (--trace-malloc
        and --alignment) are invisible

340392  Incorrect "Conditional jump..." message
        Optimised code a la Clang

340469  vex amd64->IR: unhandled instruction bytes: 0x66 0xA7
        Not clear what's going on here

340571  x86/Linux should no longer claim "almost complete"

340722  Resolve "UNKNOWN attrlist flags 0:0x10000000"

340777  Illegal instruction on mips (ar71xx)

340849  unsupported AVX instruction on 32 bit
        we should WONTFIX this

340854  valgrind-di-server: allow specification of multiple paths
        has patch

340905  hg_main.c:291 (lockN_acquire_reader): Assertion 'lk->kind
        == LK_rdwr' failed.
        against 3.8.1

341036  dumping core and Assertion 'sizeof(*regs) == sizeof(prs->pr_reg)

Sat Nov 22 11:33:21 CET 2014
