XTC68 C Cross compiler

Anything QL Software or Programming Related.
User avatar
NormanDunbar
Forum Moderator
Posts: 2251
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

XTC68 C Cross compiler

Post by NormanDunbar »

I came across this when I was looking at something else, and fell down the rabbit hole!

The following applies to compiling etc on a Linux 64bit but with the correct packages installed to allow 32 bit code to be compiled and executed.

I've forked the compiler sources from the SinclairQL original at https://github.com/SinclairQL/xtc68 and compiled it. Even with a simple text file:

Code: Select all

#include <INCLUDE_stdio.h>

int main(int argc, char *argv[]) {
	printf("\n\nHello World!\n\n");
	return 0;
}
I get a complete failure to run the as68 phase due to a perceived 'stack overflow exploit' attempt:

Code: Select all

qcc -o test test.c -I ../support
*** stack smashing detected ***: as68 terminated
Aborted
I suspect that there might be a bug in the as68 code that's giving this impression. There are certainly a lot of warnings when compiling most of the code in all the utilities. I might have to work through them to see if I can get rid and then I might be able to see the wood for the trees. The generated code from the above C source is:

Code: Select all

! Generated by c68 4.5 27 Feb 99 (Oct 30 2018) from "test.i"
	.sect	.text
	.sect	.rom
	.sect	.data
	.sect	.bss
	.sect	.text
I_1:
	.data1	0xa,0xa
	.ascii	"Hello World!"
	.data1	0xa,0xa,0x0
	.align	2
	.extern _main
_main:
	bra	I_2
I_3:
	pea	I_1
	jsr	_printf
	move.l	#0,d0
I_4:
	unlk	a6
	rts
I_2:
	link	a6,#0
	bra	I_3
This doesn't look too bad to me, hence my suspicion that it's internal to as68 itself. If I comment out the two lines at label I_3, so that it effectively does nothing, it will assemble.

Q1. Has anyone attempted to use this compiler? Successfully? It could be I've compiled with the wrong options - instructions are few and far between. Google, in this case, is of little help either.

Q2. I'm not seeing any libraries in this installation, so I suspect the linker (qld) will not work either, leading to a complete lack of executable files?

Thanks.


Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
NormanDunbar
Forum Moderator
Posts: 2251
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: XTC68 C Cross compiler

Post by NormanDunbar »

Ok, resolved Q2 (Above) by grabbing the various libraries from Dilwyn's fine web site of all things good - http://www.dilwyn.me.uk/c/XTC68LIB.ZIP

I can now get the linker to output a QDOS executable. I just need to fix as68 now....


Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
tofro
Font of All Knowledge
Posts: 2685
Joined: Sun Feb 13, 2011 10:53 pm
Location: SW Germany

Re: XTC68 C Cross compiler

Post by tofro »

Norman,

you could get rid of the error and abort by compiling as68 with

Code: Select all

-fno-stack-protector
The error is normally caused by a buffer overflow on the stack (string too long?). The likelihood you'll get another crash for the same reason is high, though (if the code does not smash the stack canaries, it will probably smash something more important....)

I did use xtc68 quite some years ago, but on DOS/OS2 only, and only used precompiled versions. With the fast QDOSSMSQ platforms we have to day, I feel XTC68 is a bit obsolete.

Tobias


ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
User avatar
Peter
QL Wafer Drive
Posts: 1953
Joined: Sat Jan 22, 2011 8:47 am

Re: XTC68 C Cross compiler

Post by Peter »

NormanDunbar wrote:Q1. Has anyone attempted to use this compiler? Successfully?
I'm still using it successfully under WIndoze. But like Tobias, I did not recompile.
It could make sense to post the issue at the ql-developers mailing list.

Peter


User avatar
NormanDunbar
Forum Moderator
Posts: 2251
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: XTC68 C Cross compiler

Post by NormanDunbar »

Thanks Tobias,

that fix worked - for now anyway. The code compiles happily and executes on QPC with no problems, once I've got the XTcc record extracted and the dataspace sorted out.

Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
NormanDunbar
Forum Moderator
Posts: 2251
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: XTC68 C Cross compiler

Post by NormanDunbar »

Peter wrote:I'm still using it successfully under WIndoze. But like Tobias, I did not recompile.
It could make sense to post the issue at the ql-developers mailing list.
Peter
Thanks Peter. Tobias' fix seems to have done the trick. I'm sure that it might bite me somewhere down the line. We shall see.


Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
XorA
Site Admin
Posts: 1359
Joined: Thu Jun 02, 2011 11:31 am
Location: Shotts, North Lanarkshire, Scotland, UK

Re: XTC68 C Cross compiler

Post by XorA »

I fixed that bug years ago.

https://github.com/xXorAa/xtc68/tree/fix-stack-smashing

Its an actual bug in the code.


User avatar
NormanDunbar
Forum Moderator
Posts: 2251
Joined: Tue Dec 14, 2010 9:04 am
Location: Leeds, West Yorkshire, UK
Contact:

Re: XTC68 C Cross compiler

Post by NormanDunbar »

Thanks muchly.
Fix applied - all working now.

Cheers,
Norm.


Why do they put lightning conductors on churches?
Author of Arduino Software Internals
Author of Arduino Interrupts

No longer on Twitter, find me on https://mastodon.scot/@NormanDunbar.
User avatar
Peter
QL Wafer Drive
Posts: 1953
Joined: Sat Jan 22, 2011 8:47 am

Re: XTC68 C Cross compiler

Post by Peter »

XorA wrote:I fixed that bug years ago.

https://github.com/xXorAa/xtc68/tree/fix-stack-smashing
Could this be linked to a website where one would usually look when searching for XTC68?
e.g. http://www.dilwyn.me.uk/c/index.html ? Dilwyn?


User avatar
XorA
Site Admin
Posts: 1359
Joined: Thu Jun 02, 2011 11:31 am
Location: Shotts, North Lanarkshire, Scotland, UK

Re: XTC68 C Cross compiler

Post by XorA »

Peter wrote:
XorA wrote:I fixed that bug years ago.

https://github.com/xXorAa/xtc68/tree/fix-stack-smashing
Could this be linked to a website where one would usually look when searching for XTC68?
e.g. http://www.dilwyn.me.uk/c/index.html ? Dilwyn?
Who is in charge of SinclairQL/xtc68? We could just push the fix there! I did send a pull request to the original author but that has not been processed!


Post Reply