SORU
30 Kasım 2008, Pazar


___Kişilik gxx_v0 nedir?

Bu işletim sistemi geliştirme bir siteden İkinci El bir soru olacak ama düzgün bir açıklama bulamadım hiçbir yerde beri beni meraklandırdı.

Ve kendi başına ayakta durabilen bir C programı gcc kullanarak derleme bağlarken, bazen linker hatası oluşur bu gibi:

out/kernel.o:(.eh_frame 0x11): undefined reference to `__gxx_personality_v0'

Bu sembol kendi başına ayakta durabilen bir ortamda eksik olan libstdc , tanımlanır, çünkü görünüşe göre. Problem çözme sadece bir yerde bu sembol tanımlama gerektirir:

void *__gxx_personality_v0;

Güzel, ama sadece sihirli soru şu işe... böyle şeyleri sevmiyorum, bu sembolün amacı nedir?

CEVAP
30 Kasım 2008, Pazar


my answer to another question montaj çıktı mesela görebilirsiniz unwiding tablolar, yığın olarak kullanılır. Bu cevap üzerine belirtildiği gibi, kullanımı Personality Routine adlı Itanium C ABI, ile tanımlanır.

Sebebi bu "işleri" küresel NULL void bir işaretçi hiç bir özel durum üretiliyor çünkü muhtemelen olarak tanımlanması. Bir şey, bir özel durum için çalıştığında, o zaman yaramazlık göreceksiniz.

Eğer hiçbir şey istisnalar kullanıyorsa elbette, -fno-exceptions (ve eğer hiçbir şey RTTI kullanıyorsanız, aynı zamanda -fno-rtti ekleyebilirsiniz) ile bunları devre dışı bırakabilirsiniz. Eğer bunları kullanıyorsanız, diğer cevapları daha önce de belirtildiği gibi () g yerine -lstdc ekler gcc, bağlamak zorunda.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AmazonWireless

    AmazonWirele

    8 EYLÜL 2010
  • MADFINGER Games a.s.

    MADFINGER Ga

    21 NİSAN 2009
  • Vsauce

    Vsauce

    30 Temmuz 2007