2010-01-25 23 views
11

tüm sistem çağrıları için gcc kullanacağım int talimat zorlamak mümkün mü değil SYSENTER? Bu soru garip gelebilir ama Python ve Firefox gibi bazı projeleri bu şekilde derlemeliyim.gcc kullanımı int sistem çağrıları için, sysenter değil nasıl zorlanır?

sayesinde jbcreix Özet, ben #undef I386_USE_SYSENTER tarafından SYSENTER kullanımını devre dışı bırakmak,/unix/sysv/linux/i386/sysdep.h glibc 2.9 kaynak kodunu indirilen ve sysdeps hatları modifiye ettik , ve çalışıyor.

Sen gcc değişiklik yapmayın
+3

kolay, yine syscall.s ve bağlantı int 80 tarafından SYSENTER değiştirdikten sonra C kütüphanesini yeniden derlemek. Bu, derleyicinin ürettiği kod değildir, bu da şanslı olduğunuzu gösterir. – jbcreix

+0

@jbcreix Bunun için teşekkürler. Cevap olarak gönderebilir misiniz, böylece cevabı kabul edebilir miyim? – ZelluX

cevap

2

tekrar syscall.s ve bağlantı int 80 tarafından sysenter değiştirdikten sonra C kütüphanesini yeniden derleyin.

Bu sen şanslısın demektir kodunu oluşturduktan derleyici değildir.

fiili syscall nihai kökeni OP söylediği gibi, burada:

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

Ve tahmin ettiğim gibi gerçekten glibc kaynaklar bir labirent sadece işte bir syscall.S yoktu.

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

yüzden o, doğru asveikau anladım düşünüyorum.

+0

Bugünlerde "int 80h" veya "SYSENTER" çekirdek tarafından sihirli bir sayfaya eşleştirilmiş olan linux-gate.so geldiğini düşündük. En az x86. – asveikau

1

; libc'yi (veya daha doğru bir şekilde yeniden derleyin) ve çekirdeği değiştirirsiniz. gcc, sysenter talimatlarını yayınlamaz; sistem çağrı girişine ve çıkışına birleşik bir ön uç sunan genel sistem çağrısı (2) arayüzüne çağrı üretir.

Veya, bir Pentium kullanabilirsiniz; SYSENTER PII =] 'ye kadar tanıtılmamıştır. Linux tarafından kullanılan ilginç yöntemler için aşağıdaki KernelTrap linki Not: http://kerneltrap.org/node/531

İlgili konular