# cat foo.pas program Foo; type PCStrings = Pointer; var VersionCheck: Integer; attribute (name = '_p_GPC_RTS_VERSION_20050331'); procedure Initialize (ArgumentCount: CInteger; Arguments, StartEnvironment: PCStrings; Options: CInteger); attribute (name = '_p_initialize'); begin end; procedure DoInitProc; attribute (name = '_p_DoInitProc'); begin end; procedure Finalize; attribute (name = '_p_finalize'); begin end; procedure CExit (Status: CInteger); external name 'exit'; procedure RangeCheckError; attribute (name = '_p_RangeCheckError'); begin CExit (42) end; begin end. # gpc foo.pas /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(init.o): In function `_p_DoInitProc': /home/gpc/gcc-src/gcc-3.4.4/gcc/p/rts/init.pas:267: multiple definition of `_p_DoInitProc' /tmp/ccCK1EXe.o:foo.pas:(.text+0x5): first defined here /usr/bin/ld: Warning: size of symbol `_p_DoInitProc' changed from 5 in /tmp/ccCK1EXe.o to 24 in /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(init.o) /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(init.o): In function `_p_initialize': /home/gpc/gcc-src/gcc-3.4.4/gcc/p/rts/init.pas:274: multiple definition of `_p_initialize' /tmp/ccCK1EXe.o:foo.pas:(.text+0x0): first defined here /usr/bin/ld: Warning: size of symbol `_p_initialize' changed from 5 in /tmp/ccCK1EXe.o to 61 in /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(init.o) /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(error.o): In function `_p_RangeCheckError': /home/gpc/gcc-src/gcc-3.4.4/gcc/p/rts/error.pas:623: multiple definition of `_p_RangeCheckError' /tmp/ccCK1EXe.o:foo.pas:(.text+0xf): first defined here /usr/bin/ld: Warning: size of symbol `_p_RangeCheckError' changed from 20 in /tmp/ccCK1EXe.o to 29 in /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(error.o) /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(error.o): In function `_p_finalize': /home/gpc/gcc-src/gcc-3.4.4/gcc/p/rts/error.pas:856: multiple definition of `_p_finalize' /tmp/ccCK1EXe.o:foo.pas:(.text+0xa): first defined here /usr/bin/ld: Warning: size of symbol `_p_finalize' changed from 5 in /tmp/ccCK1EXe.o to 71 in /usr/lib/gcc/i686-pc-linux-gnulibc1/3.4.4/libgpc.a(error.o) collect2: ld returned 1 exit status # cat foo.pas program Foo; type PCStrings = Pointer; var VersionCheck: Integer; attribute (name = '_p_GPC_RTS_VERSION_20060817'); procedure Initialize (ArgumentCount: CInteger; Arguments, StartEnvironment: PCStrings; Options: CInteger); attribute (name = '_p_initialize'); begin end; procedure DoInitProc; attribute (name = '_p_DoInitProc'); begin end; procedure Finalize; attribute (name = '_p_finalize'); begin end; procedure CExit (Status: CInteger); external name 'exit'; procedure RangeCheckError; attribute (name = '_p_RangeCheckError'); begin CExit (42) end; begin end. # gpc foo.pas # ls -la a.out -rwx------ 1 frank users 5071 Aug 24 20:57 a.out # cat foo.pas program Foo; begin end. # gpc foo.pas # ls -la a.out -rwx------ 1 frank users 432616 Aug 24 20:57 a.out