diff options
| author | Robert Mustacchi <rm@joyent.com> | 2012-12-13 11:29:00 -0800 |
|---|---|---|
| committer | Robert Mustacchi <rm@joyent.com> | 2012-12-20 11:08:41 -0800 |
| commit | ebb8ac078e9265f87093fbb363e8c2cbc6ee13e6 (patch) | |
| tree | 75ef00d213e7cb6ada89fc357ad3f54eebd7be50 /usr/src/uts/common/exec | |
| parent | eb23829ff08a873c612ac45d191d559394b4b408 (diff) | |
| download | illumos-gate-ebb8ac078e9265f87093fbb363e8c2cbc6ee13e6.tar.gz | |
3414 Need a new word of AT_SUN_HWCAP bits
3415 Add isainfo support for f16c and rdrand
3416 Need disassembler support for rdrand and f16c
Reviewed by: Jerry Jelinek <jerry.jelinek@joyent.com>
Reviewed by: Richard Lowe <richlowe@richlowe.net>
Reviewed by: Hans Rosenfeld <hans.rosenfeld@nexenta.com>
Approved by: Garrett D'Amore <garrett@damore.org>
Diffstat (limited to 'usr/src/uts/common/exec')
| -rw-r--r-- | usr/src/uts/common/exec/elf/elf.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/usr/src/uts/common/exec/elf/elf.c b/usr/src/uts/common/exec/elf/elf.c index cc78a40bbc..ab46ff3924 100644 --- a/usr/src/uts/common/exec/elf/elf.c +++ b/usr/src/uts/common/exec/elf/elf.c @@ -25,6 +25,9 @@ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ /* All Rights Reserved */ +/* + * Copyright (c) 2012, Joyent, Inc. All rights reserved. + */ #include <sys/types.h> #include <sys/param.h> @@ -415,11 +418,12 @@ elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, * AT_PAGESZ * AT_SUN_LDSECURE * AT_SUN_HWCAP + * AT_SUN_HWCAP2 * AT_SUN_PLATFORM * AT_SUN_EXECNAME * AT_NULL * - * total == 8 + * total == 9 */ if (hasdy && hasu) { /* @@ -434,7 +438,7 @@ elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, * * total = 5 */ - args->auxsize = (8 + 5) * sizeof (aux_entry_t); + args->auxsize = (9 + 5) * sizeof (aux_entry_t); } else if (hasdy) { /* * Has PT_INTERP but no PT_PHDR @@ -444,9 +448,9 @@ elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, * * total = 2 */ - args->auxsize = (8 + 2) * sizeof (aux_entry_t); + args->auxsize = (9 + 2) * sizeof (aux_entry_t); } else { - args->auxsize = 8 * sizeof (aux_entry_t); + args->auxsize = 9 * sizeof (aux_entry_t); } } else { args->auxsize = 0; @@ -759,12 +763,16 @@ elfexec(vnode_t *vp, execa_t *uap, uarg_t *args, intpdata_t *idatap, * (Potentially different between 32-bit and 64-bit ABIs) */ #if defined(_LP64) - if (args->to_model == DATAMODEL_NATIVE) + if (args->to_model == DATAMODEL_NATIVE) { ADDAUX(aux, AT_SUN_HWCAP, auxv_hwcap) - else + ADDAUX(aux, AT_SUN_HWCAP2, auxv_hwcap_2) + } else { ADDAUX(aux, AT_SUN_HWCAP, auxv_hwcap32) + ADDAUX(aux, AT_SUN_HWCAP2, auxv_hwcap32_2) + } #else ADDAUX(aux, AT_SUN_HWCAP, auxv_hwcap) + ADDAUX(aux, AT_SUN_HWCAP2, auxv_hwcap_2) #endif if (branded) { /* |
