diff options
| author | Toomas Soome <tsoome@me.com> | 2021-04-11 00:34:49 +0300 |
|---|---|---|
| committer | Toomas Soome <tsoome@me.com> | 2021-04-15 23:46:59 +0300 |
| commit | 7e85189a2092f2550c3af3a55e22564546838229 (patch) | |
| tree | cb4a4d7a92855ce1ce6e1332813f14b741ca3729 | |
| parent | 15276eb5b5c891978242f14352c27676ed336244 (diff) | |
| download | illumos-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-vers | 36 | ||||
| -rw-r--r-- | usr/src/cmd/ast/libshell/mapfile-vers | 12 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/libld/common/update.c | 22 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/rtld/common/mapfile-vers | 22 | ||||
| -rw-r--r-- | usr/src/cmd/sgs/tools/SUNWonld-README | 1 | ||||
| -rw-r--r-- | usr/src/lib/gss_mechs/mech_krb5/mapfile-vers | 6 | ||||
| -rw-r--r-- | usr/src/lib/libc/port/mapfile-vers | 52 | ||||
| -rw-r--r-- | usr/src/lib/libipsecutil/common/mapfile-vers | 10 | ||||
| -rw-r--r-- | usr/src/lib/libnisdb/mapfile-vers | 17 | ||||
| -rw-r--r-- | usr/src/lib/libwrap/mapfile-vers | 3 | ||||
| -rw-r--r-- | usr/src/lib/storage/libg_fc/common/mapfile-vers | 32 |
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; |
