diff options
author | Rod Evans <Rod.Evans@Sun.COM> | 2010-07-01 22:10:47 -0700 |
---|---|---|
committer | Rod Evans <Rod.Evans@Sun.COM> | 2010-07-01 22:10:47 -0700 |
commit | d47ecb8c54ecda1beda0cc2808462c5ff886a5ef (patch) | |
tree | 62197d7404a317744460433f7aea5880608a7aff | |
parent | 26cb54a92aed3443f699b590c5c1601ba9a22963 (diff) | |
download | illumos-gate-d47ecb8c54ecda1beda0cc2808462c5ff886a5ef.tar.gz |
6965723 libsoftcrypto symbol capabilities rely on compiler generated capabilities - gcc failure
4 files changed, 25 insertions, 1 deletions
diff --git a/usr/src/cmd/sgs/libld/common/libld.msg b/usr/src/cmd/sgs/libld/common/libld.msg index 0989326f2b..e46e1316ee 100644 --- a/usr/src/cmd/sgs/libld/common/libld.msg +++ b/usr/src/cmd/sgs/libld/common/libld.msg @@ -605,6 +605,9 @@ @ MSG_CAP_MULDEFSYMS "\t(file %s symbol '%s'; file %s symbol '%s');" @ MSG_CAP_REDUNDANT "file %s: section [%u]%s: symbol capabilities \ redundant, as object capabilities are more restrictive" +@ MSG_CAP_NOSYMSFOUND "no global symbols have been found that are associated \ + with capabilities identified relocatable objects: \ + -z symbolcap has no effect" @ MSG_CAPINFO_INVALSYM "file %s: capabilities info section [%u]%s: index %d: \ family member symbol '%s': invalid" diff --git a/usr/src/cmd/sgs/libld/common/sections.c b/usr/src/cmd/sgs/libld/common/sections.c index ad8d05f01e..b0ecf7b9f3 100644 --- a/usr/src/cmd/sgs/libld/common/sections.c +++ b/usr/src/cmd/sgs/libld/common/sections.c @@ -1583,12 +1583,24 @@ make_cap(Ofl_desc *ofl, Word shtype, const char *shname, int ident) strtbl = ofl->ofl_dynstrtab; /* + * If symbol capabilities have been requested, but none have been + * created, warn the user. This scenario can occur if none of the + * input relocatable objects defined any object capabilities. + */ + if ((ofl->ofl_flags & FLG_OF_OTOSCAP) && (ofl->ofl_capsymcnt == 0)) { + eprintf(ofl->ofl_lml, ERR_WARNING, + MSG_INTL(MSG_CAP_NOSYMSFOUND)); + } + + /* * If symbol capabilities have been collected, but no symbols are left * referencing these capabilities, promote the capability groups back * to an object capability definition. */ if ((ofl->ofl_flags & FLG_OF_OTOSCAP) && ofl->ofl_capsymcnt && (ofl->ofl_capfamilies == NULL)) { + eprintf(ofl->ofl_lml, ERR_WARNING, + MSG_INTL(MSG_CAP_NOSYMSFOUND)); ld_cap_move_symtoobj(ofl); ofl->ofl_capsymcnt = 0; ofl->ofl_capgroups = NULL; diff --git a/usr/src/cmd/sgs/packages/common/SUNWonld-README b/usr/src/cmd/sgs/packages/common/SUNWonld-README index 8482db1e48..eaeb3372ff 100644 --- a/usr/src/cmd/sgs/packages/common/SUNWonld-README +++ b/usr/src/cmd/sgs/packages/common/SUNWonld-README @@ -1599,3 +1599,5 @@ Bugid Risk Synopsis 6964517 OSnet mapfiles should use version 2 link-editor syntax (2nd pass) 6948720 SHT_INIT_ARRAY etc. section names don't follow ELF gABI (D) 6962343 sgsmsg should use mkstemp() for temporary file creation +6965723 libsoftcrypto symbol capabilities rely on compiler generated + capabilities - gcc failure (link-editor components only) diff --git a/usr/src/lib/pkcs11/libsoftcrypto/capabilities/intel/common/mapfile-cap b/usr/src/lib/pkcs11/libsoftcrypto/capabilities/intel/common/mapfile-cap index ec14158241..31da59ab94 100644 --- a/usr/src/lib/pkcs11/libsoftcrypto/capabilities/intel/common/mapfile-cap +++ b/usr/src/lib/pkcs11/libsoftcrypto/capabilities/intel/common/mapfile-cap @@ -27,10 +27,17 @@ # of pics/bignumimpl.o. Only the last object exports any interfaces, hence # we compile, and combine all three. The resulting object is identified as a # whole with the bignum_i386_asm.o capabilities flags. +# +# Note, the Studio assembler identifies bignum_i386_asm.o with its capability +# requirements - SSE2 and MMX. Gnu's assembler does not. These capability +# flags are defined here to ensure either assembler can be used, and a valid +# capabilities object is built for translating to a symbol capabilities object. $mapfile_version 2 -CAPABILITY i386_hwcap1; +CAPABILITY i386_hwcap1 { + HW += SSE2 MMX; +}; SYMBOL_SCOPE { global: |