2015-02-05 5 views
3

ARM64 리눅스 커널에서 32 비트 사용자 공간 지원을 찾고 있는데 CONFIG_COMPAT을 활성화하면 그렇게 할 수 있습니다.arm64 linux의 64/32 비트 사용자 공간 혼합 (CONFIG_COMPAT 사용)

누구든지 CONFIG_COMPAT을 활성화하면 64 비트 응용 프로그램을 실행할 수 있는지 여부를 결정할 수 있습니까? 나는 다음과 같은 이유로이 물어 :

  1. 를 문서는 모두 64/32 비트 애플리케이션 내가 FS/compat_binfmt_elf.c를 살펴했다
  2. 동일한 커널 실행 될 수 있음을 명시하지 않는

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

    set_thread_flag(TIF_32BIT)  
    
  3. 에 스레드 개성을 강제로 보인다 때 커널 load_elf_binary()/리눅스 3.14/fs/binfmt_elf.c가 호출되면 SET_PERSONALITY (loc-> elf_ex)를 호출합니다.

  4. CONFIG_COMPAT이 활성화되면 모든 사용자 공간 앱이 강제로 32 비트로 표시됩니까?

감사

compat_binfmt_elf.c가 매우 끝에 binfmt_elf.c가 포함
+0

그래서 내 대답을 수락 된 것으로 표시 할 수 있습니까? – unixsmurf

답변

1

주 -이 곡예를 정의를 가진 후, 별도의 오브젝트 파일로 binfmt_elf.c 코드를 다시 컴파일하고 일부에 대한 이름 바꾸기를 설정 세계적으로 보이는 기호.

따라서 compat 계층에서 실행되는 모든 응용 프로그램을 32 비트로 실행하고 모든 응용 프로그램을 기본적으로 64 비트로 실행되도록합니다.