[dpdk-dev] pmdinfogen issues: cross compilation for ARM fails with older host compiler
Jerin Jacob
jerin.jacob at caviumnetworks.com
Sun Nov 13 21:59:24 CET 2016
On Fri, Nov 11, 2016 at 10:34:39AM +0000, Hemant Agrawal wrote:
> Hi Neil,
> Pmdinfogen compiles with host compiler. It usages rte_byteorder.h of the target platform.
> However, if the host compiler is older than 4.8, it will be an issue during cross compilation for some platforms.
> e.g. if we are compiling on x86 host for ARM, x86 host compiler will not understand the arm asm instructions.
>
> /* fix missing __builtin_bswap16 for gcc older then 4.8 */
> #if !(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8))
> static inline uint16_t rte_arch_bswap16(uint16_t _x)
> {
> register uint16_t x = _x;
> asm volatile ("rev16 %0,%1"
> : "=r" (x)
> : "r" (x)
> );
> return x;
> }
> #endif
>
> One easy solution is that we add compiler platform check in this code section of rte_byteorder.h
> e.g
> #if !(defined __arm__ || defined __aarch64__)
> static inline uint16_t rte_arch_bswap16(uint16_t _x)
> {
> return (_x >> 8) | ((_x << 8) & 0xff00);
> }
> #else ….
>
> Is there a better way to fix it?
IMO, It is a HOST build infrastructure issue. If a host app is using the
dpdk service then it should compile and link against HOST target(in this
specific case, build/x86_64-native-linuxapp-gcc). I think, introducing the
HOSTTARGET kind of scheme is a clean solution.
/Jerin
More information about the dev
mailing list