Skip to content

Cannot build daemon_cl on aPTP branch on Raspberry Pi #928

@adam-woolhether

Description

@adam-woolhether

Using the ArtAndLogic-aPTP-changes branch.
I've run the initial steps:

git submodule init
git submodule update
mkdir tmp
cd tmp
cmake .. -G "Unix Makefiles"
make

Also, per READMEaPTP.rst:

ARCH=RPI make clean all

This doesn't build the desired gptp daemon.

I tried:

cd /daemons/gptp/linux/build
ARCH=RPI make clean all

Errors follow, here's build output:

root@raspberrypi:~/OpenAvnu/daemons/gptp/linux/build# ARCH=RPI make clean all
rm -f *~ obj/*.o  obj/daemon_cl
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ptp_message.cpp -o obj/ptp_message.o
../../common/ptp_message.cpp: In function 'std::shared_ptr<PTPMessageCommon> buildPTPMessage(char*, size_t, LinkLayerAddress*, EtherPort*, const Timestamp&)':
../../common/ptp_message.cpp:600:31: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class FollowUpTLV' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  600 |     sizeof(followup_msg->tlv) );
      |                               ^
In file included from ../../common/common_port.hpp:49,
                 from ../../common/avbts_clock.hpp:39,
                 from ../../common/ptp_message.cpp:35:
../../common/avbts_message.hpp:844:7: note: 'class FollowUpTLV' declared here
  844 | class FollowUpTLV {
      |       ^~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ap_message.cpp -o obj/ap_message.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/avbts_osnet.cpp -o obj/avbts_osnet.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ether_port.cpp -o obj/ether_port.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/common_port.cpp -o obj/common_port.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/common_tstamper.cpp -o obj/common_tstamper.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ieee1588clock.cpp -o obj/ieee1588clock.o
../../common/ieee1588clock.cpp: In constructor 'IEEE1588Clock::IEEE1588Clock(bool, bool, uint8_t, uint8_t, uint8_t, OSTimerQueueFactory*, OS_IPC*, OSLockFactory*)':
../../common/ieee1588clock.cpp:130:64: warning: 'void* memset(void*, int, size_t)' writing to an object of type 'class ClockIdentity' with no trivial copy-assignment [-Wclass-memaccess]
  130 |   memset( &LastEBestIdentity, 0xFF, sizeof( LastEBestIdentity ));
      |                                                                ^
In file included from ../../common/ieee1588clock.cpp:34:
../../common/ieee1588.hpp:169:7: note: 'class ClockIdentity' declared here
  169 | class ClockIdentity {
      |       ^~~~~~~~~~~~~
../../common/ieee1588clock.cpp: In member function 'bool IEEE1588Clock::restoreSerializedState(void*, off_t*)':
../../common/ieee1588clock.cpp:227:64: warning: 'void* memcpy(void*, const void*, size_t)' writing to an object of type 'class ClockIdentity' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  227 |    memcpy( &LastEBestIdentity, buf, sizeof( LastEBestIdentity ));
      |                                                                ^
In file included from ../../common/ieee1588clock.cpp:34:
../../common/ieee1588.hpp:169:7: note: 'class ClockIdentity' declared here
  169 | class ClockIdentity {
      |       ^~~~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_common.cpp -o obj/linux_hal_common.o
../src/linux_hal_common.cpp: In member function 'bool LinuxLock::initialize(OSLockType)':
../src/linux_hal_common.cpp:772:10: warning: enum constant in boolean context [-Wint-in-bool-context]
  772 |   return oslock_fail;
      |          ^~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_persist_file.cpp -o obj/linux_hal_persist_file.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/gptp_log.cpp -o obj/gptp_log.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../src/platform.cpp -o obj/platform.o
cc -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -c ../../common/ini.c -o obj/ini.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../../common/gptp_cfg.cpp -o obj/gptp_cfg.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -DRPI -DAPTP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_generic.cpp -o obj/linux_hal_generic.o
In file included from /usr/include/aarch64-linux-gnu/sys/socket.h:33,
                 from /usr/include/net/if.h:26,
                 from ../../common/macaddress.hpp:10,
                 from ../../common/ieee1588.hpp:54,
                 from ../../common/avbts_osnet.hpp:42,
                 from ../src/linux_hal_common.hpp:39,
                 from ../src/linux_hal_generic.hpp:37,
                 from ../src/linux_hal_generic.cpp:34:
/usr/include/aarch64-linux-gnu/bits/socket.h: In member function 'net_result LinuxNetworkInterface::receive(LinkLayerAddress*, uint8_t*, size_t&, uint16_t, Timestamp&)':
/usr/include/aarch64-linux-gnu/bits/socket.h:285:33: error: flexible array member 'cmsghdr::__cmsg_data' not at end of 'struct LinuxNetworkInterface::receive(LinkLayerAddress*, uint8_t*, size_t&, uint16_t, Timestamp&)::<unnamed>'
  285 |     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
      |                                 ^~~~~~~~~~~
../src/linux_hal_generic.cpp:110:8: note: next member 'char LinuxNetworkInterface::receive(LinkLayerAddress*, uint8_t*, size_t&, uint16_t, Timestamp&)::<unnamed struct>::control [256]' declared here
  110 |   char control[256];
      |        ^~~~~~~
../src/linux_hal_generic.cpp:108:9: note: in the definition of 'struct LinuxNetworkInterface::receive(LinkLayerAddress*, uint8_t*, size_t&, uint16_t, Timestamp&)::<unnamed>'
  108 |  struct {
      |         ^
In file included from /usr/include/aarch64-linux-gnu/sys/socket.h:33,
                 from /usr/include/net/if.h:26,
                 from ../../common/macaddress.hpp:10,
                 from ../../common/ieee1588.hpp:54,
                 from ../../common/avbts_osnet.hpp:42,
                 from ../src/linux_hal_common.hpp:39,
                 from ../src/linux_hal_generic.hpp:37,
                 from ../src/linux_hal_generic.cpp:34:
/usr/include/aarch64-linux-gnu/bits/socket.h: In member function 'virtual int LinuxTimestamperGeneric::HWTimestamper_txtimestamp(std::shared_ptr<PortIdentity>, PTPMessageId, Timestamp&, unsigned int&, bool)':
/usr/include/aarch64-linux-gnu/bits/socket.h:285:33: error: flexible array member 'cmsghdr::__cmsg_data' not at end of 'struct LinuxTimestamperGeneric::HWTimestamper_txtimestamp(std::shared_ptr<PortIdentity>, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed>'
  285 |     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
      |                                 ^~~~~~~~~~~
../src/linux_hal_generic.cpp:531:8: note: next member 'char LinuxTimestamperGeneric::HWTimestamper_txtimestamp(std::shared_ptr<PortIdentity>, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed struct>::control [256]' declared here
  531 |   char control[256];
      |        ^~~~~~~
../src/linux_hal_generic.cpp:529:9: note: in the definition of 'struct LinuxTimestamperGeneric::HWTimestamper_txtimestamp(std::shared_ptr<PortIdentity>, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed>'
  529 |  struct {
      |         ^
../src/linux_hal_generic.cpp: In member function 'bool LinuxTimestamperGeneric::Adjust(void*) const':
../src/linux_hal_generic.cpp:435:33: warning: '%06ld' directive output may be truncated writing between 6 and 20 bytes into a region of size between 0 and 63 [-Wformat-truncation=]
  435 |   snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
      |                                 ^~~~~
../src/linux_hal_generic.cpp:435:11: note: 'snprintf' output between 8 and 85 bytes into a destination of size 64
  435 |   snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
      |   ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../src/linux_hal_generic.cpp: In member function 'void LinuxTimestamperGeneric::logCurrentTime(const char*)':
../src/linux_hal_generic.cpp:453:32: warning: '%06ld' directive output may be truncated writing between 6 and 20 bytes into a region of size between 0 and 63 [-Wformat-truncation=]
  453 |  snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
      |                                ^~~~~
../src/linux_hal_generic.cpp:453:10: note: 'snprintf' output between 8 and 85 bytes into a destination of size 64
  453 |  snprintf(buf, sizeof buf, "%s.%06ld", tmbuf, tv.tv_usec);
      |  ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:165: obj/linux_hal_generic.o] Error 1

Trying to build on a non RPI with make clean all results in similar errors:

root@UCK-Home:~/OpenAvnu/daemons/gptp/linux/build# make clean all
rm -f *~ obj/*.o  obj/daemon_cl
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ptp_message.cpp -o obj/ptp_message.o
../../common/ptp_message.cpp: In function ‘PTPMessageCommon* buildPTPMessage(char*, int, LinkLayerAddress*, EtherPort*)’:
../../common/ptp_message.cpp:233:31: warning: ‘void* memcpy(void*, const void*, size_t)’ writing to an object of type ‘class FollowUpTLV’ with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess]
  233 |     sizeof(followup_msg->tlv) );
      |                               ^
In file included from ../../common/common_port.hpp:38,
                 from ../../common/avbts_clock.hpp:39,
                 from ../../common/ptp_message.cpp:35:
../../common/avbts_message.hpp:732:7: note: ‘class FollowUpTLV’ declared here
  732 | class FollowUpTLV {
      |       ^~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ap_message.cpp -o obj/ap_message.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/avbts_osnet.cpp -o obj/avbts_osnet.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ether_port.cpp -o obj/ether_port.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/common_port.cpp -o obj/common_port.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/ieee1588clock.cpp -o obj/ieee1588clock.o
../../common/ieee1588clock.cpp: In constructor ‘IEEE1588Clock::IEEE1588Clock(bool, bool, uint8_t, OSTimerQueueFactory*, OS_IPC*, OSLockFactory*)’:
../../common/ieee1588clock.cpp:112:64: warning: ‘void* memset(void*, int, size_t)’ writing to an object of non-trivial type ‘class ClockIdentity’; use assignment instead [-Wclass-memaccess]
  112 |   memset( &LastEBestIdentity, 0xFF, sizeof( LastEBestIdentity ));
      |                                                                ^
In file included from ../../common/ieee1588clock.cpp:34:
../../common/ieee1588.hpp:125:7: note: ‘class ClockIdentity’ declared here
  125 | class ClockIdentity {
      |       ^~~~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_common.cpp -o obj/linux_hal_common.o
../src/linux_hal_common.cpp: In member function ‘bool LinuxLock::initialize(OSLockType)’:
../src/linux_hal_common.cpp:707:10: warning: enum constant in boolean context [-Wint-in-bool-context]
  707 |   return oslock_fail;
      |          ^~~~~~~~~~~
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_persist_file.cpp -o obj/linux_hal_persist_file.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/gptp_log.cpp -o obj/gptp_log.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../src/platform.cpp -o obj/platform.o
cc -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -c ../../common/ini.c -o obj/ini.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../../common/gptp_cfg.cpp -o obj/gptp_cfg.o
g++ -Wall -g -I. -I../../common -I../src -I/root/header/include/ -DPTP_HW_CROSSTSTAMP -std=c++0x -Wnon-virtual-dtor  -c ../src/linux_hal_generic.cpp -o obj/linux_hal_generic.o
In file included from /usr/include/aarch64-linux-gnu/sys/socket.h:33,
                 from ../src/linux_hal_generic.cpp:37:
/usr/include/aarch64-linux-gnu/bits/socket.h: In member function ‘virtual net_result LinuxNetworkInterface::nrecv(LinkLayerAddress*, uint8_t*, size_t&)’:
/usr/include/aarch64-linux-gnu/bits/socket.h:285:33: error: flexible array member ‘cmsghdr::__cmsg_data’ not at end of ‘struct LinuxNetworkInterface::nrecv(LinkLayerAddress*, uint8_t*, size_t&)::<unnamed>’
  285 |     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
      |                                 ^~~~~~~~~~~
../src/linux_hal_generic.cpp:63:8: note: next member ‘char LinuxNetworkInterface::nrecv(LinkLayerAddress*, uint8_t*, size_t&)::<unnamed struct>::control [256]’ declared here
   63 |   char control[256];
      |        ^~~~~~~
../src/linux_hal_generic.cpp:61:9: note: in the definition of ‘struct LinuxNetworkInterface::nrecv(LinkLayerAddress*, uint8_t*, size_t&)::<unnamed>’
   61 |  struct {
      |         ^
In file included from /usr/include/aarch64-linux-gnu/sys/socket.h:33,
                 from ../src/linux_hal_generic.cpp:37:
/usr/include/aarch64-linux-gnu/bits/socket.h: In member function ‘virtual int LinuxTimestamperGeneric::HWTimestamper_txtimestamp(PortIdentity*, PTPMessageId, Timestamp&, unsigned int&, bool)’:
/usr/include/aarch64-linux-gnu/bits/socket.h:285:33: error: flexible array member ‘cmsghdr::__cmsg_data’ not at end of ‘struct LinuxTimestamperGeneric::HWTimestamper_txtimestamp(PortIdentity*, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed>’
  285 |     __extension__ unsigned char __cmsg_data __flexarr; /* Ancillary data.  */
      |                                 ^~~~~~~~~~~
../src/linux_hal_generic.cpp:290:8: note: next member ‘char LinuxTimestamperGeneric::HWTimestamper_txtimestamp(PortIdentity*, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed struct>::control [256]’ declared here
  290 |   char control[256];
      |        ^~~~~~~
../src/linux_hal_generic.cpp:288:9: note: in the definition of ‘struct LinuxTimestamperGeneric::HWTimestamper_txtimestamp(PortIdentity*, PTPMessageId, Timestamp&, unsigned int&, bool)::<unnamed>’
  288 |  struct {
      |         ^
make: *** [Makefile:150: obj/linux_hal_generic.o] Error 1

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions