[Help]
Платформа PPC, приложение - xorg-x11, файл xc/programs/Xserver/hw/xfree86/common/xf
86Init.c
Вот такой кусок кода:
for (i = 0; i < xf86NumScreens; i++) {
xf86EnableAccess(xf86Screens[i]);
if (xf86Screens[i]->PreInit &&
xf86Screens[i]->PreInit(xf86Screens[i], 0))
xf86Screens[i]->configured = TRUE;
}Если верить gdb, то получается, что перед выполнением зеленой строчки i=0, как и положено.
А перед выполнением красной строчки, ... ......,
i=1.
Ой-ой-ой-ой, я, кажется, понял. Это GCC так оптимизирует.
InitOutput (pScreenInfo=0x1020b38c, argc=1, argv=0x7fb61ae4) at xf86Init.c:586
586 for (i = 0; i < xf86NumScreens; i++) {
(gdb) step
587 xf86EnableAccess(xf86Screens[i]);
(gdb) print i
$1 = 0
(gdb) step
586 for (i = 0; i < xf86NumScreens; i++) {
(gdb) print i
$2 = 0
(gdb) step
587 xf86EnableAccess(xf86Screens[i]);
(gdb) print i
$3 = 1
(gdb) step
xf86EnableAccess (pScrn=0x103e0408) at xf86Bus.c:694
694 register EntityAccessPtr peAcc = (EntityAccessPtr) pScrn->access;
(gdb)Похоже, надо отрубать оптимизацию. Других мыслей пока нет. А у вас есть?