Hi Thorsten,

Am 25.01.2022 um 10:54 schrieb Thorsten Otto via fpc-devel:

> yes the Atari version is compiled by Jenkins every commit

> https://build.alb42.de:8081/job/FPC_m68k-atari/ (to make sure the

> changes does not break the target) it uses the command line:

Yes, i saw the console output already. What i could not figure out
yet: where does the script come from that is executed by Jenkins?

hmm what do you mean? I wrote it, of course.

> btw. you know this:

>

> https://blog.alb42.de/2017/06/18/do-it-online-atari/

>

> http://home.alb42.de/fpatari/

Uh no, i did not know this. Awesome. Ultimately, it would be nice of
course to run the resulting executable in some online emulator like
pce-js ;)

haha sure, but my knowledge of such things is too limited to really do
such things, but if someone is interested, I happily share the source of
this one.

> the prefix $CPU-$OS is just the default prefix for every cross

> compiling, if you need an other, you can supply it with e.g.

> -XPm68k-atari-mint-

Yes, found that already. But there is also at least one assembler file
that is directly compiled from the Makefile (prt0.as), and that is
also compiled by that $CPU-OS-as assembler (also when you otherwise
use vasm). So i wonder a bit why that works on your build server. I
also noted that, when using vasm/vlink, those are also executed using
that prefix, so the actual assembler that is invoked is
m68k-atari-vasmm68k_std.

One reason why i would prefer gas is because FPC needs a non-standard
version of vasm (compiled with std syntax module instead of motorola),
and that assembler is also required on the target system. But the name
"vasmm68k_std.ttp" does not fit in the 8.3 filesystem limit on Atari.

With the symlinked assembler/linker, and some fixes to the generated
scripts, i was able now to produce the binaries. I noticed though that
they are much larger (maybe because that smartlink feature is not
available). However currently most of them bomb out right at the
start, have to figure out yet whether that is caused by the different
linker, or some other change to fpc itself.

If I remember right (for amiga, its that way so I guess also applies to
Atari), that is because this old ld does not support section linking
only object linking, newer ld support that but they can't be compiled
for m68k anymore, therefore the linker can't throw away unused sections
of the object file (only whole unused object files) and therefore the
files are much bigger.

That was one of the reasons we changed to vlink because the coder of
that implemented that for us.

https://blog.alb42.de/2017/01/07/small-is-beautiful/

If I remember right, it is possible to freely mix assembler and linker
on Atari, so you can use gas and vlink for example.

Greetings,

Marcus
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to