X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fldso%2Fdynlink.c;h=1b55e0774b9818c0f4807bab35d46876977ba0c7;hb=4b87736998e8d8c0610c3c31b6862c77248a98df;hp=390f50baeddf9adc5b9dca8968ace0e2f22955af;hpb=a045883365ccb404a63b7c56a42daf0851e579fa;p=musl diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c index 390f50ba..1b55e077 100644 --- a/src/ldso/dynlink.c +++ b/src/ldso/dynlink.c @@ -1,3 +1,4 @@ +#ifdef __PIC__ #include #include #include @@ -482,13 +483,6 @@ void *__dynlink(int argc, char **argv, size_t *got) decode_vec(auxv, aux, AUX_CNT); - for (i=0; auxv[i]; i+=2) { - if (auxv[i]==AT_SYSINFO_EHDR) { - vdso_base = auxv[i+1]; - break; - } - } - /* Only trust user/env if kernel says we're not suid/sgid */ if ((aux[0]&0x7800)!=0x7800 || aux[AT_UID]!=aux[AT_EUID] || aux[AT_GID]!=aux[AT_EGID] || aux[AT_SECURE]) { @@ -496,6 +490,13 @@ void *__dynlink(int argc, char **argv, size_t *got) env_preload = 0; } + for (i=0; auxv[i]; i+=2) { + if (auxv[i]==AT_SYSINFO_EHDR) { + vdso_base = auxv[i+1]; + break; + } + } + /* Relocate ldso's DYNAMIC pointer and load vector */ decode_vec((void *)(got[0] += aux[AT_BASE]), lib_dyn, DYN_CNT); @@ -681,3 +682,4 @@ int dlclose(void *p) { return 0; } +#endif