Skip to content

Commit f678d21

Browse files
committed
compiler-rt: Fix stat struct's size for O32 ABI
stat struct size differs on glibc based on ABI choices e.g. 64bit off_t and/or 64bit time_t will make this size different. Therefore separate out the O32 case out, makes it more readable. Upstream-Status: Pending Signed-off-by: Khem Raj <[email protected]>
1 parent 0bcc57c commit f678d21

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,18 @@ const unsigned struct_kernel_stat64_sz = 104;
9898
const unsigned struct_kernel_stat_sz = 144;
9999
const unsigned struct_kernel_stat64_sz = 104;
100100
#elif defined(__mips__)
101+
#if defined(__mips_o32) // O32 ABI
102+
#if _TIME_BITS == 64
103+
const unsigned struct_kernel_stat_sz = 112;
104+
const unsigned struct_kernel_stat64_sz = 112;
105+
#elif _FILE_OFFSET_BITS == 64
106+
const unsigned struct_kernel_stat_sz = 160;
107+
const unsigned struct_kernel_stat64_sz = 160;
108+
#else
109+
const unsigned struct_kernel_stat_sz = 144;
110+
const unsigned struct_kernel_stat64_sz = 160;
111+
#endif
112+
#else // __mips_o32
101113
const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
102114
? FIRST_32_SECOND_64(104, 128)
103115
# if defined(_ABIN32) && _MIPS_SIM == _ABIN32
@@ -106,6 +118,7 @@ const unsigned struct_kernel_stat_sz = SANITIZER_ANDROID
106118
: FIRST_32_SECOND_64(160, 216);
107119
# endif
108120
const unsigned struct_kernel_stat64_sz = 104;
121+
#endif
109122
#elif defined(__s390__) && !defined(__s390x__)
110123
const unsigned struct_kernel_stat_sz = 64;
111124
const unsigned struct_kernel_stat64_sz = 104;

0 commit comments

Comments
 (0)