Frequently Asked Questions (FAQ) for GNU Pascal on Mac OS X

1.    module/unit interface could not be imported

[G4:~] adriaan% gpc crtdemo.pas
crtdemo.pas:35: module/unit interface `Crt' could not be imported

The solution is to specify --automake

[G4:~] adriaan% gpc --automake crtdemo.pas

2.   gpc: installation problem, cannot exec `as': No such file or directory

G4:~] adriaan% gpc datetimedemo.pas
gpc: installation problem, cannot exec `as': No such file or directory

Mac OS X doesn't come with an assembler and linker installed. What you can do:

1) Install "BSD Subsystem" from the Mac OS X system software CD’s. You need Mac OS X (10.2 or a later version).

2) Install "DevTools.pkg" from the "Developer.mpkg" from the Mac OS X Developer Tools.

The software is on Apple Developer Connection (ADC) Developer CD's and DVD's. If you are not an ADC member, you can join the ADC online program free of charge.

Also, you can download the Apple Mac OS X assembler and linker from the 
GNU Pascal for Mac OS X webpage.

3.   What about frameworks

GNU Pascal can link to Mac OS X frameworks. Here is an example:

G4:~] adriaan% gpc --automake -Wl,-framework,Carbon -o SillyBalls SillyBalls.pas

4.    What about compatibility with traditional Macintosh Pascal compilers ?

The GNU Pascal language has many powerful features, but there are a number of compatibility issues
when porting from traditional Macintosh Pascal compilers.

Troubleshooting GNU Pascal on Mac OS X


If you experience crashes, enable Crash Reporting in the Preferences dialog of the Console application (found in /Applications/Utilities). This will give you a backtrace of the crash (and also line numbers in source code if compiled with debug information enabled (-g)).

If you need more information, debug your application with gdb.

Stack overflows

If you get "Segmentation fault" it could be a stack overflow. Use the --stack-check option and see if the compiler gives you any warnings. Limit the use of local variables and/or recursion or set the maximum stack size to a larger value:

[G4:~] adriaan% limit
cputime         unlimited
filesize        unlimited
datasize        6144 kbytes
stacksize       512 kbytes
coredumpsize    0 kbytes
memoryuse       unlimited
descriptors     256
memorylocked    unlimited
maxproc         100
[G4:~] adriaan% limit stacksize 2048

To make this the default, type

[G4:~] adriaan% echo "limit stacksize 2048" >> ~/.tcshrc

Non-local goto’s

The gcc-3.3 back-end is still incorrect for non-local goto’s. However, you can work around this with the --longjmp-all-nonlocal-labels compiler option (combined with -O2 instead of -O3).

Can’t emit reloc

If you get a “can’t emit reloc” assembler error, try -O2 instead of -O3.

Known compiler problems

Other known problems in the compiler (not related to Mac OS X) are listed at the GNU Pascal Compiler Project website.

(back to the GNU Pascal for Mac OS X page)