Alternativni UNIX systemy - BSD
Dalibor Straka
dast na panelnet.cz
Čtvrtek Leden 11 18:29:18 CET 2007
Ahoj,
On Wed, Jan 10, 2007 at 12:08:16PM +0100, Jan Kasprzak wrote:
>
> Hmm, jeste vidim slovni spojeni `"velky" unix'. `Velky unix'
> je dneska Linux. Aspon nevim o tom, ze by v komercnich UNIXech byl nejaky
> vyvoj, ktery by obecny pojem "unix" posunoval nekam dopredu (s cestnou
> vyjimkou OpenSolarisu, ovsem). At uz to jsou velke NUMA systemy, real-time
>
Cestnou vyjimkou OpenSolarisu je moje dnesni kompilace tohoto kodu:
#include <sys/types.h>
#include <stdio.h>
int main(void) {
unsigned char x[] = "NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN";
unsigned char * c = x;
uint32_t *u;
u = (uint32_t *) c;
*(uint32_t *) c = 0x41414141;
c += 5;
// c += 4;
*(uint32_t *) c = 0x42424242;
return 0;
}
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.
-- Dalibor Straka
Další informace o konferenci Linux