[Clamav-devel] enabling DMG and XAR support

Brandon Perry bperry.volatile at gmail.com
Thu Mar 27 10:39:11 EDT 2014


I  have found a friend with an old G5 PPC that he is willing to lend for a couple days. When I get it probably this weekend I will be able to attempt to repro the issues you are having. Let me know if the --enable-llvm=no flag does/doesnt work for you.

However, if I can repro and I can fix the code up to compile correctly, I do no expect that patch to be merged into mainline codebase. I dont expect sourcefire to officially support your system in its current state since the current codebase works fine for 99.9% of people.

Sent from a computer

> On Mar 26, 2014, at 2:22 PM, Brandon Perry <bperry.volatile at gmail.com> wrote:
> 
> This also might be worth trying.
> 
> Dale, could you try appending this to your configure line and see if it resolves the issue with your 4.x compiler?
> 
> Sent from a computer
> 
>> On Mar 26, 2014, at 2:19 PM, Steven Morgan <smorgan at sourcefire.com> wrote:
>> 
>> FYI, This just in (from clamdoc.pdf):
>> 
>> <quote>
>> The following packages are optional, but required for bytecode JIT support:
>> 
>>  GCC C and C++ compilers (minimum 4.1.3, recommended 4.3.4 or newer)
>> the package for these compilers are usually called: gcc, g++, or gcc-c++.
>> </quote>
>> 
>> Mileage may be better in those cases by using ./configure --enable-llvm=no
>> 
>> 
>> On Wed, Mar 26, 2014 at 3:06 PM, Brandon Perry <bperry.volatile at gmail.com>wrote:
>> 
>>> FWIW i am currently asking friends if they have a PPC that i can try this
>>> one.
>>> 
>>> Sent from a computer
>>> 
>>>>> On Mar 26, 2014, at 1:37 PM, Brandon Perry <bperry.volatile at gmail.com>
>>>> wrote:
>>>> 
>>>> You must not have read my email. I was not saying it is your build tool.
>>> I said it was your architecture causing the LLVM type to not be implicitly
>>> casted to a long int, likely due to register sizes on the PPC platform.
>>>> 
>>>> You will need to modify the code to explicitly cast the LLVM type to a
>>> long int so that it compiles on your architecture.
>>>> 
>>>> 
>>>> 
>>>> Sent from a computer
>>>> 
>>>>> On Mar 26, 2014, at 12:58 PM, Dale Walsh <dale at daleenterprise.com>
>>> wrote:
>>>>> 
>>>>> Why do people have to be so stupid and immediately implicate the build
>>> tools or environment?
>>>>> 
>>>>> Because updates and bug-fixes were applied, your assuming that these
>>> are not done correctly or in compliance with the OS and build environment
>>> or that they are faulty.
>>>>> 
>>>>> First, you need to stop this bull-crap about non-standard and heavily
>>> modified and listen to the details regarding the issue you are told and
>>> stop focusing on the build tools which you have no clue about.
>>>>> 
>>>>> It is best that you accept my word that it is standard and in
>>> compliance with the OS, build environment and ADE.
>>>>> 
>>>>> I have confirmed the issue still exists under gcc-4.4 so it's not a
>>> build tool issue.
>>>>> 
>>>>> I now have generated a fully working  ClamAV 0.98.1 under gcc-3.3,
>>> gcc-4.0.0 and gcc 4.0.1 by cleanly autoreconf-ing the source tree.
>>>>> 
>>>>> Here's my configure for the working builds under the mentioned
>>> compilers:
>>>>> CFLAGS="-arch ppc -arch i386 -g -Os -pipe -DFD_SETSIZE=2048 -arch ppc
>>> -arch i386" CCFLAGS="-arch ppc -arch i386 -g -Os -pipe " CXXFLAGS="-arch
>>> ppc -arch i386 -g -Os -pipe " LDFLAGS="-arch ppc -arch i386   "
>>> ./configure --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack --with-user=clamav --with-group=clamav
>>> --with-dbdir=/var/clamav --disable-clamav
>>>>> 
>>>>> 
>>>>> 
>>>>> Is using ltmain.sh from Debian-Ubuntu called portability amongst
>>> different environments??
>>>>> 
>>>>> 
>>>>> -- Dale
>>>>> 
>>>>> 
>>>>> 
>>>>>> On Mar 26, 2014, at 09:06 AM, Brandon Perry wrote:
>>>>>> 
>>>>>> "I don't use MacPorts or any other non-standard build environment..."
>>>>>> 
>>>>>> Your entire build system is non-standard if you maintain in the way
>>> you say
>>>>>> you do.
>>>>>> 
>>>>>> This is very likely an architecture issue and will require explicit
>>> casts
>>>>>> in order to work for you (which would cause performance decreases for
>>> every
>>>>>> other ClamAV user). Would you expect the ClamAV project to maintain
>>> this?
>>>>>> You say you have submitted code in the past, you will likely need to
>>> make
>>>>>> this work yourself by adding the explicit casts to the codebase.
>>>>>> 
>>>>>> This really isn't an issue with ClamAV or LLVM/Clang. You have a system
>>>>>> that is relatively unsupportable because of A) age and B) you have
>>>>>> *heavily* modified it at this point to attempt to maintain it. Even if
>>> one
>>>>>> of us had an old PPC with gcc 4.0 (which compiles ClamAV just fine on
>>> FC4
>>>>>> which makes me think your patching has not been as successful as you
>>>>>> think), we would still not have the same environment you do since you
>>> claim
>>>>>> to maintain your binaries by hand.
>>>>>> 
>>>>>> Unless you are willing to add the explicit casts yourself, I think you
>>> are
>>>>>> probably SOL.
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>>> On Wed, Mar 26, 2014 at 3:02 AM, Dale Walsh <dale at daleenterprise.com>
>>> wrote:
>>>>>>> 
>>>>>>> You ask for details so here they are.
>>>>>>> 
>>>>>>> I don't use MacPorts or any other non-standard build environment, I
>>> don't
>>>>>>> suffer compiler bugs so I don't need  'CCFLAGS="-O0" to correct a
>>> buggy
>>>>>>> compiler and I have applied every patch and bug-fix released and
>>> experience
>>>>>>> no build issues with any other software source.
>>>>>>> 
>>>>>>> 
>>>>>>> Here's what I start with:
>>>>>>> 
>>>>>>> Using gcc-3.3 (it's old but it compiles for ppc)
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -g -Os
>>> -pipe
>>>>>>> -pipe -no-cpp-precomp -arch ppc" CCFLAGS="-arch ppc -g -Os -pipe "
>>>>>>> CXXFLAGS="-arch ppc -g -Os -pipe " LDFLAGS="-arch ppc            "
>>>>>>> TEXI2HTML="/usr/bin/texi2html -subdir ." rm -rf /tmp/clamav/Release &&
>>>>>>> mkdir -p /tmp/clamav/Debug && ln -sf /CLAMAV_BUILD/Release
>>>>>>> /tmp/clamav/Release && CFLAGS="-DFD_SETSIZE=2048" ./configure
>>>>>>> --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack
>>>>>>> --with-user=clamav --with-group=clamav --with-dbdir=/var/clamav
>>>>>>> --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> make install # no issues with the build or install but nothing seems
>>> to
>>>>>>> works and segfaults (expected behavior)
>>>>>>> 
>>>>>>> Using gcc-3.3
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -arch
>>> i386
>>>>>>> -g -Os -pipe -pipe -no-cpp-precomp -arch ppc -arch i386"
>>> CCFLAGS="-arch ppc
>>>>>>> -arch i386 -g -Os -pipe " CXXFLAGS="-arch ppc -arch i386 -g -Os -pipe
>>> "
>>>>>>> LDFLAGS="-arch ppc -arch i386            "
>>> TEXI2HTML="/usr/bin/texi2html
>>>>>>> -subdir ." rm -rf /tmp/clamav/Release && mkdir -p /tmp/clamav/Debug
>>> && ln
>>>>>>> -sf /CLAMAV_BUILD/Release /tmp/clamav/Release &&
>>> CFLAGS="-DFD_SETSIZE=2048"
>>>>>>> ./configure --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>>>>>> --enable-bigstack --with-user=clamav --with-group=clamav
>>>>>>> --with-dbdir=/var/clamav --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> 
>>>>>>> fails with:
>>>>>>> ld: Undefined symbols:
>>>>>>> _lt_libltdlc_LTX_preloaded_symbols
>>>>>>> /usr/bin/libtool: internal link edit command failed
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Using gcc-3.5 (it's old but it compiles for ppc)
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -g -Os
>>> -pipe
>>>>>>> -pipe -no-cpp-precomp -arch ppc" CCFLAGS="-arch ppc -g -Os -pipe "
>>>>>>> CXXFLAGS="-arch ppc -g -Os -pipe " LDFLAGS="-arch ppc            "
>>>>>>> TEXI2HTML="/usr/bin/texi2html -subdir ." rm -rf /tmp/clamav/Release &&
>>>>>>> mkdir -p /tmp/clamav/Debug && ln -sf /CLAMAV_BUILD/Release
>>>>>>> /tmp/clamav/Release && CFLAGS="-DFD_SETSIZE=2048" ./configure
>>>>>>> --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack
>>>>>>> --with-user=clamav --with-group=clamav --with-dbdir=/var/clamav
>>>>>>> --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> make install # no issues with the build or install but nothing seems
>>> to
>>>>>>> works and segfaults (expected behavior)
>>>>>>> 
>>>>>>> Using gcc-3.5
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -arch
>>> i386
>>>>>>> -g -Os -pipe -pipe -no-cpp-precomp -arch ppc -arch i386"
>>> CCFLAGS="-arch ppc
>>>>>>> -arch i386 -g -Os -pipe " CXXFLAGS="-arch ppc -arch i386 -g -Os -pipe
>>> "
>>>>>>> LDFLAGS="-arch ppc -arch i386            "
>>> TEXI2HTML="/usr/bin/texi2html
>>>>>>> -subdir ." rm -rf /tmp/clamav/Release && mkdir -p /tmp/clamav/Debug
>>> && ln
>>>>>>> -sf /CLAMAV_BUILD/Release /tmp/clamav/Release &&
>>> CFLAGS="-DFD_SETSIZE=2048"
>>>>>>> ./configure --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>>>>>> --enable-bigstack --with-user=clamav --with-group=clamav
>>>>>>> --with-dbdir=/var/clamav --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> 
>>>>>>> fails with:
>>>>>>> ld: Undefined symbols:
>>>>>>> _lt_libltdlc_LTX_preloaded_symbols
>>>>>>> /usr/bin/libtool: internal link edit command failed
>>>>>>> 
>>>>>>> 
>>>>>>> Using gcc-4.0.0
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -g -Os
>>> -pipe
>>>>>>> -pipe -no-cpp-precomp -arch ppc" CCFLAGS="-arch ppc -g -Os -pipe "
>>>>>>> CXXFLAGS="-arch ppc -g -Os -pipe " LDFLAGS="-arch ppc            "
>>>>>>> TEXI2HTML="/usr/bin/texi2html -subdir ." rm -rf /tmp/clamav/Release &&
>>>>>>> mkdir -p /tmp/clamav/Debug && ln -sf /CLAMAV_BUILD/Release
>>>>>>> /tmp/clamav/Release && CFLAGS="-DFD_SETSIZE=2048" ./configure
>>>>>>> --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack
>>>>>>> --with-user=clamav --with-group=clamav --with-dbdir=/var/clamav
>>>>>>> --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> fails with  ./llvm/lib/VMCore/TypesContext.h:311: error: invalid
>>>>>>> conversion from 'const llvm::Type*' to 'long int'
>>>>>>> 
>>>>>>> Using gcc-4.0.1
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -g -Os
>>> -pipe
>>>>>>> -pipe -no-cpp-precomp -arch ppc" CCFLAGS="-arch ppc -g -Os -pipe "
>>>>>>> CXXFLAGS="-arch ppc -g -Os -pipe " LDFLAGS="-arch ppc            "
>>>>>>> TEXI2HTML="/usr/bin/texi2html -subdir ." rm -rf /tmp/clamav/Release &&
>>>>>>> mkdir -p /tmp/clamav/Debug && ln -sf /CLAMAV_BUILD/Release
>>>>>>> /tmp/clamav/Release && CFLAGS="-DFD_SETSIZE=2048" ./configure
>>>>>>> --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack
>>>>>>> --with-user=clamav --with-group=clamav --with-dbdir=/var/clamav
>>>>>>> --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> fails with  ./llvm/lib/VMCore/TypesContext.h:311: error: invalid
>>>>>>> conversion from 'const llvm::Type*' to 'long int'
>>>>>>> 
>>>>>>> Using gcc-4.1.0
>>>>>>> cd /private/var/tmp/clamav/clamav-1.obj && CFLAGS="-arch ppc -g -Os
>>> -pipe
>>>>>>> -pipe -no-cpp-precomp -arch ppc" CCFLAGS="-arch ppc -g -Os -pipe "
>>>>>>> CXXFLAGS="-arch ppc -g -Os -pipe " LDFLAGS="-arch ppc            "
>>>>>>> TEXI2HTML="/usr/bin/texi2html -subdir ." rm -rf /tmp/clamav/Release &&
>>>>>>> mkdir -p /tmp/clamav/Debug && ln -sf /CLAMAV_BUILD/Release
>>>>>>> /tmp/clamav/Release && CFLAGS="-DFD_SETSIZE=2048" ./configure
>>>>>>> --prefix="/usr" --mandir=/usr/share/man --sysconfdir=/etc
>>> --enable-bigstack
>>>>>>> --with-user=clamav --with-group=clamav --with-dbdir=/var/clamav
>>>>>>> --disable-clamav
>>>>>>> 
>>>>>>> make
>>>>>>> fails with  ./llvm/lib/VMCore/TypesContext.h:311: error: invalid
>>>>>>> conversion from 'const llvm::Type*' to 'long int'
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> -- Dale
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On Mar 25, 2014, at 18:29 PM, Brandon Perry wrote:
>>>>>>> 
>>>>>>> Thanks, I don't have a PPC here, but I am going to install fedora
>>> core 4
>>>>>>>> x86 and x86_64 inside of virtual machines and will see if I run into
>>> any
>>>>>>>> issues.
>>>>>>>> 
>>>>>>>> Legacy systems are unfortunate. However, I think you would be hard
>>>>>>>> pressed to find any open source project today supporting that, so I
>>>>>>>> don't think it is that ridiculous to not expend the effort to
>>> actively
>>>>>>>> support it. I wouldn't be surprised if the code required to make it
>>>>>>>> compile on your system *and* modern systems caused performance
>>> decreases
>>>>>>>> (or even not compile on modern gcc!).
>>>>>>>> 
>>>>>>>> There might be a small chance that you would need to maintain a
>>> separate
>>>>>>>> patchset to maintain this compatibility since having it compile on
>>> both
>>>>>>>> your legacy and modern systems would be detrimental to other ClamAV
>>> users.
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> http://lurker.clamav.net/list/clamav-devel.html
>>>>>>>> Please submit your patches to our Bugzilla: http://bugs.clamav.net
>>>>>>> _______________________________________________
>>>>>>> http://lurker.clamav.net/list/clamav-devel.html
>>>>>>> Please submit your patches to our Bugzilla: http://bugs.clamav.net
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> --
>>>>>> http://volatile-minds.blogspot.com -- blog
>>>>>> http://www.volatileminds.net -- website
>>>>>> _______________________________________________
>>>>>> http://lurker.clamav.net/list/clamav-devel.html
>>>>>> Please submit your patches to our Bugzilla: http://bugs.clamav.net
>>>>> 
>>>>> _______________________________________________
>>>>> http://lurker.clamav.net/list/clamav-devel.html
>>>>> Please submit your patches to our Bugzilla: http://bugs.clamav.net
>>> _______________________________________________
>>> http://lurker.clamav.net/list/clamav-devel.html
>>> Please submit your patches to our Bugzilla: http://bugs.clamav.net
>> _______________________________________________
>> http://lurker.clamav.net/list/clamav-devel.html
>> Please submit your patches to our Bugzilla: http://bugs.clamav.net


More information about the clamav-devel mailing list