-----Message d'origine----- De : gpc-owner@gnu.de [mailto:gpc-owner@gnu.de] De la part de Waldek Hebisch Envoyé : December 7, 2005 07:57 À : gpc@gnu.de Objet : Re: RE : Crash with sets under Solaris
<snip>
That may be the difference. IIRC I used Gnu assembler and linker (and I have different versions of Sun tools).
If I remember well, the instructions to build gpc say to avoid GNU assembler and linker under Solaris. That's why I did not use them.
The test program:
<snip>
Program received signal SIGSEGV, Segmentation fault. $00029134 in _p_Set_Equal (Seta=$55d84, Lowa=0, Higha=1312, Setb=$41c62, Lowb=3, Highb=0)
That shows paramteters at the point of crash (where they changed by the execution). Can you put a breakpoint at _p_Set_Equal and check if parameters are correct: both Seta nad Setb should point to number 40.
A bit far from 40: (gdb) p *(long *) Seta $4 = 83886080 (gdb) p *(long *) Setb $3 = 1280
If the paramters are incorrect then one should egzamine assembly file obtained via `gpc -g -S adam3k2.pas'.
Here it is:
.file "adam3k2.pas" .stabs "/data1/Pascal/p/test/",100,0,0,.LLtext0 .stabs "adam3k2.pas",100,0,0,.LLtext0 .section ".text" .LLtext0: .stabs "gcc2_compiled.",60,0,0,0 .stabs "Integer:t(0,1)=r(0,1);-2147483648;2147483647;",128,0,0,0 .stabs "Cardinal:t(0,2)=r(0,2);0000000000000;0037777777777;",128,0,0,0 .stabs "Word:t(0,3)=r(0,3);0000000000000;0037777777777;",128,0,0,0 .stabs "Cinteger:t(0,4)=r(0,4);-2147483648;2147483647;",128,0,0,0 .stabs "Ccardinal:t(0,5)=r(0,5);0000000000000;0037777777777;",128,0,0,0 .stabs "Cword:t(0,6)=r(0,6);0000000000000;0037777777777;",128,0,0,0 .stabs "Byteint:t(0,7)=@s8;r(0,7);-128;127;",128,0,0,0 .stabs "Bytecard:t(0,8)=@s8;r(0,8);0;255;",128,0,0,0 .stabs "Byte:t(0,9)=@s8;r(0,9);0;255;",128,0,0,0 .stabs "Shortint:t(0,10)=@s16;r(0,10);-32768;32767;",128,0,0,0 .stabs "Smallint:t(0,11)=@s16;r(0,11);-32768;32767;",128,0,0,0 .stabs "Shortcard:t(0,12)=@s16;r(0,12);0;65535;",128,0,0,0 .stabs "Shortword:t(0,13)=@s16;r(0,13);0;65535;",128,0,0,0 .stabs "Medint:t(0,14)=r(0,14);-2147483648;2147483647;",128,0,0,0 .stabs "Medcard:t(0,15)=r(0,15);0000000000000;0037777777777;",128,0,0,0 .stabs "Medword:t(0,16)=r(0,16);0000000000000;0037777777777;",128,0,0,0 .stabs "Longestint:t(0,17)=@s64;r(0,17);01000000000000000000000;0777777777777777777 777;",128,0,0,0 .stabs "Longint:t(0,18)=@s64;r(0,18);01000000000000000000000;0777777777777777777777 ;",128,0,0,0 .stabs "Comp:t(0,19)=@s64;r(0,19);01000000000000000000000;0777777777777777777777;", 128,0,0,0 .stabs "Longestcard:t(0,20)=@s64;r(0,20);0000000000000;01777777777777777777777;",12 8,0,0,0 .stabs "Longestword:t(0,21)=@s64;r(0,21);0000000000000;01777777777777777777777;",12 8,0,0,0 .stabs "Longcard:t(0,22)=@s64;r(0,22);0000000000000;01777777777777777777777;",128,0 ,0,0 .stabs "Longword:t(0,23)=@s64;r(0,23);0000000000000;01777777777777777777777;",128,0 ,0,0 .stabs "Sizetype:t(0,24)=r(0,24);0000000000000;0037777777777;",128,0,0,0 .stabs "Ptrint:t(0,25)=r(0,25);-2147483648;2147483647;",128,0,0,0 .stabs "Ptrcard:t(0,26)=r(0,26);0000000000000;0037777777777;",128,0,0,0 .stabs "Ptrword:t(0,27)=r(0,27);0000000000000;0037777777777;",128,0,0,0 .stabs "Ptrdifftype:t(0,28)=r(0,28);-2147483648;2147483647;",128,0,0,0 .stabs "Shortreal:t(0,29)=r(0,0);4;0;",128,0,0,0 .stabs "Single:t(0,30)=r(0,0);4;0;",128,0,0,0 .stabs "Real:t(0,31)=r(0,0);8;0;",128,0,0,0 .stabs "Medreal:t(0,32)=r(0,0);8;0;",128,0,0,0 .stabs "Double:t(0,33)=r(0,0);8;0;",128,0,0,0 .stabs "Longreal:t(0,34)=r(0,0);16;0;",128,0,0,0 .stabs "Longestreal:t(0,35)=r(0,0);16;0;",128,0,0,0 .stabs "Extended:t(0,36)=r(0,0);16;0;",128,0,0,0 .stabs "Complex:t(0,37)=R3;16;0;",128,0,0,0 .stabs "Boolean:t(0,38)=@s8;-16",128,0,0,0 .stabs "Bytebool:t(0,39)=@s8;-16",128,0,0,0 .stabs "Shortbool:t(0,40)=@s16;-16",128,0,0,0 .stabs "Wordbool:t(0,41)=@s32;-16",128,0,0,0 .stabs "Medbool:t(0,42)=@s32;-16",128,0,0,0 .stabs "Longbool:t(0,43)=@s64;-16",128,0,0,0 .stabs "Longestbool:t(0,44)=@s64;-16",128,0,0,0 .stabs "Cboolean:t(0,45)=@s8;-16",128,0,0,0 .stabs "Void:t(0,46)=(0,46)",128,0,0,0 .stabs "Char:t(0,47)=@s8;-20",128,0,0,0 .stabs "Ansichar:t(0,48)=@s8;-20",128,0,0,0 .stabs "Cstring:t(0,49)=*(0,50)=@s8;-20",128,0,0,0 .stabs "Pchar:t(0,51)=*(0,50)",128,0,0,0 .stabs "Pansichar:t(0,52)=*(0,50)",128,0,0,0 .stabs "Pointer:t(0,53)=*(0,46)",128,0,0,0 .stabs "Pobjecttype:t(0,54)=*(0,55)=s16Size:(0,15),0,32;Negatedsize:(0,14),32,32;Pa rent:(0,54),64,32;Name:(0,56)=*(0,57)=k(0,58)=s12Capacity:(0,2),0,32;length: (0,2),32,32;_p_Schema_:(0,59)=ar(0,1);1;1;(0,50),64,8;;,96,32;;",128,0,0,0 .stabs "String:t(0,58)",128,0,0,0 .stabs "Text:t(0,60)=s4_p_File_:(0,53),0,32;;",128,0,0,0 .stabs "Anyfile:t(0,61)=s4_p_File_:(0,53),0,32;;",128,0,0,0 .stabs "Timestamp:t(0,62)=s104Datevalid:(0,38),0,1;Timevalid:(0,38),1,1;Year:(0,1), 2,32;Month:(0,63)=r(0,1);0000000000001;0000000000014;,34,4;Day:(0,64)=r(0,1) ;0000000000001;0000000000037;,38,5;Dayofweek:(0,65)=r(0,1);0000000000000;000 0000000006;,43,3;Hour:(0,66)=r(0,1);0000000000000;0000000000027;,46,5;Minute :(0,67)=r(0,1);0000000000000;0000000000073;,51,6;Second:(0,68)=r(0,1);000000 0000000;0000000000075;,57,6;Microsecond:(0,69)=r(0,1);0000000000000;00000036 41077;,63,20;Timezone:(0,1),83,32;Dst:(0,38),115,1;Tzname1:(0,70)=s44Capacit y:(0,2),0,32;length:(0,2),32,32;_p_Schema_:(0,71)=ar(0,1);1;33;(0,50),64,264 ;;,128,352;Tzname2:(0,72)=s44Capacity:(0,2),0,32;length:(0,2),32,32;_p_Schem a_:(0,73)=ar(0,1);1;33;(0,50),64,264;;,480,352;;",128,0,0,0 .stabs "Bindingtype:t(0,74)=s2124Bound:(0,38),0,1;Force:(0,38),1,1;Extensions_valid :(0,38),2,1;Readable:(0,38),3,1;Writable:(0,38),4,1;Executable:(0,38),5,1;Ex isting:(0,38),6,1;Directory:(0,38),7,1;Special:(0,38),8,1;Symlink:(0,38),9,1 ;Size:(0,17),10,64;Accesstime:(0,17),74,64;Modificationtime:(0,17),138,64;Ch angetime:(0,17),202,64;User:(0,1),266,32;Group:(0,1),298,32;Mode:(0,1),330,3 2;Device:(0,1),362,32;Inode:(0,1),394,32;Links:(0,1),426,32;Textbinary:(0,38 ),458,1;Handle:(0,1),459,32;Closeflag:(0,38),491,1;Name:(0,75)=s2060Capacity :(0,2),0,32;length:(0,2),32,32;_p_Schema_:(0,76)=ar(0,1);1;2049;(0,50),64,16 392;;,512,16480;;",128,0,0,0 .local S .common S,2,1 .section ".data" .type S2, #object .size S2, 2 S2: .asciz "\024" .section ".rodata" .LLC0: .asciz "\024" .LLC1: .ascii "\005" .align 8 .LLC2: .asciz "OK\n" .align 8 .LLC3: .asciz "failed\n" .section ".text" .align 4 .stabs "_p__M0_main_program:F(0,46)",36,0,7,_p__M0_main_program .global _p__M0_main_program .type _p__M0_main_program, #function .proc 020 _p__M0_main_program: .stabn 68,0,7,.LLM1-_p__M0_main_program .LLM1: !#PROLOGUE# 0 save %sp, -112, %sp !#PROLOGUE# 1 .stabn 68,0,9,.LLM2-_p__M0_main_program .LLM2: sethi %hi(.LLC0), %g1 or %g1, %lo(.LLC0), %o0 mov 1, %o1 mov 10, %o2 sethi %hi(S), %g1 or %g1, %lo(S), %o3 mov 1, %o4 mov 10, %o5 call _p_Set_Copy, 0 nop .stabn 68,0,11,.LLM3-_p__M0_main_program .LLM3: sethi %hi(.LLC1), %g1 or %g1, %lo(.LLC1), %o0 mov 3, %o1 mov 5, %o2 sethi %hi(S), %g1 or %g1, %lo(S), %o3 mov 1, %o4 mov 10, %o5 call _p_Set_Equal, 0 nop mov %o0, %g1 and %g1, 0xff, %g1 cmp %g1, 0 be .LL2 nop .stabn 68,0,11,.LLM4-_p__M0_main_program .LLM4: sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 mov 1568, %o1 call _p_Write_Init, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 sethi %hi(.LLC2), %g1 or %g1, %lo(.LLC2), %o1 mov 3, %o2 sethi %hi(-2147483648), %o3 call _p_Write_String, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 call _p_Write_Flush, 0 nop sethi %hi(_p_InOutRes), %g1 or %g1, %lo(_p_InOutRes), %g1 ld [%g1], %g1 cmp %g1, 0 be .LL5 nop call _p_CheckInOutRes, 0 nop .LL2: sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 mov 1568, %o1 call _p_Write_Init, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 sethi %hi(.LLC3), %g1 or %g1, %lo(.LLC3), %o1 mov 7, %o2 sethi %hi(-2147483648), %o3 call _p_Write_String, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 call _p_Write_Flush, 0 nop sethi %hi(_p_InOutRes), %g1 or %g1, %lo(_p_InOutRes), %g1 ld [%g1], %g1 cmp %g1, 0 be .LL5 nop call _p_CheckInOutRes, 0 nop .LL5: .stabn 68,0,12,.LLM5-_p__M0_main_program .LLM5: sethi %hi(S), %g1 or %g1, %lo(S), %o0 mov 1, %o1 mov 10, %o2 sethi %hi(S2), %g1 or %g1, %lo(S2), %o3 mov 1, %o4 mov 10, %o5 call _p_Set_Equal, 0 nop mov %o0, %g1 and %g1, 0xff, %g1 cmp %g1, 0 be .LL8 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 mov 1568, %o1 call _p_Write_Init, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 sethi %hi(.LLC2), %g1 or %g1, %lo(.LLC2), %o1 mov 3, %o2 sethi %hi(-2147483648), %o3 call _p_Write_String, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 call _p_Write_Flush, 0 nop sethi %hi(_p_InOutRes), %g1 or %g1, %lo(_p_InOutRes), %g1 ld [%g1], %g1 cmp %g1, 0 be .LL1 nop call _p_CheckInOutRes, 0 nop .LL8: sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 mov 1568, %o1 call _p_Write_Init, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 sethi %hi(.LLC3), %g1 or %g1, %lo(.LLC3), %o1 mov 7, %o2 sethi %hi(-2147483648), %o3 call _p_Write_String, 0 nop sethi %hi(_p_Output), %g1 or %g1, %lo(_p_Output), %g1 ld [%g1], %o0 call _p_Write_Flush, 0 nop sethi %hi(_p_InOutRes), %g1 or %g1, %lo(_p_InOutRes), %g1 ld [%g1], %g1 cmp %g1, 0 be .LL1 nop call _p_CheckInOutRes, 0 nop .LL1: nop ret restore .size _p__M0_main_program, .-_p__M0_main_program .LLscope0: .stabs "",36,0,0,.LLscope0-_p__M0_main_program .local static_ctor_run_condition_0_1 .common static_ctor_run_condition_0_1,1,1 .align 4 .stabs "<implicit code>",130,0,0,0 .stabs "_p__M0_init:F(0,46)",36,0,13,_p__M0_init .global _p__M0_init .type _p__M0_init, #function .proc 020 _p__M0_init: .stabs "<implicit code>",132,0,0,.LLtext1 .LLtext1: .stabn 68,0,13,.LLM6-_p__M0_init .LLM6: !#PROLOGUE# 0 save %sp, -112, %sp !#PROLOGUE# 1 sethi %hi(static_ctor_run_condition_0_1), %g1 or %g1, %lo(static_ctor_run_condition_0_1), %g1 ldub [%g1], %g1 and %g1, 0xff, %g1 cmp %g1, 0 bne .LL14 nop .stabn 68,0,13,.LLM7-_p__M0_init .LLM7: sethi %hi(static_ctor_run_condition_0_1), %g1 or %g1, %lo(static_ctor_run_condition_0_1), %o5 mov 1, %g1 stb %g1, [%o5] call _p_DoInitProc, 0 nop .LL14: nop ret restore .size _p__M0_init, .-_p__M0_init .LLscope1: .stabs "",36,0,0,.LLscope1-_p__M0_init .align 4 .stabs "main:F(1,1)=r(1,1);-2147483648;2147483647;",36,0,13,main .stabs "argc:p(1,1)",160,0,13,68 .stabs "argv:p(1,2)=*(0,49)",160,0,13,72 .stabs "envp:p(1,2)",160,0,13,76 .global main .type main, #function .proc 04 main: .stabn 68,0,13,.LLM8-main .LLM8: !#PROLOGUE# 0 save %sp, -112, %sp !#PROLOGUE# 1 st %i0, [%fp+68] st %i1, [%fp+72] st %i2, [%fp+76] sethi %hi(_p_GPC_RTS_VERSION_20050331), %g1 or %g1, %lo(_p_GPC_RTS_VERSION_20050331), %g1 ld [%g1], %g1 ld [%fp+68], %o0 ld [%fp+72], %o1 ld [%fp+76], %o2 mov 0, %o3 call _p_initialize, 0 nop call _p__M0_init, 0 nop call _p__M0_main_program, 0 nop call _p_finalize, 0 nop mov 0, %g1 mov %g1, %i0 ret restore .size main, .-main .LLscope2: .stabs "",36,0,0,.LLscope2-main .stabn 162,0,0,0 .stabs "S:S(0,77)=@s16;S(0,78)=r(0,1);0000000000001;0000000000012;",40,0,6,S .stabs "S2:S(0,79)=@s16;S(0,80)=r(0,1);0000000000001;0000000000012;",38,0,7,S2 .text .stabs "",100,0,0,.Letext .Letext: .ident "GCC: (GNU) 20050331, based on gcc-3.4.3"
However, the file I got from the cross compiler looks OK, so the most likely reason is assembler or linker.
Should I try GNU ones?
Regards
Pascal Viandier pascal@accovia.com