time: only use packed struct on x86*
* configure.in: define PACKED_STRUCT_UNALIGNED for x86* * timev.h (struct vtm): use PACKED_STRUCT_UNALIGNED * time.c (struct time_object): ditto [Bug #9558] non-x86 cannot safely access unaligned addresses git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@45165 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fa7b849f94
commit
131e4bec04
@ -1,3 +1,10 @@
|
|||||||
|
Mon Feb 24 20:05:41 2014 Eric Wong <e@80x24.org>
|
||||||
|
|
||||||
|
* configure.in: define PACKED_STRUCT_UNALIGNED for x86*
|
||||||
|
* timev.h (struct vtm): use PACKED_STRUCT_UNALIGNED
|
||||||
|
* time.c (struct time_object): ditto
|
||||||
|
[Bug #9558] non-x86 cannot safely access unaligned addresses
|
||||||
|
|
||||||
Mon Feb 24 18:10:02 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
Mon Feb 24 18:10:02 2014 SHIBATA Hiroshi <shibata.hiroshi@gmail.com>
|
||||||
|
|
||||||
* test/fiddle/test_function.rb: remove unused variables.
|
* test/fiddle/test_function.rb: remove unused variables.
|
||||||
|
@ -1277,8 +1277,12 @@ AC_CACHE_CHECK(packed struct attribute, rb_cv_packed_struct,
|
|||||||
[rb_cv_packed_struct=yes], [rb_cv_packed_struct=no])])
|
[rb_cv_packed_struct=yes], [rb_cv_packed_struct=no])])
|
||||||
if test "$rb_cv_packed_struct" = yes; then
|
if test "$rb_cv_packed_struct" = yes; then
|
||||||
AC_DEFINE_UNQUOTED(PACKED_STRUCT, __attribute__((packed)))
|
AC_DEFINE_UNQUOTED(PACKED_STRUCT, __attribute__((packed)))
|
||||||
|
AS_CASE(["$target_cpu"],
|
||||||
|
[x86*|x?86], [AC_DEFINE_UNQUOTED(PACKED_STRUCT_UNALIGNED, PACKED_STRUCT)],
|
||||||
|
[AC_DEFINE_UNQUOTED(PACKED_STRUCT_UNALIGNED,)])
|
||||||
else
|
else
|
||||||
AC_DEFINE_UNQUOTED(PACKED_STRUCT,)
|
AC_DEFINE_UNQUOTED(PACKED_STRUCT,)
|
||||||
|
AC_DEFINE_UNQUOTED(PACKED_STRUCT_UNALIGNED,)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_DEFUN([RUBY_CHECK_PRINTF_PREFIX], [
|
AC_DEFUN([RUBY_CHECK_PRINTF_PREFIX], [
|
||||||
|
2
time.c
2
time.c
@ -1745,7 +1745,7 @@ struct time_object {
|
|||||||
struct vtm vtm;
|
struct vtm vtm;
|
||||||
uint8_t gmt:3; /* 0:utc 1:localtime 2:fixoff 3:init */
|
uint8_t gmt:3; /* 0:utc 1:localtime 2:fixoff 3:init */
|
||||||
uint8_t tm_got:1;
|
uint8_t tm_got:1;
|
||||||
} PACKED_STRUCT;
|
} PACKED_STRUCT_UNALIGNED;
|
||||||
|
|
||||||
#define GetTimeval(obj, tobj) ((tobj) = get_timeval(obj))
|
#define GetTimeval(obj, tobj) ((tobj) = get_timeval(obj))
|
||||||
#define GetNewTimeval(obj, tobj) ((tobj) = get_new_timeval(obj))
|
#define GetNewTimeval(obj, tobj) ((tobj) = get_new_timeval(obj))
|
||||||
|
2
timev.h
2
timev.h
@ -14,7 +14,7 @@ struct vtm {
|
|||||||
uint8_t sec:6; /* 0..60 */
|
uint8_t sec:6; /* 0..60 */
|
||||||
uint8_t wday:3; /* 0:Sunday, 1:Monday, ..., 6:Saturday 7:init */
|
uint8_t wday:3; /* 0:Sunday, 1:Monday, ..., 6:Saturday 7:init */
|
||||||
uint8_t isdst:2; /* 0:StandardTime 1:DayLightSavingTime 3:init */
|
uint8_t isdst:2; /* 0:StandardTime 1:DayLightSavingTime 3:init */
|
||||||
} PACKED_STRUCT;
|
} PACKED_STRUCT_UNALIGNED;
|
||||||
|
|
||||||
#define TIME_SCALE 1000000000
|
#define TIME_SCALE 1000000000
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user