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

  • ArkticPlanet

    ArkticPlanet

    9 ŞUBAT 2010
  • My name is Festis and I'm free

    My name is F

    2 EKİM 2011
  • Joshua Benedict

    Joshua Bened

    26 EKİM 2013