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