linux kernel 4.1.6을 컴파일해서 분석을 해 보고 있습니다.
arm-none-linux-gnueabi-readelf -S ./vmlinux 명령으로 아래 결과가 나왔습니다.
그런데, .bss와 .stack, .comment의 off 값이 같습니다. 이것은 다른 영역들은 off에 size를 더해서 그 값으로 다음 off이 결정되거나 Size가 홀수라서 align때문에 1 증가한 값이 되는데, 왜 이런 현상이 나오는지요? 혹시 아시는 고수님에게 조언을 부탁드립니다.
There are 14 section headers, starting at offset 0x20ac70:
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] .text PROGBITS 00000000 008000 00383c 00 AX 0 0 32
[ 2] .rodata PROGBITS 0000383c 00b83c 000cc4 00 A 0 0 4
[ 3] .piggydata PROGBITS 00004500 00c500 1fe657 00 A 0 0 1
[ 4] .got.plt PROGBITS 00202b58 20ab58 00000c 04 WA 0 0 4
[ 5] .got PROGBITS 00202b64 20ab64 000028 00 WA 0 0 4
[ 6] .pad PROGBITS 00202b8c 20ab8c 000004 00 WA 0 0 1
[ 7] .bss NOBITS 00202b90 20ab90 00001c 00 WA 0 0 4
[ 8] .stack NOBITS 00202bb0 20ab90 001000 00 WA 0 0 1
[ 9] .comment PROGBITS 00000000 20ab90 000046 01 MS 0 0 1
[10] .ARM.attributes ARM_ATTRIBUTES 00000000 20abd6 00002b 00 0 0 1
[11] .shstrtab STRTAB 00000000 20ac01 00006c 00 0 0 1
[12] .symtab SYMTAB 00000000 20aea0 000d80 10 13 157 4
[13] .strtab STRTAB 00000000 20bc20 0006c7 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings)
I (info), L (link order), G (group), T (TLS), E (exclude), x (unknown)
O (extra OS processing required) o (OS specific), p (processor specific)
NOBITS type 은 초기화 하지 않은 데이터로 파일에 저장되지 않기 때문에, 메모리에 올라가면, 존재하지만, 파일 내에는 존재할 필요가 없습니다.