end(3) - wariua/manpages-ko GitHub Wiki
etext, edata, end - νλ‘κ·Έλ¨ μΈκ·Έλ¨ΌνΈλ€μ λ
extern etext;
extern edata;
extern end;
μ΄ μ¬λ³Όλ€μ μ£Όμλ λ€μν νλ‘κ·Έλ¨ μΈκ·Έλ¨ΌνΈλ€μ λμ λνλΈλ€.
etext
- ν μ€νΈ μΈκ·Έλ¨ΌνΈ(νλ‘κ·Έλ¨ μ½λ)μ λ λ€μμ 첫 μ£Όμμ΄λ€.
edata
- μ΄κΈ°ν λ λ°μ΄ν° μΈκ·Έλ¨ΌνΈμ λ λ€μμ 첫 μ£Όμμ΄λ€.
end
- (BSS μΈκ·Έλ¨ΌνΈλΌκ³ λ νλ) λΉμ΄κΈ°ν λ°μ΄ν° μΈκ·Έλ¨ΌνΈμ λ λ€μμ 첫 μ£Όμμ΄λ€.
λλΆλΆμ μ λμ€ μμ€ν μμ μ€λ«λμ μ΄ μ¬λ³Όλ€μ μ 곡νμ§λ§ νμ€νλμ΄ μμ§λ μλ€. μ‘°μ¬ν΄μ μ¬μ©νλΌ.
νλ‘κ·Έλ¨μμ μ΄ μ¬λ³Όλ€μ λͺ μμ μΌλ‘ μ μΈν΄μΌ νλ€. μ΄λ€ ν€λ νμΌμλ μ μλμ΄ μμ§ μλ€.
μΌλΆ μμ€ν
μμλ μ΄ μ¬λ³Όλ€μ μ΄λ¦ μμ λ°μ€μ΄ λΆμ΄μ _etext
, _edata
, _end
μ΄λ€. 리λ
μ€μμ μ»΄νμΌ νλ νλ‘κ·Έλ¨μκ²λ μ΄ μ¬λ³Όλ€λ μ μλμ΄ μλ€.
νλ‘κ·Έλ¨ μ€νμ΄ μμλ λ νλ‘κ·Έλ¨ λ¨μ μ (break)μ &end
κ·Όμ² μ΄λκ°(μλ§ λ€μ νμ΄μ§μ μμμ )μΌ κ²μ΄λ€. νμ§λ§ brk(2)λ malloc(3)μ ν΅ν΄ λ©λͺ¨λ¦¬λ₯Ό ν λΉνλ©΄μ κ·Έ λ¨μ μ μ΄ λ°λκ² λλ€. μΈμ 0μΌλ‘ sbrk(2)λ₯Ό μ¬μ©νλ©΄ νμ¬μ νλ‘κ·Έλ¨ λ¨μ μ κ°μ μμλΌ μ μλ€.
μ€ν μ μλ νλ‘κ·Έλ¨μ λ€μκ³Ό κ°μ μΆλ ₯μ λ΄λλλ€.
$ ./a.out
First address past:
program text (etext) 0x8048568
initialized data (edata) 0x804a01c
uninitialized data (end) 0x804a024
#include <stdio.h>
#include <stdlib.h>
extern char etext, edata, end; /* μ¬λ³Όλ€μ λκ° νμ
μ μ€μΌ νλ€.
κ·ΈλμΌ "gcc -Wall"μ΄ μ‘°μ©ν΄μ§λ€. */
int
main(int argc, char *argv[])
{
printf("First address past:\n");
printf(" program text (etext) %10p\n", &etext);
printf(" initialized data (edata) %10p\n", &edata);
printf(" uninitialized data (end) %10p\n", &end);
exit(EXIT_SUCCESS);
}
objdump(1), readelf(1), sbrk(2), elf(5)
2019-03-06