Commit 451f309
authored
build with 64-bit time_t on 32-bit platforms (swiftlang#82595)
It is good practice to build with 64-bit `time_t`/timeval on 32-bit
platforms to avoid the Y2038 issue. This is the default when building on
Yocto for armv7, for example. Unfortunately `suseconds_t` is not an
alias to a type of the correct width (unlike time_t).
Question: on release/6.1, tv_usec is assumed to be `Int32`, but on main
it is `Int`, but appears to be the same commit hash?
#### git blame main stdlib/public/Platform/Platform.swift
```
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 350) @available(SwiftStdlib 5.7, *)
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 351) extension timeval {
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 352) @available(SwiftStdlib 5.7, *)
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 353) public init(_ duration: Duration) {
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 354) let comps = duration.components
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 355) // Linux platforms define timeval as Int/Int
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 356) self.init(tv_sec: Int(comps.seconds),
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 357) tv_usec: Int(comps.attoseconds / 1_000_000_000_000))
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 358) }
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 359) }
```
#### git blame release/6.1 stdlib/public/Platform/Platform.swift
```
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 455) @available(SwiftStdlib 5.7, *)
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 456) extension timeval {
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 457) @available(SwiftStdlib 5.7, *)
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 458) public init(_ duration: Duration) {
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 459) let comps = duration.components
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 460) #if os(Linux)
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 461) // Linux platforms define timeval as Int/Int
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 462) self.init(tv_sec: Int(comps.seconds),
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 463) tv_usec: Int(comps.attoseconds / 1_000_000_000_000))
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 464) #else
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 465) // Darwin platforms define timeval as Int/Int32
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 466) self.init(tv_sec: Int(comps.seconds),
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 467) tv_usec: Int32(comps.attoseconds / 1_000_000_000_000))
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 468) #endif
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 469) }
e675b31 (Philippe Hausler 2022-02-17 09:32:46 -0800 470) }
```1 parent bec4ebd commit 451f309
1 file changed
+14
-4
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
334 | 334 | | |
335 | 335 | | |
336 | 336 | | |
337 | | - | |
| 337 | + | |
338 | 338 | | |
339 | 339 | | |
340 | 340 | | |
| |||
352 | 352 | | |
353 | 353 | | |
354 | 354 | | |
355 | | - | |
356 | | - | |
357 | | - | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
358 | 368 | | |
359 | 369 | | |
360 | 370 | | |
| |||
0 commit comments