From 100443b68023d93eae20b0328c15b36adf685c11 Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Sun, 2 Jun 2019 00:17:42 +0000
Subject: user/valgrind: bump to 3.15.0 (thanks @q66)

---
 .../0001-Ensure-ELFv2-is-supported-on-PPC64.patch  | 153 ++++++++++-----------
 user/valgrind/APKBUILD                             |   8 +-
 2 files changed, 80 insertions(+), 81 deletions(-)

(limited to 'user')

diff --git a/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
index 5272406ec..5d7dbe29c 100644
--- a/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+++ b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
@@ -1,35 +1,35 @@
-From a5224eb31a4c8a680587e74cc402e5ed92ead216 Mon Sep 17 00:00:00 2001
+From 1278e5015f6925d86274d6363c4cedf2ce47bfcb Mon Sep 17 00:00:00 2001
 From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Thu, 27 Sep 2018 15:42:40 -0500
-Subject: [PATCH] Ensure ELFv2 is supported on PPC64
+Date: Tue, 14 May 2019 14:07:50 +0200
+Subject: [PATCH] [PATCH] Ensure ELFv2 is supported on PPC64
 
 ---
- coregrind/m_dispatch/dispatch-ppc64be-linux.S | 107 ++++++++++++++++--
- coregrind/m_initimg/initimg-linux.c           |   5 +-
+ coregrind/m_dispatch/dispatch-ppc64be-linux.S | 101 ++++++++++++++++--
+ coregrind/m_initimg/initimg-linux.c           |   3 +-
  coregrind/m_libcsetjmp.c                      |   7 +-
  coregrind/m_machine.c                         |   3 +-
- coregrind/m_main.c                            |  19 ++--
+ coregrind/m_main.c                            |  21 ++--
  coregrind/m_sigframe/sigframe-ppc64-linux.c   |   3 +-
  coregrind/m_signals.c                         |  11 +-
- coregrind/m_stacktrace.c                      |  12 +-
+ coregrind/m_stacktrace.c                      |  12 ++-
  coregrind/m_syscall.c                         |   9 +-
  coregrind/m_syswrap/syscall-ppc64be-linux.S   |  19 +++-
  coregrind/m_syswrap/syswrap-ppc64-linux.c     |   9 +-
  coregrind/m_trampoline.S                      |   4 +-
- coregrind/m_translate.c                       |  23 ++--
+ coregrind/m_translate.c                       |  26 ++---
  coregrind/m_ume/elf.c                         |   8 +-
- coregrind/pub_core_machine.h                  |  12 +-
+ coregrind/pub_core_machine.h                  |  12 ++-
  coregrind/vg_preloaded.c                      |   3 +-
  include/valgrind.h                            |  16 ++-
  memcheck/mc_leakcheck.c                       |   2 +-
  memcheck/mc_machine.c                         |   3 +-
- 19 files changed, 206 insertions(+), 69 deletions(-)
+ 19 files changed, 205 insertions(+), 67 deletions(-)
 
 diff --git a/coregrind/m_dispatch/dispatch-ppc64be-linux.S b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
-index 91bd3b236..eb8026c7c 100644
+index c5592d4..292b236 100644
 --- a/coregrind/m_dispatch/dispatch-ppc64be-linux.S
 +++ b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
-@@ -75,14 +75,26 @@ void VG_(disp_run_translations)( UWord* two_words,
+@@ -88,14 +88,26 @@ void VG_(disp_run_translations)( UWord* two_words,
  .section ".text"
  .align   2
  .globl   VG_(disp_run_translations)
@@ -56,7 +56,7 @@ index 91bd3b236..eb8026c7c 100644
  	/* r3 holds two_words */
  	/* r4 holds guest_state */
          /* r5 holds host_addr */
-@@ -231,6 +243,11 @@ VG_(disp_run_translations):
+@@ -244,6 +256,11 @@ VG_(disp_run_translations):
  
          /* Set up the guest state ptr */
          mr      31,4      /* r31 (generated code gsp) = r4 */
@@ -68,7 +68,7 @@ index 91bd3b236..eb8026c7c 100644
  
          /* and jump into the code cache.  Chained translations in
             the code cache run, until for whatever reason, they can't
-@@ -385,7 +402,9 @@ VG_(disp_run_translations):
+@@ -398,7 +415,9 @@ VG_(disp_run_translations):
          mtlr    0
          addi    1,1,624   /* stack_size */
          blr
@@ -79,7 +79,7 @@ index 91bd3b236..eb8026c7c 100644
  
  /*----------------------------------------------------*/
  /*--- Continuation points                          ---*/
-@@ -395,15 +414,25 @@ VG_(disp_run_translations):
+@@ -408,14 +427,24 @@ VG_(disp_run_translations):
          .section ".text"
          .align   2
          .globl   VG_(disp_cp_chain_me_to_slowEP)
@@ -97,17 +97,15 @@ index 91bd3b236..eb8026c7c 100644
          .type    .VG_(disp_cp_chain_me_to_slowEP),@function
          .globl   .VG_(disp_cp_chain_me_to_slowEP)
  .VG_(disp_cp_chain_me_to_slowEP):
--        /* We got called.  The return address indicates
 +#if  _CALL_ELF == 2
 +0:      addis 2, 12,.TOC.-0b@ha
 +        addi  2,2,.TOC.-0b@l
 +        .localentry VG_(disp_cp_chain_me_to_slowEP), .-VG_(disp_cp_chain_me_to_slowEP)
 +#endif
-+	/* We got called.  The return address indicates
+         /* We got called.  The return address indicates
             where the patching needs to happen.  Collect
             the return address and, exit back to C land,
-            handing the caller the pair (Chain_me_S, RA) */
-@@ -415,20 +444,33 @@ VG_(disp_cp_chain_me_to_slowEP):
+@@ -428,20 +457,33 @@ VG_(disp_cp_chain_me_to_slowEP):
          */
          subi 7,7,20+4+4
          b    .postamble
@@ -143,7 +141,7 @@ index 91bd3b236..eb8026c7c 100644
             where the patching needs to happen.  Collect
             the return address and, exit back to C land,
             handing the caller the pair (Chain_me_S, RA) */
-@@ -440,20 +482,33 @@ VG_(disp_cp_chain_me_to_fastEP):
+@@ -453,19 +495,32 @@ VG_(disp_cp_chain_me_to_fastEP):
          */
          subi 7,7,20+4+4
          b    .postamble
@@ -155,12 +153,11 @@ index 91bd3b236..eb8026c7c 100644
          .section ".text"
          .align   2
          .globl   VG_(disp_cp_xindir)
--        .section ".opd","aw"
 +#if _CALL_ELF == 2
 +        .type VG_(disp_cp_xindir),@function
 +VG_(disp_cp_xindir):
 +#else
-+	.section ".opd","aw"
+         .section ".opd","aw"
          .align   3
  VG_(disp_cp_xindir):
          .quad    .VG_(disp_cp_xindir),.TOC.@tocbase,0
@@ -169,27 +166,23 @@ index 91bd3b236..eb8026c7c 100644
          .type    .VG_(disp_cp_xindir),@function
          .globl   .VG_(disp_cp_xindir)
  .VG_(disp_cp_xindir):
--        /* Where are we going? */
 +#if  _CALL_ELF == 2
 +0:      addis 2, 12,.TOC.-0b@ha
 +        addi  2,2,.TOC.-0b@l
 +        .localentry VG_(disp_cp_xindir), .-VG_(disp_cp_xindir)
 +#endif
-+	/* Where are we going? */
-         ld      3,OFFSET_ppc64_CIA(31)
- 
-         /* stats only */
-@@ -479,6 +534,9 @@ VG_(disp_cp_xindir):
-         /* Found a match.  Jump to .host. */
-         mtctr   7
-         bctr
+         /* Where are we going? */
+         ld    20, OFFSET_ppc64_CIA(31)
+ 
+@@ -584,44 +639,72 @@ VG_(disp_cp_xindir):
+         li    7,0
+         b     .postamble
+ 	/*NOTREACHED*/
 +#if _CALL_ELF == 2
 +        .size VG_(disp_cp_xindir),.-VG_(disp_cp_xindir)
 +#endif
  
- .fast_lookup_failed:
-         /* stats only */
-@@ -496,39 +554,64 @@ VG_(disp_cp_xindir):
+ /* ------ Assisted jump ------ */
  .section ".text"
          .align   2
          .globl   VG_(disp_cp_xassisted)
@@ -260,7 +253,7 @@ index 91bd3b236..eb8026c7c 100644
  /* Let the linker know we don't need an executable stack */
  MARK_STACK_NO_EXEC
 diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
-index 61cc458bc..19df79705 100644
+index 8a7f0d0..6891641 100644
 --- a/coregrind/m_initimg/initimg-linux.c
 +++ b/coregrind/m_initimg/initimg-linux.c
 @@ -1117,7 +1117,8 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii )
@@ -274,7 +267,7 @@ index 61cc458bc..19df79705 100644
  #endif
  
 diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c
-index c73180640..ed96f4739 100644
+index 85ffc12..51273a0 100644
 --- a/coregrind/m_libcsetjmp.c
 +++ b/coregrind/m_libcsetjmp.c
 @@ -35,6 +35,7 @@
@@ -306,10 +299,10 @@ index c73180640..ed96f4739 100644
  ".section \".toc\",\"aw\""          "\n"
  
 diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
-index 31b0e1b6b..eb3e6a4e1 100644
+index df842aa..de37070 100644
 --- a/coregrind/m_machine.c
 +++ b/coregrind/m_machine.c
-@@ -2035,7 +2035,8 @@ void* VG_(fnptr_to_fnentry)( void* f )
+@@ -2073,7 +2073,8 @@ void* VG_(fnptr_to_fnentry)( void* f )
        || defined(VGP_ppc32_linux) || defined(VGP_ppc64le_linux) \
        || defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \
        || defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \
@@ -320,33 +313,38 @@ index 31b0e1b6b..eb3e6a4e1 100644
  #  elif defined(VGP_ppc64be_linux)
     /* ppc64-linux uses the AIX scheme, in which f is a pointer to a
 diff --git a/coregrind/m_main.c b/coregrind/m_main.c
-index bf4a71284..102235dca 100644
+index 21df679..855c933 100644
 --- a/coregrind/m_main.c
 +++ b/coregrind/m_main.c
-@@ -2274,7 +2274,7 @@ static void final_tidyup(ThreadId tid)
+@@ -2303,7 +2303,7 @@ static void final_tidyup(ThreadId tid)
        return; /* won't do it */
     }
  
 -#  if defined(VGP_ppc64be_linux)
 +#  if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
-    Addr r2 = VG_(get_tocptr)(freeres_wrapper);
+    Addr r2 = VG_(get_tocptr)(VG_(current_DiEpoch)(),
+                              freeres_wrapper);
     if (r2 == 0) {
-       VG_(message)(Vg_UserMsg, 
-@@ -2306,9 +2306,11 @@ static void final_tidyup(ThreadId tid)
-       directly.  However, we need to set R2 (the toc pointer)
+@@ -2336,13 +2336,15 @@ static void final_tidyup(ThreadId tid)
        appropriately. */
     VG_(set_IP)(tid, freeres_wrapper);
+ 
 -#  if defined(VGP_ppc64be_linux)
 +#  if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
 +      && defined(VG_PLAT_USES_PPCTOC)
     VG_(threads)[tid].arch.vex.guest_GPR2 = r2;
+    VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
+             offsetof(VexGuestPPC64State, guest_GPR2),
+             sizeof(VG_(threads)[tid].arch.vex.guest_GPR2));
 -#  elif  defined(VGP_ppc64le_linux)
+-   /* setting GPR2 but not really needed, GPR12 is needed */
 +#  elif  (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
 +         && !defined(VG_PLAT_USES_PPCTOC)
-    /* setting GPR2 but not really needed, GPR12 is needed */
++  /* setting GPR2 but not really needed, GPR12 is needed */
     VG_(threads)[tid].arch.vex.guest_GPR2  = freeres_wrapper;
-    VG_(threads)[tid].arch.vex.guest_GPR12 = freeres_wrapper;
-@@ -2610,9 +2612,10 @@ asm("\n"
+    VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
+             offsetof(VexGuestPPC64State, guest_GPR2),
+@@ -2657,9 +2659,10 @@ asm("\n"
      "\ttrap\n"
      ".previous\n"
  );
@@ -359,7 +357,7 @@ index bf4a71284..102235dca 100644
         So we must have one, and that is what goes into the .opd section. */
      "\t.align 2\n"
      "\t.global _start\n"
-@@ -2656,9 +2659,9 @@ asm("\n"
+@@ -2703,9 +2706,9 @@ asm("\n"
      "\tnop\n"
      "\ttrap\n"
  );
@@ -373,7 +371,7 @@ index bf4a71284..102235dca 100644
  asm("\n"
      "\t.align 2\n"
 diff --git a/coregrind/m_sigframe/sigframe-ppc64-linux.c b/coregrind/m_sigframe/sigframe-ppc64-linux.c
-index b16606c22..cc657838f 100644
+index b16606c..cc65783 100644
 --- a/coregrind/m_sigframe/sigframe-ppc64-linux.c
 +++ b/coregrind/m_sigframe/sigframe-ppc64-linux.c
 @@ -263,7 +263,8 @@ void VG_(sigframe_create)( ThreadId tid,
@@ -387,10 +385,10 @@ index b16606c22..cc657838f 100644
     tst->arch.vex.guest_CIA = (Addr) ((ULong*)handler)[0];
  #else
 diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
-index e572f17cc..52d939057 100644
+index 7591eb3..51fce79 100644
 --- a/coregrind/m_signals.c
 +++ b/coregrind/m_signals.c
-@@ -889,7 +889,9 @@ extern void my_sigreturn(void);
+@@ -897,7 +897,9 @@ extern void my_sigreturn(void);
     "	sc\n" \
     ".previous\n"
  
@@ -401,7 +399,7 @@ index e572f17cc..52d939057 100644
  #  define _MY_SIGRETURN(name) \
     ".align   2\n" \
     ".globl   my_sigreturn\n" \
-@@ -904,9 +906,10 @@ extern void my_sigreturn(void);
+@@ -912,9 +914,10 @@ extern void my_sigreturn(void);
     "	li	0, " #name "\n" \
     "	sc\n"
  
@@ -416,7 +414,7 @@ index e572f17cc..52d939057 100644
  #  define _MY_SIGRETURN(name) \
     ".align   2\n" \
 diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c
-index 24f1409dd..9be4c6da9 100644
+index b3ac89f..5ff90ef 100644
 --- a/coregrind/m_stacktrace.c
 +++ b/coregrind/m_stacktrace.c
 @@ -726,7 +726,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
@@ -460,7 +458,7 @@ index 24f1409dd..9be4c6da9 100644
                 ppc64-linux.  If LR points to our magic return stub,
                 then we are in a wrapped or intercepted function, in
 diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c
-index 5948cecf5..c1cdfab27 100644
+index 5948cec..c1cdfab 100644
 --- a/coregrind/m_syscall.c
 +++ b/coregrind/m_syscall.c
 @@ -470,7 +470,8 @@ asm(
@@ -493,7 +491,7 @@ index 5948cecf5..c1cdfab27 100644
  asm(
  ".align   2\n"
 diff --git a/coregrind/m_syswrap/syscall-ppc64be-linux.S b/coregrind/m_syswrap/syscall-ppc64be-linux.S
-index 16e9cedc0..db0d8b4aa 100644
+index 16e9ced..db0d8b4 100644
 --- a/coregrind/m_syswrap/syscall-ppc64be-linux.S
 +++ b/coregrind/m_syswrap/syscall-ppc64be-linux.S
 @@ -76,11 +76,24 @@
@@ -534,7 +532,7 @@ index 16e9cedc0..db0d8b4aa 100644
  /* export the ranges so that
     VG_(fixup_guest_state_after_syscall_interrupted) can do the
 diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
-index 6549dd1b3..4ecbe38a6 100644
+index eada099..7186fe3 100644
 --- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
 +++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
 @@ -41,6 +41,7 @@
@@ -575,7 +573,7 @@ index 6549dd1b3..4ecbe38a6 100644
  "   .globl   do_syscall_clone_ppc64_linux\n"
  "   .section \".opd\",\"aw\"\n"
 diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
-index 0488b54bd..d00916aef 100644
+index 0488b54..d00916a 100644
 --- a/coregrind/m_trampoline.S
 +++ b/coregrind/m_trampoline.S
 @@ -469,11 +469,11 @@ VG_(ppctoc_magic_redirect_return_stub):
@@ -593,7 +591,7 @@ index 0488b54bd..d00916aef 100644
  	.align 3
  VG_(ppc64_linux_REDIR_FOR_strlen):
 diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c
-index 3602a4663..bdd1d50ee 100644
+index 3602a46..6dd2845 100644
 --- a/coregrind/m_translate.c
 +++ b/coregrind/m_translate.c
 @@ -1006,7 +1006,8 @@ static IRExpr* mkU32 ( UInt n ) {
@@ -606,7 +604,7 @@ index 3602a4663..bdd1d50ee 100644
  static IRExpr* mkU8 ( UChar n ) {
     return IRExpr_Const(IRConst_U8(n));
  }
-@@ -1234,7 +1234,8 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
+@@ -1234,7 +1235,8 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
  }
  #endif
  
@@ -616,7 +614,7 @@ index 3602a4663..bdd1d50ee 100644
  
  static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
  {
-@@ -1263,7 +1264,8 @@ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
+@@ -1263,7 +1265,8 @@ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
  }
  #endif
  
@@ -626,7 +624,7 @@ index 3602a4663..bdd1d50ee 100644
  
  static
  Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
-@@ -1285,7 +1287,7 @@ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
+@@ -1285,7 +1288,7 @@ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
  }
  #endif
  
@@ -635,7 +633,7 @@ index 3602a4663..bdd1d50ee 100644
  /* Generate code to push LR and R2 onto this thread's redir stack.
     Need to save R2 in case we redirect to a global entry point.  The
     value of R2 is not preserved when entering the global entry point.
-@@ -1366,9 +1368,7 @@ Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
+@@ -1366,9 +1369,7 @@ Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
       gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( VG_(current_DiEpoch)(),
                                                     closure->readdr ) );
     }
@@ -646,16 +644,17 @@ index 3602a4663..bdd1d50ee 100644
     VgCallbackClosure* closure = (VgCallbackClosure*)closureV;
     Int offB_GPR12 = offsetof(VexGuestArchState, guest_GPR12);
     addStmtToIRSB(bb, IRStmt_Put(offB_GPR12, mkU64(closure->readdr)));
-@@ -1424,7 +1424,6 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
+@@ -1424,8 +1425,7 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
     );
-    gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( closure->readdr ) );
+    gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( VG_(current_DiEpoch)(),
+                                                  closure->readdr ) );
 -#  endif
 -#if defined(VGP_ppc64le_linux)
 +#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
     /* This saves the r2 before leaving the function.  We need to move
      * guest_NRADDR_GPR2 back to R2 on return.
      */
-@@ -1648,7 +1647,8 @@ Bool VG_(translate) ( ThreadId tid,
+@@ -1648,7 +1648,8 @@ Bool VG_(translate) ( ThreadId tid,
        preamble_fn = mk_preamble__set_NRADDR_to_nraddr;
  
     /* LE we setup the LR */
@@ -665,7 +664,7 @@ index 3602a4663..bdd1d50ee 100644
     if (nraddr == (Addr)&VG_(ppctoc_magic_redirect_return_stub)) {
        /* If entering the special return stub, this means a wrapped or
           redirected function is returning.  Make this translation one
-@@ -1692,13 +1692,14 @@ Bool VG_(translate) ( ThreadId tid,
+@@ -1692,13 +1693,14 @@ Bool VG_(translate) ( ThreadId tid,
     vex_abiinfo.guest_ppc_zap_RZ_at_bl         = NULL;
  #  endif
  
@@ -683,7 +682,7 @@ index 3602a4663..bdd1d50ee 100644
     vex_abiinfo.guest_ppc_zap_RZ_at_bl         = const_True;
     vex_abiinfo.host_ppc_calls_use_fndescrs    = False;
 diff --git a/coregrind/m_ume/elf.c b/coregrind/m_ume/elf.c
-index 21eb52bcb..f1e6b4728 100644
+index 21eb52b..f1e6b47 100644
 --- a/coregrind/m_ume/elf.c
 +++ b/coregrind/m_ume/elf.c
 @@ -847,8 +847,8 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
@@ -709,7 +708,7 @@ index 21eb52bcb..f1e6b4728 100644
     info->init_toc = 0; /* meaningless on this platform */
  #else
 diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h
-index d6af843df..400148d57 100644
+index d6af843..400148d 100644
 --- a/coregrind/pub_core_machine.h
 +++ b/coregrind/pub_core_machine.h
 @@ -60,12 +60,20 @@
@@ -736,7 +735,7 @@ index d6af843df..400148d57 100644
  #  define VG_ELF_DATA2XXX     ELFDATA2LSB
  #  define VG_ELF_MACHINE      EM_ARM
 diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
-index ad033432a..f300fbe80 100644
+index ad03343..f300fbe 100644
 --- a/coregrind/vg_preloaded.c
 +++ b/coregrind/vg_preloaded.c
 @@ -45,6 +45,7 @@
@@ -757,7 +756,7 @@ index ad033432a..f300fbe80 100644
        address for the client request, but return the function descriptor
        from this function. 
 diff --git a/include/valgrind.h b/include/valgrind.h
-index 577c8f05e..99e058ccf 100644
+index cc8c2b8..3d30e7f 100644
 --- a/include/valgrind.h
 +++ b/include/valgrind.h
 @@ -143,12 +143,20 @@
@@ -786,7 +785,7 @@ index 577c8f05e..99e058ccf 100644
  #  define PLAT_arm_linux 1
  #elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
 diff --git a/memcheck/mc_leakcheck.c b/memcheck/mc_leakcheck.c
-index 782244481..c239f5b10 100644
+index 7822444..c239f5b 100644
 --- a/memcheck/mc_leakcheck.c
 +++ b/memcheck/mc_leakcheck.c
 @@ -653,7 +653,7 @@ static Bool aligned_ptr_above_page0_is_vtable_addr(Addr ptr)
@@ -799,19 +798,19 @@ index 782244481..c239f5b10 100644
        // more level of indirection to follow.
        if (seg == NULL
 diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c
-index 5ed101fca..70c64b361 100644
+index 4ce746e..e03ab33 100644
 --- a/memcheck/mc_machine.c
 +++ b/memcheck/mc_machine.c
 @@ -132,7 +132,8 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
              return GOF(GPRn);
           by testing ox instead of o, and setting ox back 4 bytes when sz == 4.
        */
--#if defined(VGA_ppc64le)
-+#if (defined(VGA_ppc64be) && (defined(_CALL_ELF) && _CALL_ELF == 2)) \
-+    || defined(VGA_ppc64le)
+-#     if defined(VGA_ppc64le)
++#     if (defined(VGA_ppc64be) && (defined(_CALL_ELF) && _CALL_ELF == 2)) \
++       || defined(VGA_ppc64le)
        Int ox = o;
- #else
+ #     else
        Int ox = sz == 8 ? o : (o - 4);
 -- 
-2.18.0
+2.21.0
 
diff --git a/user/valgrind/APKBUILD b/user/valgrind/APKBUILD
index fc710b4b2..f676d18e8 100644
--- a/user/valgrind/APKBUILD
+++ b/user/valgrind/APKBUILD
@@ -1,7 +1,7 @@
 # Maintainer: A. Wilcox <awilfox@adelielinux.org>
 pkgname=valgrind
-pkgver=3.13.0
-pkgrel=5
+pkgver=3.15.0
+pkgrel=0
 pkgdesc="A tool to help find memory-management problems in programs"
 url="http://valgrind.org/"
 arch="all"
@@ -65,8 +65,8 @@ package() {
 	fi
 }
 
-sha512sums="34e1013cd3815d30a459b86220e871bb0a6209cc9e87af968f347083693779f022e986f211bdf1a5184ad7370cde12ff2cfca8099967ff94732970bd04a97009  valgrind-3.13.0.tar.bz2
-71afb12748f69f0976a299c65572818b70cbce5d04f230a49a50f114351d8083c59a9e197cefbcb9145806797ff4d1d54488f50342b680c9a2b76e4a7f7cf305  0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+sha512sums="5695d1355226fb63b0c80809ed43bb077b6eed4d427792d9d7ed944c38b557a84fe3c783517b921e32f161228e10e4625bea0550faa4685872bb4454450cfa7f  valgrind-3.15.0.tar.bz2
+250177c3f50940560de9ad885cf5d9d7aa060ac832ced04875e1109b9114ec34e358a5c2309c8548f657e293cf50d980306d47b2cdf5e429aeabd10ffe666104  0001-Ensure-ELFv2-is-supported-on-PPC64.patch
 9ee297d1b2b86891584443ad0caadc4977e1447979611ccf1cc55dbee61911b0b063bc4ad936d86c451cedae410cb3219b5a088b2ad0aa17df182d564fe36cfe  arm.patch
 57086a768f3876b26b0e507bc159a73f0955f03d5af8cc30e21103e348ca67f2e58b5555a5a97f299751c6602692ad43d8346bb68a80917d740fb4d65bba9665  realloc.patch
 d011b2769d35ca3206967e6dac9f3fb24a6496e5bbfdc73342382245c89375b09d6948b10ba3cf8aa0050c79c0dd13b75764aec0ec5c6ac479fa930941067747  suppressions.patch
-- 
cgit v1.2.3-70-g09d2