Alternativni UNIX systemy - BSD

Libor Chocholaty libor_ml1 na mts.cz
Pátek Leden 12 22:24:28 CET 2007


Dalibor Straka wrote:
> On Fri, Jan 12, 2007 at 12:08:13AM +0100, Jan Kasprzak wrote:
>   
>> Martin `MJ' Mares wrote:
>> : Ahoj!
>> : 
>> : > pri c += 5 dostane program SIGSEGV pri c += 4 vse v poradku. Chyba bude
>> : > asi v gcc version 3.4.2. Je to vizitka solarisu. Jaky kompilator, takovy
>> : > unix ;-)
>> : > 
>> : > Dluzno dodat, ze kompilator SunStudio cc, tuto chybu nema. Kdo takove
>> : > veci ma vedet? Chyba je bohuzel run-time, takze kod muze zhavarovat
>> : > uplne blbe, kdyz se posunujete v bufferu nikoliv o znamou konstantu.
>> : 
>> : Chyba kompilatoru to urcite neni, zmineny zdrojak neni podle normy
>> : korektni -- nikdo nerika, ze pointer na char jde pretypovat na pointer
>> : na nejaky sirsi typ a pak k nemu pristupovat.
>> : 
>> : (Kdyby to byl Solaris na SPARCu, nedivil bych se vubec, protoze SPARC,
>> : pokud si dobre pamatuji, nedovoluje unaligned pristupy k 32-bitovym
>> : cislum.)
>>
>> 	Jo, taky bych rekl ze to je vec platformy. Na IRIXu/mips by to
>> taky nefungovalo.
>>
>>     
> Ahoj,
>
> v ruzovych brylich jsem spustil gcc, ktere na Solarisu (o hw toho stroje
> nic nevim) zdrojak bez chyby skompilovalo. Nicmene nahodne padal a
> dlouho jsem paril gdb. Gdb neni zrovna muj oblibeny shell. Alespon jsem
> vse napsal podle normy. Jenom je kod hure citelny, protoze misto
> jednoducheho pretypovani se veci ukladaji jinam, a pak se vola memcpy
> na jednotlive bloky stejneho typu. Kdyby byl lepsi napad, soukrome jej
> velmi ocenim. Na cistote kodu si davam zalezet.
>   
Ja bych ho ocenil i verejne. Nepomohl by nejakym zpusobem union?
Neco jako
typedef union {
    uint32_t *ptr32;
    unsigned char *ptr_uchar;
} ptr_union;

Libor



Další informace o konferenci Linux