summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToomas Soome <tsoome@me.com>2021-04-11 00:34:49 +0300
committerToomas Soome <tsoome@me.com>2021-04-15 23:46:59 +0300
commit7e85189a2092f2550c3af3a55e22564546838229 (patch)
treecb4a4d7a92855ce1ce6e1332813f14b741ca3729
parent15276eb5b5c891978242f14352c27676ed336244 (diff)
downloadillumos-joyent-7e85189a2092f2550c3af3a55e22564546838229.tar.gz
13487 want mapfile-based assertions about symbol properties (fix SPARC)
Reviewed by: Igor Kozhukhov <igor@dilos.org> Reviewed by: Andy Fiddaman <andy@omnios.org> Reviewed by: Klaus Ziegler <klausz@haus-gisela.de> Approved by: Robert Mustacchi <rm@fingolfin.org>
-rw-r--r--usr/src/cmd/ast/libast/mapfile-vers36
-rw-r--r--usr/src/cmd/ast/libshell/mapfile-vers12
-rw-r--r--usr/src/cmd/sgs/libld/common/update.c22
-rw-r--r--usr/src/cmd/sgs/rtld/common/mapfile-vers22
-rw-r--r--usr/src/cmd/sgs/tools/SUNWonld-README1
-rw-r--r--usr/src/lib/gss_mechs/mech_krb5/mapfile-vers6
-rw-r--r--usr/src/lib/libc/port/mapfile-vers52
-rw-r--r--usr/src/lib/libipsecutil/common/mapfile-vers10
-rw-r--r--usr/src/lib/libnisdb/mapfile-vers17
-rw-r--r--usr/src/lib/libwrap/mapfile-vers3
-rw-r--r--usr/src/lib/storage/libg_fc/common/mapfile-vers32
11 files changed, 191 insertions, 22 deletions
diff --git a/usr/src/cmd/ast/libast/mapfile-vers b/usr/src/cmd/ast/libast/mapfile-vers
index 1575e26ab6..4e48d9cf73 100644
--- a/usr/src/cmd/ast/libast/mapfile-vers
+++ b/usr/src/cmd/ast/libast/mapfile-vers
@@ -90,7 +90,13 @@ $elif _ELF32
_Sftable {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 1192;
+ $elif _sparc
+ SIZE = 1248;
+ $else
+ $error Unknown architecture
+ $endif
};
};
_Vmextern {
@@ -1083,31 +1089,61 @@ $elif _ELF32
_Sfstderr {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 104;
+ $elif _sparc
+ SIZE = 112;
+ $else
+ $error Unknown architecture
+ $endif
};
};
_Sfstdin {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 104;
+ $elif _sparc
+ SIZE = 112;
+ $else
+ $error Unknown architecture
+ $endif
};
};
_Sfstdout {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 104;
+ $elif _sparc
+ SIZE = 112;
+ $else
+ $error Unknown architecture
+ $endif
};
};
_Stak_data {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 104;
+ $elif _sparc
+ SIZE = 112;
+ $else
+ $error Unknown architecture
+ $endif
};
};
_ast_conf_data {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = 23324;
+ $elif _sparc
+ SIZE = 27440;
+ $else
+ $error Unknown architecture
+ $endif
};
};
$else
diff --git a/usr/src/cmd/ast/libshell/mapfile-vers b/usr/src/cmd/ast/libshell/mapfile-vers
index 344f0697c1..9cfd543e9d 100644
--- a/usr/src/cmd/ast/libshell/mapfile-vers
+++ b/usr/src/cmd/ast/libshell/mapfile-vers
@@ -123,9 +123,21 @@ SYMBOL_VERSION SUNWprivate_1.1 {
# semi-private, needed for shcomp
$if _ELF64
+ $if _x86
sh { ASSERT = { TYPE = OBJECT; SIZE = 1888; }; };
+ $elif _sparc
+ sh { ASSERT = { TYPE = OBJECT; SIZE = 1920; }; };
+ $else
+ $error Unknown architecture
+ $endif
$elif _ELF32
+ $if _x86
sh { ASSERT = { TYPE = OBJECT; SIZE = 1216; }; };
+ $elif _sparc
+ sh { ASSERT = { TYPE = OBJECT; SIZE = 1224; }; };
+ $else
+ $error Unknown architecture
+ $endif
$else
$error unknown ELFCLASS
$endif
diff --git a/usr/src/cmd/sgs/libld/common/update.c b/usr/src/cmd/sgs/libld/common/update.c
index 94692ae22a..2bef6a18a8 100644
--- a/usr/src/cmd/sgs/libld/common/update.c
+++ b/usr/src/cmd/sgs/libld/common/update.c
@@ -3722,11 +3722,11 @@ check_mapfile_assertions(Ofl_desc *ofl)
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ALIAS_NOTALIAS),
ma->ass_file,
- ma->ass_lineno,
+ EC_LINENO(ma->ass_lineno),
ma->ass_sdp->sd_name,
dup->aav_ass->ass_sdp->sd_name,
dup->aav_ass->ass_file,
- dup->aav_ass->ass_lineno);
+ EC_LINENO(dup->aav_ass->ass_lineno));
ret = S_ERROR;
} else {
avl_insert(&ass_avl, av, where);
@@ -3745,7 +3745,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
Sym *sym = sdp->sd_sym;
ld_eprintf(ofl, ERR_FATAL, MSG_INTL(MSG_ASSFAIL_SCOPE),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name),
conv_sym_info_bind(ma->ass_bind, CONV_FMT_ALT_CFNP,
&inv_buf),
@@ -3762,7 +3762,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
NULL, ofl)) == NULL) {
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ALIAS_BADSYM),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
ma->ass_alias);
ret = S_ERROR;
} else {
@@ -3781,7 +3781,8 @@ check_mapfile_assertions(Ofl_desc *ofl)
SYM_ASSERT_ALIAS)) {
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ALIAS_TOALIAS),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file,
+ EC_LINENO(ma->ass_lineno),
ma->ass_alias);
ret = S_ERROR;
}
@@ -3795,7 +3796,8 @@ check_mapfile_assertions(Ofl_desc *ofl)
ELF_ST_TYPE(sym->st_info))) {
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ASSFAIL_ALIAS),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file,
+ EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name),
asdp->sd_name);
ret = S_ERROR;
@@ -3816,7 +3818,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
if (ass_enabled(ma, SYM_ASSERT_SIZE) &&
(ma->ass_size != sdp->sd_sym->st_size)) {
ld_eprintf(ofl, ERR_FATAL, MSG_INTL(MSG_ASSFAIL_SIZE),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name),
ma->ass_size, (Lword)sdp->sd_sym->st_size);
ret = S_ERROR;
@@ -3827,7 +3829,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
(sdp->sd_isc->is_shdr->sh_type == SHT_NOBITS)) {
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ASSFAIL_BITS),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name));
ret = S_ERROR;
}
@@ -3835,7 +3837,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
(sdp->sd_isc->is_shdr->sh_type != SHT_NOBITS)) {
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ASSFAIL_NOBITS),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name));
ret = S_ERROR;
}
@@ -3847,7 +3849,7 @@ check_mapfile_assertions(Ofl_desc *ofl)
ld_eprintf(ofl, ERR_FATAL,
MSG_INTL(MSG_ASSFAIL_TYPE),
- ma->ass_file, ma->ass_lineno,
+ ma->ass_file, EC_LINENO(ma->ass_lineno),
demangle(sdp->sd_name),
conv_sym_info_type(ehdr->e_machine,
ma->ass_type, CONV_FMT_ALT_CFNP, &inv_buf),
diff --git a/usr/src/cmd/sgs/rtld/common/mapfile-vers b/usr/src/cmd/sgs/rtld/common/mapfile-vers
index c67b144f2c..5647f404c4 100644
--- a/usr/src/cmd/sgs/rtld/common/mapfile-vers
+++ b/usr/src/cmd/sgs/rtld/common/mapfile-vers
@@ -84,6 +84,12 @@ SYMBOL_VERSION SUNWprivate_1.3 {
$elif _x86 && _ELF64
SIZE = 80;
+ $elif _sparc && _ELF32
+
+ SIZE = 44;
+ $elif _sparc && _ELF64
+
+ SIZE = 80;
$else
$error Unknown platform
@@ -98,10 +104,10 @@ SYMBOL_VERSION SUNWprivate_1.3 {
lml_main {
ASSERT = {
TYPE = OBJECT;
- $if _x86 && _ELF32
+ $if _ELF32
SIZE = addrsize[41];
- $elif _x86 && _ELF64
+ $elif _ELF64
SIZE = addrsize[38];
$else
@@ -165,7 +171,13 @@ $if _ELF32
reloc32_table {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = addrsize[117];
+ $elif _sparc
+ SIZE = addrsize[264];
+ $else
+ $error Unknown architecture
+ $endif
};
};
$elif _ELF64
@@ -173,7 +185,13 @@ $elif _ELF64
reloc64_table {
ASSERT = {
TYPE = OBJECT;
+ $if _x86
SIZE = addrsize[68];
+ $elif _sparc
+ SIZE = addrsize[176];
+ $else
+ $error Unknown architecture
+ $endif
};
};
$else
diff --git a/usr/src/cmd/sgs/tools/SUNWonld-README b/usr/src/cmd/sgs/tools/SUNWonld-README
index 3ae424340c..2b98810bfd 100644
--- a/usr/src/cmd/sgs/tools/SUNWonld-README
+++ b/usr/src/cmd/sgs/tools/SUNWonld-README
@@ -1672,3 +1672,4 @@ Bugid Risk Synopsis
13481 ld(1) should skip GCC local aliases when building symsort sections
13684 ld aborts when input object has no file name
13487 want mapfile-based assertions about symbol properties
+13487 want mapfile-based assertions about symbol properties (fix SPARC)
diff --git a/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers b/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers
index 81225f7a8a..cdc17fa231 100644
--- a/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers
+++ b/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers
@@ -292,12 +292,16 @@ SYMBOL_VERSION SUNWprivate_1.1 {
kg_make_seq_num;
kg_seal;
kg_unseal;
+$if _x86
$if _ELF64
kg_vdb { ASSERT = { TYPE = OBJECT; SIZE = 48; }; };
$elif _ELF32
kg_vdb { ASSERT = { TYPE = OBJECT; SIZE = 36; }; };
+$endif
+$elif _sparc
+ kg_vdb { ASSERT = { TYPE = OBJECT; SIZE = 48; }; };
$else
-$error unknown ELFCLASS
+$error Unknown architecture
$endif
kpws_error_table;
krb5_425_conv_principal;
diff --git a/usr/src/lib/libc/port/mapfile-vers b/usr/src/lib/libc/port/mapfile-vers
index b5f36072ae..00d50029e0 100644
--- a/usr/src/lib/libc/port/mapfile-vers
+++ b/usr/src/lib/libc/port/mapfile-vers
@@ -1955,12 +1955,21 @@ SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3)
SIZE = addrsize[6];
};
};
+$if _x86
_sys_fpelist {
ASSERT = {
TYPE = OBJECT;
SIZE = addrsize[9];
};
};
+$else
+ _sys_fpelist {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = addrsize[8];
+ };
+ };
+$endif
_sys_illlist {
ASSERT = {
TYPE = OBJECT;
@@ -2006,12 +2015,21 @@ SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3)
valloc { FLAGS = NODIRECT; };
$if _ELF32
+$if _x86
_bufendtab {
ASSERT = {
TYPE = OBJECT;
SIZE = 244;
};
};
+$else
+ _bufendtab {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 84;
+ };
+ };
+$endif
_lastbuf {
ASSERT = {
TYPE = OBJECT;
@@ -2280,8 +2298,12 @@ $endif
$if _ELF64
_iob { ASSERT = { TYPE = OBJECT; SIZE = 2560; }; };
$elif _ELF32
+$if _x86
_iob { ASSERT = { TYPE = OBJECT; SIZE = 960; }; };
$else
+ _iob { ASSERT = { TYPE = OBJECT; SIZE = 320; }; };
+$endif
+$else
$error unknown ELFCLASS
$endif
@@ -3295,6 +3317,7 @@ $if _ELF64
};
};
$elif _ELF32
+$if _x86
_smbuf {
ASSERT = {
TYPE = OBJECT;
@@ -3302,6 +3325,14 @@ $elif _ELF32
};
};
$else
+ _smbuf {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 168;
+ };
+ };
+$endif
+$else
$error unknown ELFCLASS
$endif
_sp {
@@ -3531,9 +3562,24 @@ $error unknown platform
$endif
$if _sparc
- __lyday_to_month;
- __mon_lengths;
- __yday_to_month;
+ __lyday_to_month {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 48;
+ };
+ };
+ __mon_lengths {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 96;
+ };
+ };
+ __yday_to_month {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 48;
+ };
+ };
$endif
$if i386
_sse_hw {
diff --git a/usr/src/lib/libipsecutil/common/mapfile-vers b/usr/src/lib/libipsecutil/common/mapfile-vers
index b023c23a53..a682d0cadd 100644
--- a/usr/src/lib/libipsecutil/common/mapfile-vers
+++ b/usr/src/lib/libipsecutil/common/mapfile-vers
@@ -56,12 +56,16 @@ SYMBOL_VERSION SUNWprivate_1.1 {
dump_key;
dump_sadb_idtype;
dump_sockaddr;
-$if _ELF64
+$if _x86 && _ELF64
env { ASSERT = { TYPE = OBJECT; SIZE = 64; }; };
-$elif _ELF32
+$elif _x86 && _ELF32
env { ASSERT = { TYPE = OBJECT; SIZE = 40; }; };
+$elif _sparc && _ELF64
+ env { ASSERT = { TYPE = OBJECT; SIZE = 96; }; };
+$elif _sparc && _ELF32
+ env { ASSERT = { TYPE = OBJECT; SIZE = 48; }; };
$else
-$error unknown ELFCLASS
+$error Unknown architecture
$endif
_errfp { TYPE = FUNCTION; FILTER = libc.so.1; };
_errxfp { TYPE = FUNCTION; FILTER = libc.so.1; };
diff --git a/usr/src/lib/libnisdb/mapfile-vers b/usr/src/lib/libnisdb/mapfile-vers
index deee02c155..8048d48a3f 100644
--- a/usr/src/lib/libnisdb/mapfile-vers
+++ b/usr/src/lib/libnisdb/mapfile-vers
@@ -129,6 +129,7 @@ SYMBOL_VERSION SUNWprivate_2.1 {
SIZE = 60;
};
};
+$if _x86
ldapDBTableMapping {
ASSERT = {
TYPE = OBJECT;
@@ -141,6 +142,22 @@ SYMBOL_VERSION SUNWprivate_2.1 {
SIZE = 340;
};
};
+$elif _sparc
+ ldapDBTableMapping {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 144;
+ };
+ };
+ ldapMappingList {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 344;
+ };
+ };
+$else
+$error Unknown architecture
+$endif
loadAllLDAP;
lock_core;
lock_map;
diff --git a/usr/src/lib/libwrap/mapfile-vers b/usr/src/lib/libwrap/mapfile-vers
index 85dc40f09e..714e3e622e 100644
--- a/usr/src/lib/libwrap/mapfile-vers
+++ b/usr/src/lib/libwrap/mapfile-vers
@@ -112,6 +112,9 @@ SYMBOL_VERSION ILLUMOS_0.1 {
$elif _x86 && _ELF32
SIZE = addrsize[10];
+ $elif _sparc
+
+ SIZE = addrsize[12];
$else
$error Unknown architecture
diff --git a/usr/src/lib/storage/libg_fc/common/mapfile-vers b/usr/src/lib/storage/libg_fc/common/mapfile-vers
index 8515664d10..120c99526a 100644
--- a/usr/src/lib/storage/libg_fc/common/mapfile-vers
+++ b/usr/src/lib/storage/libg_fc/common/mapfile-vers
@@ -81,8 +81,18 @@ SYMBOL_VERSION SUNW_2.0 {
g_scsi_send_diag_cmd;
g_scsi_tur;
g_scsi_writebuffer_cmd;
- g_switch_to_alpa;
- g_sf_alpa_to_switch;
+ g_switch_to_alpa {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 126;
+ };
+ };
+ g_sf_alpa_to_switch {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 240;
+ };
+ };
g_i18n_catopen;
g_port_offline;
g_port_online;
@@ -113,7 +123,23 @@ SYMBOL_VERSION SUNW_2.0 {
g_scsi_inquiry_cmd;
g_scsi_persistent_reserve_in_cmd;
g_get_path_type;
- l_catd;
+$if _ELF32
+ l_catd {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 4;
+ };
+ };
+$elif _ELF64
+ l_catd {
+ ASSERT = {
+ TYPE = OBJECT;
+ SIZE = 8;
+ };
+ };
+$else
+$error Unknown ELFCLASS
+$endif
g_get_lun_str;
g_get_lun_number;
g_get_pathlist;