 1a55d90320
			
		
	
	1a55d90320
	
	
	
		
			
			Release notes: https://valgrind.org/docs/manual/dist.news.html The patch `130-fix_arm_arch_detection.patch` was added upstream in https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=5bdb86cc9a962f04f2dd3816b7d3a96288b09b72 Replace `010-mips-Fix-new-syscall-numbers.patch` with backport from upstream. Backport patch `020-no-member-guest_IP_AT_SYSCALL.patch` to fix a compile problem on MIPS. Small size increase: 1527884 bin/packages/mips_24kc-old/base/valgrind_3.22.0-r1_mips_24kc.ipk 3352210 bin/packages/mips_24kc-old/base/valgrind-cachegrind_3.22.0-r1_mips_24kc.ipk 3522982 bin/packages/mips_24kc-old/base/valgrind-callgrind_3.22.0-r1_mips_24kc.ipk 3573577 bin/packages/mips_24kc-old/base/valgrind-drd_3.22.0-r1_mips_24kc.ipk 3647835 bin/packages/mips_24kc-old/base/valgrind-helgrind_3.22.0-r1_mips_24kc.ipk 3383239 bin/packages/mips_24kc-old/base/valgrind-massif_3.22.0-r1_mips_24kc.ipk 22332 bin/packages/mips_24kc-old/base/valgrind-vgdb_3.22.0-r1_mips_24kc.ipk 1541969 bin/packages/mips_24kc-new/base/valgrind_3.23.0-r1_mips_24kc.ipk 3378595 bin/packages/mips_24kc-new/base/valgrind-cachegrind_3.23.0-r1_mips_24kc.ipk 3548415 bin/packages/mips_24kc-new/base/valgrind-callgrind_3.23.0-r1_mips_24kc.ipk 3592715 bin/packages/mips_24kc-new/base/valgrind-drd_3.23.0-r1_mips_24kc.ipk 3664706 bin/packages/mips_24kc-new/base/valgrind-helgrind_3.23.0-r1_mips_24kc.ipk 3411485 bin/packages/mips_24kc-new/base/valgrind-massif_3.23.0-r1_mips_24kc.ipk 22869 bin/packages/mips_24kc-new/base/valgrind-vgdb_3.23.0-r1_mips_24kc.ipk Link: https://github.com/openwrt/openwrt/pull/16584 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			69 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Disable the valgrind helpers which use MIPS floating point operations 
 | |
| when floating point support is deactivated in the toolchain.
 | |
| 
 | |
| The fix from this commit is not sufficient any more:
 | |
| https://sourceware.org/git/?p=valgrind.git;a=commitdiff;h=869fcf2f6739f17b4eff36ec68f8dca826c8afeb
 | |
| 
 | |
| This fixes the following error message when compiling with a GCC 10 MIPS BE 32:
 | |
| ---------------------------------------------------------
 | |
| ../VEX/priv/guest_mips_helpers.c: In function 'mips_dirtyhelper_calculate_FCSR_fp32':
 | |
| ../VEX/priv/guest_mips_helpers.c:640:10: error: the register '$f21' cannot be clobbered in 'asm' for the current target
 | |
|   640 |          ASM_VOLATILE_UNARY32_DOUBLE(round.w.d)
 | |
|       |          ^
 | |
| ---------------------------------------------------------
 | |
| 
 | |
| --- a/VEX/priv/guest_mips_helpers.c
 | |
| +++ b/VEX/priv/guest_mips_helpers.c
 | |
| @@ -620,6 +620,7 @@ extern UInt mips_dirtyhelper_calculate_F
 | |
|                                                     flt_op inst )
 | |
|  {
 | |
|     UInt ret = 0;
 | |
| +#ifndef __mips_soft_float
 | |
|  #if defined(__mips__)
 | |
|     VexGuestMIPS32State* guest_state = (VexGuestMIPS32State*)gs;
 | |
|     UInt loFsVal, hiFsVal, loFtVal, hiFtVal;
 | |
| @@ -702,6 +703,7 @@ extern UInt mips_dirtyhelper_calculate_F
 | |
|           break;
 | |
|     }
 | |
|  #endif
 | |
| +#endif
 | |
|     return ret;
 | |
|  }
 | |
|  
 | |
| @@ -711,6 +713,7 @@ extern UInt mips_dirtyhelper_calculate_F
 | |
|                                                     flt_op inst )
 | |
|  {
 | |
|     UInt ret = 0;
 | |
| +#ifndef __mips_soft_float
 | |
|  #if defined(__mips__) && ((__mips == 64) ||                                  \
 | |
|                            (defined(__mips_isa_rev) && (__mips_isa_rev >= 2)))
 | |
|  #if defined(VGA_mips32)
 | |
| @@ -863,6 +866,7 @@ extern UInt mips_dirtyhelper_calculate_F
 | |
|           break;
 | |
|     }
 | |
|  #endif
 | |
| +#endif
 | |
|     return ret;
 | |
|  }
 | |
|  
 | |
| --- a/coregrind/m_machine.c
 | |
| +++ b/coregrind/m_machine.c
 | |
| @@ -2119,6 +2119,7 @@ Bool VG_(machine_get_hwcaps)( void )
 | |
|             we are using alternative way to determine FP mode */
 | |
|          ULong result = 0;
 | |
|  
 | |
| +#ifndef __mips_soft_float
 | |
|          if (!VG_MINIMAL_SETJMP(env_unsup_insn)) {
 | |
|             __asm__ volatile (
 | |
|                ".set push\n\t"
 | |
| @@ -2136,6 +2137,9 @@ Bool VG_(machine_get_hwcaps)( void )
 | |
|  
 | |
|             fpmode = (result != 0x3FF0000000000000ull);
 | |
|          }
 | |
| +#else
 | |
| +	fpmode = 0;
 | |
| +#endif
 | |
|       }
 | |
|  
 | |
|       if (fpmode != 0)
 |