[fpc-devel] Revisiting MacOS for PPC (and possibly 68K)
Mark Morgan Lloyd
markMLl.fpc-devel at telemetry.co.uk
Mon Dec 10 18:18:59 CET 2012
Sven Barth wrote:
> Am 10.12.2012 17:24, schrieb Mark Morgan Lloyd:
>> Sven Barth wrote:
>>> Am 10.12.2012 12:15, schrieb Mark Morgan Lloyd:
>>>> I'm currently cross-compiling the MacOS RTL for PPC on a PC. I've
>>>> fixed some trivial issues that had crept in since this was last
>>>> maintained, some of which affect other targets, but am stuck at the
>>>> errors below.
>>>>
>>>> /usr/local/src/fpc/fpc-trunk/compiler/ppcXppc -Ur -Tmacos -Ppowerpc
>>>> -XPpowerpc-macos- -Xr -Ur -Xs -O2 -n -Fi../inc -Fi../powerpc -FE.
>>>> -FU/usr/local/src/fpc/fpc-trunk/rtl/units/powerpc-macos -dpowerpc
>>>> -dRELEASE -Us -Sg system.pp
>>>> text.inc(1789,14) Warning: Implicit string type conversion from
>>>> "AnsiString" to "UnicodeString"
>>>> text.inc(2013,44) Warning: Implicit string type conversion with
>>>> potential data loss from "UnicodeString" to "AnsiString"
>>>> system.pp(481,2) Warning: User defined: To be implemented - using
>>>> GetProcessInformation???
>>>> system.pp(571) Fatal: Internal error 2003090901
>>>> Fatal: Compilation aborted
>>>> make[2]: *** [system.ppu] Error 1
>>>> make[2]: Leaving directory `/usr/local/src/fpc/fpc-trunk/rtl/macos'
>>>>
>>>> Allowing that system.pp ends at line 570, I presume that something
>>>> after line 481 is confusing the compiler. Any suggestions would be
>>>> appreciated.
>>>>
>>>
>>> Not necessarily. It seems to be related to something "external".
>>>
>>> You could try the following by adjusting the compiler source: before
>>> the internalerror (in compiler/powerpc/agppcmpw.pas) add a
>>> "writeln(tasmsymbol(p).typ)" and maybe also a "AsmFlush" so that the
>>> assembler file up to the error will be written so you can see in
>>> which function the problem exists.
>>
>> system.pp(481,2) Warning: User defined: To be implemented - using
>> GetProcessInformation???
>> AT_NONE
>> system.pp(571) Fatal: Internal error 2003090901
>> Fatal: Compilation aborted
>
> Hmm... could you output "p.name" as well? maybe that will give us a
> lead... also two of the viable locations where such a tasmsymbol is
> created is in compiler/aasmdata.pas in TAsmData.RefAsmSymbol and
> TAsmData.WeakRefAsmSymbol. So you could writeln something (like what "s"
> is) in case the result is not assigned...
..
>>> In TAsmData.RefAsmSymbol(), param is "RTTI_$SYSTEM_$$_DEF1351"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_THREADID"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_ERROUTPUT"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_OUTPUT"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_INPUT"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_STDOUT"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_STDERR"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_INOUTRES"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_STACKTOP"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_STACKBOTTOM"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_STACKLENGTH"
>>> In TAsmData.RefAsmSymbol(), param is
"U_$SYSTEM_$$_SOFTFLOAT_EXCEPTION_MASK"
>>> In TAsmData.RefAsmSymbol(), param is
"U_$SYSTEM_$$_SOFTFLOAT_EXCEPTION_FLAGS"
>>> In TAsmData.RefAsmSymbol(), param is
"U_$SYSTEM_$$_SOFTFLOAT_ROUNDING_MODE"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_EXCEPTADDRSTACK"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_EXCEPTOBJECTSTACK"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_EXCEPTTRYLEVEL"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_FREELISTS"
>>> In TAsmData.RefAsmSymbol(), param is "U_$SYSTEM_$$_READWRITESTRTEXT"
>>> In TAsmData.RefAsmSymbol(), param is "THREADVARLIST_$SYSTEM"
AT_NONE
PBGetCatInfoSync
system.pp(571) Fatal: Internal error 2003090901
Fatal: Compilation aborted
>> ./units/powerpc-macos/system.s is 28 bytes, containing only
>>
>> string asis
>> aligning off
>>
>>> You could also debug the compiler (copy the command line from the
>>> Makefile's output) when compiling the system unit and place a
>>> breakpoint on the internalerror and then investigate the "p" variable.
>>
>> I'm not very good with gdb (noting also Pierre's contribution, but
>> it's probably somewhat ahead of my skills at the moment). How do I get
>> the true name of the place I need to set the breakpoint?
>>
> Couldn't you use Lazarus for that? Open the "ppcppc.lpi" project, adjust
> the command line arguments, compile and run... at least that's how I do
> my compiler development ;)
OK, I've done a bit of that when I was starting to look at the MIPS
compiler a year or so ago. I'll see how far I can get.
[Apropos MIPS: Pierre, any comment on my last mipseb run reported on
29th November?]
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
More information about the fpc-devel
mailing list