ถ้าฉันเข้าใจอย่างถูกต้องโดยการสร้างส่วนประเภท .bss
(ตามตัวอย่างโค้ดด้านล่าง) พื้นที่การเขียน/อ่านของส่วน .bss
นั้นมาจากออฟเซ็ตของส่วนในไฟล์เป็น N
และในกรณีนี้ phdr.p_memsz
จะเพิ่มขึ้น N
ไบต์ และขึ้นอยู่กับ ระบบปฏิบัติการ/เคอร์เนลเป็นศูนย์พื้นที่หน่วยความจำนี้ การตีความของฉันถูกต้องหรือไม่?
Elf32_Phdr phdr;
// ...
phdr.p_memsiz = somevalue;
Elf32_Shdr sec;
// ...
sec.sh_name = bss_name;
sec.sh_type = SHT_nobits;
sec.sh_flags = SHF_alloc + SHF_write;
sec.sh_size = N;
phdr.p_memsiz += N;