At 23:10 +0100 26/3/03, Frank Heckenbach wrote:
Peter N Lewis wrote:
gpc -I/Users/peter/unix/gpc/gpc-pinterfaces/GPCPInterfaces -funit-path=/Users/peter/unix/gpc/gpc-pinterfaces/GPCPInterfaces --automake -o testrecord testrecord.pas
it would automatically include all the necessary units, but apparently not (did this change, I think it worked before but I might have compiled it slightly differently).
This should work. Since you don't say what happens, I can't tell more.
/usr/local/bin/ld: Undefined symbols: _init_Adsp _init_Aedatamodel _init_Aehelpers
I figured it out:
- Units without `implementation' part
I have removed the implementation keyword after seeing that comment in the release notes (since they are all interfaces and have no implementation and the keyword is not needed on the Mac in this case). But it appears if this is removed, then the init routine is not included in the .o file even though it appears still to be needed when you import the file:
With no implementation keyword:
% gpc -c -I. ConditionalMacros.pas % hdump.pl <conditionalmacros.o 000000: FE ED FA CE 00 00 00 12 00 00 00 00 00 00 00 01 ................ 000010: 00 00 00 01 00 00 00 7C 00 00 00 00 00 00 00 01 .......|........ 000020: 00 00 00 7C 00 00 00 00 00 00 00 00 00 00 00 00 ...|............ 000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 ................ 000040: 00 00 00 00 00 00 00 07 00 00 00 07 00 00 00 01 ................ 000050: 00 00 00 00 5F 5F 74 65 78 74 00 00 00 00 00 00 ....__text...... 000060: 00 00 00 00 5F 5F 54 45 58 54 00 00 00 00 00 00 ....__TEXT...... 000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 98 ................ 000080: 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 ................ 000090: 00 00 00 00 00 00 00 00 ........
After adding the implementation keyword: % gpc -c -I. ConditionalMacros.pas % hdump.pl < conditionalmacros.o 000000: FE ED FA CE 00 00 00 12 00 00 00 00 00 00 00 01 ................ 000010: 00 00 00 03 00 00 01 F4 00 00 00 00 00 00 00 01 ................ 000020: 00 00 01 8C 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000030: 00 00 00 00 00 00 00 00 00 00 00 AC 00 00 02 10 ................ 000040: 00 00 00 AC 00 00 00 07 00 00 00 07 00 00 00 05 ................ 000050: 00 00 00 00 5F 5F 74 65 78 74 00 00 00 00 00 00 ....__text...... 000060: 00 00 00 00 5F 5F 54 45 58 54 00 00 00 00 00 00 ....__TEXT...... 000070: 00 00 00 00 00 00 00 00 00 00 00 7C 00 00 02 10 ...........|.... 000080: 00 00 00 02 00 00 02 BC 00 00 00 0D 80 00 04 00 ................ 000090: 00 00 00 00 00 00 00 00 5F 5F 64 61 74 61 00 00 ........__data.. 0000A0: 00 00 00 00 00 00 00 00 5F 5F 44 41 54 41 00 00 ........__DATA.. 0000B0: 00 00 00 00 00 00 00 00 00 00 00 7C 00 00 00 01 ...........|.... 0000C0: 00 00 02 8C 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0000D0: 00 00 00 00 00 00 00 00 00 00 00 00 5F 5F 70 69 ............__pi 0000E0: 63 73 79 6D 62 6F 6C 5F 73 74 75 62 5F 5F 54 45 csymbol_stub__TE 0000F0: 58 54 00 00 00 00 00 00 00 00 00 00 00 00 00 80 XT.............. 000100: 00 00 00 24 00 00 02 90 00 00 00 02 00 00 03 24 ...$...........$ 000110: 00 00 00 06 80 00 04 08 00 00 00 00 00 00 00 24 ...............$ 000120: 5F 5F 6C 61 5F 73 79 6D 62 6F 6C 5F 70 74 72 00 __la_symbol_ptr. 000130: 5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00 __DATA.......... 000140: 00 00 00 A4 00 00 00 04 00 00 02 B4 00 00 00 02 ................ 000150: 00 00 03 54 00 00 00 01 00 00 00 07 00 00 00 01 ...T............ 000160: 00 00 00 00 5F 5F 6E 6C 5F 73 79 6D 62 6F 6C 5F ....__nl_symbol_ 000170: 70 74 72 00 5F 5F 44 41 54 41 00 00 00 00 00 00 ptr.__DATA...... 000180: 00 00 00 00 00 00 00 A8 00 00 00 04 00 00 02 B8 ................ 000190: 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 06 ................ 0001A0: 00 00 00 02 00 00 00 00 00 00 00 02 00 00 00 18 ................ 0001B0: 00 00 03 68 00 00 00 05 00 00 03 A4 00 00 00 74 ...h...........t 0001C0: 00 00 00 0B 00 00 00 50 00 00 00 00 00 00 00 01 .......P........ 0001D0: 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 02 ................ 0001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0001F0: 00 00 00 00 00 00 00 00 00 00 03 5C 00 00 00 03 ............... 000200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 000210: 7C 08 02 A6 BF C1 FF F8 90 01 00 08 94 21 FF B0 |............!.. 000220: 7C 3E 0B 78 42 9F 00 05 7F E8 02 A6 3D 3F 00 00 |>.xB.......=?.. 000230: 39 29 00 64 88 09 00 00 54 00 06 3E 2C 00 00 00 9).d....T..>,... 000240: 41 82 00 20 3D 3F 00 00 39 29 00 64 38 00 00 00 A.. =?..9).d8... 000250: 98 09 00 00 3D 3F 00 00 80 69 00 90 48 00 00 35 ....=?...i..H..5 000260: 80 21 00 00 80 01 00 08 7C 08 03 A6 BB C1 FF F8 .!......|....... 000270: 4E 80 00 20 BF C1 FF F8 94 21 FF D0 7C 3E 0B 78 N.. .....!..|>.x 000280: 80 21 00 00 BB C1 FF F8 4E 80 00 20 01 00 00 00 .!......N.. .... 000290: 7C 08 02 A6 42 9F 00 05 7D 68 02 A6 3D 6B 00 00 |...B...}h..=k.. 0002A0: 7C 08 03 A6 81 8B 00 1C 7D 89 03 A6 39 6B 00 1C |.......}...9k.. 0002B0: 4E 80 04 20 00 00 00 00 00 00 00 00 00 00 00 4C N.. ...........L 0002C0: 00 00 03 C3 AB 00 00 48 00 00 00 A8 A1 00 00 00 .......H........ 0002D0: 00 00 00 18 AC 00 00 44 00 00 00 A8 A1 00 00 90 .......D........ 0002E0: 00 00 00 18 AB 00 00 38 00 00 00 7C A1 00 00 00 .......8...|.... 0002F0: 00 00 00 18 AC 00 00 34 00 00 00 7C A1 00 00 64 .......4...|...d 000300: 00 00 00 18 AB 00 00 20 00 00 00 7C A1 00 00 00 ....... ...|.... 000310: 00 00 00 18 AC 00 00 1C 00 00 00 7C A1 00 00 64 ...........|...d 000320: 00 00 00 18 AB 00 00 1C 00 00 00 A4 A1 00 00 00 ................ 000330: 00 00 00 88 AB 00 00 14 00 00 00 A4 A1 00 00 00 ................ 000340: 00 00 00 88 AC 00 00 0C 00 00 00 A4 A1 00 00 1C ................ 000350: 00 00 00 88 00 00 00 00 00 00 04 50 00 00 00 03 ...........P.... 000360: 00 00 00 03 00 00 00 01 00 00 00 55 0E 02 00 00 ...........U.... 000370: 00 00 00 7C 00 00 00 19 0F 01 00 00 00 00 00 64 ...|...........d 000380: 00 00 00 01 0F 01 00 00 00 00 00 00 00 00 00 4A ...............J 000390: 01 00 00 01 00 00 00 00 00 00 00 31 01 00 00 00 ...........1.... 0003A0: 00 00 00 00 00 5F 69 6E 69 74 5F 43 6F 6E 64 69 ....._init_Condi 0003B0: 74 69 6F 6E 61 6C 6D 61 63 72 6F 73 00 5F 66 69 tionalmacros._fi 0003C0: 6E 69 5F 43 6F 6E 64 69 74 69 6F 6E 61 6C 6D 61 ni_Conditionalma 0003D0: 63 72 6F 73 00 64 79 6C 64 5F 73 74 75 62 5F 62 cros.dyld_stub_b 0003E0: 69 6E 64 69 6E 67 5F 68 65 6C 70 65 72 00 5F 5F inding_helper.__ 0003F0: 70 5F 41 74 45 78 69 74 00 5F 5F 5F 63 74 6F 72 p_AtExit.___ctor 000400: 5F 72 75 6E 5F 63 6F 6E 64 69 74 69 6F 6E 5F 30 _run_condition_0 000410: 5F 5F 2E 30 00 00 00 00 __.0....
Is the keyword needed then, or is this a bug?
Thanks, Peter.