ARM32 compiling results


#1

Greetings again!

I tried to download the latest tamarin code from Adobe’s github repo at this address : https://github.com/adobe/avmplus and tried the basic linux compilation steps to check what is going to happen. Please note that all commands are running within Debian Jessie on arm32. Here is my first attempt:

$ make
../build/rules.mk:30: zlib.thing.pp: No such file or directory
../build/rules.mk:30: lzma.thing.pp: No such file or directory
../build/rules.mk:30: vmbase.thing.pp: No such file or directory
../build/rules.mk:30: MMgc.thing.pp: No such file or directory
../build/rules.mk:30: avmplus.thing.pp: No such file or directory
../build/rules.mk:30: shell.thing.pp: No such file or directory
Writing shell.thing.pp: doesn't exist
Building shell.thing.pp
Writing avmplus.thing.pp: doesn't exist
Building avmplus.thing.pp
Writing MMgc.thing.pp: doesn't exist
Building MMgc.thing.pp
Writing vmbase.thing.pp: doesn't exist
Building vmbase.thing.pp
Writing lzma.thing.pp: doesn't exist
Building lzma.thing.pp
Writing zlib.thing.pp: doesn't exist
Building zlib.thing.pp
true "Preprocessing other-licenses/zlib/adler32"
true "Compiling other-licenses/zlib/adler32"
true "Preprocessing other-licenses/zlib/compress"
true "Compiling other-licenses/zlib/compress"
true "Preprocessing other-licenses/zlib/crc32"
true "Compiling other-licenses/zlib/crc32"
true "Preprocessing other-licenses/zlib/deflate"
true "Compiling other-licenses/zlib/deflate"
true "Preprocessing other-licenses/zlib/gzio"
true "Compiling other-licenses/zlib/gzio"
true "Preprocessing other-licenses/zlib/infback"
true "Compiling other-licenses/zlib/infback"
true "Preprocessing other-licenses/zlib/inffast"
true "Compiling other-licenses/zlib/inffast"
true "Preprocessing other-licenses/zlib/inflate"
true "Compiling other-licenses/zlib/inflate"
true "Preprocessing other-licenses/zlib/inftrees"
true "Compiling other-licenses/zlib/inftrees"
true "Preprocessing other-licenses/zlib/trees"
true "Compiling other-licenses/zlib/trees"
true "Preprocessing other-licenses/zlib/uncompr"
true "Compiling other-licenses/zlib/uncompr"
true "Preprocessing other-licenses/zlib/zutil"
true "Compiling other-licenses/zlib/zutil"
true "Library libzlib"
true "Preprocessing other-licenses/lzma/Alloc"
true "Compiling other-licenses/lzma/Alloc"
true "Preprocessing other-licenses/lzma/Bcj2"
true "Compiling other-licenses/lzma/Bcj2"
true "Preprocessing other-licenses/lzma/Bra"
true "Compiling other-licenses/lzma/Bra"
true "Preprocessing other-licenses/lzma/Bra86"
true "Compiling other-licenses/lzma/Bra86"
true "Preprocessing other-licenses/lzma/LzFind"
true "Compiling other-licenses/lzma/LzFind"
true "Preprocessing other-licenses/lzma/Lzma2Dec"
true "Compiling other-licenses/lzma/Lzma2Dec"
true "Preprocessing other-licenses/lzma/LzmaDec"
true "Compiling other-licenses/lzma/LzmaDec"
true "Preprocessing other-licenses/lzma/LzmaLib"
true "Compiling other-licenses/lzma/LzmaLib"
true "Preprocessing other-licenses/lzma/LzmaEnc"
true "Compiling other-licenses/lzma/LzmaEnc"
true "Library liblzma"
cd ../shell; python shell_toplevel.py -config CONFIG::VMCFG_FLOAT=false
ASC=../utils/asc.jar
Building shell_toplevel...
sh: 1: java: not found
Traceback (most recent call last):
  File "shell_toplevel.py", line 50, in <module>
    mv("shell_toplevel.abc", "../generated/shell_toplevel.abc")
  File "shell_toplevel.py", line 21, in mv
    shutil.copyfile(oldfile,newfile)
  File "/usr/lib/python2.7/shutil.py", line 82, in copyfile
    with open(src, 'rb') as fsrc:
IOError: [Errno 2] No such file or directory: 'shell_toplevel.abc'
../shell/manifest.mk:93: recipe for target '../generated/shell_toplevel.abc' failed
make: *** [../generated/shell_toplevel.abc] Error 1
make: *** [../generated/shell_toplevel.abc] Deleting file '../generated/shell_toplevel.cpp'
make: *** [../generated/shell_toplevel.abc] Deleting file '../generated/shell_toplevel.h'

#2

same question as before

did you provide additional flags to configure.py ? and if so, which ones?

for the rest, you do need asc.jar and so java installed on the system
eg. sh: 1: java: not found

look at the Redtamarin wiki page Linux Ubuntu Setup
it may help


#3

I’m installing the JDK with the ASC.jar in the utils folder. For this compilation I have not specified any king of compilation flag for arm or android. I’m trying without android because it is almost the same and I don’t have to deal with the NDK.

cd ../shell; python shell_toplevel.py -config CONFIG::VMCFG_FLOAT=false
ASC=../utils/asc.jar
Building shell_toplevel...
target=1
shell_toplevel: 18379
Files: 8 Time: 11033ms
Generating native thunks...
Done.
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
/bin/sh: 1: g++: not found
../build/rules.mk:30: recipe for target 'VMPI/PosixPortUtils.ii' failed
make: *** [VMPI/PosixPortUtils.ii] Error 127
make: *** Deleting file 'VMPI/PosixPortUtils.ii'

Now it’s time to install build-essential.After build-essential’s install:

$ make
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
true "Preprocessing ../vmbase/vmbase.h to vmbase/vmbase-precompiled.ii"
true "Precompiling ../vmbase/vmbase.h to vmbase/vmbase-precompiled.h.gch"
true "Compiling VMPI/PosixPortUtils"
true "Preprocessing VMPI/PosixSpecificUtils"
true "Compiling VMPI/PosixSpecificUtils"
true "Preprocessing VMPI/UnixDebugUtils"
true "Compiling VMPI/UnixDebugUtils"
true "Preprocessing VMPI/GenericPortUtils"
true "Compiling VMPI/GenericPortUtils"
true "Preprocessing VMPI/ThreadsPosix"
true "Compiling VMPI/ThreadsPosix"
true "Preprocessing vmbase/VMThread"
true "Compiling vmbase/VMThread"
true "Preprocessing vmbase/Safepoint"
true "Compiling vmbase/Safepoint"
true "Library libvmbase"
true "Preprocessing AVMPI/AvmAssert"
true "Preprocessing ../MMgc/MMgc.h to MMgc/MMgc-precompiled.ii"
true "Precompiling ../MMgc/MMgc.h to MMgc/MMgc-precompiled.h.gch"
true "Compiling AVMPI/AvmAssert"
true "Preprocessing AVMPI/float4Support"
true "Compiling AVMPI/float4Support"
true "Preprocessing AVMPI/PosixMMgcPortUtils"
true "Compiling AVMPI/PosixMMgcPortUtils"
true "Preprocessing AVMPI/MMgcPortUnix"
true "Compiling AVMPI/MMgcPortUnix"
true "Preprocessing MMgc/FixedAlloc"
true "Compiling MMgc/FixedAlloc"
true "Preprocessing MMgc/FixedMalloc"
true "Compiling MMgc/FixedMalloc"
true "Preprocessing MMgc/GC"
true "Compiling MMgc/GC"
../MMgc/GC.cpp: In member function ‘uint32_t* MMgc::GC::AllocBits(int, int, int)’:
../MMgc/GC.cpp:3396:40: error: argument to ‘sizeof’ in ‘void* memset(void*, int, size_t)’ call is the same pointer type ‘uint32_t* {aka unsigned int*}’ as the destination; expected ‘uint32_t {aka unsigned int}’ or an explicit length [-Werror=sizeof-pointer-memaccess]
             VMPI_memset(bits, 0, sizeof(uint32_t*));
                                        ^
cc1plus: all warnings being treated as errors
../build/rules.mk:30: recipe for target 'MMgc/GC.o' failed
make: *** [MMgc/GC.o] Error 1

I will try to disable the warnings found a solution from https://stackoverflow.com/questions/10248393/disable-warnings-being-treated-as-errorscc1-exe


#4

I removed some flags from the python configure.py file to reflect the needs of ARM compilation for linux without NDK at this address: https://github.com/gdeverlant/avmplus/commits/master

$ make
Building lzma.thing.pp
Building zlib.thing.pp
cd ../shell; python shell_toplevel.py -config CONFIG::VMCFG_FLOAT=false
ASC=../utils/asc.jar
Building shell_toplevel...
target=1
shell_toplevel: 18379
Files: 8 Time: 10974ms
Generating native thunks...
Done.
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
In file included from /usr/include/features.h:398:0,
                 from /usr/include/endian.h:21,
                 from ../platform/system-selection.h:187,
                 from ../VMPI/../shell/avmshell-features.h:14,
                 from ../VMPI/VMPI.h:32,
                 from ../VMPI/PosixPortUtils.cpp:7:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
 # include <gnu/stubs-soft.h>
                             ^
compilation terminated.
../build/rules.mk:30: recipe for target 'VMPI/PosixPortUtils.ii' failed
make: *** [VMPI/PosixPortUtils.ii] Error 1
make: *** Deleting file 'VMPI/PosixPortUtils.ii'

I found this thread which is giving the solution for Debian based systems: https://stackoverflow.com/questions/7412548/error-gnu-stubs-32-h-no-such-file-or-directory-while-compiling-nachos-source#7412698. I’m getting this error:

$make
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
In file included from /usr/include/features.h:398:0,
                 from /usr/include/endian.h:21,
                 from ../platform/system-selection.h:187,
                 from ../VMPI/../shell/avmshell-features.h:14,
                 from ../VMPI/VMPI.h:32,
                 from ../VMPI/PosixPortUtils.cpp:7:
/usr/include/arm-linux-gnueabihf/gnu/stubs.h:7:29: fatal error: gnu/stubs-soft.h: No such file or directory
 # include <gnu/stubs-soft.h>
                             ^
compilation terminated.
../build/rules.mk:30: recipe for target 'VMPI/PosixPortUtils.ii' failed
make: *** [VMPI/PosixPortUtils.ii] Error 1
make: *** Deleting file 'VMPI/PosixPortUtils.ii'

#5

After having found this thread in a forum https://bugzilla.redhat.com/show_bug.cgi?id=964646 regarding the same king of error one guy suggested that I change the compilation params for GCC to :slight_smile:

Have you tried compiling with `-mfpu=neon -mfloat-abi=hard’ or whatever you used to build the rootfs?

Then I tried with this commit : https://github.com/gdeverlant/avmplus/commit/79cb2dc6b1891fcd2f615e461452ba0b028882bd

Getting this result:

$ make
true "Preprocessing other-licenses/zlib/adler32"
true "Compiling other-licenses/zlib/adler32"
true "Preprocessing other-licenses/zlib/compress"
true "Compiling other-licenses/zlib/compress"
true "Preprocessing other-licenses/zlib/crc32"
true "Compiling other-licenses/zlib/crc32"
true "Preprocessing other-licenses/zlib/deflate"
true "Compiling other-licenses/zlib/deflate"
true "Preprocessing other-licenses/zlib/gzio"
true "Compiling other-licenses/zlib/gzio"
true "Preprocessing other-licenses/zlib/infback"
true "Compiling other-licenses/zlib/infback"
true "Preprocessing other-licenses/zlib/inffast"
true "Compiling other-licenses/zlib/inffast"
true "Preprocessing other-licenses/zlib/inflate"
true "Compiling other-licenses/zlib/inflate"
true "Preprocessing other-licenses/zlib/inftrees"
true "Compiling other-licenses/zlib/inftrees"
true "Preprocessing other-licenses/zlib/trees"
true "Compiling other-licenses/zlib/trees"
true "Preprocessing other-licenses/zlib/uncompr"
true "Compiling other-licenses/zlib/uncompr"
true "Preprocessing other-licenses/zlib/zutil"
true "Compiling other-licenses/zlib/zutil"
true "Library libzlib"
true "Preprocessing other-licenses/lzma/Alloc"
true "Compiling other-licenses/lzma/Alloc"
true "Preprocessing other-licenses/lzma/Bcj2"
true "Compiling other-licenses/lzma/Bcj2"
true "Preprocessing other-licenses/lzma/Bra"
true "Compiling other-licenses/lzma/Bra"
true "Preprocessing other-licenses/lzma/Bra86"
true "Compiling other-licenses/lzma/Bra86"
true "Preprocessing other-licenses/lzma/LzFind"
true "Compiling other-licenses/lzma/LzFind"
true "Preprocessing other-licenses/lzma/Lzma2Dec"
true "Compiling other-licenses/lzma/Lzma2Dec"
true "Preprocessing other-licenses/lzma/LzmaDec"
true "Compiling other-licenses/lzma/LzmaDec"
true "Preprocessing other-licenses/lzma/LzmaLib"
true "Compiling other-licenses/lzma/LzmaLib"
true "Preprocessing other-licenses/lzma/LzmaEnc"
true "Compiling other-licenses/lzma/LzmaEnc"
true "Library liblzma"
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
true "Preprocessing ../vmbase/vmbase.h to vmbase/vmbase-precompiled.ii"
true "Precompiling ../vmbase/vmbase.h to vmbase/vmbase-precompiled.h.gch"
true "Compiling VMPI/PosixPortUtils"
true "Preprocessing VMPI/PosixSpecificUtils"
true "Compiling VMPI/PosixSpecificUtils"
true "Preprocessing VMPI/UnixDebugUtils"
true "Compiling VMPI/UnixDebugUtils"
true "Preprocessing VMPI/GenericPortUtils"
true "Compiling VMPI/GenericPortUtils"
true "Preprocessing VMPI/ThreadsPosix"
true "Compiling VMPI/ThreadsPosix"
true "Preprocessing vmbase/VMThread"
true "Compiling vmbase/VMThread"
true "Preprocessing vmbase/Safepoint"
true "Compiling vmbase/Safepoint"
true "Library libvmbase"
true "Preprocessing AVMPI/AvmAssert"
true "Preprocessing ../MMgc/MMgc.h to MMgc/MMgc-precompiled.ii"
true "Precompiling ../MMgc/MMgc.h to MMgc/MMgc-precompiled.h.gch"
true "Compiling AVMPI/AvmAssert"
true "Preprocessing AVMPI/float4Support"
true "Compiling AVMPI/float4Support"
true "Preprocessing AVMPI/PosixMMgcPortUtils"
true "Compiling AVMPI/PosixMMgcPortUtils"
true "Preprocessing AVMPI/MMgcPortUnix"
true "Compiling AVMPI/MMgcPortUnix"
true "Preprocessing MMgc/FixedAlloc"
true "Compiling MMgc/FixedAlloc"
true "Preprocessing MMgc/FixedMalloc"
true "Compiling MMgc/FixedMalloc"
true "Preprocessing MMgc/GC"
true "Compiling MMgc/GC"
../MMgc/GC.cpp: In member function ‘uint32_t* MMgc::GC::AllocBits(int, int, int)’:
../MMgc/GC.cpp:3396:40: error: argument to ‘sizeof’ in ‘void* memset(void*, int, size_t)’ call is the same pointer type ‘uint32_t* {aka unsigned int*}’ as the destination; expected ‘uint32_t {aka unsigned int}’ or an explicit length [-Werror=sizeof-pointer-memaccess]
             VMPI_memset(bits, 0, sizeof(uint32_t*));
                                        ^
cc1plus: all warnings being treated as errors
../build/rules.mk:30: recipe for target 'MMgc/GC.o' failed
make: *** [MMgc/GC.o] Error 1

After researching compiler options for armv7L I was able to compile up until nanoJIT.
This is the log error from compilation:

true "Preprocessing nanojit/njconfig"
true "Compiling nanojit/njconfig"
true "Preprocessing nanojit/RegAlloc"
true "Compiling nanojit/RegAlloc"
true "Preprocessing nanojit/NativeARM"
true "Compiling nanojit/NativeARM"
../nanojit/NativeARM.cpp: In member function ‘void nanojit::Assembler::asm_arg_float(nanojit::LIns*, nanojit::ParameterRegisters&)’:
../nanojit/NativeARM.cpp:696:30: error: request for member ‘getLsb’ in ‘avail’, which is of non-class type ‘nanojit::RegisterMask {aka long long unsigned int}’
         Register r = { avail.getLsb() }; // get first available from the proper class; backfills available regs
                              ^
../nanojit/NativeARM.cpp:700:37: error: ‘FpOverlapMask’ was not declared in this scope
         RegisterMask consumedRegs = FpOverlapMask[ REGNUM(r) ];
                                     ^
../build/rules.mk:30: recipe for target 'nanojit/NativeARM.o' failed
make: *** [nanojit/NativeARM.o] Error 1

I have no idea of what does this error mean.


#7

same question as before

did you provide additional flags to configure.py ? and if so, which ones?


#8

No I didn’t but I hard coded the flags inside of the configure.py so that it reflects the needs of arm.

I had to do that because I don’t have any MacOS to compile with Android and the SDK/NDK.

    originalCpuARCH = info.get("raw_arch_string")
    cpuARCH = originalCpuARCH
    isARMv7 = (cpuARCH.find("armv7") > -1)
    cpuFlags = info.get("flags")
    
    if isARMv7:
        cpuARCH = "armv7-a"
        hasVFP = ("vfp" in cpuFlags)
        print "VPU: %s" % hasVFP
        hasVFPV3 = ("vfpv3" in cpuFlags)
        print "VFPV3: %s" % hasVFPV3
        hasVFPV4 = ("vfpv4" in cpuFlags)
        print "VFPV4: %s" % hasVFPV4
        hasNeon = ("neon" in cpuFlags)
        print "Neon: %s" % hasNeon
        hasThumb = ("thumb" in cpuFlags)
        print "Thumb: %s" % hasThumb
        hasHalfPrecision = ("half" in cpuFlags)
        print "Half-Precision: %s" % hasHalfPrecision
        
        # SEARCH_DIRS gets picked up in configuration.py by MKPROGRAM
        SEARCH_DIRS = "-L."

        BASE_M_FLAGS = "-mlong-calls -mthumb-interwork "
        
        BASE_CXX_FLAGS = "%s -marm -fno-section-anchors -D__ARM_ARCH__=7 " \
                        "-DARMV6_ASSEMBLY " % BASE_M_FLAGS
            
        if hasNeon and hasVFPV4:
            FLOAT_ABI = "-mfloat-abi=hard "
            EXTRA_CFLAGS = "-mfpu=vfp " 
        
        if hasThumb and originalCpuARCH == "armv7l":
            EXTRA_CFLAGS += "-mtune=cortex-a5 -mlittle-endian "

#9

OK dude … it’s been 3 times I’m asking the very same question

you HAVE TO use configure.py to generate a correct makefile

if you don’t it will never work


#10

Dude I generate my Makefile with python …/configure.py you think I don’t do it? Stop pretending things and ask me. I think you don’t get that that’s why you ask the same question over and over like a bot.

The problem that I have is that I’m building everything on arm board. I can’t just use the standard Android armv7 Makefile. I’m not using any Android NDK.

That’s why I have to adapt the configure.py file to use the normal linux config + arm config without Android NDK.


#11

I don’t pretend anything, but not only I asked if you used configure.py but also which flags you used

the script configure.py can detect some things but some other times not

for example: to compile 32-bit vs 64-bit

$ ../configure.py --target=i386-linux --enable-debug --enable-debugger
vs
$ ../configure.py --target=x86_64-linux --enable-debug --enable-debugger

or to compile for Android ARM
$ ../configure.py --enable-debug --arm-arch=armv7-a --target=arm-android

to get all the options available
$ ../configure.py --help

will get you something

--enable-abc-interp                 [=not enabled]
--enable-allocation-sampler         [=not enabled]
--enable-aot                        [=not enabled]
--enable-arm-fpu                    [=not enabled]
--enable-arm-hard-float             [=not enabled]
--enable-arm-neon                   [=not enabled]
--enable-arm-thumb                  [=not enabled]
--enable-buffer-guard               [=not enabled]
--enable-cache-gqcn                 [=not enabled]
--enable-compilepolicy              [=not enabled]
--enable-cpp-exceptions             [=not enabled]
--enable-debug                      [=not enabled]
--enable-debugger                   [=not enabled]
--enable-debugger-stub              [=not enabled]
--enable-epoc-emulator              [=not enabled]
--enable-eval                       [=not enabled]
--enable-exact-tracing              [=not enabled]
--enable-float                      [=not enabled]
--enable-halfmoon                   [=not enabled]
--enable-heap-alloca                [=not enabled]
--enable-heap-graph                 [=not enabled]
--enable-interior-pointers          [=not enabled]
--enable-interrupt-safepoint-poll   [=not enabled]
--enable-jit                        [=not enabled]
--enable-lzma-lib                   [=not enabled]
--enable-mac-gcc                    [=not enabled]
--enable-memory-profiler            [=not enabled]
--enable-methodenv-impl32           [=enabled]
--enable-mmgc-interior-pointers     [=not enabled]
--enable-mmgc-shared                [=not enabled]
--enable-optimize                   [=not enabled]
--enable-osr                        [=not enabled]
--enable-override-global-new        [=not enabled]
--enable-perfm                      [=not enabled]
--enable-protect-jitmem             [=not enabled]
--enable-safepoints                 [=not enabled]
--enable-selectable-exact-tracing   [=not enabled]
--enable-selftest                   [=not enabled]
--enable-shared-gcheap              [=not enabled]
--enable-shark                      [=not enabled]
--enable-shell                      [=enabled]
--enable-sin-cos-nonfinite          [=not enabled]
--enable-swf12                      [=not enabled]
--enable-swf13                      [=not enabled]
--enable-swf14                      [=not enabled]
--enable-swf15                      [=not enabled]
--enable-swf16                      [=not enabled]
--enable-swf17                      [=not enabled]
--enable-swf18                      [=not enabled]
--enable-swf19                      [=not enabled]
--enable-swf20                      [=not enabled]
--enable-sys-root-dir               [=not enabled]
--enable-tamarin                    [=enabled]
--enable-telemetry                  [=not enabled]
--enable-telemetry-sampler          [=not enabled]
--enable-threaded-interp            [=not enabled]
--enable-universal                  [=not enabled]
--enable-use-system-malloc          [=not enabled]
--enable-valgrind                   [=not enabled]
--enable-vtune                      [=not enabled]
--enable-wordcode-interp            [=not enabled]
--enable-zlib-include-dir           [=not enabled]
--enable-zlib-lib                   [=not enabled]
--target=...                        [=None]
--host=...                          [=None]
--ignore_unknown_flags=...          [=False]
--mac_sdk=...                       [=None]
--mac_xcode=...                     [=None]
--arm_arch=...                      [=armv7-a]

minus a couple of options that have been specifically for Redtamarin


#12

Thanx a lot for the usefull information. I’m sorry if I was rude I didn’t sleep for the last 2 days trying to figure out this mess. I was able to compile up until this place with my custom configure.py.

true "Preprocessing shell/../extensions/SelftestExec"
true "Compiling shell/../extensions/SelftestExec"
../shell/../extensions/SelftestExec.cpp: In member function ‘void avmplus::ST_mmgc_basics::ST_mmgc_basics::test12()’:
../shell/../extensions/SelftestExec.cpp:1775:8: warning: variable ‘a’ set but not used [-Wunused-but-set-variable]
  void *a = gc->Alloc(8, MMgc::kNone, MMgc::kAVMShellGCPartition);
        ^
../shell/../extensions/SelftestExec.cpp: In member function ‘void avmplus::ST_mmgc_weakref::ST_mmgc_weakref::test1()’:
../shell/../extensions/SelftestExec.cpp:3627:8: warning: variable ‘objs’ set but not used [-Wunused-but-set-variable]
     D* objs[1000];
        ^
true "Preprocessing shell/ShellWorkerGlue"
true "Compiling shell/ShellWorkerGlue"
true "Preprocessing shell/ShellWorkerDomainGlue"
true "Compiling shell/ShellWorkerDomainGlue"
true "Preprocessing shell/avmshellUnix"
true "Compiling shell/avmshellUnix"
true "Preprocessing shell/PosixFile"
true "Compiling shell/PosixFile"
true "Preprocessing shell/PosixPartialPlatform"
true "Compiling shell/PosixPartialPlatform"
true "Link shell/avmshell"
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assemble(nanojit::Fragment*, nanojit::LirFilter*) [clone .part.24]':
Assembler.cpp:(.text+0x68): undefined reference to `nanojit::Assembler::nPatchBranch(unsigned short*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::Assembler(nanojit::CodeAlloc&, nanojit::Allocator&, nanojit::Allocator&, nanojit::LogControl*, nanojit::Config const&, nanojit::MetaDataWriter*)':
Assembler.cpp:(.text+0x1b4): undefined reference to `nanojit::Assembler::nativePageReset()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::reset()':
Assembler.cpp:(.text+0x328): undefined reference to `nanojit::Assembler::nativePageReset()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_maybe_spill(nanojit::LIns*, bool)':
Assembler.cpp:(.text+0x39e): undefined reference to `nanojit::Assembler::asm_spill(unsigned int, int, signed char)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::deprecated_freeRsrcOf(nanojit::LIns*)':
Assembler.cpp:(.text+0x3ce): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x3d6): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x4e0): undefined reference to `nanojit::Assembler::asm_spill(unsigned int, int, signed char)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::freeResourcesOf(nanojit::LIns*)':
Assembler.cpp:(.text+0x544): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x54c): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evictIfActive(unsigned int)':
Assembler.cpp:(.text+0x5fc): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x604): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x60a): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evict(nanojit::LIns*)':
Assembler.cpp:(.text+0x6bc): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x6c4): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x6ca): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::patch(nanojit::GuardRecord*)':
Assembler.cpp:(.text+0x7b0): undefined reference to `nanojit::Assembler::nPatchBranch(unsigned short*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::patch(nanojit::SideExit*)':
Assembler.cpp:(.text+0x7da): undefined reference to `nanojit::Assembler::nPatchBranch(unsigned short*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::beginAssembly(nanojit::Fragment*)':
Assembler.cpp:(.text+0x806): undefined reference to `nanojit::Assembler::nativePageReset()'
Assembler.cpp:(.text+0x846): undefined reference to `nanojit::Assembler::nativePageSetup()'
Assembler.cpp:(.text+0x854): undefined reference to `nanojit::Assembler::nBeginAssembly()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::endAssembly(nanojit::Fragment*)':
Assembler.cpp:(.text+0x8c2): undefined reference to `nanojit::Assembler::genPrologue()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::releaseRegisters()':
Assembler.cpp:(.text+0x9a2): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x9aa): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assignSavedRegs()':
Assembler.cpp:(.text+0xf78): undefined reference to `nanojit::RegAlloc::savedRegs'
Assembler.cpp:(.text+0xf8e): undefined reference to `nanojit::RegAlloc::savedRegs'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assignParamRegs()':
Assembler.cpp:(.text+0xff8): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0xffc): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x1022): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x1026): undefined reference to `nanojit::RegAlloc::argRegs'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::findRegFor(nanojit::LIns*, unsigned long long)':
Assembler.cpp:(.text+0x10c4): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x10c8): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1100): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x11f6): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x1230): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x132e): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::findRegFor2(unsigned long long, nanojit::LIns*, unsigned int&, unsigned long long, nanojit::LIns*, unsigned int&)':
Assembler.cpp:(.text+0x1350): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1354): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x138c): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1390): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::getBaseReg2(unsigned long long, nanojit::LIns*, unsigned int&, unsigned long long, nanojit::LIns*, unsigned int&, int&)':
Assembler.cpp:(.text+0x15d8): undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):Assembler.cpp:(.text+0x15dc): more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::findSpecificRegFor(nanojit::LIns*, unsigned int)':
Assembler.cpp:(.text+0x1748): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x183e): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x1878): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x1974): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::deprecated_prepResultReg(nanojit::LIns*, unsigned long long)':
Assembler.cpp:(.text+0x199c): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x19a0): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x19d2): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x1abc): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x1af6): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x1bd8): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::prepareResultReg(nanojit::LIns*, unsigned long long)':
Assembler.cpp:(.text+0x1c00): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1c04): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1c38): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x1d22): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x1d60): undefined reference to `nanojit::Assembler::asm_spill(unsigned int, int, signed char)'
Assembler.cpp:(.text+0x1d9c): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x1e7e): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::getBaseReg(nanojit::LIns*, int&, unsigned long long)':
Assembler.cpp:(.text+0x1eac): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1eb0): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x1ee8): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x1fd8): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x200a): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x211c): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evictScratchRegsExcept(unsigned long long)':
Assembler.cpp:(.text+0x21ae): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x21b4): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x220c): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2218): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x223e): undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
Assembler.cpp:(.text+0x2250): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x2338): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x23a4): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x23a8): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x23c4): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evictSomeActiveRegs(unsigned long long)':
Assembler.cpp:(.text+0x2552): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2556): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2570): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::intersectRegisterState(nanojit::RegAlloc&)':
Assembler.cpp:(.text+0x2684): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x268a): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x26b0): undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
Assembler.cpp:(.text+0x26d4): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x27be): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x27c6): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x282c): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x2910): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x2946): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x2a26): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x2a3a): undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_leave_trace(nanojit::LIns*)':
Assembler.cpp:(.text+0x2a8c): undefined reference to `nanojit::Assembler::swapCodeChunks()'
Assembler.cpp:(.text+0x2a98): undefined reference to `nanojit::Assembler::nFragExit(nanojit::LIns*)'
Assembler.cpp:(.text+0x2a9e): undefined reference to `nanojit::RegAlloc::savedRegs'
Assembler.cpp:(.text+0x2aac): undefined reference to `nanojit::RegAlloc::savedRegs'
Assembler.cpp:(.text+0x2adc): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x2ae0): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x2b02): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x2b06): undefined reference to `nanojit::RegAlloc::argRegs'
Assembler.cpp:(.text+0x2b2a): undefined reference to `nanojit::Assembler::swapCodeChunks()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_xcc(nanojit::LIns*)':
Assembler.cpp:(.text+0x2cce): undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::unionRegisterState(nanojit::RegAlloc&)':
Assembler.cpp:(.text+0x2d6c): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2d72): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2d96): undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
Assembler.cpp:(.text+0x2dbe): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x2e9c): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2ea4): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x2f0a): undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
Assembler.cpp:(.text+0x2fee): undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
Assembler.cpp:(.text+0x3024): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x3102): undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
Assembler.cpp:(.text+0x3128): undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jmp(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
Assembler.cpp:(.text+0x32a0): undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jcc(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
Assembler.cpp:(.text+0x33c8): undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
Assembler.cpp:(.text+0x3410): undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
Assembler.cpp:(.text+0x3504): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x3508): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x352a): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jov(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
Assembler.cpp:(.text+0x36c0): undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
Assembler.cpp:(.text+0x3750): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x3754): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x3778): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::gen(nanojit::LirFilter*)':
Assembler.cpp:(.text+0x3884): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x388c): undefined reference to `nanojit::RegAlloc::retRegs'
Assembler.cpp:(.text+0x3894): undefined reference to `nanojit::ARM_REG_MASKS'
Assembler.cpp:(.text+0x389c): undefined reference to `nanojit::RegAlloc::retRegs'
Assembler.cpp:(.text+0x3ab8): undefined reference to `nanojit::Assembler::asm_call(nanojit::LIns*)'
Assembler.cpp:(.text+0x3ade): undefined reference to `nanojit::Assembler::asm_restorepc()'
Assembler.cpp:(.text+0x3b36): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x3c26): undefined reference to `nanojit::Assembler::asm_param(nanojit::LIns*)'
Assembler.cpp:(.text+0x3c46): undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
Assembler.cpp:(.text+0x3dce): undefined reference to `nanojit::Assembler::asm_ret(nanojit::LIns*)'
Assembler.cpp:(.text+0x3dfa): undefined reference to `nanojit::Assembler::asm_pushstate()'
Assembler.cpp:(.text+0x3fee): undefined reference to `nanojit::Assembler::asm_jtbl(unsigned short**, unsigned int)'
Assembler.cpp:(.text+0x401c): undefined reference to `nanojit::Assembler::asm_load128(nanojit::LIns*)'
Assembler.cpp:(.text+0x4060): undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
Assembler.cpp:(.text+0x4072): undefined reference to `nanojit::Assembler::asm_label()'
Assembler.cpp:(.text+0x40d0): undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
Assembler.cpp:(.text+0x4102): undefined reference to `nanojit::Assembler::asm_popstate()'
Assembler.cpp:(.text+0x4130): undefined reference to `nanojit::Assembler::asm_load32(nanojit::LIns*)'
Assembler.cpp:(.text+0x415e): undefined reference to `nanojit::Assembler::asm_load64(nanojit::LIns*)'
Assembler.cpp:(.text+0x41b2): undefined reference to `nanojit::Assembler::asm_store64(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
Assembler.cpp:(.text+0x41f4): undefined reference to `nanojit::Assembler::asm_store128(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
Assembler.cpp:(.text+0x4216): undefined reference to `nanojit::Assembler::asm_immi(nanojit::LIns*)'
Assembler.cpp:(.text+0x4238): undefined reference to `nanojit::Assembler::asm_immd(nanojit::LIns*)'
Assembler.cpp:(.text+0x4266): undefined reference to `nanojit::Assembler::asm_ui2f(nanojit::LIns*)'
Assembler.cpp:(.text+0x42a0): undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
Assembler.cpp:(.text+0x42e4): undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
Assembler.cpp:(.text+0x42ec): undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
Assembler.cpp:(.text+0x4328): undefined reference to `nanojit::Assembler::asm_cond(nanojit::LIns*)'
Assembler.cpp:(.text+0x4358): undefined reference to `nanojit::Assembler::asm_f2i(nanojit::LIns*)'
Assembler.cpp:(.text+0x43a0): undefined reference to `nanojit::Assembler::asm_cmov(nanojit::LIns*)'
Assembler.cpp:(.text+0x43dc): undefined reference to `nanojit::Assembler::asm_qjoin(nanojit::LIns*)'
Assembler.cpp:(.text+0x4400): undefined reference to `nanojit::Assembler::asm_immf(nanojit::LIns*)'
Assembler.cpp:(.text+0x4430): undefined reference to `nanojit::Assembler::asm_d2f(nanojit::LIns*)'
Assembler.cpp:(.text+0x446c): undefined reference to `nanojit::Assembler::asm_fop(nanojit::LIns*)'
Assembler.cpp:(.text+0x449c): undefined reference to `nanojit::Assembler::asm_qlo(nanojit::LIns*)'
Assembler.cpp:(.text+0x44d8): undefined reference to `nanojit::Assembler::asm_condf4(nanojit::LIns*)'
Assembler.cpp:(.text+0x452c): undefined reference to `nanojit::Assembler::asm_ffff2f4(nanojit::LIns*)'
Assembler.cpp:(.text+0x455c): undefined reference to `nanojit::Assembler::asm_i2f(nanojit::LIns*)'
Assembler.cpp:(.text+0x4570): undefined reference to `nanojit::Assembler::asm_memfence()'
Assembler.cpp:(.text+0x4594): undefined reference to `nanojit::Assembler::asm_immf4(nanojit::LIns*)'
Assembler.cpp:(.text+0x45d0): undefined reference to `nanojit::Assembler::asm_condd(nanojit::LIns*)'
Assembler.cpp:(.text+0x4600): undefined reference to `nanojit::Assembler::asm_f2d(nanojit::LIns*)'
Assembler.cpp:(.text+0x4630): undefined reference to `nanojit::Assembler::asm_neg_abs(nanojit::LIns*)'
Assembler.cpp:(.text+0x4676): undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
Assembler.cpp:(.text+0x46a6): undefined reference to `nanojit::Assembler::asm_neg_not(nanojit::LIns*)'
Assembler.cpp:(.text+0x46d6): undefined reference to `nanojit::Assembler::asm_f2f4(nanojit::LIns*)'
Assembler.cpp:(.text+0x4706): undefined reference to `nanojit::Assembler::asm_i2d(nanojit::LIns*)'
Assembler.cpp:(.text+0x4790): undefined reference to `nanojit::Assembler::asm_recip_sqrt(nanojit::LIns*)'
Assembler.cpp:(.text+0x47c0): undefined reference to `nanojit::Assembler::asm_d2i(nanojit::LIns*)'
Assembler.cpp:(.text+0x47f0): undefined reference to `nanojit::Assembler::asm_ui2d(nanojit::LIns*)'
Assembler.cpp:(.text+0x4820): undefined reference to `nanojit::Assembler::asm_qhi(nanojit::LIns*)'
Assembler.cpp:(.text+0x4850): undefined reference to `nanojit::Assembler::asm_f4comp(nanojit::LIns*)'
Assembler.cpp:(.text+0x48b4): undefined reference to `nanojit::Assembler::asm_brsavpc_impl(nanojit::LIns*, unsigned short*)'
Assembler.cpp:(.text+0x4ab8): undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
Assembler.cpp:(.text+0x4ace): undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::compile(nanojit::Fragment*, nanojit::Allocator&, bool)':
Assembler.cpp:(.text+0x4ba4): undefined reference to `nanojit::Assembler::nativePageReset()'
Assembler.cpp:(.text+0x4be4): undefined reference to `nanojit::Assembler::nativePageSetup()'
Assembler.cpp:(.text+0x4bf4): undefined reference to `nanojit::Assembler::nBeginAssembly()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_x(nanojit::LIns*)':
Assembler.cpp:(.text+0x2c9e): undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_xcc(nanojit::LIns*)':
Assembler.cpp:(.text+0x2cf4): undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_brsavpc(nanojit::LIns*)':
Assembler.cpp:(.text+0x317c): undefined reference to `nanojit::Assembler::asm_brsavpc_impl(nanojit::LIns*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jmp(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
Assembler.cpp:(.text+0x3320): undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jov(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
Assembler.cpp:(.text+0x369c): undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::initialize(nanojit::Assembler*)':
RegAlloc.cpp:(.text+0x8): undefined reference to `nanojit::RegAlloc::nInitManagedRegisters()'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::allocReg(nanojit::LIns*, unsigned long long, unsigned int)':
RegAlloc.cpp:(.text+0x36): undefined reference to `nanojit::RegAlloc::nHint(nanojit::LIns*)'
RegAlloc.cpp:(.text+0x60): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
RegAlloc.cpp:(.text+0x6a): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x6e): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x144): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
RegAlloc.cpp:(.text+0x178): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x17c): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x1d0): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
RegAlloc.cpp:(.text+0x21a): undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
RegAlloc.cpp:(.text+0x25c): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
RegAlloc.cpp:(.text+0x32a): undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::findVictim(unsigned long long, nanojit::LIns*, unsigned int)':
RegAlloc.cpp:(.text+0x382): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x38a): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x3e0): undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
RegAlloc.cpp:(.text+0x42e): undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
RegAlloc.cpp:(.text+0x44a): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x464): undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::allocSpecificReg(nanojit::LIns*, unsigned int)':
RegAlloc.cpp:(.text+0x4b4): undefined reference to `nanojit::ARM_REG_MASKS'
RegAlloc.cpp:(.text+0x4b8): undefined reference to `nanojit::ARM_REG_MASKS'
collect2: error: ld returned 1 exit status
../build/rules.mk:33: recipe for target 'shell/avmshell' failed

Let me tell you that at the moment this is Chinese for me because it is so long ago I did C++. I have no idea what does that mean at all.


#13

Following your instruction I tried this :slight_smile:

$ python ../configure.py --enable-debug --arm-arch=armv7-a
Generating /mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/Makefile...
HypriotOS/armv7: pirate@bambuserver1 in /mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release on master*
$ make
true "Preprocessing other-licenses/zlib/adler32"
true "Compiling other-licenses/zlib/adler32"
true "Preprocessing other-licenses/zlib/compress"
true "Compiling other-licenses/zlib/compress"
true "Preprocessing other-licenses/zlib/crc32"
true "Compiling other-licenses/zlib/crc32"
true "Preprocessing other-licenses/zlib/deflate"
true "Compiling other-licenses/zlib/deflate"
true "Preprocessing other-licenses/zlib/gzio"
true "Compiling other-licenses/zlib/gzio"
true "Preprocessing other-licenses/zlib/infback"
true "Compiling other-licenses/zlib/infback"
true "Preprocessing other-licenses/zlib/inffast"
true "Compiling other-licenses/zlib/inffast"
true "Preprocessing other-licenses/zlib/inflate"
true "Compiling other-licenses/zlib/inflate"
true "Preprocessing other-licenses/zlib/inftrees"
true "Compiling other-licenses/zlib/inftrees"
true "Preprocessing other-licenses/zlib/trees"
true "Compiling other-licenses/zlib/trees"
true "Preprocessing other-licenses/zlib/uncompr"
true "Compiling other-licenses/zlib/uncompr"
true "Preprocessing other-licenses/zlib/zutil"
true "Compiling other-licenses/zlib/zutil"
true "Library libzlib"
true "Preprocessing other-licenses/lzma/Alloc"
true "Compiling other-licenses/lzma/Alloc"
true "Preprocessing other-licenses/lzma/Bcj2"
true "Compiling other-licenses/lzma/Bcj2"
true "Preprocessing other-licenses/lzma/Bra"
true "Compiling other-licenses/lzma/Bra"
true "Preprocessing other-licenses/lzma/Bra86"
true "Compiling other-licenses/lzma/Bra86"
true "Preprocessing other-licenses/lzma/LzFind"
true "Compiling other-licenses/lzma/LzFind"
true "Preprocessing other-licenses/lzma/Lzma2Dec"
true "Compiling other-licenses/lzma/Lzma2Dec"
true "Preprocessing other-licenses/lzma/LzmaDec"
true "Compiling other-licenses/lzma/LzmaDec"
true "Preprocessing other-licenses/lzma/LzmaLib"
true "Compiling other-licenses/lzma/LzmaLib"
true "Preprocessing other-licenses/lzma/LzmaEnc"
true "Compiling other-licenses/lzma/LzmaEnc"
true "Library liblzma"
true "Skipping core-tracers generation since AVMSHELL_TOOL unset"
true "Preprocessing VMPI/PosixPortUtils"
PCH invalid; regenerating precompiled header vmbase/vmbase-precompiled.h.gch
true "Compiling VMPI/PosixPortUtils"
true "Preprocessing VMPI/PosixSpecificUtils"
true "Compiling VMPI/PosixSpecificUtils"
true "Preprocessing VMPI/UnixDebugUtils"
true "Compiling VMPI/UnixDebugUtils"
true "Preprocessing VMPI/GenericPortUtils"
true "Compiling VMPI/GenericPortUtils"
true "Preprocessing VMPI/ThreadsPosix"
true "Compiling VMPI/ThreadsPosix"
true "Preprocessing vmbase/VMThread"
true "Compiling vmbase/VMThread"
true "Preprocessing vmbase/Safepoint"
true "Compiling vmbase/Safepoint"
true "Library libvmbase"
true "Preprocessing AVMPI/AvmAssert"
PCH invalid; regenerating precompiled header MMgc/MMgc-precompiled.h.gch
In file included from ../vmbase/vmbase.h:10:0,
                 from ../MMgc/MMgc.h:10:
../MMgc/PageMap-inlines.h: In member function ‘MMgc::PageMap::PageType MMgc::PageMap::Tiered2::AddrToVal(uintptr_t) const’:
../vmbase/VMAssert.h:64:29: error: typedef ‘MMgc_static_assert_line_160’ locally defined but not used [-Werror=unused-local-typedefs]
         _STATIC_ASSERT_JOIN(MMgc_static_assert_line_, __LINE__)
                             ^
../vmbase/VMAssert.h:60:42: note: in definition of macro ‘_STATIC_ASSERT_DO_JOIN2’
     #define _STATIC_ASSERT_DO_JOIN2(x,y) x##y
                                          ^
../vmbase/VMAssert.h:58:38: note: in expansion of macro ‘_STATIC_ASSERT_DO_JOIN’
     #define _STATIC_ASSERT_JOIN(x,y) _STATIC_ASSERT_DO_JOIN(x,y)
                                      ^
../vmbase/VMAssert.h:64:9: note: in expansion of macro ‘_STATIC_ASSERT_JOIN’
         _STATIC_ASSERT_JOIN(MMgc_static_assert_line_, __LINE__)
         ^
../MMgc/StaticAssert.h:10:39: note: in expansion of macro ‘static_assert’
 #define MMGC_STATIC_ASSERT(condition) static_assert(condition,"MMGC_STATIC_ASSERT")
                                       ^
../MMgc/PageMap-inlines.h:160:13: note: in expansion of macro ‘MMGC_STATIC_ASSERT’
             MMGC_STATIC_ASSERT(kNonGC == 0);
             ^
../MMgc/GC-inlines.h: In member function ‘MMgc::PageMap::PageType MMgc::GC::GetPageMapValueGuarded(uintptr_t)’:
../vmbase/VMAssert.h:64:29: error: typedef ‘MMgc_static_assert_line_707’ locally defined but not used [-Werror=unused-local-typedefs]
         _STATIC_ASSERT_JOIN(MMgc_static_assert_line_, __LINE__)
                             ^
../vmbase/VMAssert.h:60:42: note: in definition of macro ‘_STATIC_ASSERT_DO_JOIN2’
     #define _STATIC_ASSERT_DO_JOIN2(x,y) x##y
                                          ^
../vmbase/VMAssert.h:58:38: note: in expansion of macro ‘_STATIC_ASSERT_DO_JOIN’
     #define _STATIC_ASSERT_JOIN(x,y) _STATIC_ASSERT_DO_JOIN(x,y)
                                      ^
../vmbase/VMAssert.h:64:9: note: in expansion of macro ‘_STATIC_ASSERT_JOIN’
         _STATIC_ASSERT_JOIN(MMgc_static_assert_line_, __LINE__)
         ^
../MMgc/StaticAssert.h:10:39: note: in expansion of macro ‘static_assert’
 #define MMGC_STATIC_ASSERT(condition) static_assert(condition,"MMGC_STATIC_ASSERT")
                                       ^
../MMgc/GC-inlines.h:707:9: note: in expansion of macro ‘MMGC_STATIC_ASSERT’
         MMGC_STATIC_ASSERT(PageMap::kNonGC == 0);
         ^
cc1plus: all warnings being treated as errors
../build/rules.mk:30: recipe for target 'MMgc/MMgc-precompiled.o' failed
make: *** [MMgc/MMgc-precompiled.o] Error 1

#14

OK, from that point you have two solutions

either downgrade your gcc/g++ versions, because avmplus/tamarin sources were setup for older (less strict) versions

for that, follow again what indicated in the Linux Ubuntu Setup / GCC page

or

you fix some C++ sources or compiler flags
you seem to have a lot of locally defined but not used [-Werror=unused-local-typedefs]
with cc1plus: all warnings being treated as errors

so you could modify configure.py and for your compiler version add -Wno-unused-local-typedefs
or
per file you could modify the manifest.mk to add something like

ifeq ($(TARGET_OS),linux)
$(curdir)/VMAssert.$(OBJ_SUFFIX): avmplus_CXXFLAGS += -Wno-error
endif

eg. in the file vmbase/manifest.mk

you can also test the CPU and the OS

ifeq ($(TARGET_OS),linux)
ifeq (arm,$(TARGET_CPU))
$(curdir)/VMAssert.$(OBJ_SUFFIX): avmplus_CXXFLAGS += -Wno-error
endif
endif

TL;DR
find a way to not treat warnings as errors with -Wno-error in general
or disable the specific compiler error with -Wno-unused-local-typedefs


#15

I figured it out already you can follow my tracks at https://github.com/gdeverlant/avm2pluscc_avm2/commits/arm32

I already downgraded from gcc4.9 to gcc4.8 same for g++4.9 to gcc4.8

I added in the configure.py all the -Wno-errors possible that I encountered.

Even after removing all those errors from the compilation process I end up at the same place with :

true "Preprocessing nanojit/NativeARM"
true "Compiling nanojit/NativeARM"
../nanojit/NativeARM.cpp: In member function ‘void nanojit::Assembler::asm_arg_float(nanojit::LIns*, nanojit::ParameterRegisters&)’:
../nanojit/NativeARM.cpp:696:30: error: request for member ‘getLsb’ in ‘avail’, which is of non-class type ‘nanojit::RegisterMask {aka long long unsigned int}’
         Register r = { avail.getLsb() }; // get first available from the proper class; backfills available regs
                              ^
../nanojit/NativeARM.cpp:700:37: error: ‘FpOverlapMask’ was not declared in this scope
         RegisterMask consumedRegs = FpOverlapMask[ REGNUM(r) ];
                                     ^
../nanojit/NativeARM.cpp:702:53: error: request for member ‘bitCount’ in ‘(params.nanojit::_ParameterRegisters::float_r & consumedRegs)’, which is of non-class type ‘nanojit::RegisterMask {aka long long unsigned int}’
         int nbits = (consumedRegs & params.float_r).bitCount();
                                                     ^
In file included from ../nanojit/NativeARM.cpp:7:0:
../nanojit/NativeARM.cpp:703:23: error: ‘bitCount’ was not declared in this scope
         NanoAssert( ((bitCount>=1) && arg->isF()) || // at least the SReg must be free
                       ^
../nanojit/nanojit.h:81:19: note: in definition of macro ‘__NanoAssertMsgf’
             if (!(a)) { \
                   ^
../nanojit/NativeARM.cpp:703:9: note: in expansion of macro ‘NanoAssert’
         NanoAssert( ((bitCount>=1) && arg->isF()) || // at least the SReg must be free
         ^
../build/rules.mk:30: recipe for target 'nanojit/NativeARM.o' failed
make: *** [nanojit/NativeARM.o] Error 1

#17

At last this is the furthest I’m able to go with a little modification inside of configure.py

python ../configure.py --enable-debug --arm-arch=armv7-a --target=arm-linux --host=arm-linux --enable-arm-hard-float --enable-arm-thumb --enable-arm-neon

true "Compiling shell/avmshellUnix"
true "Preprocessing shell/PosixFile"
true "Compiling shell/PosixFile"
true "Preprocessing shell/PosixPartialPlatform"
true "Compiling shell/PosixPartialPlatform"
true "Link shell/avmshell"
./libavmplus.a(LirHelper.o): In function `avmplus::LirHelper::emitStart(nanojit::Allocator&, nanojit::LirBuffer*, nanojit::LirWriter*&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../core/LirHelper.cpp:226: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../core/LirHelper.cpp:226: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../core/LirHelper.cpp:226: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../core/LirHelper.cpp:226: undefined reference to `nanojit::regNames'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::reset()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:306: undefined reference to `nanojit::Assembler::nativePageReset()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::registerConsistencyCheck()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:392: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:392: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:402: more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::findRegFor(nanojit::LIns*, unsigned long long)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:523: undefined reference to `nanojit::RegAlloc::nRegCopyCandidates(unsigned int, unsigned long long)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:541: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:541: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:541: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:541: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:542: undefined reference to `nanojit::Assembler::MOV(unsigned int, unsigned int)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:544: undefined reference to `nanojit::Assembler::asm_nongp_copy(unsigned int, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_maybe_spill(nanojit::LIns*, bool)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:701: undefined reference to `nanojit::Assembler::asm_spill(unsigned int, int, signed char)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evict(nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:767: undefined reference to `nanojit::Assembler::asm_restore(nanojit::LIns*, unsigned int)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::patch(nanojit::GuardRecord*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:812: undefined reference to `nanojit::Assembler::nPatchBranch(unsigned short*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_leave_trace(nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:857: undefined reference to `nanojit::Assembler::swapCodeChunks()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:865: undefined reference to `nanojit::Assembler::nFragExit(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:881: undefined reference to `nanojit::Assembler::swapCodeChunks()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::beginAssembly(nanojit::Fragment*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1075: undefined reference to `nanojit::Assembler::nativePageSetup()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1083: undefined reference to `nanojit::Assembler::nBeginAssembly()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assemble(nanojit::Fragment*, nanojit::LirFilter*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1142: undefined reference to `nanojit::Assembler::nPatchBranch(unsigned short*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::endAssembly(nanojit::Fragment*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1175: undefined reference to `nanojit::Assembler::genPrologue()'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::releaseRegisters()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1244: undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jmp(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1343: undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1378: undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jcc(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1404: undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1418: undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_brsavpc(nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1440: undefined reference to `nanojit::Assembler::asm_brsavpc_impl(nanojit::LIns*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_jov(nanojit::LIns*, nanojit::SeqBuilder<nanojit::LIns*>&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1456: undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1470: undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_x(nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1481: undefined reference to `nanojit::Assembler::B_cond(nanojit::ConditionCode, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::asm_xcc(nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1501: undefined reference to `nanojit::Assembler::asm_branch(bool, nanojit::LIns*, unsigned short*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::gen(nanojit::LirFilter*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1596: undefined reference to `nanojit::Assembler::asm_insert_random_nop()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1631: undefined reference to `nanojit::Assembler::asm_pushstate()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1634: undefined reference to `nanojit::Assembler::asm_popstate()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1641: undefined reference to `nanojit::Assembler::asm_restorepc()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1644: undefined reference to `nanojit::Assembler::asm_memfence()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1688: undefined reference to `nanojit::Assembler::asm_ret(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1706: undefined reference to `nanojit::Assembler::asm_immi(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1721: undefined reference to `nanojit::Assembler::asm_immd(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1728: undefined reference to `nanojit::Assembler::asm_immf(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1735: undefined reference to `nanojit::Assembler::asm_immf4(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1742: undefined reference to `nanojit::Assembler::asm_param(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1758: undefined reference to `nanojit::RegAlloc::retRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1758: undefined reference to `nanojit::RegAlloc::retRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1758: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1758: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1760: undefined reference to `nanojit::RegAlloc::retRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1760: undefined reference to `nanojit::RegAlloc::retRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1769: undefined reference to `nanojit::Assembler::asm_qlo(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1777: undefined reference to `nanojit::Assembler::asm_qhi(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1786: undefined reference to `nanojit::Assembler::asm_qjoin(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1800: undefined reference to `nanojit::Assembler::asm_cmov(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1812: undefined reference to `nanojit::Assembler::asm_load32(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1824: undefined reference to `nanojit::Assembler::asm_load64(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1832: undefined reference to `nanojit::Assembler::asm_load128(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1841: undefined reference to `nanojit::Assembler::asm_neg_not(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1877: undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1900: undefined reference to `nanojit::Assembler::asm_neg_abs(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1913: undefined reference to `nanojit::Assembler::asm_recip_sqrt(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1944: undefined reference to `nanojit::Assembler::asm_fop(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1952: undefined reference to `nanojit::Assembler::asm_i2d(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1970: undefined reference to `nanojit::Assembler::asm_ui2d(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1978: undefined reference to `nanojit::Assembler::asm_i2f(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1986: undefined reference to `nanojit::Assembler::asm_ui2f(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:1994: undefined reference to `nanojit::Assembler::asm_f2i(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2002: undefined reference to `nanojit::Assembler::asm_f2f4(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2013: undefined reference to `nanojit::Assembler::asm_ffff2f4(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2025: undefined reference to `nanojit::Assembler::asm_f4comp(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2033: undefined reference to `nanojit::Assembler::asm_d2f(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2041: undefined reference to `nanojit::Assembler::asm_f2d(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2049: undefined reference to `nanojit::Assembler::asm_d2i(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2093: undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2110: undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2111: undefined reference to `nanojit::Assembler::asm_store32(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2116: undefined reference to `nanojit::Assembler::asm_store64(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2128: undefined reference to `nanojit::Assembler::asm_store128(nanojit::LOpcode, nanojit::LIns*, int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2186: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2186: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2214: undefined reference to `nanojit::Assembler::asm_jtbl(unsigned short**, unsigned int)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2223: undefined reference to `nanojit::Assembler::asm_label()'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2226: undefined reference to `nanojit::Assembler::asm_inc_m32(unsigned int*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2272: undefined reference to `nanojit::Assembler::asm_branch_ov(nanojit::LOpcode, unsigned short*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2273: undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2286: undefined reference to `nanojit::Assembler::asm_arith(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2318: undefined reference to `nanojit::Assembler::asm_condd(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2327: undefined reference to `nanojit::Assembler::asm_condf4(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2353: undefined reference to `nanojit::Assembler::asm_cond(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2378: undefined reference to `nanojit::Assembler::asm_call(nanojit::LIns*)'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assignSavedRegs()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2449: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2449: undefined reference to `nanojit::RegAlloc::savedRegs'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::assignParamRegs()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2472: undefined reference to `nanojit::RegAlloc::argRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2472: undefined reference to `nanojit::RegAlloc::argRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2475: undefined reference to `nanojit::RegAlloc::argRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2475: undefined reference to `nanojit::RegAlloc::argRegs'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::printRegState()':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2564: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2564: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2570: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2570: undefined reference to `nanojit::regNames'
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evictScratchRegsExcept(unsigned long long)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2736: more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::evictScratchRegsExcept(unsigned long long)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2738: undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2761: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2761: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2761: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2761: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2769: undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2769: more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::intersectRegisterState(nanojit::RegAlloc&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2843: undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2844: more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::unionRegisterState(nanojit::RegAlloc&)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2907: undefined reference to `nanojit::RegAlloc::getSuitableRegFor(unsigned int, nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: undefined reference to `nanojit::ARM_REG_MASKS'
./libavmplus.a(Assembler.o):/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.cpp:2908: more undefined references to `nanojit::ARM_REG_MASKS' follow
./libavmplus.a(Assembler.o): In function `nanojit::Assembler::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/Assembler.h:558: undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
./libavmplus.a(LIR.o): In function `nanojit::LInsPrinter::formatIns(nanojit::InsBuf*, nanojit::LIns*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2474: undefined reference to `nanojit::RegAlloc::argRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2474: undefined reference to `nanojit::RegAlloc::argRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2474: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2474: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2480: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2480: undefined reference to `nanojit::RegAlloc::savedRegs'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2480: undefined reference to `nanojit::regNames'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/LIR.cpp:2480: undefined reference to `nanojit::regNames'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::initialize(nanojit::Assembler*)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:26: undefined reference to `nanojit::RegAlloc::nInitManagedRegisters()'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::allocReg(nanojit::LIns*, unsigned long long, unsigned int)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:54: undefined reference to `nanojit::RegAlloc::nHint(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:68: undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:72: undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:92: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:92: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:93: undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::findVictim(unsigned long long, nanojit::LIns*, unsigned int)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:117: undefined reference to `nanojit::RegAlloc::canRemat(nanojit::LIns*)'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:120: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:120: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:120: undefined reference to `nanojit::RegAlloc::getAvailableReg(nanojit::LIns*, unsigned int, unsigned long long)'
./libavmplus.a(RegAlloc.o): In function `nanojit::RegAlloc::allocSpecificReg(nanojit::LIns*, unsigned int)':
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:145: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:145: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:163: undefined reference to `nanojit::ARM_REG_MASKS'
/mnt/virtual/avm2pluscc_avm2/avmplus/objdir-release/../nanojit/RegAlloc.cpp:163: undefined reference to `nanojit::ARM_REG_MASKS'
collect2: error: ld returned 1 exit status
../build/rules.mk:33: recipe for target 'shell/avmshell' failed
make: *** [shell/avmshell] Error 1

#18

Concerning this problem on my Debian Jessie I found on Launchpad what I’m missing:

https://packages.ubuntu.com/trusty/armhf/libc6-dev-armel/filelist

I can’t figure out how to find this for Debian Jessie. I’ve installed it but the one file is missing…

https://packages.debian.org/jessie/armhf/libc6-dev/filelist

Ok at the end I understand now that I don’t need that file because If I’m compiling on hard chroot the compiler will use the hardware Floating Point Unit and eabi.


#19

So there is this error we need to overcome:

true "Preprocessing nanojit/RegAlloc"
true "Compiling nanojit/RegAlloc"
true "Preprocessing nanojit/NativeARM"
true "Compiling nanojit/NativeARM"
../nanojit/NativeARM.cpp: In member function ‘void nanojit::Assembler::asm_arg_float(nanojit::LIns*, nanojit::ParameterRegisters&)’:
../nanojit/NativeARM.cpp:696:30: error: request for member ‘getLsb’ in ‘avail’, which is of non-class type ‘nanojit::RegisterMask {aka long long unsigned int}’
         Register r = { avail.getLsb() }; // get first available from the proper class; backfills available regs
                              ^
../nanojit/NativeARM.cpp:700:37: error: ‘FpOverlapMask’ was not declared in this scope
         RegisterMask consumedRegs = FpOverlapMask[ REGNUM(r) ];
                                     ^
../nanojit/NativeARM.cpp:702:53: error: request for member ‘bitCount’ in ‘(params.nanojit::_ParameterRegisters::float_r & consumedRegs)’, which is of non-class type ‘nanojit::RegisterMask {aka long long unsigned int}’
         int nbits = (consumedRegs & params.float_r).bitCount();
                                                     ^
In file included from ../nanojit/NativeARM.cpp:7:0:
../nanojit/NativeARM.cpp:703:23: error: ‘bitCount’ was not declared in this scope
         NanoAssert( ((bitCount>=1) && arg->isF()) || // at least the SReg must be free
                       ^
../nanojit/nanojit.h:81:19: note: in definition of macro ‘__NanoAssertMsgf’
             if (!(a)) { \
                   ^
../nanojit/NativeARM.cpp:703:9: note: in expansion of macro ‘NanoAssert’
         NanoAssert( ((bitCount>=1) && arg->isF()) || // at least the SReg must be free
         ^
../build/rules.mk:30: recipe for target 'nanojit/NativeARM.o' failed
make: *** [nanojit/NativeARM.o] Error 1

#20

You do realise that at one moment you gonna have to actually go in the C++ sources and write some code?

Configuring the project, the compiler, the flags, etc. is a start but not close to enough

first, not sure where you got your avmplus sources but avm2pluscc_avm2 ?
why not simply reuse adobe/avmplus ?

also about the nanoJIT sources, first you mentioned
doublec/nanojit-central
but now it seems you’re using
dibyendumajumdar/nanojit

those are not simple piece of software you can simply patch together and expect it gonna work on the first test

personally I would have tried to compile for ARM32 first by only modifiying a copy of adobe/avmplus
like create a arm32-linux target, and if that works then move to an arm64-linux target
trying to replace the original nanojit of adobe/avmplus with the one from doublec/nanojit-central

also remember that the Android NDK used at the times in avmplus was the one from 5+ years ago
you can not really expect to replace it with the latest Android NDK and voila it works
many API must have changed since then

and cherry on top, there could be many differences between an Android NDK meant to compile for Android ARM and compiling for Linux ARM without that Android NDK

for a --target=i386-linux you should try to go for a --target=arm32-linux
and
for a --target=x86_64-linux you should try to go for a --target=arm64-linux

the CPU architecture may be the same (eg. ARM) but depending on the TARGET_OS
wether it is ARM for WindowsRT, ARM for Android or ARM for Linux, the API are not gonna be the same

finally when I read

So there is this error we need to overcome

there is no we here, I can try to help with few indicators on how to deal with compiling avmplus
but again as explained in Supporting ARM or not it is not my goal to compile for ARM with Redtamarin, it is many months of programming effort.

Also check your attitude, does not really help to want to help you.


#21

I’m not expecting you to help me at all, the we was for any one in the community. What is it with my attitude I don’t understand please explain. This is the amount of effort I’ve put since the last 3 days for free. I will find the right people to advise me on the big task. In such short amount of time I was able to learn a lot of new knowledge and it is challenging you know.

I know it will not be easy and that I will have to learn some C++ it is a matter of patience. I appreciate your help and your wisdom about the subject.

I appologize if I lost my patience while exchanging I was really tired and itchy… I didn’t sleep that much trying to go through all the mess which is ARM and C++.


#22

This version of the project support Python 3 and --enable-alchemy-posix. Which to my opinion is the latest version of all the repos. I’ve checked and the source code is the same as avmplus from Adobe.