[ https://issues.apache.org/jira/browse/TS-1586?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Galić updated TS-1586: --------------------------- Attachment: swap_restrict.patch Moving restrict to where where it belongs, gets us a little bit further in the plan, and leads us to a different set of failures! {noformat} CXX logging.lo CXX message.lo In file included from lib/spdy/message.cc:19: In file included from lib/spdy/spdy.h:24: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/stdexcept:39: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/string:41: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/char_traits.h:40: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_algobase.h:67: /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_iterator_base_funcs.h:174:49: error: no type named 'difference_type' in 'std::iterator_traits<const unsigned char *restrict>' typename iterator_traits<_InputIterator>::difference_type __d = __n; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~ lib/spdy/message.cc:75:10: note: in instantiation of function template specialization 'std::advance<const unsigned char *restrict, unsigned long>' requested here std::advance(ptr, sizeof(val)); ^ lib/spdy/message.cc:93:18: note: in instantiation of function template specialization 'extract<unsigned int>' requested here return ntohl(extract<uint32_t>(ptr)) & 0x7fffffffu; ^ /usr/include/netinet/in.h:391:33: note: expanded from macro 'ntohl' # define ntohl(x) __bswap_32 (x) ^ /usr/include/x86_64-linux-gnu/bits/byteswap.h:71:44: note: expanded from macro '__bswap_32' ({ register unsigned int __v, __x = (x); \ ^ In file included from lib/spdy/message.cc:19: In file included from lib/spdy/spdy.h:24: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/stdexcept:39: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/string:41: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/char_traits.h:40: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_algobase.h:67: /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_iterator_base_funcs.h:174:49: error: no type named 'difference_type' in 'std::iterator_traits<unsigned char *restrict>' typename iterator_traits<_InputIterator>::difference_type __d = __n; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~ lib/spdy/message.cc:87:10: note: in instantiation of function template specialization 'std::advance<unsigned char *restrict, unsigned long>' requested here std::advance(ptr, sizeof(val)); ^ lib/spdy/message.cc:99:5: note: in instantiation of function template specialization 'insert<unsigned int>' requested here insert<uint32_t>(htonl(stream_id & 0x7fffffffu), ptr); ^ In file included from lib/spdy/message.cc:19: In file included from lib/spdy/spdy.h:24: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/stdexcept:39: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/string:41: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/char_traits.h:40: In file included from /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_algobase.h:67: /usr/lib/gcc/x86_64-linux-gnu/4.7/../../../../include/c++/4.7/bits/stl_iterator_base_funcs.h:174:49: error: no type named 'difference_type' in 'std::iterator_traits<const unsigned char *restrict>' typename iterator_traits<_InputIterator>::difference_type __d = __n; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~ lib/spdy/message.cc:387:14: note: in instantiation of function template specialization 'std::advance<const unsigned char *restrict, int>' requested here std::advance(ptr, nbytes); ^ 3 errors generated. make: *** [message.lo] Error 1 {noformat} unless I'm mistaken this means that we're instantiating the templates not correct (enough) > spdy plugin doesn't build under latest trunk > -------------------------------------------- > > Key: TS-1586 > URL: https://issues.apache.org/jira/browse/TS-1586 > Project: Traffic Server > Issue Type: Bug > Components: Build, Plugins > Affects Versions: 3.3.1 > Environment: llvm/clang from trunk (on Linux, haven't tested on other > platforms yet) > Reporter: Igor Galić > Assignee: Igor Galić > Fix For: 3.3.2 > > Attachments: restrict.patch, swap_restrict.patch > > > {noformat} > Making all in spdy > gmake[3]: Entering directory > `/home/igalic/src/asf/trafficserver/CLANG/plugins/experimental/spdy' > /bin/sh ../../../libtool --tag=CXX --mode=compile clang++ -DHAVE_CONFIG_H > -I. -I../../../../plugins/experimental/spdy -I../../../lib/ts > -I../../../../plugins/experimental/spdy/lib -I../../../proxy/api > -D__STDC_FORMAT_MACROS=1 -D_LARGEFILE64_SOURCE=1 -D_COMPILE64BIT_SOURCE=1 > -D_GNU_SOURCE -D_REENTRANT -Dlinux -DDEBUG -D_DEBUG -std=c++11 -ggdb3 > -Werror -Qunused-arguments -Wno-invalid-offsetof -MT message.lo -MD -MP -MF > .deps/message.Tpo -c -o message.lo `test -f 'lib/spdy/message.cc' || echo > '../../../../plugins/experimental/spdy/'`lib/spdy/message.cc > libtool: compile: clang++ -DHAVE_CONFIG_H -I. > -I../../../../plugins/experimental/spdy -I../../../lib/ts > -I../../../../plugins/experimental/spdy/lib -I../../../proxy/api > -D__STDC_FORMAT_MACROS=1 -D_LARGEFILE64_SOURCE=1 -D_COMPILE64BIT_SOURCE=1 > -D_GNU_SOURCE -D_REENTRANT -Dlinux -DDEBUG -D_DEBUG -std=c++11 -ggdb3 -Werror > -Qunused-arguments -Wno-invalid-offsetof -MT message.lo -MD -MP -MF > .deps/message.Tpo -c > ../../../../plugins/experimental/spdy/lib/spdy/message.cc -fPIC -DPIC -o > .libs/message.o > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:72:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > extract(const uint8_t __restrict * &ptr) { > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:80:32: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > extract<uint8_t>(const uint8_t __restrict * &ptr) { > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:85:30: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > insert(const T& val, uint8_t __restrict * &ptr) { > ~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:91:33: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > extract_stream_id(const uint8_t __restrict * &ptr) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:97:46: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > insert_stream_id(uint32_t stream_id, uint8_t __restrict * &ptr) > ~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:104:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:133:44: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const message_header& msg, uint8_t __restrict * ptr, size_t len) > ~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:153:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:170:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:185:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:200:48: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const rst_stream_message& msg, uint8_t __restrict * ptr, size_t len) > ~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:356:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:359:19: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * end = ptr + len; > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:422:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:511:23: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const uint8_t __restrict * ptr, size_t len) > ~~~~~~~~~~~~~~^~~~~~~~~~ > ../../../../plugins/experimental/spdy/lib/spdy/message.cc:525:42: error: > restrict requires a pointer or reference ('uint8_t' (aka 'unsigned char') is > invalid) > const ping_message& msg, uint8_t __restrict * ptr, size_t len) > ~~~~~~~~^~~~~~~~~~ > 16 errors generated. > gmake[3]: *** [message.lo] Error 1 > {noformat} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira