From: Christian Eggers <[email protected]>

Back ported upstream patch:
https://github.com/richardcochran/linuxptp/commit/7de73fefc378cc42b9ed1115b3afa409d0250a48

Signed-off-by: Christian Eggers <[email protected]>
Signed-off-by: Khem Raj <[email protected]>
(cherry picked from commit 924bd4dd084cb86704c52fecee5bd147186a6efb)
Signed-off-by: Armin Kuster <[email protected]>
---
 .../linuxptp/time_t_maybe_long_long.patch     | 135 ++++++++++++++++++
 .../linuxptp/linuxptp_2.0.bb                  |   1 +
 2 files changed, 136 insertions(+)
 create mode 100644 
meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch

diff --git 
a/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch 
b/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch
new file mode 100644
index 0000000000..af99d2b7f9
--- /dev/null
+++ 
b/meta-oe/recipes-connectivity/linuxptp/linuxptp/time_t_maybe_long_long.patch
@@ -0,0 +1,135 @@
+Fix printf if time_t is long long
+
+On some platforms, time_t has recently switched from "long" to "long
+long" [1]. For these platforms it is necessary to use "%lld" as printf
+format specifier because the ABI differs between "long" and "long long".
+
+I found no way for creating something similar to PRId64 for time_t. No
+idea how to determine whether it's "long" or "long long". So I cast
+everything to "long long" instead.
+
+[1] 
https://git.musl-libc.org/cgit/musl/commit/?id=38143339646a4ccce8afe298c34467767c899f51
+
+Upstream-Status: Accepted [next version is after 2.0]
+Upstream-Patch: 
https://github.com/richardcochran/linuxptp/commit/7de73fefc378cc42b9ed1115b3afa409d0250a48
+
+Signed-off-by: Christian Eggers <[email protected]>
+---
+diff -Naur linuxptp-2.0.org/phc_ctl.c linuxptp-2.0/phc_ctl.c
+--- linuxptp-2.0.org/phc_ctl.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/phc_ctl.c     2020-05-29 21:34:26.166519963 +0200
+@@ -230,8 +230,8 @@
+                       strerror(errno));
+               return -1;
+       } else {
+-              pr_notice("set clock time to %ld.%09ld or %s",
+-                      ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
++              pr_notice("set clock time to %lld.%09ld or %s",
++                      (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+       }
+ 
+       return args_to_eat;
+@@ -248,8 +248,8 @@
+ 
+               return -1;
+       } else {
+-              pr_notice("clock time is %ld.%09lu or %s",
+-                      ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
++              pr_notice("clock time is %lld.%09lu or %s",
++                      (long long)ts.tv_sec, ts.tv_nsec, ctime(&ts.tv_sec));
+       }
+ 
+       /* get operation does not require any arguments */
+diff -Naur linuxptp-2.0.org/print.c linuxptp-2.0/print.c
+--- linuxptp-2.0.org/print.c   2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/print.c       2020-05-29 21:34:26.166519963 +0200
+@@ -73,16 +73,16 @@
+ 
+       if (verbose) {
+               f = level >= LOG_NOTICE ? stdout : stderr;
+-              fprintf(f, "%s[%ld.%03ld]: %s%s%s\n",
++              fprintf(f, "%s[%lld.%03ld]: %s%s%s\n",
+                       progname ? progname : "",
+-                      ts.tv_sec, ts.tv_nsec / 1000000,
++                      (long long)ts.tv_sec, ts.tv_nsec / 1000000,
+                       message_tag ? message_tag : "", message_tag ? " " : "",
+                       buf);
+               fflush(f);
+       }
+       if (use_syslog) {
+-              syslog(level, "[%ld.%03ld] %s%s%s",
+-                     ts.tv_sec, ts.tv_nsec / 1000000,
++              syslog(level, "[%lld.%03ld] %s%s%s",
++                     (long long)ts.tv_sec, ts.tv_nsec / 1000000,
+                      message_tag ? message_tag : "", message_tag ? " " : "",
+                      buf);
+       }
+diff -Naur linuxptp-2.0.org/unicast_service.c linuxptp-2.0/unicast_service.c
+--- linuxptp-2.0.org/unicast_service.c 2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/unicast_service.c     2020-05-29 21:36:23.170497415 +0200
+@@ -209,9 +209,9 @@
+       tmo = now.tv_sec + req->durationField;
+       if (tmo > client->grant_tmo) {
+               client->grant_tmo = tmo;
+-              pr_debug("%s grant of 0x%x extended to %ld",
++              pr_debug("%s grant of 0x%x extended to %lld",
+                        pid2str(&client->portIdentity),
+-                       client->message_types, tmo);
++                       client->message_types, (long long)tmo);
+       }
+ }
+ 
+@@ -226,8 +226,8 @@
+       interval = pqueue_peek(p->unicast_service->queue);
+       if (interval) {
+               tmo.it_value = interval->tmo;
+-              pr_debug("arming timer tmo={%ld,%ld}",
+-                       interval->tmo.tv_sec, interval->tmo.tv_nsec);
++              pr_debug("arming timer tmo={%lld,%ld}",
++                       (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
+       } else {
+               pr_debug("stopping unicast service timer");
+       }
+@@ -499,8 +499,8 @@
+ 
+       while ((interval = pqueue_peek(p->unicast_service->queue)) != NULL) {
+ 
+-              pr_debug("peek i={2^%d} tmo={%ld,%ld}", interval->log_period,
+-                       interval->tmo.tv_sec, interval->tmo.tv_nsec);
++              pr_debug("peek i={2^%d} tmo={%lld,%ld}", interval->log_period,
++                       (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
+ 
+               if (timespec_compare(&now, &interval->tmo) >= 0) {
+                       break;
+@@ -519,8 +519,8 @@
+               }
+ 
+               interval_increment(interval);
+-              pr_debug("next i={2^%d} tmo={%ld,%ld}", interval->log_period,
+-                       interval->tmo.tv_sec, interval->tmo.tv_nsec);
++              pr_debug("next i={2^%d} tmo={%lld,%ld}", interval->log_period,
++                       (long long)interval->tmo.tv_sec, 
interval->tmo.tv_nsec);
+               pqueue_insert(p->unicast_service->queue, interval);
+       }
+ 
+diff -Naur linuxptp-2.0.org/unicast_client.c linuxptp-2.0/unicast_client.c
+--- linuxptp-2.0.org/unicast_client.c  2018-08-12 23:08:43.000000000 +0200
++++ linuxptp-2.0/unicast_client.c      2020-06-02 11:13:06.922997844 +0200
+@@ -216,7 +216,7 @@
+                                      long duration)
+ {
+       struct timespec now;
+-      long tmo;
++      time_t tmo;
+ 
+       if (clock_gettime(CLOCK_MONOTONIC, &now)) {
+               pr_err("clock_gettime failed: %m");
+@@ -226,7 +226,7 @@
+       tmo = now.tv_sec + duration;
+       if (!master->renewal_tmo || tmo < master->renewal_tmo) {
+               master->renewal_tmo = tmo;
+-              pr_debug("port %d: renewal timeout at %ld", portnum(p), tmo);
++              pr_debug("port %d: renewal timeout at %lld", portnum(p), (long 
long)tmo);
+       }
+ }
+ 
diff --git a/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb 
b/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb
index eb262d36b2..930c6673dc 100644
--- a/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb
+++ b/meta-oe/recipes-connectivity/linuxptp/linuxptp_2.0.bb
@@ -5,6 +5,7 @@ LIC_FILES_CHKSUM = 
"file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
 SRC_URI = 
"http://sourceforge.net/projects/linuxptp/files/v${PV}/linuxptp-${PV}.tgz \
            file://build-Allow-CC-and-prefix-to-be-overriden.patch \
            file://no-incdefs-using-host-headers.patch \
+           file://time_t_maybe_long_long.patch \
            "
 
 SRC_URI[md5sum] = "d8bb7374943bb747db7786ac26f17f11"
-- 
2.17.1

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#85527): 
https://lists.openembedded.org/g/openembedded-devel/message/85527
Mute This Topic: https://lists.openembedded.org/mt/75225774/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub  
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to