dl_iterate_phdr(3) - wariua/manpages-ko GitHub Wiki

NAME

dl_iterate_phdr - ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ ๋ฆฌ์ŠคํŠธ ์ˆœํšŒํ•˜๊ธฐ

SYNOPSIS

#define _GNU_SOURCE         /* feature_test_macros(7) ์ฐธ๊ณ  */
#include <link.h>

int dl_iterate_phdr(
          int (*callback) (struct dl_phdr_info *info,
                           size_t size, void *data),
          void *data);

DESCRIPTION

dl_iterate_phdr() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์‘์šฉ์—์„œ ์–ด๋–ค ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๋“ค์„ ์ ์žฌํ–ˆ๊ณ  ์–ด๋–ค ์ˆœ์„œ๋กœ ์ ์žฌ๋๋Š”์ง€ ๋Ÿฐํƒ€์ž„์— ์งˆ์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

dl_iterate_phdr() ํ•จ์ˆ˜๋Š” ์‘์šฉ์˜ ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ ๋ชฉ๋ก์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ฐ ์˜ค๋ธŒ์ ํŠธ๋งˆ๋‹ค ํ•จ์ˆ˜ callback์„ ํ˜ธ์ถœํ•œ๋‹ค. ๋ชจ๋“  ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ–ˆ์œผ๋ฉด, ๋˜๋Š” callback์ด 0 ์•„๋‹Œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฉˆ์ถ˜๋‹ค.

callback ํ˜ธ์ถœ ๊ฐ๊ฐ์€ ์„ธ ๊ฐœ ์ธ์ž๋ฅผ ๋ฐ›๋Š”๋‹ค. info๋Š” ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‹ด์€ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๊ณ  size๋Š” info๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ตฌ์กฐ์ฒด์˜ ํฌ๊ธฐ์ด๋‹ค. data๋Š” ํ˜ธ์ถœ ํ”„๋กœ๊ทธ๋žจ์—์„œ dl_iterate_phdr() ํ˜ธ์ถœ ๋•Œ (์—ญ์‹œ ์ด๋ฆ„์ด data์ธ) ๋‘ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ค€ ๊ฐ’์˜ ์‚ฌ๋ณธ์ด๋‹ค.

info ์ธ์ž๋Š” ๋‹ค์Œ ํƒ€์ž…์˜ ๊ตฌ์กฐ์ฒด์ด๋‹ค.

struct dl_phdr_info {
    ElfW(Addr)        dlpi_addr;  /* ์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ์ค€ ์ฃผ์†Œ */
    const char       *dlpi_name;  /* ์˜ค๋ธŒ์ ํŠธ์˜ (๋„ ์ข…๋ฃŒ) ์ด๋ฆ„ */
    const ElfW(Phdr) *dlpi_phdr;  /* ์ด ์˜ค๋ธŒ์ ํŠธ์˜ ELF ํ”„๋กœ๊ทธ๋žจ
                                     ํ—ค๋” ๋ฐฐ์—ด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ */
    ElfW(Half)        dlpi_phnum; /* dlpi_phdr์˜ ํ•ญ๋ชฉ ๊ฐœ์ˆ˜ */

    /* ๋‹ค์Œ ํ•„๋“œ๋“ค์€ ์ด ๊ตฌ์กฐ์ฒด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฒ„์ „์ด ๊ณต๊ฐœ๋œ ํ›„์—
       glibc 2.4์—์„œ ์ถ”๊ฐ€๋œ ๊ฒƒ๋“ค์ด๋‹ค. dl_iterate_phdr ์ฝœ๋ฐฑ์—
       ์ „๋‹ฌ๋˜๋Š” size ์ธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์ดํ›„ ๋ฉค๋ฒ„ ๊ฐ๊ฐ์ด ์‚ฌ์šฉ
       ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค. */

    unsigned long long int dlpi_adds;
                    /* ์ƒˆ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ถ”๊ฐ€๋์„ ์ˆ˜๋„
		       ์žˆ์„ ๋•Œ ์ฆ๊ฐ€๋จ */
    unsigned long long int dlpi_subs;
                    /* ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์ œ๊ฑฐ๋์„ ์ˆ˜๋„
		       ์žˆ์„ ๋•Œ ์ฆ๊ฐ€๋จ */
    size_t dlpi_tls_modid;
                    /* PT_TLS ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” TLS ์žฌ๋ฐฐ์น˜์—
		       ์“ฐ์ธ ๊ทธ ๋ชจ๋“ˆ ID, ์•„๋‹ˆ๋ฉด 0 */
    void  *dlpi_tls_data;
                    /* ์ด ๋ชจ๋“ˆ์˜ PT_TLS ์„ธ๊ทธ๋จผํŠธ ์ธ์Šคํ„ด์Šค๊ฐ€
		       ํ•˜๋‚˜ ์žˆ๊ณ  ํ˜ธ์ถœ ์Šค๋ ˆ๋“œ์— ํ• ๋‹น๋ผ ์žˆ์œผ๋ฉด
		       ๊ทธ ์ฃผ์†Œ, ์•„๋‹ˆ๋ฉด ๋„ ํฌ์ธํ„ฐ */
};

(ElfW() ๋งคํฌ๋กœ๋Š” ๊ทธ ์ธ์ž๋ฅผ ํ•˜๋“œ์›จ์–ด ์•„ํ‚คํ…์ฒ˜์— ๋งž๋Š” ELF ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ” ์ค€๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 32๋น„ํŠธ ํ”Œ๋žซํผ์—์„œ ElfW(Addr)์€ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ด๋ฆ„ Elf32_Addr์„ ๋‚ด๋†“๋Š”๋‹ค. ์ด๋Ÿฐ ํƒ€์ž…๋“ค์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํ—ค๋” ํŒŒ์ผ <elf.h> ๋ฐ <link.h>์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.)

dlpi_addr ํ•„๋“œ๋Š” ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ์˜ ๊ธฐ์ค€ ์ฃผ์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. (์ฆ‰ ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์™€ ๊ทธ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ ์žฌํ•œ ํŒŒ์ผ ๋‚ด์—์„œ์˜ ์˜คํ”„์…‹ ๊ฐ„์˜ ์ฐจ์ด์ด๋‹ค.) dlpi_name ํ•„๋“œ๋Š” ๊ทธ ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ ์žฌํ•œ ๊ฒฝ๋กœ๋ช…์„ ์•Œ๋ ค ์ฃผ๋Š” ๋„ ์ข…๋ฃŒ ๋ฌธ์ž์—ด์ด๋‹ค.

dlpi_phdr ๋ฐ dlpi_phnum ํ•„๋“œ์˜ ์˜๋ฏธ๋ฅผ ์ดํ•ดํ•˜๋ ค๋ฉด ELF ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์„ธ๊ทธ๋จผํŠธ๋กœ ์ด๋ค„์ ธ ์žˆ๊ณ  ๊ฐ๊ฐ์— ๊ทธ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๊ธฐ์ˆ ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ํ—ค๋”๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. dlpi_phdr ํ•„๋“œ๋Š” ์ด ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ์˜ ํ”„๋กœ๊ทธ๋žจ ํ—ค๋”๋“ค์˜ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ์ด๋‹ค. dlpi_phnum ํ•„๋“œ๋Š” ๊ทธ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.

๊ทธ ํ”„๋กœ๊ทธ๋žจ ํ—ค๋”๋“ค์€ ๋‹ค์Œ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ์ฒด์ด๋‹ค.

typedef struct {
    Elf32_Word  p_type;    /* ์„ธ๊ทธ๋จผํŠธ ํƒ€์ž… */
    Elf32_Off   p_offset;  /* ์„ธ๊ทธ๋จผํŠธ ํŒŒ์ผ ์˜คํ”„์…‹ */
    Elf32_Addr  p_vaddr;   /* ์„ธ๊ทธ๋จผํŠธ ๊ฐ€์ƒ ์ฃผ์†Œ */
    Elf32_Addr  p_paddr;   /* ์„ธ๊ทธ๋จผํŠธ ๋ฌผ๋ฆฌ ์ฃผ์†Œ */
    Elf32_Word  p_filesz;  /* ํŒŒ์ผ ๋‚ด ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ */
    Elf32_Word  p_memsz;   /* ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์„ธ๊ทธ๋จผํŠธ ํฌ๊ธฐ */
    Elf32_Word  p_flags;   /* ์„ธ๊ทธ๋จผํŠธ ํ”Œ๋ž˜๊ทธ */
    Elf32_Word  p_align;   /* ์„ธ๊ทธ๋จผํŠธ ์ •๋ ฌ */
} Elf32_Phdr;

์ฐธ๊ณ ๋กœ ๋‹ค์Œ ์‹์„ ์‚ฌ์šฉํ•ด ํŠน์ • ํ”„๋กœ๊ทธ๋žจ ํ—ค๋” x์˜ ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

addr == info->dlpi_addr + info->dlpi_phdr[x].p_vaddr;

p_type์— ๊ฐ€๋Šฅํ•œ ๊ฐ’๋“ค๋กœ ๋‹ค์Œ์ด ์žˆ๋‹ค. (๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ <elf.h> ์ฐธ๊ณ .)

#define PT_LOAD         1    /* ์ ์žฌ ๊ฐ€๋Šฅ ํ”„๋กœ๊ทธ๋žจ ์„ธ๊ทธ๋จผํŠธ */
#define PT_DYNAMIC      2    /* ๋™์  ๋งํฌ ์ •๋ณด */
#define PT_INTERP       3    /* ํ”„๋กœ๊ทธ๋žจ ์ธํ„ฐํ”„๋ฆฌํ„ฐ */
#define PT_NOTE         4    /* ๋ณด์กฐ ์ •๋ณด */
#define PT_SHLIB        5    /* ์˜ˆ๋น„ */
#define PT_PHDR         6    /* ํ—ค๋” ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์œ„ํ•œ ํ•ญ๋ชฉ */
#define PT_TLS          7    /* ์Šค๋ ˆ๋“œ ๋กœ์ปฌ ์ €์žฅ ๊ณต๊ฐ„ ์„ธ๊ทธ๋จผํŠธ */
#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
#define PT_GNU_STACK  0x6474e551 /* ์Šคํƒ ์‹คํ–‰ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ‘œ์‹œ */
#define PT_GNU_RELRO  0x6474e552 /* ์žฌ๋ฐฐ์น˜ ํ›„์—๋Š” ์ฝ๊ธฐ ์ „์šฉ */

RETURN VALUE

dl_iterate_phdr() ํ•จ์ˆ˜๋Š” ๋งˆ์ง€๋ง‰ callback ํ˜ธ์ถœ์ด ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

VERSIONS

glibc ๋ฒ„์ „ 2.2.4๋ถ€ํ„ฐ dl_iterate_phdr()๋ฅผ ์ง€์›ํ•œ๋‹ค.

ATTRIBUTES

์ด ์ ˆ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ attributes(7)๋ฅผ ๋ณด๋ผ.

์ธํ„ฐํŽ˜์ด์Šค ์†์„ฑ ๊ฐ’
dl_iterate_phdr() ์Šค๋ ˆ๋“œ ์•ˆ์ „์„ฑ MT-Safe

CONFORMING TO

dl_iterate_phdr() ํ•จ์ˆ˜๋Š” ์–ด๋А ํ‘œ์ค€์—๋„ ๋ช…์„ธ๋ผ ์žˆ์ง€ ์•Š๋‹ค. ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์—์„œ๋„ ์ด ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์ง€๋งŒ ๋ฐ˜ํ™˜๋˜๋Š” dl_phdr_info ๊ตฌ์กฐ์ฒด์˜ ์„ธ๋ถ€ ๋‚ด์šฉ์ด ๋‹ค๋ฅด๋‹ค. BSD์™€ ์†”๋ผ๋ฆฌ์Šค์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์— dlpi_addr, dlpi_name, dlpi_phdr, dlpi_phnum ํ•„๋“œ์— ๋”ํ•ด์„œ ๋‹ค๋ฅธ ๊ตฌํ˜„๋ณ„ ํ•„๋“œ๋“ค์ด ํฌํ•จ๋ผ ์žˆ๋‹ค.

NOTES

C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ดํ›„ ๋ฒ„์ „์—์„œ dl_phdr_info ๊ตฌ์กฐ์ฒด์— ํ•„๋“œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ ๊ฒฝ์šฐ ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ๋Š” size ์ธ์ž๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ ํ•„๋“œ๊ฐ€ ์žˆ๋Š” ์‹œ์Šคํ…œ์—์„œ ๋™์ž‘ ์ค‘์ธ์ง€ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

callback์ด ๋ฐฉ๋ฌธํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์˜ค๋ธŒ์ ํŠธ๋Š” ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค. ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ์—์„œ dlpi_name ํ•„๋“œ๋Š” ๋นˆ ๋ฌธ์ž์—ด์ด ๋œ๋‹ค.

EXAMPLE

๋‹ค์Œ ํ”„๋กœ๊ทธ๋žจ์—์„œ๋Š” ์ ์žฌํ•œ ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ๊ฒฝ๋กœ๋ช… ๋ชฉ๋ก์„ ํ‘œ์‹œํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฐ ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์˜ค๋ธŒ์ ํŠธ์˜ ๊ฐ ELF ์„ธ๊ทธ๋จผํŠธ์˜ ์ •๋ณด(๊ฐ€์ƒ ์ฃผ์†Œ, ํฌ๊ธฐ, ํ”Œ๋ž˜๊ทธ, ํƒ€์ž…)๋ฅผ ๋‚˜์—ดํ•œ๋‹ค.

๋‹ค์Œ ์…ธ ์„ธ์…˜์€ x86-64 ์‹œ์Šคํ…œ์—์„œ ํ”„๋กœ๊ทธ๋žจ์ด ๋‚ด๋†“๋Š” ์ถœ๋ ฅ์„ ๋ณด์—ฌ ์ค€๋‹ค. ์ถœ๋ ฅ ์ฒซ ๋ฒˆ์งธ์˜ (์ด๋ฆ„์ด ๋นˆ ๋ฌธ์ž์—ด์ธ) ๊ณต์œ  ์˜ค๋ธŒ์ ํŠธ๋Š” ๋ฉ”์ธ ํ”„๋กœ๊ทธ๋žจ์ด๋‹ค.

$ ./a.out
Name: "" (9 segments)
     0: [      0x400040; memsz:    1f8] flags: 0x5; PT_PHDR
     1: [      0x400238; memsz:     1c] flags: 0x4; PT_INTERP
     2: [      0x400000; memsz:    ac4] flags: 0x5; PT_LOAD
     3: [      0x600e10; memsz:    240] flags: 0x6; PT_LOAD
     4: [      0x600e28; memsz:    1d0] flags: 0x6; PT_DYNAMIC
     5: [      0x400254; memsz:     44] flags: 0x4; PT_NOTE
     6: [      0x400970; memsz:     3c] flags: 0x4; PT_GNU_EH_FRAME
     7: [         (nil); memsz:      0] flags: 0x6; PT_GNU_STACK
     8: [      0x600e10; memsz:    1f0] flags: 0x4; PT_GNU_RELRO
Name: "linux-vdso.so.1" (4 segments)
     0: [0x7ffc6edd1000; memsz:    e89] flags: 0x5; PT_LOAD
     1: [0x7ffc6edd1360; memsz:    110] flags: 0x4; PT_DYNAMIC
     2: [0x7ffc6edd17b0; memsz:     3c] flags: 0x4; PT_NOTE
     3: [0x7ffc6edd17ec; memsz:     3c] flags: 0x4; PT_GNU_EH_FRAME
Name: "/lib64/libc.so.6" (10 segments)
     0: [0x7f55712ce040; memsz:    230] flags: 0x5; PT_PHDR
     1: [0x7f557145b980; memsz:     1c] flags: 0x4; PT_INTERP
     2: [0x7f55712ce000; memsz: 1b6a5c] flags: 0x5; PT_LOAD
     3: [0x7f55716857a0; memsz:   9240] flags: 0x6; PT_LOAD
     4: [0x7f5571688b80; memsz:    1f0] flags: 0x6; PT_DYNAMIC
     5: [0x7f55712ce270; memsz:     44] flags: 0x4; PT_NOTE
     6: [0x7f55716857a0; memsz:     78] flags: 0x4; PT_TLS
     7: [0x7f557145b99c; memsz:   544c] flags: 0x4; PT_GNU_EH_FRAME
     8: [0x7f55712ce000; memsz:      0] flags: 0x6; PT_GNU_STACK
     9: [0x7f55716857a0; memsz:   3860] flags: 0x4; PT_GNU_RELRO
Name: "/lib64/ld-linux-x86-64.so.2" (7 segments)
     0: [0x7f557168f000; memsz:  20828] flags: 0x5; PT_LOAD
     1: [0x7f55718afba0; memsz:   15a8] flags: 0x6; PT_LOAD
     2: [0x7f55718afe10; memsz:    190] flags: 0x6; PT_DYNAMIC
     3: [0x7f557168f1c8; memsz:     24] flags: 0x4; PT_NOTE
     4: [0x7f55716acec4; memsz:    604] flags: 0x4; PT_GNU_EH_FRAME
     5: [0x7f557168f000; memsz:      0] flags: 0x6; PT_GNU_STACK
     6: [0x7f55718afba0; memsz:    460] flags: 0x4; PT_GNU_RELRO

ํ”„๋กœ๊ทธ๋žจ ์†Œ์Šค

#define _GNU_SOURCE
#include <link.h>
#include <stdlib.h>
#include <stdio.h>

static int
callback(struct dl_phdr_info *info, size_t size, void *data)
{
    char *type;
    int p_type, j;

    printf("Name: \"%s\" (%d segments)\n", info->dlpi_name,
               info->dlpi_phnum);

    for (j = 0; j < info->dlpi_phnum; j++) {
        p_type = info->dlpi_phdr[j].p_type;
        type =  (p_type == PT_LOAD) ? "PT_LOAD" :
                (p_type == PT_DYNAMIC) ? "PT_DYNAMIC" :
                (p_type == PT_INTERP) ? "PT_INTERP" :
                (p_type == PT_NOTE) ? "PT_NOTE" :
                (p_type == PT_INTERP) ? "PT_INTERP" :
                (p_type == PT_PHDR) ? "PT_PHDR" :
                (p_type == PT_TLS) ? "PT_TLS" :
                (p_type == PT_GNU_EH_FRAME) ? "PT_GNU_EH_FRAME" :
                (p_type == PT_GNU_STACK) ? "PT_GNU_STACK" :
                (p_type == PT_GNU_RELRO) ? "PT_GNU_RELRO" : NULL;

        printf("    %2d: [%14p; memsz:%7lx] flags: 0x%x; ", j,
                (void *) (info->dlpi_addr + info->dlpi_phdr[j].p_vaddr),
                info->dlpi_phdr[j].p_memsz,
                info->dlpi_phdr[j].p_flags);
        if (type != NULL)
            printf("%s\n", type);
        else
            printf("[other (0x%x)]\n", p_type);
    }

    return 0;
}

int
main(int argc, char *argv[])
{
    dl_iterate_phdr(callback, NULL);

    exit(EXIT_SUCCESS);
}

SEE ALSO

ldd(1), objdump(1), readelf(1), dladdr(3), dlopen(3), elf(5), ld.so(8)

Executable and Linking Format Specification, ์˜จ๋ผ์ธ ์—ฌ๋Ÿฌ ๊ณณ์—์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ.


2019-03-06

โš ๏ธ **GitHub.com Fallback** โš ๏ธ