AR# 72561

2019.1 Zynq UltraScale+ MPSoC: Why does the OpenAMP libmetal C++ application not build?

Description

In the 2019.1 OpenAMP release, the libmetal C++ application does not build for Zynq UltraScale+ MPSoC or RFSoC architecture, and is returning the following errors:

DEBUG: Executing shell function do_compile
NOTE: make -j 12
aarch64-xilinx-linux-g++  -fstack-protector-strong  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot  -O2 -pipe -g -feliminate-unused-debug-types -fdebug-prefix-map=/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0=/usr/src/debug/testapp/1.0-r0 -fdebug-prefix-map=/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot= -fdebug-prefix-map=/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot-native=  -fvisibility-inlines-hidden   -c -o testapp.o testapp.cpp
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:42:5: error: 'memory_order' has not been declared
     memory_order order,
     ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:47:6: error: 'memory_order' has not been declared
      memory_order order,
      ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:52:5: error: 'memory_order' has not been declared
     memory_order order,
     ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:57:6: error: 'memory_order' has not been declared
      memory_order order,
      ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:62:6: error: 'memory_order' has not been declared
      memory_order order,
      ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:235:8: error: 'memory_order' has not been declared
        memory_order order, int width)
        ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h: In function 'uint64_t metal_io_read(metal_io_region*, long unsigned int, int, int)':
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:241:25: error: 'atomic_uchar' was not declared in this scope
  else if (ptr && sizeof(atomic_uchar) == width)
                         ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:241:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:877:34: note:   'std::atomic_uchar'
   typedef atomic<unsigned char>  atomic_uchar;
                                  ^~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:242:46: error: expected primary-expression before ')' token
   return atomic_load_explicit((atomic_uchar *)ptr, order);
                                              ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:242:10: error: 'atomic_load_explicit' was not declared in this scope
   return atomic_load_explicit((atomic_uchar *)ptr, order);
          ^~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:242:10: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1089:5: note:   'std::atomic_load_explicit'
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:243:25: error: 'atomic_ushort' was not declared in this scope
  else if (ptr && sizeof(atomic_ushort) == width)
                         ^~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:243:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:883:34: note:   'std::atomic_ushort'
   typedef atomic<unsigned short> atomic_ushort;
                                  ^~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:244:47: error: expected primary-expression before ')' token
   return atomic_load_explicit((atomic_ushort *)ptr, order);
                                               ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:244:10: error: 'atomic_load_explicit' was not declared in this scope
   return atomic_load_explicit((atomic_ushort *)ptr, order);
          ^~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:244:10: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1089:5: note:   'std::atomic_load_explicit'
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:245:25: error: 'atomic_uint' was not declared in this scope
  else if (ptr && sizeof(atomic_uint) == width)
                         ^~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:245:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:889:33: note:   'std::atomic_uint'
   typedef atomic<unsigned int>  atomic_uint;
                                 ^~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:246:45: error: expected primary-expression before ')' token
   return atomic_load_explicit((atomic_uint *)ptr, order);
                                             ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:246:10: error: 'atomic_load_explicit' was not declared in this scope
   return atomic_load_explicit((atomic_uint *)ptr, order);
          ^~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:246:10: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1089:5: note:   'std::atomic_load_explicit'
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:247:25: error: 'atomic_ulong' was not declared in this scope
  else if (ptr && sizeof(atomic_ulong) == width)
                         ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:247:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:895:34: note:   'std::atomic_ulong'
   typedef atomic<unsigned long>  atomic_ulong;
                                  ^~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:248:46: error: expected primary-expression before ')' token
   return atomic_load_explicit((atomic_ulong *)ptr, order);
                                              ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:248:10: error: 'atomic_load_explicit' was not declared in this scope
   return atomic_load_explicit((atomic_ulong *)ptr, order);
          ^~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:248:10: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1089:5: note:   'std::atomic_load_explicit'
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:250:25: error: 'atomic_ullong' was not declared in this scope
  else if (ptr && sizeof(atomic_ullong) == width)
                         ^~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:250:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:901:38: note:   'std::atomic_ullong'
   typedef atomic<unsigned long long> atomic_ullong;
                                      ^~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:251:47: error: expected primary-expression before ')' token
   return atomic_load_explicit((atomic_ullong *)ptr, order);
                                               ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:251:10: error: 'atomic_load_explicit' was not declared in this scope
   return atomic_load_explicit((atomic_ullong *)ptr, order);
          ^~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:251:10: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1089:5: note:   'std::atomic_load_explicit'
     atomic_load_explicit(const volatile atomic<_ITp>* __a,
     ^~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h: At global scope:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:269:25: error: 'memory_order' has not been declared
         uint64_t value, memory_order order, int width)
                         ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h: In function 'void metal_io_write(metal_io_region*, long unsigned int, uint64_t, int, int)':
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:274:25: error: 'atomic_uchar' was not declared in this scope
  else if (ptr && sizeof(atomic_uchar) == width)
                         ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:274:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:877:34: note:   'std::atomic_uchar'
   typedef atomic<unsigned char>  atomic_uchar;
                                  ^~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:275:40: error: expected primary-expression before ')' token
   atomic_store_explicit((atomic_uchar *)ptr, value, order);
                                        ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:275:3: error: 'atomic_store_explicit' was not declared in this scope
   atomic_store_explicit((atomic_uchar *)ptr, value, order);
   ^~~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:275:3: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1078:5: note:   'std::atomic_store_explicit'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^~~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:276:25: error: 'atomic_ushort' was not declared in this scope
  else if (ptr && sizeof(atomic_ushort) == width)
                         ^~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:276:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:883:34: note:   'std::atomic_ushort'
   typedef atomic<unsigned short> atomic_ushort;
                                  ^~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:277:41: error: expected primary-expression before ')' token
   atomic_store_explicit((atomic_ushort *)ptr, value, order);
                                         ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:277:3: error: 'atomic_store_explicit' was not declared in this scope
   atomic_store_explicit((atomic_ushort *)ptr, value, order);
   ^~~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:277:3: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1078:5: note:   'std::atomic_store_explicit'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^~~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:278:25: error: 'atomic_uint' was not declared in this scope
  else if (ptr && sizeof(atomic_uint) == width)
                         ^~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:278:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:889:33: note:   'std::atomic_uint'
   typedef atomic<unsigned int>  atomic_uint;
                                 ^~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:279:39: error: expected primary-expression before ')' token
   atomic_store_explicit((atomic_uint *)ptr, value, order);
                                       ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:279:3: error: 'atomic_store_explicit' was not declared in this scope
   atomic_store_explicit((atomic_uint *)ptr, value, order);
   ^~~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:279:3: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1078:5: note:   'std::atomic_store_explicit'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^~~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:280:25: error: 'atomic_ulong' was not declared in this scope
  else if (ptr && sizeof(atomic_ulong) == width)
                         ^~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:280:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:895:34: note:   'std::atomic_ulong'
   typedef atomic<unsigned long>  atomic_ulong;
                                  ^~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:281:40: error: expected primary-expression before ')' token
   atomic_store_explicit((atomic_ulong *)ptr, value, order);
                                        ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:281:3: error: 'atomic_store_explicit' was not declared in this scope
   atomic_store_explicit((atomic_ulong *)ptr, value, order);
   ^~~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:281:3: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1078:5: note:   'std::atomic_store_explicit'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^~~~~~~~~~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:283:25: error: 'atomic_ullong' was not declared in this scope
  else if (ptr && sizeof(atomic_ullong) == width)
                         ^~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:283:25: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:901:38: note:   'std::atomic_ullong'
   typedef atomic<unsigned long long> atomic_ullong;
                                      ^~~~~~~~~~~~~
In file included from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:284:41: error: expected primary-expression before ')' token
   atomic_store_explicit((atomic_ullong *)ptr, value, order);
                                         ^
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:284:3: error: 'atomic_store_explicit' was not declared in this scope
   atomic_store_explicit((atomic_ullong *)ptr, value, order);
   ^~~~~~~~~~~~~~~~~~~~~
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:284:3: note: suggested alternative:
In file included from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/atomic.h:21,
                 from /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/metal/io.h:21,
                 from testapp.cpp:33:
/tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/recipe-sysroot/usr/include/c++/8.2.0/atomic:1078:5: note:   'std::atomic_store_explicit'
     atomic_store_explicit(volatile atomic<_ITp>* __a, _ITp __i,
     ^~~~~~~~~~~~~~~~~~~~~
make: *** [<builtin>: testapp.o] Error 1
ERROR: oe_runmake failed
WARNING: /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/temp/run.do_compile.14770:1 exit 1 from 'exit 1'
ERROR: Function failed: do_compile (log file is located at /tmp/sandeepg/plnx/2019.1/xilinx-zcu111-2019.1/work/aarch64-xilinx-linux/testapp/1.0-r0/temp/log.do_compile.14770)

Solution

This is a known issue in the 2019.1 OpenAMP release and will be fixed in the 2019.2 release.

To work around this issue, apply the attached patch to libmetal source using the below steps.

1) Create the libmetal directory in the meta-user layer as follows:

 

mkdir -p <plnx-proj-root>/project-spec/meta-user/recipes-openamp/libmetal/files

 

2) Copy the attached patch to the <plnx-proj-root>/project-spec/meta-user/recipes-openamp/libmetal/files directory:

cp 0001-lib-atomic-revert-c-compilation-issue.patch <plnx-proj-root>/project-spec/meta-user/recipes-openamp/libmetal/files

3) Create a libmetal_git.bbappend file and bitbake recipe variables to apply the patch:

vim <plnx-proj-root>/project-spec/meta-user/recipes-openamp/libmetal/libmetal_git.bbappend
 
# libmetal_git.bbappend content
SRC_URI_append = " \
file://0001-lib-atomic-revert-c-compilation-issue.patch \
"
 
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"

 

4) Clean the libmetal build artifacts and rebuild the libmetal recipes:

petalinux-build -c libmetal -x cleansstate
petalinux-build -c libmetal

Attachments

Associated Attachments

Name File Size File Type
0001-lib-atomic-revert-c-compilation-issue.patch 815 Bytes PATCH
AR# 72561
Date 07/22/2019
Status Active
Type General Article
Devices
Tools
Boards & Kits