Hi guys,
compiling on ubuntu64 took a bit of tweaking. Attached is the patch.
I also had to change Makefile compile flag settings to add -fPIC -fpermissive in loader/Makefile and -fpermissive in boomberang/Makefile
a quick patchisattached (done to cvs version of the code)
hope it helps.
Not acknowledged by me until we know what type of errors that get "downgraded" to warnings by -fpermissive (and how to fix them).
I think it is mainly pointer-type/length caused casting problems.
Without -fpermissive you get things like this:
g++ -g -O2 -Wall -fPIC -c -fno-strict-aliasing -I../include -o
ElfBinaryFile.o ElfBinaryFile.cpp
ElfBinaryFile.cpp: In member function 'virtual bool
ElfBinaryFile::RealLoad(const char)':
ElfBinaryFile.cpp:135:100: warning: format '%u' expects argument of
type 'unsigned int', but argument 3 has type 'size_t {aka long un
signed int}' [-Wformat]
ElfBinaryFile.cpp:196:69: error: cast from 'char' to 'ADDRESS {aka
unsigned int}' loses precision [-fpermissive]
ElfBinaryFile.cpp:261:38: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:269:42: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'char
ElfBinaryFile::GetStrPtr(int, int)':
ElfBinaryFile.cpp:304:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'ADDRESS
ElfBinaryFile::findRelPltOffset(int, ADDRESS, int, int, ADDRESS)':
ElfBinaryFile.cpp:320:54: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void ElfBinaryFile::AddSyms(int)':
ElfBinaryFile.cpp:341:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::vector<unsigned int=""> ElfBinaryFile::GetExportedAddresses(bool)':
ElfBinaryFile.cpp:421:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void
ElfBinaryFile::AddRelocsAsSyms(int)':
ElfBinaryFile.cpp:458:36: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'bool
ElfBinaryFile::ValueByName(const char</unsigned>, SymValue, bool)':
ElfBinaryFile.cpp:526:28: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:530:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'bool
ElfBinaryFile::SearchValueByName(const char, SymValue, const char,
const char)':
ElfBinaryFile.cpp:584:45: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:587:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'int
ElfBinaryFile::GetDistanceByName(const char, const char)':
ElfBinaryFile.cpp:656:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::list<const char*="">
ElfBinaryFile::getDependencyList()':
ElfBinaryFile.cpp:799:35: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:810:35: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:812:31: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::map<unsigned int,="" const="" char*=""></unsigned></const> ElfBinaryFile::GetDynamicGlobalMap()':
ElfBinaryFile.cpp:898:37: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:908:13: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:911:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative1(ADDRESS)':
ElfBinaryFile.cpp:966:18: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative2(ADDRESS)':
ElfBinaryFile.cpp:974:26: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative4(ADDRESS)':
ElfBinaryFile.cpp:982:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void
ElfBinaryFile::writeNative4(ADDRESS, unsigned int)':
ElfBinaryFile.cpp:990:20: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:991:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:992:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:993:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:995:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:996:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:997:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:998:20: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void ElfBinaryFile::applyRelocations()':
ElfBinaryFile.cpp:1080:30: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1092:57: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1093:66: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1101:52: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1104:78: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual bool
ElfBinaryFile::IsRelocationAt(ADDRESS)':
ElfBinaryFile.cpp:1189:30: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual const char
ElfBinaryFile::getFilenameSymbolFor(const char)':
ElfBinaryFile.cpp:1247:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
make[1]: *** [ElfBinaryFile.o] Error 1
Make test actually gives problems, so I guess it breaks things:
cd .. && loader/testLoader
.E.E......
!!!FAILURES!!!
Test Results:
Run: 8 Failures: 0 Errors: 2
1) test: LoaderTest (E)
uncaught exception of type std::out_of_range
- basic_string::erase
2) test: LoaderTest (E)
uncaught exception of type std::out_of_range
- basic_string::erase
make[1]: Leaving directory `/home/fygrave/work/laser/boomerang/loader'
./bigtest
make: *** [test] Segmentation fault (core dumped)
pointer asignments cast mismatches. POSSIBLE - that it actually breaks
things (been running a couple of tests yesterday, didn't get expected
results. The process is still up with 98% CPU consumption),
anyway, here are the errors (when -fpermissive is removed)
g++ -g -O2 -Wall -fPIC -c -fno-strict-aliasing -I../include -o
ElfBinaryFile.o ElfBinaryFile.cpp
ElfBinaryFile.cpp: In member function 'virtual bool
ElfBinaryFile::RealLoad(const char)':
ElfBinaryFile.cpp:135:100: warning: format '%u' expects argument of
type 'unsigned int', but argument 3 has type 'size_t {aka long un
signed int}' [-Wformat]
ElfBinaryFile.cpp:196:69: error: cast from 'char' to 'ADDRESS {aka
unsigned int}' loses precision [-fpermissive]
ElfBinaryFile.cpp:261:38: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:269:42: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'char
ElfBinaryFile::GetStrPtr(int, int)':
ElfBinaryFile.cpp:304:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'ADDRESS
ElfBinaryFile::findRelPltOffset(int, ADDRESS, int, int, ADDRESS)':
ElfBinaryFile.cpp:320:54: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void ElfBinaryFile::AddSyms(int)':
ElfBinaryFile.cpp:341:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::vector<unsigned int=""> ElfBinaryFile::GetExportedAddresses(bool)':
ElfBinaryFile.cpp:421:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void
ElfBinaryFile::AddRelocsAsSyms(int)':
ElfBinaryFile.cpp:458:36: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'bool
ElfBinaryFile::ValueByName(const char</unsigned>, SymValue, bool)':
ElfBinaryFile.cpp:526:28: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:530:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'bool
ElfBinaryFile::SearchValueByName(const char, SymValue, const char,
const char)':
ElfBinaryFile.cpp:584:45: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:587:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'int
ElfBinaryFile::GetDistanceByName(const char, const char)':
ElfBinaryFile.cpp:656:39: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::list<const char*="">
ElfBinaryFile::getDependencyList()':
ElfBinaryFile.cpp:799:35: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:810:35: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:812:31: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual std::map<unsigned int,="" const="" char*=""></unsigned></const> ElfBinaryFile::GetDynamicGlobalMap()':
ElfBinaryFile.cpp:898:37: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:908:13: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:911:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative1(ADDRESS)':
ElfBinaryFile.cpp:966:18: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative2(ADDRESS)':
ElfBinaryFile.cpp:974:26: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual int
ElfBinaryFile::readNative4(ADDRESS)':
ElfBinaryFile.cpp:982:24: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void
ElfBinaryFile::writeNative4(ADDRESS, unsigned int)':
ElfBinaryFile.cpp:990:20: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:991:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:992:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:993:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:995:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:996:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:997:27: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:998:20: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'void ElfBinaryFile::applyRelocations()':
ElfBinaryFile.cpp:1080:30: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1092:57: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1093:66: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1101:52: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp:1104:78: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual bool
ElfBinaryFile::IsRelocationAt(ADDRESS)':
ElfBinaryFile.cpp:1189:30: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
ElfBinaryFile.cpp: In member function 'virtual const char
ElfBinaryFile::getFilenameSymbolFor(const char)':
ElfBinaryFile.cpp:1247:34: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
make[1]: *** [ElfBinaryFile.o] Error 1
The similar problem re-occurs in multiple files. the environment is:
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro
4.6.3-1ubuntu5'
--with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs
--enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.6 --enable-shared --enable-linker-build-id
--with-system-zlib --libexecdir=/usr/lib --without-included-gettext
--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6
--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu
--enable-libstdcxx-debug --enable-libstdcxx-time=yes
--enable-gnu-unique-object --enable-plugin --enable-objc-gc
--disable-werror --with-arch-32=i686 --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
I'll post the full error-log in a sec.
On Fri, Mar 28, 2014 at 9:45 AM, Markus Gothe thenihilist@users.sf.net wrote:
--
http://www.o0o.nu
Related
Bugs: #83
g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.6/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)
Attached is the full compilation log (so you could see what errors get triggered)