Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Valentin Nechayev                    2:5020/400     19 May 2003  22:29:24
 To : Oleg Drokin
 Subject : Re: SuSE 8.2 sucks ???
 -------------------------------------------------------------------------------- 
 
 
 >>> Oleg Drokin wrote:
 
 AB>>>> Вас смутили нопы ? Очень похоже на обычное выравнивение по границе слова 
 AB>>>> памяти. Это вообще ни о чем не говорит. Что внутри бинарников самого 
 OD>>> С каких пор у нас на x86 (на pentium обычном, заметим) 128ми битное слово?
 VN>> С памятью он работает, кстати, вот такими вот словами.
 OD> Угу, я знаю. Hо почему же весь из себя продвинутый gcc 3.3-release так
 OD> больше не делает? Да и какой смысл выравнивание прямо перед прыжком делать?
 
 А как работал -mpreferred-stack-boundary в 2.95 видели? Такая же глупость.
 В этот раз они, видимо, решили помочь кэшу процессора разложить команды
 на адекватных местах. Потом отказались.
 
 Я сейчас быстрым просмотром objdump -d /5/bin/sh нашёл такие же шуточки
 в GCC 3.2.2 от FreeBSD 5.1:
 
  804864c:       83 38 00                cmpl   $0x0,(%eax)
  804864f:       74 34                   je     0x8048685
  8048651:       eb 0d                   jmp    0x8048660
  8048653:       90                      nop
 [...]
  804865f:       90                      nop
  8048660:       a1 cc 00 10 08          mov    0x81000cc,%eax
  8048665:       8b 00                   mov    (%eax),%eax
 
 А вот и документация к этому в info gcc - надо только было знать, что искать,
 после того, как увидел глазами код:
 
 `-malign-jumps=NUM'
      Align instructions that are only jumped to to a 2 raised to a NUM
      byte boundary.  If `-malign-jumps' is not specified, the default is
      2 if optimizing for a 386, and 4 if optimizing for a 486 unless
      gas 2.8 (or later) is being used in which case the default is to
      align the instruction on a 16 byte boundary if it is less than 8
      bytes away.
 
 Hу я бы не сказал, что тут было "less than 8 bytes away" - явно больше -
 но копать надо именно тут. Что-то глючило, вероятно.
 Да, это всё должно сопровождаться адекватным -malign-functions, иначе оно
 хрен знает какие прыжки накомпилит...
 
 OD>>> Выравнивание прямо перед вызовом функции? Hовое слово в оптимизации, надо 
 OD>>> думать. А перед этим, еще и двойной jump для большей оптимизации. И как ни
 OD>>> странно ни gcc 3.3 релиз, ни gcc 3.2.3 ни gcc 2.95 к такой
 OD>>> "оптимизации" не прибегают. Еще обратите внимание куда прыгает последний
 OD>>> call ... Hу я конечно
 VN>>  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 VN>> А всё почему? А потому что -fPIC. Олег, Вы точно уверены, что никакой
 VN>> PIC туда не затесался?
 
 Я прогнал. PIC тут ни при чём, такое записано и для не-PIC версии.
 Hу вот так вот оно хранит объектники - в поле такого смещения всегда
 fc ff ff ff (-4 то есть), пока не сделает окончательный бинарник или so.
 
 VN>> А вот загляните в бинарники. Хотя бы свои после линковки. Мне кажется, что
 OD> Hу дык глядел ясное дело.
 
 И что - продолжало делать call .+1? В nop'ы - верю, в это - не верю.
 
 OD> Гм.
 OD> Hу ладно, вот я пошел и пересобрал все заново старым компилером, сделал
 OD> objdump linux. Правда код с тех пор изменился, тем не менее прикол с двойным
 OD> джампом и кучей нопов все равно наблюдается, на этот раз в другом месте:
 
 Про кучу нопов я тогда ничего не говорил, только предполагал ;)
 Добавьте -malign-jumps=2 -malign-functions=2 и сравните результат.
 -netch-
 --- ifmail v.2.15dev5
  * Origin: Dark side of coredump (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 SuSE 8.2 sucks   Oleg Drokin   16 May 2003 09:55:40 
 Re: SuSE 8.2 sucks   Alexandr S. Agranovsky   16 May 2003 23:22:30 
 Re: SuSE 8.2 sucks   Oleg Drokin   17 May 2003 12:33:34 
 SuSE 8.2 sucks   Alexander Stavitsky   19 May 2003 16:23:08 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 00:14:23 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   17 May 2003 12:48:44 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 13:12:26 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   17 May 2003 14:45:20 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   17 May 2003 23:54:08 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   19 May 2003 21:17:13 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   19 May 2003 22:12:38 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   19 May 2003 22:29:24 
 Re: SuSE 8.2 sucks ???   Oleg Drokin   19 May 2003 23:45:02 
 Re: SuSE 8.2 sucks ???   Valentin Nechayev   20 May 2003 10:19:41 
 Re: SuSE 8.2 sucks ???   Aleksey Barabanov   19 May 2003 22:41:45 
 SuSE 8.2 sucks   Ivan Melnikov   18 May 2003 11:35:36 
Архивное /ru.linux/7368c8ff4a90.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional