I don't know which processor types are available for each CPU family. I would need help filling the selection lists.
Please see details in :
http://bugs.freepascal.org/view.php?id=20311
Regards,
Juha

Mailing lists / lazarus / 2013-09
24 messages · 4 people · –
Reply by email Subscribe to this list Your subscription
Read-only archive. Use j and k to move between messages.
I don't know which processor types are available for each CPU family. I would need help filling the selection lists.
Please see details in :
http://bugs.freepascal.org/view.php?id=20311
Regards,
Juha
Juha Manninen wroteI don't know which processor types are available for each CPU family. I would need help filling the selection lists. Please see details in : http://bugs.freepascal.org/view.php?id=20311
What do you need for this: fpc -i output?
Mark Morgan Lloyd wroteWhat do you need for this: fpc -i output?
Yes, running on different CPUs. It is this section: Supported CPU instruction sets:
My version shows only "ATHLON64" which I fixed now in the code for x86_64 CPU.
Mattias earlier told me about "fpc -P" option for selecting the CPU, but it would require a cross-compiled fpc or something. For me only this works:
$ fpc -i -Px86_64
Other values like "fpc -i -Pi386" or "fpc -i -Parm" give an error: Error: ppc386 can't be executed, error message: Failed to execute "ppc386", error code: 127
One thing is that selecting a different CPU family and processor type in Lazarus IDE is not supported by FPC in most cases, but at least we should see realistic choices in the list.
Juha
When you only do a
make all CPU_TARGET=Whatever_CPU OS_TARGET=Whatever_Target
then a compiler for that target will be created (e.g. ppc386, ppcx64, ppc68k, etc.). You should not use that compiler for production however as it is compiled using the RTL of your starting compiler. For checking the supported CPUs using "-i" this will be sufficient however.
Thereby "Whatever_CPU" is one of FPC's supported CPUs (e.g. i386, x86_64, m68k, mips, etc.) and "Whatever_Target" is a target supported on that CPU (mostly you can use "linux", for AVR you'll need to use "embedded" AFAIK).
Alternatively you can just take a look at the compiler/$cpu/cpuinfo.pas units where there is a tcpuinfo enum and a cputypestr array. The latter is what you can pass using -Cp.
Regards,
Sven
In any event, I'll work through the various compilers (running natively) that I've got available to me. They won't be the most recent in some cases since my "fast" Qemu system blew up, so e.g. somebody else could usefully check e.g. 68k and in particular ARM.
Is there anything else that I could usefully grab at the same time, e.g. ABI types? In particular, noting that you've fixed http://bugs.freepascal.org/view.php?id=20310 but is there some variant of fpc -i etc. that lists applicable assembler styles?
m68k has (since a few days) the following:
68000
68020
isaa
isaa+
isab
isac
The assembler styles are reported in the "-h" output at "-R". They are adjusted for each target. The FPU type for -Cf might also be interesting (especially for ARM). The output is available in fpc -i as well.
Regards,
Sven
"-h" output at "-R" says here:
-R<x> Assembler reading style:
-Rdefault Use default assembler for target
Well, I would be happy if somebody provides a patch for the remaining lists. The code is structured so that it is easy to add processor type lists. See TCompilerConfigTargetFrame.UpdateByTargetCPU
This issue is now low priority for me because of 3 reasons:
1. In a way it is fixed now as wrong values cannot be selected any more. Now this issue is something between a bug and a feature.
2. This development is parallel to the "All Options" parser and GUI that I made earlier.
It reads options directly from FPC, but only for the current platform / CPU. How these two things could be combined? I don't know and I don't think about it now. Later maybe...
3. I want to get some bugs fixed for the coming Lazarus 1.2 branch. They get higher priority.
Next week I start new work at a place far away from my home. I stay there for 2 weeks and then continue by tele-cummuting. I keep my thumbs up for myself that it will work out.
In any case my resources for this project will be limited then.
Regards,
Juha
Juha Manninen wrote"-h" output at "-R" says here: -R<x> Assembler reading style: -Rdefault Use default assembler for target
Yes, some have only one assembler reader. On i386 and AFAIK x86_64 there are different styles possible. Don't know on other CPUs.
Regards,
Sven
Sven Barth wroteYes, some have only one assembler reader. On i386 and AFAIK x86_64 there are different styles possible. Don't know on other CPUs.
This is x86_64. Apparently it only has one reader.
Juha
"-h" output at "-R" says here: -R<x> Assembler reading style: -Rdefault Use default…
Juha Manninen wrote2. This development is parallel to the "All Options" parser and GUI that I made earlier. It reads options directly from FPC, but only for the current platform / CPU.
Correction: actually the options are read with user defined TargetOS
and TargetCPU as parameters for FPC, like :
ParsedTarget := '-T$(TargetOS) -P$(TargetCPU)';
GlobalMacroList.SubstituteStr(ParsedTarget);
Lines:=RunTool(fCompilerExecutable, ParsedTarget + ' -i');But it works only if the compiler supports them.
Regards,
Juha
This is x86_64. Apparently it only has one reader. Juha
Juha Manninen wroteOn Fri, Sep 13, 2013 at 1:03 PM, Sven Barth wrote: > Yes, some have only one assembler reader. On i386 and AFAIK x86_64 there are > different styles possible. Don't know on other CPUs. This is x86_64. Apparently it only has one reader.
It seems that the help output is not up to date there...
Here is the list of supported assembler readers (all also support "standard" or "default" which I'll mark with a "*"):
- i386
att (*), gas (alias for att), intel
- x86_64
att (*), gas (alias for att), intel
- sparc
att(*)
- ppc
att(*)
- mips
att ("standard"/"default" seems to be missing here...)
- m68k
mot(*)
- i8086
att (*), gas (alias for att), intel
- avr
att (*)
- arm
att (*)
- jvm
None!
Regards,
Sven
m68k has (since a few days) the following: 68000 68020 isaa isaa+ isab isac The assembler…
fpc -i now shows also the assembler reader modes using the data from the compiler.
m68k has (since a few days) the following: 68000 68020 isaa isaa+ isab isac The assembler…
At least with the versions I've currently got available it looks as though -R and -Cf defer to -i. Specifically, I see something like this in all cases except x86:
-A<x> Output format:
-Adefault Use default assembler
-Aas Assemble using GNU AS
-Cf<x> Select fpu instruction set to use, see fpc -i for possible values
-R<x> Assembler reading style:
-Rdefault Use default assembler for target
I think the -A output for SPARC Solaris might be different, but I can't easily test right now.
Output for -i from native 2.6.0 or 2.6.2, unless noted. Apologies if this is excessively noisy.
SPARC, Linux:
-------------
Compiler CPU Target: sparc
Supported targets:
Solaris for SPARC (under development)
Linux for SPARC
Supported CPU instruction sets:
SPARC V7
SPARC V8
SPARC V9
Supported FPU instruction sets:
SOFT
HARD
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
Supported Optimizations:
REGVAR
LOOPUNROLL
TAILREC
CSE
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
ARMEL, Linux on Qemu:
---------------------
Compiler CPU Target: arm
Supported targets:
Linux for ARMEL
WinCE for ARM
GameBoy Advance
PalmOS
Nintendo DS
Embedded
Symbian OS for ARM
Darwin for ARM
Supported CPU instruction sets:
ARMV3
ARMV4
ARMV5
ARMV6
ARMV7
ARMV7M
CORTEXM3
Supported FPU instruction sets:
SOFT
LIBGCC
FPA
FPA10
FPA11
VFPV2
VFPV3
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
Supported Optimizations:
REGVAR
STACKFRAME
LOOPUNROLL
TAILREC
CSE
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
LPC2114
LPC2124
LPC2194
AT91SAM7S256
AT91SAM7SE256
AT91SAM7X256
AT91SAM7XC256
STM32F103RE
STELLARIS
MIPS, Linux on Qemu (2.7.1, r22655):
------------------------------------
Compiler CPU Target: mipseb
Supported targets:
Linux for MIPSEB
Supported CPU instruction sets:
mips2
mips1
mips2
mips3
mips4
mips5
mips32
mips32r2
Supported FPU instruction sets:
SOFT
FPU_MIPS2
FPU_MIPS3
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
EABIHF
Supported Optimizations:
REGVAR
LOOPUNROLL
CSE
ORDERFIELDS
FASTMATH
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
MIPSEL, Linux on Qemu (2.7.1, r22655):
--------------------------------------
Compiler CPU Target: mipsel
Supported targets:
Linux for MIPSEL
Supported CPU instruction sets:
mips2
mips1
mips2
mips3
mips4
mips5
mips32
mips32r2
Supported FPU instruction sets:
SOFT
FPU_MIPS2
FPU_MIPS3
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
EABIHF
Supported Optimizations:
REGVAR
LOOPUNROLL
CSE
ORDERFIELDS
FASTMATH
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
I've not been tracking ARM or MIPS(EL) on Linux closely over the last few months, and have never looked at them on e.g. Android.
I don't have a known-working x86-64 and am assuming that somebody (anybody!) else is better placed to check x86 on e.g. Windows. I can manage Linux and probably NT if necessary.
I can't conveniently test either SPARC or x86-64 Solaris at the moment. I can probably manage SPARC if necessary.
I can't test PPC on Linux at the moment due to hardware failure. Last time I investigated FPC didn't run on PPC Mac classic OS. I might be able to fix Linux.
Am 13.09.2013 21:35 schrieb "Mark Morgan Lloyd" <
e.g. ABI types? In particular, noting that you've fixed http://bugs.freepascal.org/view.php?id=20310 but is there some variant of fpc -i etc. that lists applicable assembler styles?
>> > The assembler styles are reported in the "-h" output at "-R". They are
adjusted for each target. The FPU type for -Cf might also be interesting (especially for ARM). The output is available in fpc -i as well.
At least with the versions I've currently got available it looks as
though -R and -Cf defer to -i. Specifically, I see something like this in all cases except x86:
easily test right now.
Output for -i from native 2.6.0 or 2.6.2, unless noted. Apologies if this
is excessively noisy.
(snip)
I've not been tracking ARM or MIPS(EL) on Linux closely over the last few
months, and have never looked at them on e.g. Android.
I don't have a known-working x86-64 and am assuming that somebody
(anybody!) else is better placed to check x86 on e.g. Windows. I can manage Linux and probably NT if necessary.
I can't conveniently test either SPARC or x86-64 Solaris at the moment. I
can probably manage SPARC if necessary.
I can't test PPC on Linux at the moment due to hardware failure. Last
time I investigated FPC didn't run on PPC Mac classic OS. I might be able to fix Linux.
You only need to test each CPU. The options don't differ per OS.
Regards,
Sven
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20130914/9a417430/attachment-0001.html>
It seems that the help output is not up to date there... Here is the list of supported…
Ok, the three options in Lazarus IDE for Intel CPUs are "Default", "Intel" and "AT&T"
It is a little misleading but still correct.
Other CPUs only have the default and no selection is needed. Is this correct? It means the GUI is good now. It hides the assembler settings for non-Intel CPUs.
Juha
At least with the versions I've currently got available it looks as though -R and -Cf…
I didn't quite understand the relation between -A and -R. Should I care about it?
Output for -i from native 2.6.0 or 2.6.2, unless noted. Apologies if this is excessively noisy.
This was useful information, thanks.
Now only m68k and powerpc are missing.
I improved the selections in r42791. Please check out.
BTW, FPC help output for mips and mipsel list "mips2" twice.
Juha
Not sure (defer to Sven). I thought -R worth noting since, like -A, there are fewer options with non-x86 CPUs.
I'll see if I can fill in any gaps.
I improved the selections in r42791. Please check out. BTW, FPC help output for mips and mipsel list "mips2" twice.
I noticed that, and almost highlighted it as a warning that your parser would need to cope.
By the way, good luck with the new job.
Mark Morgan Lloyd wrote> BTW, FPC help output for mips and mipsel list "mips2" twice. I noticed that, and almost highlighted it as a warning that your parser would need to cope.
The parser is another thing. Its idea was to be as "dummy" as possible, not analyzing the meaning of options but only make a GUI for them.
However the FPC help output is so ambiguous that the parser must guess and hard-wire many things.
Hopefully we can make the output more precise in future. Dmitry Boyarintsev is working on JSON based configuration. It would be precise and easier to parse. We may offer it for FPC project as a patch sometime in future. But that is for another discussion ...
By the way, good luck with the new job.
Thanks!
Juha
Not sure (defer to Sven). I thought -R worth noting since, like -A, there are fewer…
FPC 2.6.0 on SPARC Solaris 8:
-----------------------------
Compiler CPU Target: sparc
Supported targets:
Solaris for SPARC (under development)
Linux for SPARC
Supported CPU instruction sets:
SPARC V7
SPARC V8
SPARC V9
Supported FPU instruction sets:
SOFT
HARD
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
Supported Optimizations:
REGVAR
LOOPUNROLL
TAILREC
CSE
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
I don't know whether this is relevant or useful but
// Note for casual readers: gas (GNU as) uses -Av7, -Av8, -Av9 etc. on
SPARC,
// rather than variants of the -m option used by most other CPUs. Solaris as
// uses -xarch=v7, -xarch=v8 etc., that form is not supported here since
there
// are probably other incompatibilties between the GNU and Solaris binutils
// that need to be reviewed.
//
// v9 is required as the default since the RTL started using membar at
2.2.2.Ok, the three options in Lazarus IDE for Intel CPUs are "Default", "Intel" and "AT&T" It…
Yes, I agree. :)
Regards,
Sven
On Fri, Sep 13, 2013 at 10:35 PM, Mark Morgan Lloyd I didn't quite understand the…
The -A option defines which assembler should be used to convert the assembly language files to object files. This for example includes the internal assemblers which directly assemble to object code.
The -R option defines what dialect is used for reading inline assembly. The two options are not related in any way.
Regards,
Sven
FPC 2.6.0 on SPARC Solaris 8: ----------------------------- Compiler CPU Target: sparc…
Mark Morgan Lloyd wrote>> This was useful information, thanks. >> Now only m68k and powerpc are missing. > > I'll see if I can fill in any gaps.
My Mac's not booting (capacitor plague?) and while somebody's given me a couple more as developer machines they've got some proprietary operating system with which I'm not familiar ;-)
So I've done all I'm going to be able to do for the moment, since I've got a lot on my plate and it will be weeks before I can look at the new machines.
This from 2.6.2 on a Linux Mac:
Compiler CPU Target: powerpc
Supported targets:
Linux for PowerPC
Mac OS for PowerPC
Darwin for PowerPC
NetBSD for PowerPC (under development)
MorphOS
AmigaOS for PowerPC
Wii (under development)
Supported CPU instruction sets:
604
750
7400
970
Supported FPU instruction sets:
NONE
SOFT
STANDARD
Supported ABI targets:
DEFAULT
SYSV
AIX
EABI
ARMEB
Supported Optimizations:
REGVAR
LOOPUNROLL
TAILREC
CSE
Supported Whole Program Optimizations:
All
DEVIRTCALLS
OPTVMTS
SYMBOLLIVENESS
Supported Microcontroller types:
Mark Morgan Lloyd wroteThis from 2.6.2 on a Linux Mac: Compiler CPU Target: powerpc
Thanks.
I updated the processor type list for PowerPc in r42909.
Juha