save AT_HWCAP from auxv for subsequent use in machine-specific code

it's expected that this will be needed/useful only in asm, so I've
given it its own symbol that can be addressed in pc-relative ways from
asm rather than adding a field in the __libc structure which would
require hard-coding the offset wherever it's used.
This commit is contained in:
Rich Felker
2012-07-27 00:14:57 -04:00
parent 07e62953c7
commit e1b9c1b01b
3 changed files with 4 additions and 0 deletions

View File

@ -23,6 +23,7 @@ void __init_security(size_t *auxv)
#endif
for (; auxv[0]; auxv+=2) if (auxv[0]<AUX_CNT) aux[auxv[0]] = auxv[1];
__hwcap = aux[AT_HWCAP];
if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID]
&& !aux[AT_SECURE]) return;

View File

@ -13,3 +13,5 @@ struct __libc __libc;
#ifdef BROKEN_VISIBILITY
__asm__(".hidden __libc");
#endif
size_t __hwcap;

View File

@ -18,6 +18,7 @@ struct __libc {
int ofl_lock[2];
};
extern size_t __hwcap;
#if !defined(__PIC__) || 100*__GNUC__+__GNUC_MINOR__ >= 303 || defined(__PCC__) || defined(__TINYC__)