2017-12-22 11 views
-1

나는 간단한 hello world 프로그램을 가지고 있고 /헤더 플래그 그것을 DUMPBIN, 내가이 출력 얻을 후 : 포함 된 정확히 무엇 XDATA 섹션 할 어떤xdata 섹션의 기능은 무엇입니까?

FILE HEADER VALUES 
      8664 machine (x64) 
       D number of sections 
     5A3D287F time date stamp Fri Dec 22 18:45:03 2017 
      48F file pointer to symbol table 
       2D number of symbols 
       0 size of optional header 
       0 characteristics 

Summary 

      F .data 
      A0 .debug$S 
      2F .drectve 
      24 .pdata 
      B9 .text$mn 
      18 .xdata 

를? msdn에 대한 정보가 없습니다.

+1

간단한 프로그램 소스가 C 또는 C++인지 알고 계십니까? 차이점을 아십니까? – usr2564301

+0

@ usr2564301 귀하의 요점은 무엇입니까? 나는/TC로 프로그램을 컴파일하고있다. – Tracy

+0

요점은 C와 C++가 다른 언어라는 것입니다! 당신이 사용하고있는 것을 모른다면 소스 코드의 파일 확장자를보십시오. 만약'.c'이면 C로 프로그래밍하고있다.'.cpp'라면 C++을 사용하고있다. 부적절한 태그를 확인하고 삭제하십시오. – usr2564301

답변

0

반복되는 섹션은 C++ 템플릿과 같은 것입니다. 컴파일러는 필요한 모든 번역 단위에서 템플릿을 인스턴스화 한 다음 링커가 해당 인스턴스 중 하나 (일반적으로 처음 발생한 인스턴스)를 선택합니다.

변수가 두 번 이상 정의 될 수있는 Microsoft의 __declspec (selectany)와 같은 컴파일러 관련 기능은 일반적이지 않으며 링커는 해당 정의 중 하나를 선택하고 나머지는 버립니다.

gcc의 ld 스크립트는 모든 .text * 섹션을 사용하여 링크 된 실행 파일의 최종 .text를 만듭니다. 이러한 스크립트를 검사하여 링커가 객체 파일에서 실행 파일을 만드는 방법을 알 수 있습니다.