簡體   English   中英

在arm64 linux中混合使用64/32位用戶空間(使用CONFIG_COMPAT)

[英]Mixing 64/32-bit userspace in arm64 linux ( using CONFIG_COMPAT )

我正在研究ARM64 linux內核中的32位用戶空間支持,看起來啟用CONFIG_COMPAT可以讓我這樣做。

是否有人可以啟用CONFIG_COMPAT是否會禁用64位應用程序的運行? 我問這個原因如下:

  1. 該文檔沒有說明兩個64/32位應用程序都可以使用相同的內核運行
  2. 我看了一下fs / compat_binfmt_elf.c

     #ifdef COMPAT_SET_PERSONALITY #undef SET_PERSONALITY #define SET_PERSONALITY COMPAT_SET_PERSONALITY #endif 

    這似乎迫使線程個性化

     set_thread_flag(TIF_32BIT) 
  3. 當調用kernel / linux-3.14 / fs / binfmt_elf.c中的load_elf_binary()時,會調用SET_PERSONALITY(loc-> elf_ex);

  4. 如此無效,當啟用CONFIG_COMPAT時,所有用戶空間應用程序都強制標記為32位?

謝謝

請注意,compat_binfmt_elf.c最后包含binfmt_elf.c - 在將juggled定義並為全局可見符號設置一些重命名后,它會將binfmt_elf.c代碼重新編譯為另一個目標文件。

因此它強制在compat層下運行的所有應用程序以32位運行,並且所有本機運行的應用程序以64位運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM