[dpdk-dev] [dpdk-stable] [PATCH v2 2/5] build: enable large file support on 32-bit

Ferruh Yigit ferruh.yigit at intel.com
Tue Jun 4 16:49:58 CEST 2019


On 5/28/2019 12:07 PM, Bruce Richardson wrote:
> By default on 32-bit systems, file offsets are given as 32-bit values
> which prevents support for large files. While this is unlikely to be
> a problem, enabling large file support globally makes "make" and
> "meson" builds consistent, since meson always enables large file
> support, and without this change, the size of "struct stat" fields
> will be different between the two builds.
> 
> The only location where this appears to be significant is in the
> dpaax common code, where a printf needs to be updated for 32-bit
> builds.
> 
> Signed-off-by: Bruce Richardson <bruce.richardson at intel.com>
> Acked-by: Luca Boccassi <bluca at debian.org>
> ---
>  drivers/common/dpaax/dpaax_iova_table.c | 4 ++--
>  mk/arch/arm/rte.vars.mk                 | 2 +-
>  mk/arch/i686/rte.vars.mk                | 2 +-
>  3 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/common/dpaax/dpaax_iova_table.c b/drivers/common/dpaax/dpaax_iova_table.c
> index 2dd38a9..ae0af09 100644
> --- a/drivers/common/dpaax/dpaax_iova_table.c
> +++ b/drivers/common/dpaax/dpaax_iova_table.c
> @@ -99,7 +99,7 @@ read_memory_node(unsigned int *count)
>  		goto cleanup;
>  	}
>  
> -	DPAAX_DEBUG("Size of device-tree mem node: %lu", statbuf.st_size);
> +	DPAAX_DEBUG("Size of device-tree mem node: %" PRIu64, statbuf.st_size);
>  	if (statbuf.st_size > MEM_NODE_FILE_LEN) {
>  		DPAAX_DEBUG("More memory nodes available than assumed.");
>  		DPAAX_DEBUG("System may not work properly!");
> @@ -118,7 +118,7 @@ read_memory_node(unsigned int *count)
>  	 */
>  	*count = (statbuf.st_size / 16);
>  	if ((*count) <= 0 || (statbuf.st_size % 16 != 0)) {
> -		DPAAX_DEBUG("Invalid memory node values or count. (size=%lu)",
> +		DPAAX_DEBUG("Invalid memory node values or count. (size=%" PRIu64 ")",
>  			    statbuf.st_size);
>  		goto cleanup;
>  	}
> diff --git a/mk/arch/arm/rte.vars.mk b/mk/arch/arm/rte.vars.mk
> index 27b1147..dc8c10a 100644
> --- a/mk/arch/arm/rte.vars.mk
> +++ b/mk/arch/arm/rte.vars.mk
> @@ -4,7 +4,7 @@
>  ARCH  ?= arm
>  CROSS ?=
>  
> -CPU_CFLAGS  ?= -marm -munaligned-access
> +CPU_CFLAGS  ?= -marm -munaligned-access -D_FILE_OFFSET_BITS=64
>  CPU_LDFLAGS ?=
>  CPU_ASFLAGS ?= -felf
>  
> diff --git a/mk/arch/i686/rte.vars.mk b/mk/arch/i686/rte.vars.mk
> index 3f48f67..c867883 100644
> --- a/mk/arch/i686/rte.vars.mk
> +++ b/mk/arch/i686/rte.vars.mk
> @@ -24,7 +24,7 @@ ARCH  ?= i386
>  ARCH_DIR := x86
>  CROSS ?=
>  
> -CPU_CFLAGS  ?= -m32
> +CPU_CFLAGS  ?= -m32 -D_FILE_OFFSET_BITS=64

Previously, 'off_t' was "long int" both for 32-bit or 64-bit, so in the printf
using "%ld" was OK.
But with this change 'off_t' becomes 'uint64_t' and just using '%ld' in the
format will cause error, as it is happening in 'mlx5' [1].

All 'off_t' usage should be checked for this change.


Shahaf, Yongseok,
Can you please send a fix for below build error?


Thanks,
ferruh



[1]
In file included from .../dpdk/i686-native-linuxapp-gcc/include/rte_compat.h:8,
                 from .../dpdk/i686-native-linuxapp-gcc/include/rte_mbuf.h:35,
                 from .../dpdk/drivers/net/mlx5/mlx5_txq.c:24:
.../dpdk/drivers/net/mlx5/mlx5_txq.c: In function ‘mlx5_txq_ibv_new’:
.../dpdk/drivers/net/mlx5/mlx5_defs.h:14:26: error: format ‘%lx’ expects
argument of type ‘long unsigned int’, but argument 5 has type ‘off_t’ {aka ‘long
long int’} [-Werror=format=]
   14 | #define MLX5_DRIVER_NAME "net_mlx5"
      |                          ^~~~~~~~~~
.../dpdk/i686-native-linuxapp-gcc/include/rte_common.h:642:27: note: in
definition of macro ‘RTE_FMT’
  642 | #define RTE_FMT(fmt, ...) fmt "%.0s", __VA_ARGS__ ""
      |                           ^~~
.../dpdk/drivers/net/mlx5/mlx5_utils.h:79:11: note: in expansion of macro
‘MLX5_DRIVER_NAME’
   79 |   RTE_FMT(MLX5_DRIVER_NAME ": " \
      |           ^~~~~~~~~~~~~~~~
.../dpdk/drivers/net/mlx5/mlx5_utils.h:101:2: note: in expansion of macro
‘PMD_DRV_LOG___’
  101 |  PMD_DRV_LOG___(level, __VA_ARGS__)
      |  ^~~~~~~~~~~~~~
.../dpdk/drivers/net/mlx5/mlx5_utils.h:103:2: note: in expansion of macro
‘PMD_DRV_LOG__’
  103 |  PMD_DRV_LOG__(level, s "\n", __VA_ARGS__)
      |  ^~~~~~~~~~~~~
.../dpdk/drivers/net/mlx5/mlx5_utils.h:109:2: note: in expansion of macro
‘PMD_DRV_LOG_’
  109 |  PMD_DRV_LOG_(level, \
      |  ^~~~~~~~~~~~
.../dpdk/drivers/net/mlx5/mlx5_txq.c:569:3: note: in expansion of macro ‘DRV_LOG’
  569 |   DRV_LOG(DEBUG, "port %u: uar_mmap_offset 0x%lx",
      |   ^~~~~~~
.../dpdk/drivers/net/mlx5/mlx5_txq.c:569:48: note: format string is defined here
  569 |   DRV_LOG(DEBUG, "port %u: uar_mmap_offset 0x%lx",
      |                                              ~~^
      |                                                |
      |                                                long unsigned int
      |                                              %llx
cc1: all warnings being treated as errors



More information about the dev mailing list