Project

General

Profile

Actions

Bug #17793

closed

`shorten-64-to-32` error for 32-bit Android due to `struct stat` definition

Added by xtkoba (Tee KOBAYASHI) about 3 years ago. Updated about 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:103386]

Description

Here is a failure log for armv7a-android from CI.

This failure is because struct stat for 32-bit Android is defined as follows. Note that the member st_dev is of type unsigned long long (instead of dev_t), and st_mode is of type unsigned int (instead of mode_t).

struct stat {
  unsigned long long st_dev;
  unsigned char __pad0[4];
  unsigned long __st_ino;
  unsigned int st_mode;
  nlink_t st_nlink;
  uid_t st_uid;
  gid_t st_gid;
  unsigned long long st_rdev;
  unsigned char __pad3[4];
  long long st_size;
  unsigned long st_blksize;
  unsigned long long st_blocks;
  struct timespec st_atim;
  struct timespec st_mtim;
  struct timespec st_ctim;
  unsigned long long st_ino;
};

I personally avoid these errors by passing the following two arguments to ./configure. I am not 100% sure this results in no other problems.

rb_cv_dev_t_convertible=ULL
rb_cv_mode_t_convertible=UINT

Files

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0