getauxval(3) - wariua/manpages-ko GitHub Wiki
getauxval - 보쑰 벑ν°μ κ° μ»κΈ°
#include <sys/auxv.h>
unsigned long getauxval(unsigned long type);
getauxval()
ν¨μλ 보쑰 벑ν°(auxiliary vector)μμ κ°μ μ»μ΄ μ¨λ€. 보쑰 벑ν°λ 컀λμ ELF λ°μ΄λ리 λ‘λμμ νλ‘κ·Έλ¨μ μ€νν λ νΉμ μ 보λ€μ μ¬μ©μ 곡κ°μΌλ‘ μ λ¬νλ λ©μ»€λμ¦μ΄λ€.
보쑰 벑ν°μ κ° νλͺ©μ λ κ°μΌλ‘ μ΄λ€μ Έ μλλ°, κ·Έ νλͺ©μ΄ λμ§ λνλ΄λ νμ
κ³Ό κ·Έ κ°μ΄λ€. getauxval()
μ μΈμ type
μ λ°μμ λμνλ κ°μ λ°ννλ€.
κ° type
λ³λ‘ λ°νλλ κ°μ΄ μλ λͺ©λ‘μ λμ μλ€. λͺ¨λ μν€ν
μ²μ λͺ¨λ type
κ°λ€μ΄ μλ 건 μλλ€.
AT_BASE
- νλ‘κ·Έλ¨ μΈν°ν리ν°(μΌλ°μ μΌλ‘ λμ λ§μ»€)μ κΈ°μ€ μ£Όμ.
AT_BASE_PLATFORM
- μ€μ νλ«νΌμ λνλ΄λ λ¬Έμμ΄.
AT_PLATFORM
κ³Ό λ€λ₯Ό μλ μμ (PowerPC νμ ). AT_CLKTCK
-
times(2)μ μΉ΄μ΄νΈ λΉλ.
sysconf(_SC_CLK_TCK)
λ‘λ μ΄ κ°μ μ»μ μ μλ€. AT_DCACHEBSIZE
- λ°μ΄ν° μΊμ λΈλ‘ ν¬κΈ°.
AT_EGID
- μ€λ λμ μ€ν¨ κ·Έλ£Ή ID.
AT_ENTRY
- μ€ν νμΌμ μ§μ μ μ£Όμ.
AT_EUID
- μ€λ λμ μ€ν¨ μ¬μ©μ ID.
AT_EXECFD
- νλ‘κ·Έλ¨μ νμΌ λμ€ν¬λ¦½ν°.
AT_EXECFN
- νλ‘κ·Έλ¨ μ€νμ μ°μΈ κ²½λ‘λͺ .
AT_FLAGS
- νλκ·Έ (μ¬μ© μ ν¨).
AT_FPUCW
- μ¬μ©ν FPU 컨νΈλ‘€ μλ (SuperH μν€ν μ² νμ ). 컀λμμ μνν FPU μ΄κΈ°νμ λν μΌλΆ μ 보λ₯Ό μ€λ€.
AT_GID
- μ€λ λμ μ€μ κ·Έλ£Ή ID.
AT_HWCAP
- μν€ν
μ² λ° ABIμ λ°λΌ λ¬λΌμ§λ λΉνΈ λ§μ€ν¬μ΄λ©° μΈλΆμ μΈ νλ‘μΈμ λ₯λ ₯λ€μ λνλΈλ€. λΉνΈ λ§μ€ν¬μ λ΄μ©λ¬Όμ νλμ¨μ΄μ λ°λΌ λ€λ₯΄λ€. (μλ₯Ό λ€μ΄ μΈν
x86 μν€ν
μ²μ κ΄ν μΈλΆ μ¬νμ 컀λ μμ€ νμΌμ
arch/x86/include/asm/cpufeature.h
μ°Έκ³ . κ±°κΈ° κΈ°μ λ λ°°μ΄μ 첫 λ²μ§Έ 32λΉνΈ μλκ° λ°νλλ κ°μ΄λ€.) μ¬λμ΄ μ½μ μ μλ ννμ κ°μ μ 보λ₯Ό/proc/cpuinfo
μμ λ³Ό μ μλ€. -
AT_HWCAP2
(glibc 2.18λΆν°) - νλ‘μΈμ κΈ°λ₯μ λν λ λ§μ λ¨Έμ λ³ ννΈ.
AT_ICACHEBSIZE
- μΈμ€νΈλμ μΊμ λΈλ‘ ν¬κΈ°.
AT_PAGESZ
- μμ€ν
νμ΄μ§ ν¬κΈ°. (
sysconf(_SC_PAGESIZE)
κ° λ°ννλ κ°κ³Ό λμΌ.) AT_PHDR
- μ€ν νμΌμ νλ‘κ·Έλ¨ ν€λλ€μ μ£Όμ.
AT_PHENT
- νλ‘κ·Έλ¨ ν€λ νλͺ© ν¬κΈ°.
AT_PHNUM
- νλ‘κ·Έλ¨ ν€λ κ°μ.
AT_PLATFORM
- νλ‘κ·Έλ¨μ΄ λκ³ μλ νλμ¨μ΄ νλ«νΌμ λνλ΄λ λ¬Έμμ΄μ λν ν¬μΈν°. λμ λ§μ»€μμ
rpath
κ° ν΄μ μ μ΄ κ°μ μ¬μ©νλ€. AT_RANDOM
- λμ κ°μ λ΄μ μ΄μ¬μ― λ°μ΄νΈμ μ£Όμ.
AT_SECURE
- μ΄ μ€ν νμΌμ΄ μμ νκ² λ€λ€μ§κ³ μμΌλ©΄ 0 μλ κ°μ κ°μ§λ€. 0 μλ κ°μ΄ 보ν΅μ νλ‘μΈμ€κ° set-user-ID λ΄μ§ set-group-ID λ°μ΄λ리λ₯Ό μ€ννκ³ μμμ (κ·Έλμ μ€μ UID λ΄μ§ GIDκ° μ€ν¨ UID λ΄μ§ GIDμ λ€λ¦μ), λλ μλ₯μ κ°μ§ λ°μ΄λ리 νμΌμ μ€νν΄μ μλ₯(capabilities(7) μ°Έκ³ )μ μ»μμμ λνλΈλ€. λλ 리λ μ€ λ³΄μ λͺ¨λμ μν κ²μΌ μλ μλ€. μ΄ κ°μ΄ 0μ΄ μλ λ λμ λ§μ»€μμλ νΉμ νκ²½ λ³μλ€μ μ¬μ©μ λΉνμ±ννλ©° (ld-linux.so(8) μ°Έκ³ ) glibcμμλ μ¬ν λμ λ°©μλ€μ λ°κΎΌλ€. (secure_getenv(3) μ°Έκ³ .)
AT_SYSINFO
- vDSO λ΄μ μμ€ν νΈμΆ ν¨μ μ§μ μ . λͺ¨λ μν€ν μ²μ μλ/νμν κ²μ μλ (κ°λ Ή x86-64μλ μμ).
AT_SYSINFO_EHDR
- 컀λμμ νΉμ μμ€ν νΈμΆλ€μ λΉ λ₯Έ ꡬνμ μ 곡νκΈ° μν΄ μμ±νλ κ°μ λμ 곡μ μ€λΈμ νΈ(vDSO)λ₯Ό λ΄μ νμ΄μ§μ μ£Όμ.
AT_UCACHEBSIZE
- ν΅ν© μΊμ λΈλ‘ ν¬κΈ°.
AT_UID
- μ€λ λμ μ€μ¬ μ¬μ©μ ID.
μ±κ³΅ μ getauxval()
μ type
μ λμνλ κ°μ λ°ννλ€. type
μ μ°Ύμ μ μμΌλ©΄ 0μ λ°ννλ€.
-
ENOENT
(glibc 2.19λΆν°) - 보쑰 벑ν°μμ
type
μ λμνλ νλͺ©μ μ°Ύμ μ μλ€.
glibc λ²μ 2.16μμ getauxval()
ν¨μκ° μΆκ°λμλ€.
μ΄ μ μμ μ¬μ©νλ μ©μ΄λ€μ λν μ€λͺ μ attributes(7)λ₯Ό 보λΌ.
μΈν°νμ΄μ€ | μμ± | κ° |
---|---|---|
getauxval() |
μ€λ λ μμ μ± | MT-Safe |
μ΄ ν¨μλ λΉνμ€ glibc νμ₯μ΄λ€.
보쑰 λ²‘ν° λ΄ μ 보μ μ£Όλ μλΉμλ λμ λ§μ»€μΈ ld-linux.so(8)μ΄λ€. 보쑰 벑ν°λ λμ λ§μ»€μμ μΌλ°μ μΌλ‘λ μμμ μΌλ‘ νμν μΌκ΅°μ νμ€ μ 보λ€μ 컀λμ΄ μ λ¬ν΄ μ€ μ μλ νΈλ¦¬νκ³ ν¨μ¨μ μΈ λ°©λ²μ΄λ€. μΌλΆ κ²½μ° μμ€ν νΈμΆλ‘ κ°μ μ 보λ₯Ό μ»μ μλ μμ§λ§ 보쑰 벑ν°λ₯Ό μ°λ κ² λΉμ©μ΄ μλ€.
보쑰 벑ν°λ νλ‘μΈμ€ μ£Όμ 곡κ°μμ μΈμ λͺ©λ‘ λ° νκ²½ λ°λ‘ μμ μμΉν΄ μλ€. νλ‘κ·Έλ¨ μ€ν μ νκ²½ λ³μ LD_SHOW_AUXV
λ₯Ό μ€μ νλ©΄ νλ‘κ·Έλ¨μ μ 곡λ 보쑰 벑ν°λ₯Ό λ³Ό μ μλ€.
$ LD_SHOW_AUXV=1 sleep 1
/proc/[pid]/auxv
λ₯Ό ν΅ν΄ μμ νλ‘μΈμ€μ 보쑰 벑ν°λ₯Ό (νμΌ κΆνμ λ°λΌ) μ»μ μ μλ€. μμΈν λ΄μ©μ proc(5) μ°Έκ³ .
glibc 2.19μμ ENOENT
μ€λ₯κ° μΆκ°λκΈ° μ μλ type
μ μ°Ύμ μ μλ κ²½μ°μ type
μ λμνλ κ°μ΄ 0μΈ κ²½μ°λ₯Ό λͺ
ννκ² κ΅¬λ³ν λ°©λ²μ΄ μμλ€.
secure_getenv(3), vdso(7), ld-linux.so(8)
2017-09-15