Steve Pietrowicz created AMQCPP-423:
---------------------------------------
Summary: Compiling with clang++
Key: AMQCPP-423
URL: https://issues.apache.org/jira/browse/AMQCPP-423
Project: ActiveMQ C++ Client
Issue Type: Bug
Components: CMS Impl
Affects Versions: 3.4.3
Environment: Redhat Enterprise Linux Server 6.3
Clang 3.0
Reporter: Steve Pietrowicz
Assignee: Timothy Bish
Priority: Blocker
We're trying to get our entire software stack running under clang. One of the
third party packages we use is ActiveMQCPP. We're using an older version of
the library, which builds, but results in an error when we try to use it (see
the last part of this message).
The ActiveMQCPP 3.4.3 package fails to compile under clang 3.0, first giving
many warnings in other files, and then the error in ExecutorService.cpp:
libtool: compile: clang++ -DHAVE_CONFIG_H -I. -I../.. -ansi -pedantic
-DLINUX=2 -D_REENTRANT -D_GNU_SOURCE
-I/lsst/home/srp/clang/lsst_clang/Linux64/external/apr/1.3.3+1/include/apr-1
-I/lsst/home/srp/clang/lsst_clang/Linux64/external/apr/1.3.3+1/include/apr-1 -W
-Wall -Wextra -Wconversion -fPIC -fstrict-aliasing -Wstrict-aliasing=2
-Wno-long-long -g -O2 -pthread -MT
decaf/util/concurrent/libactivemq_cpp_la-ExecutorService.lo -MD -MP -MF
decaf/util/concurrent/.deps/libactivemq_cpp_la-ExecutorService.Tpo -c
decaf/util/concurrent/ExecutorService.cpp -o
decaf/util/concurrent/libactivemq_cpp_la-ExecutorService.o >/dev/null 2>&1
In file included from decaf/util/concurrent/Executors.cpp:25:
In file included from ./decaf/util/concurrent/ThreadPoolExecutor.h:23:
In file included from ./decaf/util/concurrent/BlockingQueue.h:22:
In file included from ./decaf/util/AbstractQueue.h:28:
./decaf/util/Queue.h:101:19: warning: 'decaf::util::Queue<decaf::lang::Runnable
*>::remove' hides overloaded virtual function [-Woverloaded-virtual]
virtual E remove() = 0;
^
./decaf/util/AbstractQueue.h:47:34: note: in instantiation of template class
'decaf::util::Queue<decaf::lang::Runnable *>' requested here
class AbstractQueue : public decaf::util::Queue<E>,
^
./decaf/util/concurrent/BlockingQueue.h:164:34: note: in instantiation of
template class 'decaf::util::AbstractQueue<decaf::lang::Runnable *>'
requested here
class BlockingQueue : public AbstractQueue<E> {
^
./decaf/util/concurrent/ThreadPoolExecutor.h:598:45: note: in instantiation of
template class
'decaf::util::concurrent::BlockingQueue<decaf::lang::Runnable *>'
requested here
executer->getQueue()->poll(oldest);
^
./decaf/util/Collection.h:214:22: note: hidden overloaded virtual function
'decaf::util::Collection<decaf::lang::Runnable *>::remove' declared here
virtual bool remove( const E& value ) = 0;
^
In file included from decaf/util/concurrent/Executors.cpp:28:
./decaf/util/concurrent/LinkedBlockingQueue.h:465:27: warning: implicit
conversion changes signedness: 'int' to 'size_type' (aka 'unsigned long')
[-Wsign-conversion]
array.reserve(size);
~~~~~ ^~~~
decaf/util/concurrent/Executors.cpp:112:28: note: in instantiation of member
function
'decaf::util::concurrent::LinkedBlockingQueue<decaf::lang::Runnable
*>::toArray' requested here
backingQ.reset(new LinkedBlockingQueue<Runnable*>());
^
In file included from decaf/util/concurrent/Executors.cpp:25:
In file included from ./decaf/util/concurrent/ThreadPoolExecutor.h:23:
In file included from ./decaf/util/concurrent/BlockingQueue.h:22:
./decaf/util/AbstractQueue.h:63:17: error: use of undeclared identifier 'offer'
if( offer( value ) ) {
^
this->
decaf/util/concurrent/Executors.cpp:112:28: note: in instantiation of member
function 'decaf::util::AbstractQueue<decaf::lang::Runnable *>::add'
requested here
backingQ.reset(new LinkedBlockingQueue<Runnable*>());
^
./decaf/util/Queue.h:76:22: note: must qualify identifier to find this
declaration in dependent base class
virtual bool offer( const E& value ) = 0;
^
In file included from decaf/util/concurrent/Executors.cpp:18:
In file included from decaf/util/concurrent/Executors.h:24:
In file included from ./decaf/util/concurrent/ExecutorService.h:24:
In file included from ./decaf/util/ArrayList.h:30:
In file included from ./decaf/util/List.h:27:
./decaf/util/AbstractCollection.h:318:33: warning: implicit conversion changes
signedness: 'int' to 'size_type' (aka 'unsigned long') [-Wsign-conversion]
valueArray.reserve( this->size() );
~~~~~~~~~~ ^~~~~~~~~~~~
decaf/util/concurrent/Executors.cpp:112:28: note: in instantiation of member
function 'decaf::util::AbstractCollection<decaf::lang::Runnable
*>::toArray' requested here
backingQ.reset(new LinkedBlockingQueue<Runnable*>());
^
5 warnings and 1 error generated.
Version 3.1.2 of the library compiles, but throws an exception (out of range)
on in createConnection in AMQConnectionFactory.
I wasn't sure how to classify this issue and whether it should be classified as
enhancement request. Is there any plan to support clang in the future?
--
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