abi

    20熱度

    4回答

    下載並編譯了glibc-2.13。當我嘗試運行一個實例malloc()的示例C程序時。我得到以下錯誤 elf file OS ABI invalid 可有人請把我的任何指針有幫助解決這個issue.Please注意到,我的內核版本是Linux-2.6.35.9

    11熱度

    1回答

    pimpl idiom通常用於允許更改動態鏈接庫中的代碼而不破壞ABI兼容性,並且必須重新編譯依賴於庫的所有代碼。 大部分explanations我看到提到添加一個新的私有成員變量會改變班級中公共和私人成員的偏移量。這對我來說很有意義。我不明白的是,實際上這是如何打破依賴庫的。 我已經做了很多關於ELF文件的閱讀以及動態鏈接是如何實際工作的,但是我仍然沒有看到如何改變共享庫中的類大小會破壞事情。

    7熱度

    2回答

    我正在學習Windows上的x64程序集以獲得「樂趣」。該MSDN documentation for the x64 calling convention on Windows說: 調用者負責爲參數到被叫分配空間,必須始終分配足夠的空間爲4個寄存器參數,即使被叫方不具有如此之多的參數。這有助於支持C unprototyped函數和vararg C/C++函數的簡單性。 由於我的功能不是C unp

    1熱度

    1回答

    是否有方法以編程方式檢索ARM處理器版本?我正在嘗試將其發送給Google Analytics。我被告知它在/ proc/cpuinfo文件夾中,但我不確定如何在代碼中檢索這些信息。 感謝, 安德魯

    7熱度

    2回答

    這個問題是相對直接的:我如何構建4.x系列的GCC(以及binutils和朋友),它們在與編譯器主機相同的體系結構上以2.4 ABI爲目標? 主機系統是x86或x86_64,唯一的要求是隻要ABI匹配,內置的ELF文件就可以在舊內核上運行。 (內核源代碼/頭文件存在) 兼容的libc也需要以及鏈接它。但是,我也可以動態鏈接它,因爲我知道(g)libc版本。 任何指針將不勝感激。我對crosstoo

    1熱度

    2回答

    據我所知,x64代碼Microsoft x64和AMD64有兩種可能的調用約定。 現在,gcc可以與-mregparm=0參數一起啓動,如果我們正在使用AMD64調用約定,則該參數不起作用。 發生這種情況是因爲AMD64約定要求使用寄存器的前6個變量(我不太確定爲什麼這樣做,但我懷疑它是由於可能的堆棧安全問題而執行的)。 所以,這裏的問題: 是否有這樣的(強制寄存器使用)一些嚴格的規定使用gcc下

    1熱度

    1回答

    我的RPM包有這個在其依賴列表: libstdc++.so.6()(64bit) libstdc++.so.6(CXXABI_1.3)(64bit) 什麼括號中的字符串是什麼意思?如果它是ABI版本,我如何更改,替換或刪除依賴項?

    4熱度

    1回答

    我爲x86編寫了一些彙編代碼,並希望通過使用Mac的默認彙編器('as')將它彙編爲純二進制文件(而不是Mach-O)。幾次googlings和嘗試後,我失敗了。 雖然我知道如何使用NASM(使用選項:-f二進制),但我不想這樣做。因爲我的代碼是寫入的,所以我習慣於使用AT語法。

    3熱度

    2回答

    即使在派生類中進行涉及虛擬的其他更改,類視圖的ABI是否仍然保持穩定? 也就是說,我有一個接口InterfaceA(具有許多純虛函數的抽象類)和一個繼承自它的類DerivedB。我寫了一個函數庫,它的功能是InterfaceA *。我想知道的是,只要接口本身沒有改變,接口是否保持二進制兼容。 清除,如果我修改InterfaceA我不認爲代碼是二進制兼容的。但是,如果我只是修改DerivedB,說我

    7熱度

    3回答

    我很好奇,如果編譯器生成的默認構造函數和析構函數是內聯或不是,因爲我可以證明它的任何方式。一方面,您希望默認構造函數/析構函數爲而不是爲內聯,以便稍後添加它們不會中斷ABI(因爲只有默認值時編譯的對象文件將內置生成的定義而不是您定義的內容)。另一方面,爲了讓C++編譯器能夠編譯C代碼,並且能夠在使用C編譯器編譯時執行它,它不能爲每個分配的結構添加構造函數/析構函數調用,並且在C++中,類之間唯一的