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

  • manadude21

    manadude21

    11 Mart 2008
  • RawBrahs

    RawBrahs

    28 Aralık 2010
  • RFS Dan

    RFS Dan

    22 Temmuz 2014