Hi, Dear Maintainers
I met the following compile failure when I pass "-D_TIME_BITS=64
-D_FILE_OFFSET_BITS=64" to build 32bit dpdk. The key command like:
gcc -m32 ... -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 ... -o
lib/librte_ethdev.a.p/ethdev_ethdev_trace_points.c.o -c
../git/lib/ethdev/ethdev_trace_points.c.
../git/lib/ethdev/ethdev_trace.h: In function
'rte_eth_trace_timesync_write_time':
../git/lib/eal/include/rte_common.h:498:55: error: size of unnamed array is
negative
498 | #define RTE_BUILD_BUG_ON(condition) ((void)sizeof(char[1 -
2*!!(condition)]))
[snip]
RTE_TRACE_POINT(
rte_eth_trace_timesync_write_time,
RTE_TRACE_POINT_ARGS(uint16_t port_id, const struct timespec *time,
int ret),
rte_trace_point_emit_u16(port_id);
rte_trace_point_emit_size_t(time->tv_sec);
rte_trace_point_emit_long(time->tv_nsec);
rte_trace_point_emit_int(ret);
)
[snip]
In order to support Y2038, "-D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64" is
passed, the time->tv_sec is 64bit, but size_t is 32bits, so the error
happend.
if I understand right, maybe it is possible that some codes will assign
time->tv_sec to a size_t variable, so this check is meanningful. Maybe what
need to do
is make sure the whole project supports Y2038, avoid code similar like assign
time->tv_sec to a size_t variable, and then change
rte_trace_point_emit_size_t(time->tv_sec);
to like rte_trace_point_emit_uint64_t(time->tv_sec);
Could you please help to check if my understanding is correct , and could you
share if there is any plan to support Y2038? Great Thanks!
Regards
Changqing