首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在arm64 linux中混合64/32位用户空间(使用CONFIG_COMPAT )

在arm64 linux中混合64/32位用户空间(使用CONFIG_COMPAT )
EN

Stack Overflow用户
提问于 2015-02-05 01:29:16
回答 1查看 2K关注 0票数 3

我正在研究在ARM64 linux内核中对32位用户空间的支持,看起来启用CONFIG_COMPAT将允许我这样做。

有人能参与到启用CONFIG_COMPAT是否会禁用64位应用程序的问题上吗?我提出这个问题的原因如下:

  1. 文档没有说明64/32位应用程序都可以在同一个内核中运行
  2. 我看了fs/compat_binfmt_elf.c COMPAT_SET_PERSONALITY #undef SET_PERSONALITY #定义SET_PERSONALITY COMPAT_SET_PERSONALITY #endif 这似乎迫使线程的个性 set_thread_flag(TIF_32BIT)
  3. 当调用内核/linux-3.14/fs/binfmt_elf.c中的load_elf_binary()时,调用SET_PERSONALITY(loc->SET_PERSONALITY_ex);
  4. 因此,当启用CONFIG_COMPAT时,所有的用户空间应用程序都被强制标记为32位?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-02-06 20:54:08

请注意,compat_binfmt_elf.c在末尾包含了binfmt_elf.c --在对全局可见符号进行修改、定义和设置一些重命名之后,它会将binfmt_elf.c代码重新编译成一个附加的对象文件。

因此,它强制所有在compat层下运行的应用程序作为32位运行,所有本机运行的应用程序以64位的形式运行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28334715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档