[fpc-pascal] is there a ready to use FPC Cross compiler x86-Linux -> MIPS-linux?

Dennis Poon dennis at avidsoft.com.hk
Sun Jun 16 18:16:31 CEST 2013


I tried your suggestion and the result is exactly the same. So, I guess 
putting the path in BINUTILSPREFIX has the same effect as CROSSBINDIR.
It will just concatenate both variable to get the full 'as' and 'ar' 
file paths.

As per your second suggestion, my knowledge of assembler is too limited. 
I don't how hot to fiddle the paramters passed to the 'as'.
I typed the -help below. Can anyone give me some advice as to how to 
solve the 'as' problem:
   Error: illegal operands `lui $a2,%hi(__dl_fini)'

Usage: /home/dennis/toolchains/staging_dir_mips/bin/mips-linux-as 
[option...] [asmfile...]
   -a[sub-option...]      turn on listings
                             Sub-options [default hls]:
                             c      omit false conditionals
                             d      omit debugging directives
                             h      include high-level source
                             l      include assembly
                             m      include macro expansions
                             n      omit forms processing
                             s      include symbols
                             =FILE  list to FILE (must be last sub-option)
   --alternate             initially turn on alternate macro syntax
   -D                      produce assembler debugging messages
   --defsym SYM=VAL        define symbol SYM to given value
   --em=[mipsbelf | mipslelf | mipself]
                           emulate output (default mipsbelf)
   --execstack             require executable stack for this object
   --noexecstack           don't require executable stack for this object
   -f                      skip whitespace and comment preprocessing
   -g --gen-debug          generate debugging information
   --gstabs                generate STABS debugging information
   --gstabs+               generate STABS debug info with GNU extensions
   --gdwarf-2              generate DWARF2 debugging information
   --hash-size=<value>     set the hash table size close to <value>
   --help                  show this message and exit
   --target-help           show target specific options
   -I DIR                  add DIR to search list for .include directives
   -J                      don't warn about signed overflow
   -K                      warn when differences altered for long 
   -L,--keep-locals        keep local symbols (e.g. starting with `L')
   -M,--mri                assemble in MRI compatibility mode
   --MD FILE               write dependency information in FILE (default 
   -nocpp                  ignored
   -o OBJFILE              name the object-file output OBJFILE (default 
   -R                      fold data section into text section
                           prefer smaller memory use at the cost of longer
                           assembly times
   --statistics            print various measured statistics from execution
   --strip-local-absolute  strip local absolute symbols
   --traditional-format    Use same format as native assembler when possible
   --version               print assembler version number and exit
   -W  --no-warn           suppress warnings
   --warn                  don't suppress warnings
   --fatal-warnings        treat warnings as errors
   --itbl INSTTBL          extend instruction set to include instructions
                           matching the specifications defined in file 
   -w                      ignored
   -X                      ignored
   -Z                      generate object file even after errors
   --listing-lhs-width     set the width in words of the output data 
column of
                           the listing
   --listing-lhs-width2    set the width in words of the continuation lines
                           of the output data column; ignored if smaller 
                           the width of the first line
   --listing-rhs-width     set the max width in characters of the lines from
                           the source file
   --listing-cont-lines    set the maximum number of continuation lines used
                           for the output data column of the listing
   @FILE                   read options from FILE
MIPS options:
-EB            generate big endian output
-EL            generate little endian output
-g, -g2            do not remove unneeded NOPs or swap branches
-G NUM            allow referencing objects up to NUM bytes
             implicitly with the gp register [default 8]
-mips1            generate MIPS ISA I instructions
-mips2            generate MIPS ISA II instructions
-mips3            generate MIPS ISA III instructions
-mips4            generate MIPS ISA IV instructions
-mips5                  generate MIPS ISA V instructions
-mips32                 generate MIPS32 ISA instructions
-mips32r2               generate MIPS32 release 2 ISA instructions
-mips64                 generate MIPS64 ISA instructions
-mips64r2               generate MIPS64 release 2 ISA instructions
-march=CPU/-mtune=CPU    generate code/schedule for CPU, where CPU is 
one of:
                         mips1, mips2, mips3, mips4, mips5, mips32,
                         mips32r2, mips64, mips64r2, r3000, r2000, r3900,
                         r6000, r4000, r4010, vr4100, vr4111, vr4120,
                         vr4130, vr4181, vr4300, r4400, r4600, orion,
                         r4650, r8000, r10000, r12000, vr5000, vr5400,
                         vr5500, rm5200, rm5230, rm5231, rm5261, rm5721,
                         rm7000, rm9000, 4kc, 4km, 4kp, m4k, 24k, 24kc,
                         24kf, 24kx, 5kc, 5kf, 20kc, sb1, from-abi
-mCPU            equivalent to -march=CPU -mtune=CPU. Deprecated.
-no-mCPU        don't generate code specific to CPU.
             For -mCPU and -no-mCPU, CPU must be one of:
                         3900, 4010, 4100, 4650
-mips16            generate mips16 instructions
-no-mips16        do not generate mips16 instructions
-mdsp            generate DSP instructions
-mno-dsp        do not generate DSP instructions
-mmt            generate MT instructions
-mno-mt            do not generate MT instructions
-mfix-vr4120        work around certain VR4120 errata
-mfix-vr4130        work around VR4130 mflo/mfhi errata
-mgp32            use 32-bit GPRs, regardless of the chosen ISA
-mfp32            use 32-bit FPRs, regardless of the chosen ISA
-mno-shared        optimize output for executables
-msym32            assume all symbols have 32-bit values
-O0            remove unneeded NOPs, do not swap branches
-O            remove unneeded NOPs and swap branches
--[no-]construct-floats [dis]allow floating point values to be constructed
--trap, --no-break    trap exception on div by 0 and mult overflow
--break, --no-trap    break exception on div by 0 and mult overflow
-KPIC, -call_shared    generate SVR4 position independent code
-non_shared        do not generate position independent code
-xgot            assume a 32 bit GOT
-mpdr, -mno-pdr        enable/disable creation of .pdr sections
-mshared, -mno-shared   disable/enable .cpload optimization for
                         non-shared code
-mabi=ABI        create ABI conformant object file for:
                         32, o64, n32, 64, eabi
-32            create o32 ABI object file (default)
-n32            create n32 ABI object file
-64            create 64 ABI object file

> On 15.06.2013 19:19, Dennis Poon wrote:
>> I eventually found this page which talked about downloading a special
>> toolchain from openwrt web site
>> http://www.dd-wrt.com/phpBB2/viewtopic.php?t=61112
>> I followed its instruction and successfully compiled a helloworld c
>> program and
>> successfully RUN the helloworld binary on Netgear 3700 running DD-Wrt !
>> I was overjoyed.
>> Then I tried to modify the steps to compile fpc
>> my toolchains  is at /home/dennis/toolchains/staging_dir_mips/bin/
>> and in this folder, there are files: mips-linux-ar  and mips-linux-as
>> so I
>> make clean all CPU_TARGET=mips OS_TARGET=linux
>> BINUTILSPREFIX=/home/dennis/toolchains/staging_dir_mips/bin/mips-linux-
> It seems not to be your problem, but your arguments are not entirely 
> correct (and it "works" just by accident). BINUTILSPREFIX is *only* 
> the prefix of the binaries, in your case "mips-linux-". The path must 
> be passed as CROSSBINDIR like so: 
> CROSSBINDIR=/home/dennis/toolchains/staging_dir_mips/bin
> And did you choose the correct endianess? Aka CPU_TARGET=mipsel or 
> CPU_TARGET=mipseb?
> Maybe you could try to fiddle around with the arguments passed to 
> mips-linux-as by hand. This means take the command below and try to 
> get the prt0.as file to assemble:
> /home/dennis/toolchains/staging_dir_mips/bin/mips-linux-as -32 -mips32 
> -EB -o /home/dennis/fpc/2.7.1/rtl/units/mips-linux/prt0.o mips/prt0.as
> (current directory should be /home/dennis/fpc/2.7.1/rtl/linux )
> Regards,
> Sven

More information about the fpc-pascal mailing list