summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRod Evans <Rod.Evans@Sun.COM>2010-07-01 22:10:47 -0700
committerRod Evans <Rod.Evans@Sun.COM>2010-07-01 22:10:47 -0700
commitd47ecb8c54ecda1beda0cc2808462c5ff886a5ef (patch)
tree62197d7404a317744460433f7aea5880608a7aff
parent26cb54a92aed3443f699b590c5c1601ba9a22963 (diff)
downloadillumos-gate-d47ecb8c54ecda1beda0cc2808462c5ff886a5ef.tar.gz
6965723 libsoftcrypto symbol capabilities rely on compiler generated capabilities - gcc failure
-rw-r--r--usr/src/cmd/sgs/libld/common/libld.msg3
-rw-r--r--usr/src/cmd/sgs/libld/common/sections.c12
-rw-r--r--usr/src/cmd/sgs/packages/common/SUNWonld-README2
-rw-r--r--usr/src/lib/pkcs11/libsoftcrypto/capabilities/intel/common/mapfile-cap9
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: