Как вызвать интервал использования gcc для системных вызовов, не sysenter?

Действительно ли возможно вызвать международную инструкцию использования gcc для всех системных вызовов, но не sysenter? Этот вопрос может звучать странным, но я должен скомпилировать некоторые проекты как Python и Firefox этот путь.

Сводка

Благодаря jbcreix я загрузил исходный код glibc 2.9 и изменил строки в sysdeps/unix/sysv/linux/i386/sysdep.h, для отключения использования sysenter #undef I386_USE_SYSENTER, и это работает.

11
задан ZelluX 11 February 2010 в 07:47
поделиться

2 ответа

Перекомпилируйте вашу библиотеку C после замены Sysenter int 80 в Syscall.s и снова ссылка.

Это не созданный компилятор, который означает, что вам повезет.

Конечное происхождение фактического SESCall здесь, как говорит ОП:

http://cvs.savannah.gnu.org/viewvc/libc/sysdeps/ussysv/linux/i386/sysdep.h ? root = libc & View = markup

И, поскольку я подозреваю, что на самом деле был Syscall.s, это просто то, что источники Glibc - это лабиринт.

http://cvs.savannah.gnu.org/viewvc/libc/sysdeps/unix/sysv/linux/i386/syscall.s?root=libc&view=markup

Так что я думаю, что он понял правильно, асвейкау Отказ

2
ответ дан 3 December 2019 в 12:05
поделиться

Вы не модифицируете GCC; Вы изменяете LIBC (или точнее, перекомпилировать его) и ядро. GCC не выделяет инструкции Sysenter; Он генерирует вызовы на общий интерфейс Syscall (2), который представляет единую переднюю часть ввода и выхода и выхода системного вызова.

или, вы могли бы использовать Pentium; Sysenter не был представлен до PII =]. Обратите внимание на следующую ссылку KernelTrap для интересных методов, используемых Linux: http://kerneltrap.org/node/531

1
ответ дан 3 December 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: