| OLD | NEW |
| 1 #ifndef SHARED | |
| 2 | |
| 3 #include <elf.h> | 1 #include <elf.h> |
| 4 #include <link.h> | 2 #include <link.h> |
| 5 #include "libc.h" | 3 #include "libc.h" |
| 6 | 4 |
| 7 #define AUX_CNT 38 | 5 #define AUX_CNT 38 |
| 8 | 6 |
| 9 int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void
*data), void *data) | 7 static int static_dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size
_t size, void *data), void *data) |
| 10 { | 8 { |
| 11 unsigned char *p; | 9 unsigned char *p; |
| 12 ElfW(Phdr) *phdr, *tls_phdr=0; | 10 ElfW(Phdr) *phdr, *tls_phdr=0; |
| 13 size_t base = 0; | 11 size_t base = 0; |
| 14 size_t n; | 12 size_t n; |
| 15 struct dl_phdr_info info; | 13 struct dl_phdr_info info; |
| 16 size_t i, aux[AUX_CNT]; | 14 size_t i, aux[AUX_CNT]; |
| 17 | 15 |
| 18 for (i=0; libc.auxv[i]; i+=2) | 16 for (i=0; libc.auxv[i]; i+=2) |
| 19 if (libc.auxv[i]<AUX_CNT) aux[libc.auxv[i]] = libc.auxv[i+1]; | 17 if (libc.auxv[i]<AUX_CNT) aux[libc.auxv[i]] = libc.auxv[i+1]; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 33 info.dlpi_subs = 0; | 31 info.dlpi_subs = 0; |
| 34 if (tls_phdr) { | 32 if (tls_phdr) { |
| 35 info.dlpi_tls_modid = 1; | 33 info.dlpi_tls_modid = 1; |
| 36 info.dlpi_tls_data = (void *)(base + tls_phdr->p_vaddr); | 34 info.dlpi_tls_data = (void *)(base + tls_phdr->p_vaddr); |
| 37 } else { | 35 } else { |
| 38 info.dlpi_tls_modid = 0; | 36 info.dlpi_tls_modid = 0; |
| 39 info.dlpi_tls_data = 0; | 37 info.dlpi_tls_data = 0; |
| 40 } | 38 } |
| 41 return (callback)(&info, sizeof (info), data); | 39 return (callback)(&info, sizeof (info), data); |
| 42 } | 40 } |
| 43 #endif | 41 |
| 42 weak_alias(static_dl_iterate_phdr, dl_iterate_phdr); |
| OLD | NEW |