0035-compiler-rt-Fix-stat-struct-s-size-for-O32-ABI.patch 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. From 577a70fd39778fb7e3bcd22b6c6713fcb516c365 Mon Sep 17 00:00:00 2001
  2. From: Khem Raj <raj.khem@gmail.com>
  3. Date: Tue, 3 Jan 2023 18:44:34 -0800
  4. Subject: [PATCH] compiler-rt: Fix stat struct's size for O32 ABI
  5. stat struct size differs on glibc based on ABI choices e.g. 64bit off_t
  6. and/or 64bit time_t will make this size different. Therefore separate
  7. out the O32 case out, makes it more readable.
  8. Upstream-Status: Pending
  9. Signed-off-by: Khem Raj <raj.khem@gmail.com>
  10. ---
  11. .../sanitizer_platform_limits_posix.h | 13 +++++++++++++
  12. 1 file changed, 13 insertions(+)
  13. diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  14. index fdc69b8a5fba..d2246893f8a5 100644
  15. --- a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  16. +++ b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  17. @@ -97,11 +97,24 @@ const unsigned struct_kernel_stat64_sz = 104;
  18. const unsigned struct_kernel_stat_sz = 144;
  19. const unsigned struct_kernel_stat64_sz = 104;
  20. #elif defined(__mips__)
  21. +#if defined(__mips_o32) // O32 ABI
  22. +#if _TIME_BITS == 64
  23. +const unsigned struct_kernel_stat_sz = 112;
  24. +const unsigned struct_kernel_stat64_sz = 112;
  25. +#elif _FILE_OFFSET_BITS == 64
  26. +const unsigned struct_kernel_stat_sz = 160;
  27. +const unsigned struct_kernel_stat64_sz = 160;
  28. +#else
  29. +const unsigned struct_kernel_stat_sz = 144;
  30. +const unsigned struct_kernel_stat64_sz = 160;
  31. +#endif
  32. +#else // __mips_o32
  33. const unsigned struct_kernel_stat_sz =
  34. SANITIZER_ANDROID
  35. ? FIRST_32_SECOND_64(104, 128)
  36. : FIRST_32_SECOND_64((_MIPS_SIM == _ABIN32) ? 176 : 160, 216);
  37. const unsigned struct_kernel_stat64_sz = 104;
  38. +#endif
  39. #elif defined(__s390__) && !defined(__s390x__)
  40. const unsigned struct_kernel_stat_sz = 64;
  41. const unsigned struct_kernel_stat64_sz = 104;