Trying to compile selfrando for 32bit system crashes with
g++ -o sconsRelease/x86/gcc/LinuxSymproc/ObjectFileParser.o -c -std=c++11 -include /home/debian/build/elfutils-0.160/libelf/elf.h -I /home/debian/install/elfutils/include -fno-reorder-functions -O2 -fno-omit-frame-pointer -g -Wl,-z,noexecstack -m32 -DRANDOLIB_ARCH=x86 -DRANDOLIB_ARCH_SIZE=32 -DRANDOLIB_IS_X86=1 -IsconsRelease/x86/gcc/LinuxSymproc -ILinuxSymproc LinuxSymproc/ObjectFileParser.cppLinuxSymproc/ObjectFileParser.cpp: In member function 'void ExecFileParser::add_txtrp_section(const std::vector<ObjectFileParser::Section>&, const ObjectFileParser::NonExecutableRelocations&)':LinuxSymproc/ObjectFileParser.cpp:383:78: error: no matching function for call to 'max(long unsigned int&, ELFIO::Elf64_Addr)' p = std::max(p, segm->get_virtual_address() + segm->get_memory_size()); ^In file included from /home/debian/install/gcc/include/c++/5.1.0/algorithm:61:0, from LinuxSymproc/ObjectFileParser.cpp:9:/home/debian/install/gcc/include/c++/5.1.0/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> const _Tp& std::max(const _Tp&, const _Tp&) max(const _Tp& __a, const _Tp& __b) ^/home/debian/install/gcc/include/c++/5.1.0/bits/stl_algobase.h:219:5: note: template argument deduction/substitution failed:LinuxSymproc/ObjectFileParser.cpp:383:78: note: deduced conflicting types for parameter 'const _Tp' ('long unsigned int' and 'ELFIO::Elf64_Addr {aka long long unsigned int}') p = std::max(p, segm->get_virtual_address() + segm->get_memory_size());
After talking to the selfrando devs it turns out the 32bit mode never really got finished properly. Thus we integrate it only for 64bit bundles for now. I've filed #20848 (moved) for the 32bit part.
bug_20683_v4 (https://gitweb.torproject.org/user/gk/tor-browser-bundle.git/commit/?h=bug_20683_v4&id=74bc959b60d4ebb04179a87a113fbb5254d9d3fa) in my public repo has a patch for review. It uses TrapLinker now under the hood which fixes the NSS AES incompatibility as well and improves stability in general. The relevant selfrando and elfutils commits/tags are in the nightly versions file. I'll update the alpha one with proper tags once we had the code baking in our nightlies for a while and nothing exploded.
Note: This patch makes use of our own gcc/binutils for the remaining components in the gitian-utils descriptor (a thing I wanted to have for quite a while now).
Trac: Status: new to needs_review Keywords: TorBrowserTeam201702 deleted, TorBrowserTeam201703R added