objdump에서 가능한 scl 값은 무엇입니까?

objdump에서 가능한 scl 값은 무엇입니까?

이것objdump 매뉴얼 페이지다음 샘플 출력을 제공합니다 objdump -t.

출력 형식은 덤프 파일의 형식에 따라 다르지만 크게 두 가지 유형이 있습니다. 하나는 다음과 같습니다.

[  4](sec  3)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .bss
[  6](sec  1)(fl 0x00)(ty   0)(scl   2) (nx 0) 0x00000000 fred

대괄호 안의 숫자는 기호 테이블의 항목 번호, sec 숫자는 섹션 번호, fl 값은 기호의 플래그 비트, ty 숫자는 기호 유형, scl 숫자는 저장 공간입니다. 기호의 클래스이며 nx 값은 기호와 연관되어 있습니다. 마지막 두 필드는 기호의 값과 이름입니다.

So는 을 scl의미 storage class하지만 실제로 무엇을 의미하는지 설명하지 scl 3않습니다 scl 2.

이 정보는 어디서 찾을 수 있나요?

답변1

scl값은 다음에 정의되어 있습니다.binutils-gdb/include/coff/internal.h:

/********************** STORAGE CLASSES **********************/

/* This used to be defined as -1, but now n_sclass is unsigned.  */
#define C_EFCN      0xff    /* physical end of function */
#define C_NULL      0
#define C_AUTO      1   /* automatic variable       */
#define C_EXT       2   /* external symbol      */
#define C_STAT      3   /* static           */
#define C_REG       4   /* register variable        */
#define C_EXTDEF    5   /* external definition      */
#define C_LABEL     6   /* label            */
#define C_ULABEL    7   /* undefined label      */
#define C_MOS       8   /* member of structure      */
#define C_ARG       9   /* function argument        */
#define C_STRTAG    10  /* structure tag        */
#define C_MOU       11  /* member of union      */
#define C_UNTAG     12  /* union tag            */
#define C_TPDEF     13  /* type definition      */
#define C_USTATIC   14  /* undefined static     */
#define C_ENTAG     15  /* enumeration tag      */
#define C_MOE       16  /* member of enumeration    */
#define C_REGPARM   17  /* register parameter       */
#define C_FIELD     18  /* bit field            */
#define C_AUTOARG   19  /* auto argument        */
#define C_LASTENT   20  /* dummy entry (end of block)   */
#define C_BLOCK     100 /* ".bb" or ".eb"       */
#define C_FCN       101 /* ".bf" or ".ef"       */
#define C_EOS       102 /* end of structure     */
#define C_FILE      103 /* file name            */
#define C_LINE      104 /* line # reformatted as symbol table entry */
#define C_ALIAS     105 /* duplicate tag        */
#define C_HIDDEN    106 /* ext symbol in dmert public lib */
#define C_WEAKEXT   127 /* weak symbol -- GNU extension.  */

/* New storage classes for TI COFF */
#define C_UEXT      19  /* Tentative external definition */
#define C_STATLAB   20  /* Static load time label */
#define C_EXTLAB    21  /* External load time label */
#define C_SYSTEM    23  /* System Wide variable */

/* New storage classes for WINDOWS_NT   */
#define C_SECTION       104     /* section name */
#define C_NT_WEAK   105 /* weak external */

 /* New storage classes for 80960 */

/* C_LEAFPROC is obsolete.  Use C_LEAFEXT or C_LEAFSTAT */
#define C_LEAFPROC  108 /* Leaf procedure, "call" via BAL */

#define C_SCALL     107 /* Procedure reachable via system call */
#define C_LEAFEXT       108 /* External leaf */
#define C_LEAFSTAT      113 /* Static leaf */
#define C_OPTVAR    109 /* Optimized variable       */
#define C_DEFINE    110 /* Preprocessor #define     */
#define C_PRAGMA    111 /* Advice to compiler or linker */
#define C_SEGMENT   112 /* 80960 segment name       */

 /* New storage classes for RS/6000 */
#define C_HIDEXT        107 /* Un-named external symbol */
#define C_BINCL         108 /* Marks beginning of include file */
#define C_EINCL         109 /* Marks ending of include file */
#define C_AIX_WEAKEXT   111 /* AIX definition of C_WEAKEXT.  */
#define C_DWARF         112 /* DWARF symbol  */

이는 scl 3변수가 정적임을 의미하고 scl 2외부 변수임을 의미합니다.

관련 정보