diff options
author | Richard Lowe <richlowe@richlowe.net> | 2021-04-05 14:06:47 -0500 |
---|---|---|
committer | Richard Lowe <richlowe@richlowe.net> | 2021-04-09 15:48:05 -0500 |
commit | 8222814ef8560ee0ba222eca8ca5acffc6cd0e44 (patch) | |
tree | 55274c4f702ccf5aa98764391b250a81ba3f1990 /usr/src | |
parent | 99ea293e719ac006d413e4fde6ac0d5cd4dd6c59 (diff) | |
download | illumos-joyent-8222814ef8560ee0ba222eca8ca5acffc6cd0e44.tar.gz |
13487 want mapfile-based assertions about symbol properties
Reviewed by: Robert Mustacchi <rm@fingolfin.org>
Reviewed by: Jason King <jason.brian.king@gmail.com>
Approved by: Dan McDonald <danmcd@joyent.com>
Diffstat (limited to 'usr/src')
157 files changed, 9158 insertions, 3233 deletions
diff --git a/usr/src/cmd/ast/libast/mapfile-vers b/usr/src/cmd/ast/libast/mapfile-vers index d790b19b43..1575e26ab6 100644 --- a/usr/src/cmd/ast/libast/mapfile-vers +++ b/usr/src/cmd/ast/libast/mapfile-vers @@ -43,12 +43,71 @@ $mapfile_version 2 # functions SYMBOL_VERSION SUNWprivate_1.1 { global: - _Sfextern; - _Sfi; - _Sfmaxr; - _Sftable; - _Vmextern; - _Vmheap; +$if _ELF64 + _Sfextern { + ASSERT = { + TYPE = OBJECT; + SIZE = 184; + }; + }; +$elif _ELF32 + _Sfextern { + ASSERT = { + TYPE = OBJECT; + SIZE = 100; + }; + }; +$else +$error unknown ELFCLASS +$endif + _Sfi { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _Sfmaxr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; +$if _ELF64 + _Sftable { + ASSERT = { + TYPE = OBJECT; + SIZE = 1296; + }; + }; + _Vmextern { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[9]; + }; + }; + +$elif _ELF32 + _Sftable { + ASSERT = { + TYPE = OBJECT; + SIZE = 1192; + }; + }; + _Vmextern { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[10]; + }; + }; +$else +$error unknown ELFCLASS +$endif + _Vmheap { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[14]; + }; + }; _ast___getdelim; _ast__filbuf; _ast_asprintf; @@ -151,15 +210,77 @@ SYMBOL_VERSION SUNWprivate_1.1 { _ast_iconv_name; _ast_iconv_open; _ast_iconv_write; - _ast_info; - _ast_intercepts; - _ast_lc_categories; - _ast_lc_charsets; - _ast_lc_languages; - _ast_lc_maps; - _ast_lc_territories; +$if _ELF64 + _ast_info { + ASSERT = { + TYPE = OBJECT; + SIZE = 1064; + }; + }; +$elif _ELF32 + _ast_info { + ASSERT = { + TYPE = OBJECT; + SIZE = 1012; + }; + }; +$else +$error unknown ELFCLASS +$endif + _ast_intercepts { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; +$if _ELF64 + _ast_lc_categories { + ASSERT = { + TYPE = OBJECT; + SIZE = 560; + }; + }; +$elif _ELF32 + _ast_lc_categories { + ASSERT = { + TYPE = OBJECT; + SIZE = 336; + }; + }; +$else +$error unknown ELFCLASS +$endif + _ast_lc_charsets { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[72]; + }; + }; + _ast_lc_languages { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[1144]; + }; + }; + _ast_lc_maps { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[35]; + }; + }; + _ast_lc_territories { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[909]; + }; + }; _ast_localeconv; - _ast_locales; + _ast_locales { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[14]; + }; + }; _ast_malloc; _ast_memalign; _ast_memdup; @@ -170,15 +291,35 @@ SYMBOL_VERSION SUNWprivate_1.1 { _ast_mktemp; _ast_mktime; _ast_nftw; - _ast_optarg; + _ast_optarg { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _ast_optctx; - _ast_opterr; + _ast_opterr { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _ast_optesc; _ast_optget; _ast_opthelp; - _ast_optind; + _ast_optind { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _ast_optjoin; - _ast_optopt; + _ast_optopt { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _ast_optstr; _ast_optusage; _ast_pathaccess; @@ -347,16 +488,81 @@ SYMBOL_VERSION SUNWprivate_1.1 { _ast_wscanf; _ccmapcpy; _ccmapstr; - _dtopen; - _error_info_; + _dtopen; +$if _ELF64 + _error_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; +$elif _ELF32 + _error_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 120; + }; + }; +$else +$error unknown ELFCLASS +$endif _fini; - _hash_info_; + _hash_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _iblocks; - _init; - _mode_permmap_; - _mode_table_; - _opt_info_; - _proc_info_; + _init; + _mode_permmap_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 96; + }; + }; +$if _ELF64 + _mode_table_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 240; + }; + }; + _opt_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; + _proc_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 72; + }; + }; + +$elif _ELF32 + _mode_table_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 200; + }; + }; + _opt_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 128; + }; + }; + _proc_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = 52; + }; + }; +$else +$error unknown ELFCLASS +$endif _re_comp; _re_exec; _re_putc; @@ -364,7 +570,23 @@ SYMBOL_VERSION SUNWprivate_1.1 { _reg_classfun; _reg_drop; _reg_fatal; - _reg_state; +$if _ELF64 + _reg_state { + ASSERT = { + TYPE = OBJECT; + SIZE = 3888; + }; + }; +$elif _ELF32 + _reg_state { + ASSERT = { + TYPE = OBJECT; + SIZE = 2784; + }; + }; +$else +$error unknown ELFCLASS +$endif _sfcvt; _sfdlen; _sfexcept; @@ -387,7 +609,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { _sfsetpool; _sfstrtod; _sftype; - _sig_info_; + _sig_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[3]; + }; + }; _stdgets; _stdopen; _stdprintf; @@ -667,7 +894,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { tvsleep; tvtouch; typefix; - univ_env; + univ_env { + ASSERT = { + TYPE = OBJECT; + SIZE = 13; + }; + }; vecargs; vecfile; vecfree; @@ -699,24 +931,114 @@ SYMBOL_VERSION SUNWprivate_1.1 { # data SYMBOL_VERSION SUNWprivate_1.1 { global: - Dtbag; - Dthash; - Dtlist; - Dtobag; - Dtoset; - Dtqueue; - Dtset; - Dtstack; - Dttree; - Vmbest; - Vmdcheap; - Vmdcsbrk; - Vmdebug; - Vmheap; - Vmlast; - Vmpool; - Vmprofile; - Vmregion; + Dtbag { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dthash { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtobag { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtoset { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtqueue { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtset { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dtstack { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Dttree { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmbest { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmdcheap { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmdcsbrk { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmdebug { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmheap { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmlast { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmpool { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmprofile { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Vmregion { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _DATA_dtlist; _DATA_dttree; _DATA_sigdata; @@ -726,24 +1048,144 @@ SYMBOL_VERSION SUNWprivate_1.1 { _DATA_vmlast; _DATA_vmpool; _DATA_vmprofile; - _Sfstderr; - _Sfstdin; - _Sfstdout; - _Stak_data; - _ast_conf_data; - _ast_conf_ndata; - _ast_conf_nprefix; - _ast_conf_prefix; +$if _ELF64 + _Sfstderr { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; + _Sfstdin { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; + _Sfstdout { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; + _Stak_data { + ASSERT = { + TYPE = OBJECT; + SIZE = 176; + }; + }; + _ast_conf_data { + ASSERT = { + TYPE = OBJECT; + SIZE = 27440; + }; + }; +$elif _ELF32 + _Sfstderr { + ASSERT = { + TYPE = OBJECT; + SIZE = 104; + }; + }; + _Sfstdin { + ASSERT = { + TYPE = OBJECT; + SIZE = 104; + }; + }; + _Sfstdout { + ASSERT = { + TYPE = OBJECT; + SIZE = 104; + }; + }; + _Stak_data { + ASSERT = { + TYPE = OBJECT; + SIZE = 104; + }; + }; + _ast_conf_data { + ASSERT = { + TYPE = OBJECT; + SIZE = 23324; + }; + }; +$else +$error unknown ELFCLASS +$endif + _ast_conf_ndata { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _ast_conf_nprefix { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _ast_conf_prefix { + ASSERT = { + TYPE = OBJECT; + SIZE = 374; + }; + }; _ccmap; - _error_infop_; - _opt_infop_; - _tm_data_; - _tm_datap_; - _tm_info_; - _tm_infop_; - sfstderr; - sfstdin; - sfstdout; + _error_infop_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _opt_infop_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _tm_data_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[7]; + }; + }; + _tm_datap_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _tm_info_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[6]; + }; + }; + _tm_infop_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + sfstderr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + sfstdin { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + sfstdout { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; local: *; }; diff --git a/usr/src/cmd/ast/libpp/mapfile-vers b/usr/src/cmd/ast/libpp/mapfile-vers index 76d7fcc53c..499b7285ec 100644 --- a/usr/src/cmd/ast/libpp/mapfile-vers +++ b/usr/src/cmd/ast/libpp/mapfile-vers @@ -42,7 +42,7 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - pp; + pp { ASSERT = { TYPE = OBJECT; SIZE = 716; }; }; ppop; pplex; ppinput; diff --git a/usr/src/cmd/ast/libshell/mapfile-vers b/usr/src/cmd/ast/libshell/mapfile-vers index de5e85d7c1..344f0697c1 100644 --- a/usr/src/cmd/ast/libshell/mapfile-vers +++ b/usr/src/cmd/ast/libshell/mapfile-vers @@ -122,8 +122,14 @@ SYMBOL_VERSION SUNWprivate_1.1 { nv_unset; # semi-private, needed for shcomp - sh; - e_dict; +$if _ELF64 + sh { ASSERT = { TYPE = OBJECT; SIZE = 1888; }; }; +$elif _ELF32 + sh { ASSERT = { TYPE = OBJECT; SIZE = 1216; }; }; +$else +$error unknown ELFCLASS +$endif + e_dict { ASSERT = { TYPE = OBJECT; SIZE = 9; }; }; local: *; diff --git a/usr/src/cmd/fs.d/nfs/rp_basic/Makefile.com b/usr/src/cmd/fs.d/nfs/rp_basic/Makefile.com index 282067be42..d9708ea5f6 100644 --- a/usr/src/cmd/fs.d/nfs/rp_basic/Makefile.com +++ b/usr/src/cmd/fs.d/nfs/rp_basic/Makefile.com @@ -48,13 +48,15 @@ CPPFLAGS += -D_REENTRANT -I$(SRC)/cmd/fs.d/nfs/lib # not linted SMATCH=off +ZGUIDANCE= -Wl,-zguidance=noasserts + .KEEP_STATE: all: $(LIBS) install: $(ROOTLIBDIR) $(ROOTLIBDIR64) all -lint: lintcheck + pics/ref_subr.o: ../../lib/ref_subr.c $(COMPILE.c) -o pics/ref_subr.o ../../lib/ref_subr.c diff --git a/usr/src/cmd/fwflash/plugins/Makefile.targ b/usr/src/cmd/fwflash/plugins/Makefile.targ index 408b3d5556..3dc6cf0b05 100644 --- a/usr/src/cmd/fwflash/plugins/Makefile.targ +++ b/usr/src/cmd/fwflash/plugins/Makefile.targ @@ -63,7 +63,10 @@ $(HERMON-MELLANOX_LIB):= LDLIBS += -L. $(ROOT)/usr/lib/fwflash/identify/hermon.s $(SD-GENERIC_LIB):= LDLIBS += -L$(ROOT)/usr/lib/scsi -lscsi $(SD-GENERIC_LIB):= DYNFLAGS += -R/usr/lib/scsi -.KEEP_STATE: +# Size assertions are non-constant and not useful here +ZGUIDANCE=-Wl,-zguidance=noasserts + +.KEEP STATE: all: $(LIBS) diff --git a/usr/src/cmd/fwflash/plugins/transport/Makefile.targ b/usr/src/cmd/fwflash/plugins/transport/Makefile.targ index 31a935bf5a..c9a37337dd 100644 --- a/usr/src/cmd/fwflash/plugins/transport/Makefile.targ +++ b/usr/src/cmd/fwflash/plugins/transport/Makefile.targ @@ -78,7 +78,10 @@ $(UFM_LIB):= LDLIBS += -lpcidb -lnvpair -lc $(SES_LIB):= DYNFLAGS += -R/usr/lib/scsi $(SD_LIB):= DYNFLAGS += -R/usr/lib/scsi -.KEEP_STATE: +# Size assertions are non-constant and not useful here +ZGUIDANCE=-Wl,-zguidance=noasserts + +.KEEP STATE: $(ROOTUSRLIBFWFLASHIDF)/$(SLINKS) : $(ROOTUSRLIBFWFLASHIDF)/$(SES_LIB) @$(RM) $@ diff --git a/usr/src/cmd/sgs/include/libld.h b/usr/src/cmd/sgs/include/libld.h index 3e821ecdbe..a48cdaf553 100644 --- a/usr/src/cmd/sgs/include/libld.h +++ b/usr/src/cmd/sgs/include/libld.h @@ -407,6 +407,8 @@ struct ofl_desc { ofl_guideflag_t ofl_guideflags; /* -z guide flags */ APlist *ofl_assdeflib; /* -z assert-deflib exceptions */ int ofl_aslr; /* -z aslr, -1 disable, 1 enable */ + APlist *ofl_symasserts; /* assertions about symbols */ + /* from mapfiles */ }; #define FLG_OF_DYNAMIC 0x00000001 /* generate dynamic output module */ @@ -538,6 +540,7 @@ struct ofl_desc { #define FLG_OFG_NO_MF 0x00000008 /* use v2 mapfile syntax */ #define FLG_OFG_NO_TEXT 0x00000010 /* verify pure text segment */ #define FLG_OFG_NO_UNUSED 0x00000020 /* remove unused dependency */ +#define FLG_OFG_NO_ASSERTS 0x00000040 /* suggest mapfile assertions */ /* * Test to see if a guidance should be given for a given category @@ -1146,6 +1149,25 @@ typedef struct { Word md_oidx; /* output Move entry index */ } Mv_desc; +#define SYM_ASSERT_SIZE 0x01 +#define SYM_ASSERT_BIND 0x02 +#define SYM_ASSERT_TYPE 0x04 +#define SYM_ASSERT_BITS 0x08 +#define SYM_ASSERT_ALIAS 0x10 + +typedef struct { + Sym_desc *ass_sdp; + char *ass_file; + Lineno ass_lineno; + uchar_t ass_type; + uchar_t ass_bind; + Lword ass_size; + Boolean ass_bits; + const char *ass_alias; + /* Assertions explicitly enabled by user */ + uint_t ass_enabled; +} Ass_desc; + /* * Symbol descriptor. */ @@ -1165,6 +1187,7 @@ struct sym_desc { Word sd_shndx; /* sect. index sym is associated w/ */ sd_flag_t sd_flags; /* state flags */ Half sd_ref; /* reference definition of symbol */ + Ass_desc *sd_ass; /* pointer back to symbol assertions */ }; /* @@ -1317,6 +1340,8 @@ struct sym_avlnode { #define FLG_SY_DEFERRED 0x0200000000000 /* symbol should not be bound to */ /* during BIND_NOW relocations */ +#define FLG_SY_MAPASSRT 0x0400000000000 /* Symbol has attribute assertions */ + /* * A symbol can only be truly hidden if it is not a capabilities symbol. */ diff --git a/usr/src/cmd/sgs/lex/common/mapfile-vers b/usr/src/cmd/sgs/lex/common/mapfile-vers index 1e59867fcb..12c3fba721 100644 --- a/usr/src/cmd/sgs/lex/common/mapfile-vers +++ b/usr/src/cmd/sgs/lex/common/mapfile-vers @@ -54,6 +54,6 @@ SYMBOL_VERSION SUNW_1.1 { yyreject_e; yyreject_w; yywrap; - local: + local: *; }; diff --git a/usr/src/cmd/sgs/libconv/common/symbols.c b/usr/src/cmd/sgs/libconv/common/symbols.c index fd81544c59..1a7b057935 100644 --- a/usr/src/cmd/sgs/libconv/common/symbols.c +++ b/usr/src/cmd/sgs/libconv/common/symbols.c @@ -144,6 +144,12 @@ conv_sym_info_type_strings(Half mach, Conv_fmt_flags_t fmt_flags) MSG_STT_FILE_CF, MSG_STT_COMMON_CF, MSG_STT_TLS_CF, MSG_STT_IFUNC_CF }; + static const Msg types_cfnp[] = { + MSG_STT_NOTYPE_CFNP, MSG_STT_OBJECT_CFNP, + MSG_STT_FUNC_CFNP, MSG_STT_SECTION_CFNP, + MSG_STT_FILE_CFNP, MSG_STT_COMMON_CFNP, + MSG_STT_TLS_CFNP, MSG_STT_IFUNC_CFNP + }; static const Msg types_nf[] = { MSG_STT_NOTYPE_NF, MSG_STT_OBJECT_NF, MSG_STT_FUNC_NF, MSG_STT_SECTION_NF, @@ -154,17 +160,22 @@ conv_sym_info_type_strings(Half mach, Conv_fmt_flags_t fmt_flags) CONV_DS_MSG_INIT(STT_NOTYPE, types_def) }; static const conv_ds_msg_t ds_types_cf = { CONV_DS_MSG_INIT(STT_NOTYPE, types_cf) }; + static const conv_ds_msg_t ds_types_cfnp = { + CONV_DS_MSG_INIT(STT_NOTYPE, types_cfnp) }; static const conv_ds_msg_t ds_types_nf = { CONV_DS_MSG_INIT(STT_NOTYPE, types_nf) }; static const Msg sparc_def[] = { MSG_STT_SPARC_REGISTER_DEF }; static const Msg sparc_cf[] = { MSG_STT_SPARC_REGISTER_CF }; + static const Msg sparc_cfnp[] = { MSG_STT_SPARC_REGISTER_CFNP }; static const Msg sparc_nf[] = { MSG_STT_SPARC_REGISTER_NF }; static const conv_ds_msg_t ds_sparc_def = { CONV_DS_MSG_INIT(STT_SPARC_REGISTER, sparc_def) }; static const conv_ds_msg_t ds_sparc_cf = { CONV_DS_MSG_INIT(STT_SPARC_REGISTER, sparc_cf) }; + static const conv_ds_msg_t ds_sparc_cfnp = { + CONV_DS_MSG_INIT(STT_SPARC_REGISTER, sparc_cfnp) }; static const conv_ds_msg_t ds_sparc_nf = { CONV_DS_MSG_INIT(STT_SPARC_REGISTER, sparc_nf) }; @@ -183,6 +194,11 @@ conv_sym_info_type_strings(Half mach, Conv_fmt_flags_t fmt_flags) if (is_sparc) retarr[retndx++] = CONV_DS_ADDR(ds_sparc_cf); break; + case CONV_FMT_ALT_CFNP: + retarr[retndx++] = CONV_DS_ADDR(ds_types_cfnp); + if (is_sparc) + retarr[retndx++] = CONV_DS_ADDR(ds_sparc_cfnp); + break; case CONV_FMT_ALT_NF: retarr[retndx++] = CONV_DS_ADDR(ds_types_nf); if (is_sparc) @@ -227,6 +243,10 @@ conv_sym_info_bind_strings(Conv_fmt_flags_t fmt_flags) MSG_STB_LOCAL_CF, MSG_STB_GLOBAL_CF, MSG_STB_WEAK_CF }; + static const Msg binds_cfnp[] = { + MSG_STB_LOCAL_CFNP, MSG_STB_GLOBAL_CFNP, + MSG_STB_WEAK_CFNP + }; static const Msg binds_nf[] = { MSG_STB_LOCAL_NF, MSG_STB_GLOBAL_NF, MSG_STB_WEAK_NF @@ -235,6 +255,8 @@ conv_sym_info_bind_strings(Conv_fmt_flags_t fmt_flags) CONV_DS_MSG_INIT(STB_LOCAL, binds_def) }; static const conv_ds_msg_t ds_binds_cf = { CONV_DS_MSG_INIT(STB_LOCAL, binds_cf) }; + static const conv_ds_msg_t ds_binds_cfnp = { + CONV_DS_MSG_INIT(STB_LOCAL, binds_cfnp) }; static const conv_ds_msg_t ds_binds_nf = { CONV_DS_MSG_INIT(STB_LOCAL, binds_nf) }; @@ -244,6 +266,8 @@ conv_sym_info_bind_strings(Conv_fmt_flags_t fmt_flags) CONV_DS_ADDR(ds_binds_def), NULL }; static const conv_ds_t *ds_cf[] = { CONV_DS_ADDR(ds_binds_cf), NULL }; + static const conv_ds_t *ds_cfnp[] = { + CONV_DS_ADDR(ds_binds_cfnp), NULL }; static const conv_ds_t *ds_nf[] = { CONV_DS_ADDR(ds_binds_nf), NULL }; @@ -252,6 +276,8 @@ conv_sym_info_bind_strings(Conv_fmt_flags_t fmt_flags) switch (CONV_TYPE_FMT_ALT(fmt_flags)) { case CONV_FMT_ALT_CF: return (ds_cf); + case CONV_FMT_ALT_CFNP: + return (ds_cfnp); case CONV_FMT_ALT_NF: return (ds_nf); } diff --git a/usr/src/cmd/sgs/libconv/common/symbols.msg b/usr/src/cmd/sgs/libconv/common/symbols.msg index 7af17b2a36..c95cac8b35 100644 --- a/usr/src/cmd/sgs/libconv/common/symbols.msg +++ b/usr/src/cmd/sgs/libconv/common/symbols.msg @@ -23,41 +23,53 @@ # Use is subject to license terms. # -@ MSG_STT_NOTYPE_CF "STT_NOTYPE" # 0 +@ MSG_STT_NOTYPE_CF "STT_NOTYPE" # 0 +@ MSG_STT_NOTYPE_CFNP "NOTYPE" @ MSG_STT_NOTYPE_NF "notype" @ MSG_STT_NOTYPE_DEF "NOTY" @ MSG_STT_OBJECT_CF "STT_OBJECT" # 1 +@ MSG_STT_OBJECT_CFNP "OBJECT" @ MSG_STT_OBJECT_NF "object" @ MSG_STT_OBJECT_DEF "OBJT" @ MSG_STT_FUNC_CF "STT_FUNC" # 2 +@ MSG_STT_FUNC_CFNP "FUNC" @ MSG_STT_FUNC_NF "func" @ MSG_STT_FUNC_DEF "FUNC" @ MSG_STT_SECTION_CF "STT_SECTION" # 3 +@ MSG_STT_SECTION_CFNP "SECTION" @ MSG_STT_SECTION_NF "section" @ MSG_STT_SECTION_DEF "SECT" @ MSG_STT_FILE_CF "STT_FILE" # 4 +@ MSG_STT_FILE_CFNP "FILE" @ MSG_STT_FILE_NF "file" @ MSG_STT_FILE_DEF "FILE" @ MSG_STT_COMMON_CF "STT_COMMON" # 5 +@ MSG_STT_COMMON_CFNP "COMMON" @ MSG_STT_COMMON_NF "common" @ MSG_STT_COMMON_DEF "COMM" @ MSG_STT_TLS_CF "STT_TLS" # 6 +@ MSG_STT_TLS_CFNP "TLS" @ MSG_STT_TLS_NF "tls" @ MSG_STT_TLS_DEF "TLS " @ MSG_STT_IFUNC_CF "STT_IFUNC" # 6 +@ MSG_STT_IFUNC_CFNP "IFUNC" @ MSG_STT_IFUNC_NF "ifunc" @ MSG_STT_IFUNC_DEF "IFNC" @ MSG_STT_SPARC_REGISTER_CF "STT_SPARC_REGISTER" #13 +@ MSG_STT_SPARC_REGISTER_CFNP "SPARC_REGISTER" @ MSG_STT_SPARC_REGISTER_NF "sparc_register" @ MSG_STT_SPARC_REGISTER_DEF "REGI" @ MSG_STB_LOCAL_CF "STB_LOCAL" # 0 +@ MSG_STB_LOCAL_CFNP "LOCAL" @ MSG_STB_LOCAL_NF "local" @ MSG_STB_LOCAL_DEF "LOCL" @ MSG_STB_GLOBAL_CF "STB_GLOBAL" # 1 +@ MSG_STB_GLOBAL_CFNP "GLOBAL" @ MSG_STB_GLOBAL_NF "global" @ MSG_STB_GLOBAL_DEF "GLOB" @ MSG_STB_WEAK_CF "STB_WEAK" # 2 +@ MSG_STB_WEAK_CFNP "WEAK" @ MSG_STB_WEAK_NF "weak" @ MSG_STB_WEAK_DEF "WEAK" diff --git a/usr/src/cmd/sgs/libdl/common/mapfile-vers b/usr/src/cmd/sgs/libdl/common/mapfile-vers index 9251d2ab0b..2bd3aa32c6 100644 --- a/usr/src/cmd/sgs/libdl/common/mapfile-vers +++ b/usr/src/cmd/sgs/libdl/common/mapfile-vers @@ -103,8 +103,8 @@ $if _sparc && _ELF32 SYMBOL_VERSION SISCD_2.3 { global: $endif - dlclose { TYPE = FUNCTION }; - dlerror { TYPE = FUNCTION }; + dlclose { TYPE = FUNCTION }; + dlerror { TYPE = FUNCTION }; dlopen { TYPE = FUNCTION }; dlsym { TYPE = FUNCTION }; }; @@ -113,14 +113,14 @@ $endif SYMBOL_VERSION SUNWprivate_1.1 { global: _ld_libc { TYPE = FUNCTION }; - _dlinfo { TYPE = FUNCTION }; - _dldump { TYPE = FUNCTION }; + _dlinfo { TYPE = FUNCTION }; + _dldump { TYPE = FUNCTION }; _dlmopen { TYPE = FUNCTION }; - _dlopen { TYPE = FUNCTION }; + _dlopen { TYPE = FUNCTION }; _dlerror { TYPE = FUNCTION }; _dlsym { TYPE = FUNCTION }; _dlclose { TYPE = FUNCTION }; - _dladdr { TYPE = FUNCTION }; + _dladdr { TYPE = FUNCTION }; _dladdr1 { TYPE = FUNCTION }; $if amd64 diff --git a/usr/src/cmd/sgs/libld/common/_libld.h b/usr/src/cmd/sgs/libld/common/_libld.h index d34bda5fa4..42e15e4e82 100644 --- a/usr/src/cmd/sgs/libld/common/_libld.h +++ b/usr/src/cmd/sgs/libld/common/_libld.h @@ -460,6 +460,7 @@ typedef struct { #define AL_CNT_SEGMENTS 20 /* ofl_segs */ #define AL_CNT_ASSDEFLIB 4 /* ofl_assdeflib exceptions count */ +#define AL_CNT_MAPASSERT 10 /* mapfile assertions */ /* * Return codes for {tls|got}_fixups() routines diff --git a/usr/src/cmd/sgs/libld/common/_map.h b/usr/src/cmd/sgs/libld/common/_map.h index 3c2dad735b..f05ddf01ce 100644 --- a/usr/src/cmd/sgs/libld/common/_map.h +++ b/usr/src/cmd/sgs/libld/common/_map.h @@ -156,6 +156,8 @@ typedef enum { TK_INT = 12, /* Integer value: Unsigned machine word */ TK_STAR = 13, /* * */ TK_BANG = 14, /* ! */ + TK_LEFTSQR = 15, /* [ */ + TK_RIGHTSQR = 16, /* ] */ /* * Items below this point are for the use of ld_map_gettoken(). @@ -197,11 +199,13 @@ typedef union { * Values for gettoken() flags argument. These flags are used to * alter gettoken() default behavior under certain conditions. */ -#define TK_F_EOFOK 1 /* Quietly return TK_EOF instead of normal */ - /* TK_ERROR "premature EOF" error */ -#define TK_F_STRLC 2 /* TK_STRING: Convert string to lowercase */ -#define TK_F_KEYWORD 4 /* For directives and attributes: Disallow */ +#define TK_F_EOFOK 0x1 /* Quietly return TK_EOF instead of normal */ + /* TK_ERROR "premature EOF" error */ +#define TK_F_STRLC 0x2 /* TK_STRING: Convert string to lowercase */ +#define TK_F_KEYWORD 0x4 /* For directives and attributes: Disallow */ /* quoted TK_STRING tokens */ +#define TK_F_MULOK 0x8 /* TK_INT: Allow multiplicand[multiplier] */ + /* syntax */ /* * Possible return values from ld_map_strtoxword() @@ -246,9 +250,10 @@ typedef struct { const char *ms_name; /* symbol name */ sd_flag_t ms_sdflags; /* 0 / mapfile set flags */ Word ms_shndx; /* SHN_UNDEF / mapfile set sec index */ - uchar_t ms_type; /* STT_NOTYPE / mapfile set type */ + uchar_t ms_type; /* STT_NOTYPE / mapfile set type */ Addr ms_value; /* user set value, if ms_value_set */ Addr ms_size; /* 0 / mapfile set size */ + Boolean ms_size_set; /* True if ms_size set, even if to 0 */ const char *ms_filtee; /* NULL or filtee name */ Boolean ms_value_set; /* TRUE if ms_value set, even if to 0 */ Word ms_dft_flag; /* 0, or type of filter in ms_filtee */ @@ -264,6 +269,7 @@ typedef struct { #define ld_map_ifl ld64_map_ifl #define ld_map_parse_v1 ld64_map_parse_v1 #define ld_map_parse_v2 ld64_map_parse_v2 +#define ld_map_peektoken ld64_map_peektoken #define ld_map_seg_alloc ld64_map_seg_alloc #define ld_map_seg_ent_add ld64_map_seg_ent_add #define ld_map_seg_ent_files ld64_map_seg_ent_files @@ -292,6 +298,7 @@ typedef struct { #define ld_map_ifl ld32_map_ifl #define ld_map_parse_v1 ld32_map_parse_v1 #define ld_map_parse_v2 ld32_map_parse_v2 +#define ld_map_peektoken ld32_map_peektoken #define ld_map_seg_alloc ld32_map_seg_alloc #define ld_map_seg_ent_add ld32_map_seg_ent_add #define ld_map_seg_ent_files ld32_map_seg_ent_files @@ -317,6 +324,7 @@ typedef struct { */ extern void ld_map_lowercase(char *); extern Token ld_map_gettoken(Mapfile *, int, ld_map_tkval_t *); +extern Token ld_map_peektoken(Mapfile *); extern Boolean ld_map_parse_v1(Mapfile *); extern Boolean ld_map_parse_v2(Mapfile *); extern ld_map_strtoxword_t ld_map_strtoxword(const char *restrict, @@ -349,7 +357,7 @@ extern Boolean ld_map_seg_size_symbol(Mapfile *, Sg_desc *, Token, const char *symname); extern Sg_desc *ld_map_seg_stack(Mapfile *); extern Boolean ld_map_sym_enter(Mapfile *, ld_map_ver_t *, - ld_map_sym_t *); + ld_map_sym_t *, Ass_desc *); extern void ld_map_sym_filtee(Mapfile *, ld_map_ver_t *, ld_map_sym_t *, Word, const char *); extern void ld_map_sym_scope(Mapfile *, const char *, diff --git a/usr/src/cmd/sgs/libld/common/args.c b/usr/src/cmd/sgs/libld/common/args.c index 1d6baf37c4..f1ad264438 100644 --- a/usr/src/cmd/sgs/libld/common/args.c +++ b/usr/src/cmd/sgs/libld/common/args.c @@ -890,6 +890,7 @@ guidance_parse(Ofl_desc *ofl, char *optarg) { MSG_ORIG(MSG_ARG_GUIDE_NO_MAPFILE), FLG_OFG_NO_MF }, { MSG_ORIG(MSG_ARG_GUIDE_NO_TEXT), FLG_OFG_NO_TEXT }, { MSG_ORIG(MSG_ARG_GUIDE_NO_UNUSED), FLG_OFG_NO_UNUSED }, + { MSG_ORIG(MSG_ARG_GUIDE_NO_ASSERTS), FLG_OFG_NO_ASSERTS }, { NULL, 0 } }; diff --git a/usr/src/cmd/sgs/libld/common/ldmain.c b/usr/src/cmd/sgs/libld/common/ldmain.c index 66d14e22c8..f77e6ac8b7 100644 --- a/usr/src/cmd/sgs/libld/common/ldmain.c +++ b/usr/src/cmd/sgs/libld/common/ldmain.c @@ -194,6 +194,7 @@ ld_main(int argc, char **argv, Half mach) MSG_INTL(MSG_GUIDE_SUMMARY)); return (1); } + if (ofl->ofl_flags & FLG_OF_FATAL) { ld_eprintf(ofl, ERR_FATAL, MSG_INTL(MSG_ARG_FLAGS)); /* If any ERR_GUIDANCE messages were issued, add a summary */ diff --git a/usr/src/cmd/sgs/libld/common/libld.msg b/usr/src/cmd/sgs/libld/common/libld.msg index 182afd2478..86d8d2e9f3 100644 --- a/usr/src/cmd/sgs/libld/common/libld.msg +++ b/usr/src/cmd/sgs/libld/common/libld.msg @@ -21,9 +21,6 @@ # # Copyright (c) 1995, 2010, Oracle and/or its affiliates. All rights reserved. -# - -# # Copyright (c) 2012, Joyent, Inc. All rights reserved. # Copyright 2017 RackTop Systems. # @@ -176,7 +173,7 @@ \t\t\ton dynamic dependencies\n" @ MSG_ARG_DETAIL_ZGUIDE "\t[-z guidance | -z guidance=item1,item2,...]\n\ \t\t\tenable guidance warnings. items: \ - noall, nodefs,\n\ + noall, noasserts, nodefs,\n\ \t\t\tnodirect, nolazyload, nomapfile, notext, \ nounused\n" @ MSG_ARG_DETAIL_ZH "\t[-z help], [--help]\n\ @@ -473,8 +470,8 @@ @ MSG_SCN_NONALLOC "%s: non-allocatable section '%s' directed to a \ loadable segment: %s" -@ MSG_SCN_MULTICOMDAT "file %s: section [%u]%s: cannot be susceptible to multiple \ - COMDAT mechanisms: %s" +@ MSG_SCN_MULTICOMDAT "file %s: section [%u]%s: cannot be susceptible \ + to multiple COMDAT mechanisms: %s" @ MSG_SCN_DWFOVRFLW "%s: section %s: encoded DWARF data exceeds \ section size" @@ -521,10 +518,10 @@ 0x%llx for symbol index" @ MSG_PSYM_INVMINFO2 "file %s: section [%u]%s: entry[%d] has invalid m_info: \ 0x%llx for size" -@ MSG_PSYM_INVMREPEAT "file %s: section [%u]%s: entry[%d] has invalid m_repeat: \ - 0x%llx" -@ MSG_PSYM_CANNOTEXPND "file %s: section [%u]%s: entry[%d] can not be expanded: \ - associated symbol size is unknown %s" +@ MSG_PSYM_INVMREPEAT "file %s: section [%u]%s: entry[%d] has \ + invalid m_repeat: 0x%llx" +@ MSG_PSYM_CANNOTEXPND "file %s: section [%u]%s: entry[%d] can not be \ + expanded: associated symbol size is unknown %s" @ MSG_PSYM_NOSTATIC "and partial initialization cannot be deferred to \ a static object" @ MSG_MOVE_OVERLAP "file %s: section [%u]%s: symbol '%s' overlapping move \ @@ -710,6 +707,8 @@ @ MSG_GUIDE_TEXT "position independent (PIC) code recommended for \ shared objects" @ MSG_GUIDE_UNUSED "removal of unused dependency recommended: %s" +@ MSG_GUIDE_ASSERT_SIZE "size assertion recommended for non-local data: %s \ + size: %llu" @ _END_ @@ -731,6 +730,8 @@ @ MSG_QSTR_DASH "'-'" @ MSG_QSTR_LEFTBKT "'{'" @ MSG_QSTR_RIGHTBKT "'}'" +@ MSG_QSTR_LEFTSQR "'['" +@ MSG_QSTR_RIGHTSQR "']'" @ MSG_QSTR_PIPE "'|'" @ MSG_QSTR_STAR "'*'" @ MSG_STR_DOT "." @@ -1190,6 +1191,7 @@ @ MSG_MAP_EXP_ATTR "%s: %llu: expected attribute name (%s), or \ terminator (';', '}'): %s" +@ MSG_MAP_EXP_BINDTYPE "%s: %llu: expected binding type (%s): %s" @ MSG_MAP_EXP_CAPMASK "%s: %llu: expected capability name, integer value, or \ terminator (';', '}'): %s" @ MSG_MAP_EXP_CAPNAME "%s: %llu: expected name, or terminator (';', '}'): %s" @@ -1206,6 +1208,7 @@ @ MSG_MAP_EXP_FILNAM "%s: %llu: expected file name following %s: %s" @ MSG_MAP_EXP_FILPATH "%s: %llu: expected file path following %s: %s" @ MSG_MAP_EXP_INT "%s: %llu: expected integer value following %s: %s" +@ MSG_MAP_EXP_RIGHTSQ "%s: %llu: expected ']' to terminate multiplier of: %s" @ MSG_MAP_EXP_LBKT "%s: %llu: expected '{' following %s: %s" @ MSG_MAP_EXP_OBJNAM "%s: %llu: expected object name following %s: %s" @ MSG_MAP_SFLG_ONEBANG "%s: %llu: '!' can only be specified once per flag" @@ -1220,6 +1223,7 @@ @ MSG_MAP_EXP_SEM "%s: %llu: expected ';' to terminate %s: %s" @ MSG_MAP_EXP_SEMLBKT "%s: %llu: expected ';' or '{' following %s: %s" @ MSG_MAP_EXP_SEMRBKT "%s: %llu: expected ';' or '}' to terminate %s: %s" +@ MSG_MAP_EXP_SHATTRTYPE "%s: %llu: expected section attribute (%s): %s" @ MSG_MAP_EXP_SHTYPE "%s: %llu: expected section type: %s" @ MSG_MAP_EXP_SYM "%s: %llu: expected symbol name, symbol scope, \ or '*': %s" @@ -1234,12 +1238,18 @@ @ MSG_MAP_EXP_VERSION "%s: %llu: expected version name following %s: %s" @ MSG_MAP_BADEXTRA "%s: %llu: unexpected text found following %s directive" @ MSG_MAP_VALUELIMIT "%s: %llu: numeric value exceeds word size: %s" +@ MSG_MAP_MULOVERFLOW "%s: %llu: multiplication overflow (%llu * %llu)" @ MSG_MAP_MALVALUE "%s: %llu: malformed numeric value: %s" @ MSG_MAP_BADVALUETAIL "%s: %llu: unexpected characters following numeric \ constant: %s" @ MSG_MAP_WSNEEDED "%s: %llu: whitespace needed before token: %s" @ MSG_MAP_BADCHAR "%s: %llu: unexpected text: %s" @ MSG_MAP_BADKWQUOTE "%s: %llu: mapfile keywords should not be quoted: %s" +@ MSG_MAP_BADALIAS "%s: %llu: expected string valued ALIAS" +@ MSG_MAP_ALIAS_COMBO "%s: %llu: %s: ALIAS assertions may only be \ + used with BINDING" +@ MSG_MAP_EXTPAR_ASSERT "%s: %llu: can't assert attributes of \ + extern/parent symbol: %s" @ MSG_MAP_CDIR_NOTBOL "%s: %llu: mapfile control directive not at start of \ line: %s" @ MSG_MAP_NOATTR "%s: %llu: %s specified no attributes (empty {})" @@ -1290,6 +1300,23 @@ @ MSG_ARG_ASSDEFLIB_MALFORMED "library name malformed: %s" @ MSG_ARG_ASSDEFLIB_FOUND "dynamic library found on default search path \ (%s): lib%s.so" +# Assertion failures +@ MSG_ASSFAIL_ALIAS "%s: %llu: assertion failed: symbol %s is \ + not an alias of %s" +@ MSG_ASSFAIL_SCOPE "%s: %llu: assertion failed: scope of symbol %s \ + should be: %s is: %s" +@ MSG_ASSFAIL_SIZE "%s: %llu: assertion failed: size of symbol %s \ + should be: %llu is: %llu" +@ MSG_ASSFAIL_TYPE "%s: %llu: assertion failed: type of symbol %s \ + should be: %s is: %s", +@ MSG_ASSFAIL_BITS "%s: %llu: assertion failed: symbol %s is in an \ + SHT_NOBITS section" +@ MSG_ASSFAIL_NOBITS "%s: %llu: assertion failed: symbol %s is not in an \ + SHT_NOBITS section" +@ MSG_ALIAS_BADSYM "%s: %llu: assertion failed: unknown symbol in ALIAS: %s" +@ MSG_ALIAS_NOTALIAS "%s: %llu: %s and %s (%s: %llu) should be asserted \ + as aliases" +@ MSG_ALIAS_TOALIAS "%s: %llu: %s should not be aliased to an alias" @ _END_ @@ -1503,6 +1530,7 @@ @ MSG_ARG_GUIDE_NO_MAPFILE "nomapfile" @ MSG_ARG_GUIDE_NO_TEXT "notext" @ MSG_ARG_GUIDE_NO_UNUSED "nounused" +@ MSG_ARG_GUIDE_NO_ASSERTS "noasserts" # -z type= strings @ MSG_ARG_TYPE_RELOC "reloc" @@ -1537,6 +1565,7 @@ @ MSG_MAP_NOTE "note" @ MSG_MAP_NULL "null" @ MSG_MAP_STACK "stack" +@ MSG_MAP_ADDRSIZE "addrsize" @ MSG_MAP_ADDVERS "addvers" @ MSG_MAP_FUNCTION "function" @ MSG_MAP_DATA "data" @@ -1552,12 +1581,17 @@ @ MSG_MAP_DYNSORT "dynsort" @ MSG_MAP_NODYNSORT "nodynsort" +@ MSG_MAPKW_ALIAS "ALIAS" @ MSG_MAPKW_ALIGN "ALIGN" @ MSG_MAPKW_ALLOC "ALLOC" @ MSG_MAPKW_ALLOW "ALLOW" @ MSG_MAPKW_AMD64_LARGE "AMD64_LARGE" +@ MSG_MAPKW_ASSERT "ASSERT" @ MSG_MAPKW_ASSIGN_SECTION "ASSIGN_SECTION" @ MSG_MAPKW_AUX "AUXILIARY" +@ MSG_MAPKW_BIND "BIND" +@ MSG_MAPKW_BINDING "BINDING" +@ MSG_MAPKW_BITS "BITS" @ MSG_MAPKW_CAPABILITY "CAPABILITY" @ MSG_MAPKW_COMMON "COMMON" @ MSG_MAPKW_DATA "DATA" @@ -1570,30 +1604,34 @@ @ MSG_MAPKW_EXECUTE "EXECUTE" @ MSG_MAPKW_EXPORTED "EXPORTED" @ MSG_MAPKW_EXTERN "EXTERN" -@ MSG_MAPKW_FILTER "FILTER" +@ MSG_MAPKW_FILE "FILE" @ MSG_MAPKW_FILE_BASENAME "FILE_BASENAME" -@ MSG_MAPKW_FILE_PATH "FILE_PATH" @ MSG_MAPKW_FILE_OBJNAME "FILE_OBJNAME" -@ MSG_MAPKW_FUNCTION "FUNCTION" +@ MSG_MAPKW_FILE_PATH "FILE_PATH" +@ MSG_MAPKW_FILTER "FILTER" @ MSG_MAPKW_FLAGS "FLAGS" +@ MSG_MAPKW_FUNC "FUNC" +@ MSG_MAPKW_FUNCTION "FUNCTION" @ MSG_MAPKW_GLOBAL "GLOBAL" -@ MSG_MAPKW_INTERPOSE "INTERPOSE" -@ MSG_MAPKW_HIDDEN "HIDDEN" @ MSG_MAPKW_HDR_NOALLOC "HDR_NOALLOC" +@ MSG_MAPKW_HIDDEN "HIDDEN" @ MSG_MAPKW_HW "HW" @ MSG_MAPKW_HW_1 "HW_1" @ MSG_MAPKW_HW_2 "HW_2" +@ MSG_MAPKW_INTERPOSE "INTERPOSE" @ MSG_MAPKW_IS_NAME "IS_NAME" @ MSG_MAPKW_IS_ORDER "IS_ORDER" @ MSG_MAPKW_LOAD_SEGMENT "LOAD_SEGMENT" @ MSG_MAPKW_LOCAL "LOCAL" @ MSG_MAPKW_MACHINE "MACHINE" @ MSG_MAPKW_MAX_SIZE "MAX_SIZE" -@ MSG_MAPKW_NOHDR "NOHDR" +@ MSG_MAPKW_NOBITS "NOBITS" @ MSG_MAPKW_NODIRECT "NODIRECT" @ MSG_MAPKW_NODYNSORT "NODYNSORT" +@ MSG_MAPKW_NOHDR "NOHDR" @ MSG_MAPKW_NOTE_SEGMENT "NOTE_SEGMENT" @ MSG_MAPKW_NULL_SEGMENT "NULL_SEGMENT" +@ MSG_MAPKW_OBJECT "OBJECT" @ MSG_MAPKW_OS_ORDER "OS_ORDER" @ MSG_MAPKW_PADDR "PADDR" @ MSG_MAPKW_PARENT "PARENT" @@ -1601,21 +1639,25 @@ @ MSG_MAPKW_PLATFORM "PLATFORM" @ MSG_MAPKW_PROTECTED "PROTECTED" @ MSG_MAPKW_READ "READ" -@ MSG_MAPKW_ROUND "ROUND" @ MSG_MAPKW_REQUIRE "REQUIRE" +@ MSG_MAPKW_ROUND "ROUND" +@ MSG_MAPKW_SECTION "SECTION" @ MSG_MAPKW_SEGMENT_ORDER "SEGMENT_ORDER" @ MSG_MAPKW_SF "SF" @ MSG_MAPKW_SF_1 "SF_1" +@ MSG_MAPKW_SHATTR "SH_ATTR" @ MSG_MAPKW_SINGLETON "SINGLETON" @ MSG_MAPKW_SIZE "SIZE" @ MSG_MAPKW_SIZE_SYMBOL "SIZE_SYMBOL" @ MSG_MAPKW_STACK "STACK" +@ MSG_MAPKW_SYMBOLIC "SYMBOLIC" @ MSG_MAPKW_SYMBOL_SCOPE "SYMBOL_SCOPE" @ MSG_MAPKW_SYMBOL_VERSION "SYMBOL_VERSION" -@ MSG_MAPKW_SYMBOLIC "SYMBOLIC" +@ MSG_MAPKW_TLS "TLS" @ MSG_MAPKW_TYPE "TYPE" @ MSG_MAPKW_VADDR "VADDR" @ MSG_MAPKW_VALUE "VALUE" +@ MSG_MAPKW_WEAK "WEAK" @ MSG_MAPKW_WRITE "WRITE" diff --git a/usr/src/cmd/sgs/libld/common/map.c b/usr/src/cmd/sgs/libld/common/map.c index c54db63696..401d66946f 100644 --- a/usr/src/cmd/sgs/libld/common/map.c +++ b/usr/src/cmd/sgs/libld/common/map.c @@ -55,7 +55,7 @@ * Tokens are representations of the sys/auxv_$MACH.h capabilities, for example: * * #define AV_386_FPU 0x0001 is represented as FPU - * #define AV_386_TSC 0x0002 " " " " TSC + * #define AV_386_TSC 0x0002 " " " " TSC * * Or, the above two capabilities could be represented as V0x3. Note, the * OVERRIDE flag is used to ensure that only those values provided via this @@ -286,7 +286,7 @@ valuetoxword(Mapfile *mf, ld_map_tkval_t *tkv, Xword *value) /* * Process a mapfile segment declaration definition. * segment_name = segment_attribute; - * segment_attribute : segment_type segment_flags virtual_addr + * segment_attribute : segment_type segment_flags virtual_addr * physical_addr length alignment */ static Boolean @@ -589,7 +589,7 @@ map_equal(Mapfile *mf, Sg_desc *sgp) /* * Process a mapfile mapping directives definition. * - * segment_name : section_attribute [ : file_name ] + * segment_name : section_attribute [ : file_name ] * * Where segment_attribute is one of: section_name section_type section_flags; */ @@ -795,7 +795,7 @@ map_colon(Mapfile *mf, Ent_desc *enp) /* * Process a mapfile size symbol definition. - * segment_name @ symbol_name; + * segment_name @ symbol_name; */ static Boolean map_atsign(Mapfile *mf, Sg_desc *sgp) @@ -850,7 +850,7 @@ map_pipe(Mapfile *mf, Sg_desc *sgp) /* * Process a mapfile library specification definition. - * shared_object_name - shared object definition + * shared_object_name - shared object definition * shared object definition : [ shared object type [ = SONAME ]] * [ versions ]; */ @@ -1074,6 +1074,7 @@ map_version(Mapfile *mf, char *name) } /* LINTED */ ms.ms_size = (Addr)number; + ms.ms_size_set = TRUE; break; /* END CSTYLED */ } @@ -1180,7 +1181,7 @@ map_version(Mapfile *mf, char *name) * resolution process. Symbols defined as locals will * be reduced in scope after all input file processing. */ - if (!ld_map_sym_enter(mf, &mv, &ms)) + if (!ld_map_sym_enter(mf, &mv, &ms, NULL)) return (FALSE); break; @@ -1217,7 +1218,7 @@ ld_map_parse_v1(Mapfile *mf) char *name; Ofl_desc *ofl = mf->mf_ofl; ld_map_tkval_t tkv; /* Value of token */ - avl_index_t where; + avl_index_t where; /* * We now parse the mapfile until the gettoken routine returns EOF. diff --git a/usr/src/cmd/sgs/libld/common/map_core.c b/usr/src/cmd/sgs/libld/common/map_core.c index 9ab1dd71a5..5f2ad9a177 100644 --- a/usr/src/cmd/sgs/libld/common/map_core.c +++ b/usr/src/cmd/sgs/libld/common/map_core.c @@ -195,7 +195,7 @@ typedef STACK(void) generic_stack_t; #define CEXP_OP_STACK_INIT 1 #define CEXP_VAL_STACK_INIT 1 #else -#define CDIR_STACK_INIT 16 +#define CDIR_STACK_INIT 16 #define CEXP_OP_STACK_INIT 8 #define CEXP_VAL_STACK_INIT (CEXP_OP_STACK_INIT * 2) /* 2 vals per binop */ #endif @@ -478,9 +478,9 @@ static const mf_tokdisp_t gettok_dispatch_v2 = { TK_OP_ID, /* 88 - X */ TK_OP_ID, /* 89 - Y */ TK_OP_ID, /* 90 - Z */ - TK_OP_BADCHR, /* 91 - [ */ + TK_LEFTSQR, /* 91 - [ */ TK_OP_BADCHR, /* 92 - \ */ - TK_OP_BADCHR, /* 93 - ] */ + TK_RIGHTSQR, /* 93 - ] */ TK_OP_BADCHR, /* 94 - ^ */ TK_OP_ID, /* 95 - _ */ TK_OP_BADCHR, /* 96 - ` */ @@ -1711,6 +1711,7 @@ ld_map_getint(Mapfile *mf, ld_map_tkval_t *value, Boolean notail) ld_map_strtoxword_t s2xw_ret; ld_map_npatch_t np; char *endptr; + char *startptr = mf->mf_next; char *errstr = mf->mf_next; value->tkv_int.tkvi_str = mf->mf_next; @@ -1727,8 +1728,9 @@ ld_map_getint(Mapfile *mf, ld_map_tkval_t *value, Boolean notail) } /* Advance position to item following value, skipping whitespace */ - value->tkv_int.tkvi_cnt = endptr - mf->mf_next; + value->tkv_int.tkvi_cnt = endptr - startptr; mf->mf_next = endptr; + while (isspace_nonl(*mf->mf_next)) mf->mf_next++; @@ -1927,6 +1929,29 @@ gettoken_cquote_str(Mapfile *mf, int flags, ld_map_tkval_t *tkv) } /* + * Peek ahead at the text token. + * + * entry: + * mf - Mapfile descriptor + * + * exit: + * Returns one of the TK_* values, including the TK_OP values (that is, + * tokens are not processed into their necessarily final form). + */ +Token +ld_map_peektoken(Mapfile *mf) +{ + int ch; + + if (mf->mf_next_ch == 0) + ch = *mf->mf_next; + else + ch = mf->mf_next_ch; + + return ((ch & 0x80) ? TK_OP_ILLCHR : mf->mf_tokdisp[ch]); +} + +/* * Get a token from the mapfile. * * entry: @@ -2115,6 +2140,10 @@ ld_map_tokenstr(Token tok, ld_map_tkval_t *tkv, Conv_inv_buf_t *inv_buf) return (MSG_ORIG(MSG_QSTR_LEFTBKT)); case TK_RIGHTBKT: return (MSG_ORIG(MSG_QSTR_RIGHTBKT)); + case TK_LEFTSQR: + return (MSG_ORIG(MSG_QSTR_LEFTSQR)); + case TK_RIGHTSQR: + return (MSG_ORIG(MSG_QSTR_RIGHTSQR)); case TK_PIPE: return (MSG_ORIG(MSG_QSTR_PIPE)); case TK_INT: @@ -2661,10 +2690,10 @@ ld_map_post_process(Ofl_desc *ofl) * as the sort key. * * v2) The version 2 syntax has the user specify a name for - * the entry criteria, and then provide a list of entry - * criteria names via the IS_ORDER segment attribute. - * Sections placed via the criteria listed in IS_ORDER - * are sorted, and the others are not. + * the entry criteria, and then provide a list of entry + * criteria names via the IS_ORDER segment attribute. + * Sections placed via the criteria listed in IS_ORDER + * are sorted, and the others are not. * * Regardless of the syntax version used, the section sorting * code expects the following: diff --git a/usr/src/cmd/sgs/libld/common/map_support.c b/usr/src/cmd/sgs/libld/common/map_support.c index 8e69b6052e..722ba39f70 100644 --- a/usr/src/cmd/sgs/libld/common/map_support.c +++ b/usr/src/cmd/sgs/libld/common/map_support.c @@ -1057,7 +1057,7 @@ ld_map_sym_filtee(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms, * problems, increments mv->mv_errcnt, and returns TRUE. */ Boolean -ld_map_sym_enter(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms) +ld_map_sym_enter(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms, Ass_desc *ma) { Ofl_desc *ofl = mf->mf_ofl; Word hash; @@ -1125,6 +1125,26 @@ ld_map_sym_enter(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms) if (sym->st_shndx == SHN_UNDEF) sdp->sd_flags |= (FLG_SY_MAPREF | FLG_SY_GLOBREF); + if (ma != NULL && ma->ass_enabled != 0) { + Ass_desc *m; + + /* + * Mark the symbol so we can issue guidance more + * easily + */ + sdp->sd_flags |= FLG_SY_MAPASSRT; + + if ((m = libld_calloc(1, sizeof (Ass_desc))) == NULL) + return (FALSE); + memcpy(m, ma, sizeof (Ass_desc)); + m->ass_sdp = sdp; + sdp->sd_ass = m; + + if (aplist_append(&ofl->ofl_symasserts, m, + AL_CNT_MAPASSERT) == NULL) { + return (FALSE); + } + } } else { conflict = NULL; sym = sdp->sd_sym; @@ -1143,7 +1163,7 @@ ld_map_sym_enter(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms) sym->st_value = ms->ms_value; } if (sym->st_size) { - if (ms->ms_size && (sym->st_size != ms->ms_size)) + if (ms->ms_size_set && (sym->st_size != ms->ms_size)) conflict = MSG_INTL(MSG_MAP_DIFF_SYMSZ); } else { sym->st_size = ms->ms_size; @@ -1195,7 +1215,7 @@ ld_map_sym_enter(Mapfile *mf, ld_map_ver_t *mv, ld_map_sym_t *ms) * copy-relocations to be established to filter OBJT * definitions. */ - if ((ms->ms_shndx == SHN_ABS) && ms->ms_size && !ms->ms_value_set) { + if ((ms->ms_shndx == SHN_ABS) && ms->ms_size_set && !ms->ms_value_set) { /* Create backing section if not there */ if (sdp->sd_isc == NULL) { Is_desc *isp; diff --git a/usr/src/cmd/sgs/libld/common/map_v2.c b/usr/src/cmd/sgs/libld/common/map_v2.c index eb397838af..791ad34971 100644 --- a/usr/src/cmd/sgs/libld/common/map_v2.c +++ b/usr/src/cmd/sgs/libld/common/map_v2.c @@ -126,6 +126,7 @@ typedef struct { typedef struct { ld_map_ver_t ss_mv; ld_map_sym_t ss_ms; + Ass_desc ss_ma; } symbol_state_t; /* @@ -564,17 +565,79 @@ gettoken_leftbkt(Mapfile *mf, const char *lhs) * Updates *tkv and returns TK_INT for success, TK_ERROR otherwise. */ static Token -gettoken_int(Mapfile *mf, const char *lhs, ld_map_tkval_t *tkv) +gettoken_int(Mapfile *mf, const char *lhs, ld_map_tkval_t *tkv, int flags) { Token tok; Conv_inv_buf_t inv_buf; + char *start = mf->mf_next; - switch (tok = ld_map_gettoken(mf, 0, tkv)) { + switch (tok = ld_map_gettoken(mf, flags, tkv)) { case TK_ERROR: + return (tok); + case TK_STRING: + if (strcmp(MSG_ORIG(MSG_MAP_ADDRSIZE), tkv->tkv_str) == 0) { + tkv->tkv_int.tkvi_str = tkv->tkv_str; + switch (ld_targ.t_m.m_class) { + case ELFCLASS32: + tkv->tkv_int.tkvi_value = sizeof (Elf32_Addr); + break; + case ELFCLASS64: + tkv->tkv_int.tkvi_value = sizeof (Elf64_Addr); + break; + case ELFCLASSNONE: + tkv->tkv_int.tkvi_value = 0; + break; + default: + assert(0); + } + tkv->tkv_int.tkvi_cnt = MSG_MAP_ADDRSIZE_SIZE; + tok = TK_INT; + } else { + break; + } + /* FALLTHROUGH */ case TK_INT: + if ((flags & TK_F_MULOK) && + (ld_map_peektoken(mf) == TK_LEFTSQR)) { + ld_map_tkval_t mltplr; + Xword oldval; + + /* read the [, which we know must be there */ + (void) ld_map_gettoken(mf, flags, &mltplr); + + if (ld_map_gettoken(mf, flags & ~TK_F_MULOK, + &mltplr) != TK_INT) { + tkv->tkv_int.tkvi_cnt = mf->mf_next - start; + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_INT), + MSG_ORIG(MSG_QSTR_LEFTSQR), + ld_map_tokenstr(TK_INT, tkv, &inv_buf)); + return (TK_ERROR); + } + + if (ld_map_peektoken(mf) != TK_RIGHTSQR) { + tkv->tkv_int.tkvi_cnt = mf->mf_next - start; + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_RIGHTSQ), + ld_map_tokenstr(TK_INT, tkv, &inv_buf)); + return (TK_ERROR); + } + + /* Read the right ] */ + (void) ld_map_gettoken(mf, flags, NULL); + tkv->tkv_int.tkvi_cnt = mf->mf_next - start; + oldval = tkv->tkv_int.tkvi_value; + tkv->tkv_int.tkvi_value *= mltplr.tkv_int.tkvi_value; + + if ((tkv->tkv_int.tkvi_value / + mltplr.tkv_int.tkvi_value) != oldval) { + mf_fatal(mf, MSG_INTL(MSG_MAP_MULOVERFLOW), + tkv->tkv_int.tkvi_value, + mltplr.tkv_int.tkvi_value); + return (TK_ERROR); + } + } + return (tok); } - mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_INT), lhs, ld_map_tokenstr(tok, tkv, &inv_buf)); return (TK_ERROR); @@ -993,7 +1056,6 @@ parse_cap_list(Mapfile *mf, Token eq_tok, Caplist *caplist, * CAPABILITY [capid] { HW = hwcap_flags... * -------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_hw(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1048,7 +1110,6 @@ at_cap_hw(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { HW_1 = value ; * ---------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_hw_1(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1060,7 +1121,6 @@ at_cap_hw_1(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { HW_2 = value ; * ---------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_hw_2(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1072,7 +1132,6 @@ at_cap_hw_2(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { SF = sfcap_flags... * -------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_sf(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1120,7 +1179,6 @@ at_cap_sf(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { SF_1 = value ; * ---------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_sf_1(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1132,7 +1190,6 @@ at_cap_sf_1(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { MACHINE = value ; * ------------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_mach(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1144,7 +1201,6 @@ at_cap_mach(Mapfile *mf, Token eq_tok, void *uvalue) * CAPABILITY [capid] { PLATFORM = value ; * -------------------------------^ */ -/* ARGSUSED 2 */ static Token at_cap_plat(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1270,7 +1326,6 @@ gts_efunc_at_dv_allow(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * DEPEND_VERSIONS object_name { ALLOW = version * -------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_dv_allow(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1303,7 +1358,6 @@ gts_efunc_at_dv_require(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * DEPEND_VERSIONS object_name { REQURE = version * --------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_dv_require(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1419,7 +1473,7 @@ dir_phdr_add_null(Mapfile *mf) return (TK_ERROR); /* integer token */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_PHDR_ADD_NULL), &tkv) == + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_PHDR_ADD_NULL), &tkv, 0) == TK_ERROR) return (TK_ERROR); @@ -1440,7 +1494,6 @@ dir_phdr_add_null(Mapfile *mf) * segment_directive segment_name { ALIGN = value * ----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_align(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1448,7 +1501,7 @@ at_seg_align(Mapfile *mf, Token eq_tok, void *uvalue) ld_map_tkval_t tkv; /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_ALIGN), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_ALIGN), &tkv, 0) == TK_ERROR) return (TK_ERROR); sgp->sg_phdr.p_align = tkv.tkv_int.tkvi_value; @@ -1476,7 +1529,6 @@ gts_efunc_at_seg_assign_file_basename(Mapfile *mf, Token tok, * segment_directive segment_name { ASSIGN { FILE_BASENAME = file_name * ---------------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_file_basename(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1513,7 +1565,6 @@ gts_efunc_at_seg_assign_file_objname(Mapfile *mf, Token tok, * segment_directive segment_name { ASSIGN { FILE_OBJNAME = name * --------------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_file_objname(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1549,7 +1600,6 @@ gts_efunc_at_seg_assign_file_path(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * segment_directive segment_name { ASSIGN { FILE_PATH = file_path * -----------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_file_path(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1572,7 +1622,6 @@ at_seg_assign_file_path(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { ASSIGN { FLAGS = ... ; * -------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_flags(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1690,7 +1739,6 @@ gts_efunc_at_seg_assign_is_name(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * segment_directive segment_name { ASSIGN { IS_NAME = section_name ; * ---------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_is_name(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1723,7 +1771,6 @@ gts_efunc_at_seg_assign_type(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * segment_directive segment_name { ASSIGN { TYPE = section_type ; * ------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign_type(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1771,7 +1818,6 @@ at_seg_assign_type(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { ASSIGN { ... * -----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_assign(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1868,7 +1914,6 @@ at_seg_assign(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { DISABLE ; * ----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_disable(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1897,7 +1942,6 @@ at_seg_disable(Mapfile *mf, Token eq_tok, void *uvalue) * STACK { FLAGS eq-op ... ; * -------------------^ */ -/* ARGSUSED 2 */ static Token at_seg_flags(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1919,7 +1963,6 @@ at_seg_flags(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { IS_ORDER eq_op value * -----------------------------------------------^ */ -/* ARGSUSED 2 */ static Token at_seg_is_order(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -1994,7 +2037,6 @@ at_seg_is_order(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { MAX_SIZE = value * -------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_max_size(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2002,7 +2044,7 @@ at_seg_max_size(Mapfile *mf, Token eq_tok, void *uvalue) ld_map_tkval_t tkv; /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_MAX_SIZE), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_MAX_SIZE), &tkv, 0) == TK_ERROR) return (TK_ERROR); sgp->sg_length = tkv.tkv_int.tkvi_value; @@ -2016,7 +2058,6 @@ at_seg_max_size(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { NOHDR ; * --------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_nohdr(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2042,7 +2083,6 @@ at_seg_nohdr(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { OS_ORDER eq_op assign_name... * -----------------------------------------------^ */ -/* ARGSUSED 2 */ static Token at_seg_os_order(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2091,7 +2131,6 @@ at_seg_os_order(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { PADDR = paddr * ----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_paddr(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2110,7 +2149,7 @@ at_seg_paddr(Mapfile *mf, Token eq_tok, void *uvalue) } /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_PADDR), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_PADDR), &tkv, 0) == TK_ERROR) return (TK_ERROR); sgp->sg_phdr.p_paddr = tkv.tkv_int.tkvi_value; @@ -2124,7 +2163,6 @@ at_seg_paddr(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { ROUND = value * ----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_round(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2132,7 +2170,7 @@ at_seg_round(Mapfile *mf, Token eq_tok, void *uvalue) ld_map_tkval_t tkv; /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_ROUND), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_ROUND), &tkv, 0) == TK_ERROR) return (TK_ERROR); sgp->sg_round = tkv.tkv_int.tkvi_value; @@ -2146,7 +2184,6 @@ at_seg_round(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { SIZE_SYMBOL = symbol_name * ----------------------------------------------^ */ -/* ARGSUSED 2 */ static Token at_seg_size_symbol(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2206,7 +2243,6 @@ at_seg_size_symbol(Mapfile *mf, Token eq_tok, void *uvalue) * segment_directive segment_name { VADDR = vaddr * ----------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_seg_vaddr(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2225,7 +2261,7 @@ at_seg_vaddr(Mapfile *mf, Token eq_tok, void *uvalue) } /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_VADDR), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_VADDR), &tkv, 0) == TK_ERROR) return (TK_ERROR); sgp->sg_phdr.p_vaddr = tkv.tkv_int.tkvi_value; @@ -2657,7 +2693,6 @@ gts_efunc_at_sym_aux(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * SYMBOL [version_name] { symbol_name { AUXILIARY = soname * -------------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_aux(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2691,7 +2726,6 @@ gts_efunc_at_sym_filter(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * SYMBOL [version_name] { symbol_name { FILTER = soname * ----------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_filter(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2713,7 +2747,6 @@ at_sym_filter(Mapfile *mf, Token eq_tok, void *uvalue) * SYMBOL [version_name] { symbol_name { FLAGS = ... * ---------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_flags(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2860,7 +2893,6 @@ at_sym_flags(Mapfile *mf, Token eq_tok, void *uvalue) * SYMBOL [version_name] { symbol_name { SIZE = value * --------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_size(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2868,10 +2900,12 @@ at_sym_size(Mapfile *mf, Token eq_tok, void *uvalue) ld_map_tkval_t tkv; /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_SIZE), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_SIZE), &tkv, + TK_F_MULOK) == TK_ERROR) return (TK_ERROR); ss->ss_ms.ms_size = tkv.tkv_int.tkvi_value; + ss->ss_ms.ms_size_set = TRUE; /* terminator */ return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_SIZE))); @@ -2920,7 +2954,6 @@ gts_efunc_at_sym_type(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) * SYMBOL [version_name] { symbol_name { TYPE = symbol_type * --------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_type(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2952,7 +2985,6 @@ at_sym_type(Mapfile *mf, Token eq_tok, void *uvalue) * SYMBOL [version_name] { symbol_name { VALUE = value * ---------------------------------------------^ */ -/* ARGSUSED 1 */ static Token at_sym_value(Mapfile *mf, Token eq_tok, void *uvalue) { @@ -2960,24 +2992,299 @@ at_sym_value(Mapfile *mf, Token eq_tok, void *uvalue) ld_map_tkval_t tkv; /* value */ - if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_VALUE), &tkv) == TK_ERROR) + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_VALUE), &tkv, 0) == TK_ERROR) return (TK_ERROR); ss->ss_ms.ms_value = tkv.tkv_int.tkvi_value; ss->ss_ms.ms_value_set = TRUE; - /* terminator */ return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_VALUE))); } +typedef struct { + const char *name; + uchar_t ms_type; +} at_ass_type_t; + +static at_ass_type_t at_ass_type_list[] = { + /* Accept DATA as well to match sym attrs */ + { MSG_ORIG(MSG_MAPKW_DATA), STT_OBJECT }, + { MSG_ORIG(MSG_MAPKW_OBJECT), STT_OBJECT }, + { MSG_ORIG(MSG_MAPKW_FUNC), STT_FUNC }, + /* Accept FUNCTION as well to match sym attrs */ + { MSG_ORIG(MSG_MAPKW_FUNCTION), STT_FUNC }, + { MSG_ORIG(MSG_MAPKW_SECTION), STT_SECTION }, + { MSG_ORIG(MSG_MAPKW_FILE), STT_FILE }, + { MSG_ORIG(MSG_MAPKW_COMMON), STT_COMMON }, + { MSG_ORIG(MSG_MAPKW_TLS), STT_TLS }, + { 0 } +}; + +static size_t at_ass_type_list_bufsize = + KW_NAME_SIZE(MSG_MAPKW_OBJECT) + + KW_NAME_SIZE(MSG_MAPKW_FUNC) + + KW_NAME_SIZE(MSG_MAPKW_FUNCTION) + + KW_NAME_SIZE(MSG_MAPKW_SECTION) + + KW_NAME_SIZE(MSG_MAPKW_FILE) + + KW_NAME_SIZE(MSG_MAPKW_COMMON) + + KW_NAME_SIZE(MSG_MAPKW_TLS); + +static void +gts_efunc_at_ass_type(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) +{ + Conv_inv_buf_t inv_buf; + char buf[VLA_SIZE(at_ass_type_list_bufsize)]; + + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_SYMTYPE), + ld_map_kwnames(at_ass_type_list, SGSOFFSETOF(at_ass_type_t, name), + sizeof (at_ass_type_list[0]), buf, at_ass_type_list_bufsize), + ld_map_tokenstr(tok, tkv, &inv_buf)); +} + +typedef struct { + const char *name; /* attribute name */ + Boolean ms_bits; /* bits? */ +} at_ass_shattr_t; + +static at_ass_shattr_t at_ass_shattr_list[] = { + { MSG_ORIG(MSG_MAPKW_BITS), TRUE }, + { MSG_ORIG(MSG_MAPKW_NOBITS), FALSE }, + { 0 } +}; + +static size_t at_ass_shattr_list_bufsize = + KW_NAME_SIZE(MSG_MAPKW_BITS) + + KW_NAME_SIZE(MSG_MAPKW_NOBITS); + +static void +gts_efunc_at_ass_shattr(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) +{ + Conv_inv_buf_t inv_buf; + char buf[VLA_SIZE(at_ass_shattr_list_bufsize)]; + + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_SHATTRTYPE), + ld_map_kwnames(at_ass_shattr_list, + SGSOFFSETOF(at_ass_shattr_t, name), sizeof (at_ass_shattr_list[0]), + buf, at_ass_shattr_list_bufsize), + ld_map_tokenstr(tok, tkv, &inv_buf)); +} + +static Token +at_ass_shattr(Mapfile *mf, Token eq_tok, void *uvalue) +{ + symbol_state_t *ss = uvalue; + at_ass_shattr_t *shattr; + ld_map_tkval_t tkv; + + if (gettoken_str(mf, TK_F_KEYWORD, &tkv, + gts_efunc_at_ass_shattr) == TK_ERROR) + return (TK_ERROR); + + shattr = ld_map_kwfind(tkv.tkv_str, at_ass_shattr_list, + SGSOFFSETOF(at_ass_shattr_t, name), sizeof (shattr[0])); + + if (shattr == NULL) { + gts_efunc_at_ass_shattr(mf, TK_STRING, &tkv); + return (TK_ERROR); + } + + ss->ss_ma.ass_bits = shattr->ms_bits; + ss->ss_ma.ass_enabled |= SYM_ASSERT_BITS; + + return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_SHATTR))); +} + +typedef struct { + const char *name; /* binding name */ + uchar_t ms_bind; /* STB_ value */ +} at_ass_bind_t; + +static at_ass_bind_t at_ass_bind_list[] = { + { MSG_ORIG(MSG_MAPKW_GLOBAL), STB_GLOBAL }, + { MSG_ORIG(MSG_MAPKW_LOCAL), STB_LOCAL }, + { MSG_ORIG(MSG_MAPKW_WEAK), STB_WEAK }, + { 0 } +}; + +static size_t at_ass_bind_list_bufsize = + KW_NAME_SIZE(MSG_MAPKW_GLOBAL) + + KW_NAME_SIZE(MSG_MAPKW_LOCAL) + + KW_NAME_SIZE(MSG_MAPKW_WEAK); + +static void +gts_efunc_at_ass_bind(Mapfile *mf, Token tok, ld_map_tkval_t *tkv) +{ + Conv_inv_buf_t inv_buf; + char buf[VLA_SIZE(at_ass_bind_list_bufsize)]; + + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_BINDTYPE), + ld_map_kwnames(at_ass_bind_list, SGSOFFSETOF(at_ass_bind_t, name), + sizeof (at_ass_bind_list[0]), buf, at_ass_bind_list_bufsize), + ld_map_tokenstr(tok, tkv, &inv_buf)); +} + +static Token +at_ass_bind(Mapfile *mf, Token eq_tok, void *uvalue) +{ + symbol_state_t *ss = uvalue; + at_ass_bind_t *bind; + ld_map_tkval_t tkv; + + if (gettoken_str(mf, TK_F_KEYWORD, &tkv, + gts_efunc_at_ass_bind) == TK_ERROR) + return (TK_ERROR); + + bind = ld_map_kwfind(tkv.tkv_str, at_ass_bind_list, + SGSOFFSETOF(at_ass_bind_t, name), sizeof (bind[0])); + + if (bind == NULL) { + gts_efunc_at_ass_bind(mf, TK_STRING, &tkv); + return (TK_ERROR); + } + + ss->ss_ma.ass_bind = bind->ms_bind; + ss->ss_ma.ass_enabled |= SYM_ASSERT_BIND; + + return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_BIND))); +} + +static Token +at_ass_size(Mapfile *mf, Token eq_tok, void *uvalue) +{ + symbol_state_t *ss = uvalue; + ld_map_tkval_t tkv; + + if (gettoken_int(mf, MSG_ORIG(MSG_MAPKW_SIZE), &tkv, + TK_F_MULOK) == TK_ERROR) + return (TK_ERROR); + + ss->ss_ma.ass_size = tkv.tkv_int.tkvi_value; + ss->ss_ma.ass_enabled |= SYM_ASSERT_SIZE; + + return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_SIZE))); +} + +static Token +at_ass_alias(Mapfile *mf, Token eq_tok, void *uvalue) +{ + symbol_state_t *ss = uvalue; + ld_map_tkval_t tkv; + + if (ld_map_gettoken(mf, 0, &tkv) != TK_STRING) { + mf_fatal0(mf, MSG_INTL(MSG_MAP_BADALIAS)); + return (TK_ERROR); + } + + ss->ss_ma.ass_alias = tkv.tkv_str; + ss->ss_ma.ass_enabled |= SYM_ASSERT_ALIAS; + + return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_ALIAS))); +} + +static Token +at_ass_type(Mapfile *mf, Token eq_tok, void *uvalue) +{ + ld_map_tkval_t tkv; + at_ass_type_t *type; + symbol_state_t *ss = uvalue; + + if (gettoken_str(mf, TK_F_KEYWORD, &tkv, + gts_efunc_at_ass_type) == TK_ERROR) + return (TK_ERROR); + + type = ld_map_kwfind(tkv.tkv_str, at_ass_type_list, + SGSOFFSETOF(at_sym_type_t, name), sizeof (type[0])); + + if (type == NULL) { + gts_efunc_at_ass_type(mf, TK_STRING, &tkv); + return (TK_ERROR); + } + + ss->ss_ma.ass_type = type->ms_type; + ss->ss_ma.ass_enabled |= SYM_ASSERT_TYPE; + + return (gettoken_term(mf, MSG_ORIG(MSG_MAPKW_ASSERT))); +} + +static Token +at_sym_assert(Mapfile *mf, Token eq_tok, void *uvalue) +{ + static attr_t attr_list[] = { + { MSG_ORIG(MSG_MAPKW_ALIAS), at_ass_alias, ATTR_FMT_EQ }, + /* + * The Solaris manuals describe both BIND and BINDING, take both + * but prefer BINDING + */ + { MSG_ORIG(MSG_MAPKW_BIND), at_ass_bind, ATTR_FMT_EQ }, + { MSG_ORIG(MSG_MAPKW_BINDING), at_ass_bind, ATTR_FMT_EQ }, + { MSG_ORIG(MSG_MAPKW_SHATTR), at_ass_shattr, ATTR_FMT_EQ }, + { MSG_ORIG(MSG_MAPKW_SIZE), at_ass_size, ATTR_FMT_EQ }, + { MSG_ORIG(MSG_MAPKW_TYPE), at_ass_type, ATTR_FMT_EQ }, + { 0 } + }; + + static size_t attr_list_bufsize = + KW_NAME_SIZE(MSG_MAPKW_ALIAS) + + KW_NAME_SIZE(MSG_MAPKW_BIND) + + KW_NAME_SIZE(MSG_MAPKW_BINDING) + + KW_NAME_SIZE(MSG_MAPKW_SHATTR) + + KW_NAME_SIZE(MSG_MAPKW_SIZE) + + KW_NAME_SIZE(MSG_MAPKW_TYPE); + + symbol_state_t *ss = uvalue; + int done = 0; + Token tok; + ld_map_tkval_t tkv; + Conv_inv_buf_t inv_buf; + + /* Read assertions until the closing } */ + for (done = 0; done == 0; ) { + switch (tok = ld_map_gettoken(mf, 0, &tkv)) { + case TK_ERROR: + return (TK_ERROR); + case TK_LEFTBKT: + if (parse_attributes(mf, ss->ss_ms.ms_name, + attr_list, attr_list_bufsize, ss) == TK_ERROR) + return (TK_ERROR); + + /* + * If we're stating we're an alias for another symbol, + * the only other thing that maybe specified for + * _this_ symbol is its binding. + */ + if ((ss->ss_ma.ass_enabled & SYM_ASSERT_ALIAS) && + (ss->ss_ma.ass_enabled & + ~(SYM_ASSERT_ALIAS|SYM_ASSERT_BIND))) { + mf_fatal(mf, MSG_INTL(MSG_MAP_ALIAS_COMBO), + ss->ss_ms.ms_name); + return (TK_ERROR); + } + + tok = gettoken_term(mf, MSG_INTL(MSG_MAP_SYMATTR)); + if (tok == TK_ERROR) + return (TK_ERROR); + if (tok == TK_SEMICOLON) + return (tok); + break; + default: + mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_SYMDELIM), + ld_map_tokenstr(tok, &tkv, &inv_buf)); + return (TK_ERROR); + } + } + + /* If we drop through here, something is wrong */ + return (TK_ERROR); +} + /* * Parse the attributes for a SCOPE or VERSION symbol directive. * * entry: * mf - Mapfile descriptor * dir_name - Name of directive. - * ss - Pointer to symbol state block that has had its ss_nv + * ss - Pointer to symbol state block that has had its ss_mv * member initialzed via a call to ld_map_sym_ver_init(). * * exit: @@ -2995,6 +3302,7 @@ parse_symbol_attributes(Mapfile *mf, const char *dir_name, symbol_state_t *ss) { MSG_ORIG(MSG_MAPKW_SIZE), at_sym_size, ATTR_FMT_EQ }, { MSG_ORIG(MSG_MAPKW_TYPE), at_sym_type, ATTR_FMT_EQ }, { MSG_ORIG(MSG_MAPKW_VALUE), at_sym_value, ATTR_FMT_EQ }, + { MSG_ORIG(MSG_MAPKW_ASSERT), at_sym_assert, ATTR_FMT_EQ }, /* List must be null terminated */ { 0 } @@ -3010,7 +3318,8 @@ parse_symbol_attributes(Mapfile *mf, const char *dir_name, symbol_state_t *ss) KW_NAME_SIZE(MSG_MAPKW_FLAGS) + KW_NAME_SIZE(MSG_MAPKW_SIZE) + KW_NAME_SIZE(MSG_MAPKW_TYPE) + - KW_NAME_SIZE(MSG_MAPKW_VALUE); + KW_NAME_SIZE(MSG_MAPKW_VALUE) + + KW_NAME_SIZE(MSG_MAPKW_ASSERT); Token tok; ld_map_tkval_t tkv, tkv_sym; @@ -3034,7 +3343,10 @@ parse_symbol_attributes(Mapfile *mf, const char *dir_name, symbol_state_t *ss) case TK_STRING: /* Default value for all symbol attributes is 0 */ (void) memset(&ss->ss_ms, 0, sizeof (ss->ss_ms)); + (void) memset(&ss->ss_ma, 0, sizeof (ss->ss_ma)); ss->ss_ms.ms_name = tkv_sym.tkv_str; + ss->ss_ma.ass_file = mf->mf_name; + ss->ss_ma.ass_lineno = mf->mf_lineno; /* * Turn off the WEAK flag to indicate that definitions @@ -3080,7 +3392,22 @@ parse_symbol_attributes(Mapfile *mf, const char *dir_name, symbol_state_t *ss) done = 1; /* FALLTHROUGH */ - case TK_SEMICOLON: + case TK_SEMICOLON: { + ld_map_sym_t *ms = &ss->ss_ms; + /* + * If an EXTERN or PARENT symbol has + * assertions issue an error, since we can't + * check them. + */ + if ((ss->ss_ma.ass_enabled != 0) && + (((ms->ms_sdflags & FLG_SY_PARENT) != 0) || + ((ms->ms_sdflags & FLG_SY_EXTERN) != 0))) { + mf_fatal(mf, + MSG_INTL(MSG_MAP_EXTPAR_ASSERT), + ms->ms_name); + return (TK_ERROR); + } + /* * Add the new symbol. It should be noted that * all symbols added by the mapfile start out @@ -3091,9 +3418,10 @@ parse_symbol_attributes(Mapfile *mf, const char *dir_name, symbol_state_t *ss) * processing. */ if (!ld_map_sym_enter(mf, &ss->ss_mv, - &ss->ss_ms)) + &ss->ss_ms, &ss->ss_ma)) return (TK_ERROR); break; + } default: mf_fatal(mf, MSG_INTL(MSG_MAP_EXP_SYMDELIM), ld_map_tokenstr(tok, &tkv, &inv_buf)); diff --git a/usr/src/cmd/sgs/libld/common/update.c b/usr/src/cmd/sgs/libld/common/update.c index 8ef1be8343..94692ae22a 100644 --- a/usr/src/cmd/sgs/libld/common/update.c +++ b/usr/src/cmd/sgs/libld/common/update.c @@ -129,6 +129,12 @@ dynsort_dupwarn(Ofl_desc *ofl, Sym *ldynsym, const char *str, } } +static inline Boolean +ass_enabled(Ass_desc *ma, uint_t ass) +{ + return ((ma->ass_enabled & ass) != 0); +} + /* * Build and update any output symbol tables. Here we work on all the symbol * tables at once to reduce the duplication of symbol and string manipulation. @@ -1123,6 +1129,51 @@ update_osym(Ofl_desc *ofl) symptr->st_info = ELF_ST_INFO(bind, type); } + +#define IS_DATA_SYMBOL(x) ((ELF_ST_TYPE(x->st_info) == STT_OBJECT) || \ + (ELF_ST_TYPE(x->st_info) == STT_COMMON) || \ + (ELF_ST_TYPE(x->st_info) == STT_TLS)) + +/* + * Filter symbols, special symbols, and those that will be reduced aren't + * worth guidance + */ +#define IS_BORING_SYMBOL(x) (x->sd_flags & (FLG_SY_REDUCED|FLG_SY_STDFLTR| \ + FLG_SY_SPECSEC|FLG_SY_HIDDEN|FLG_SY_ELIM|FLG_SY_IGNORE)) + +/* Local symbols and unresolved weaks aren't useful to guide on */ +#define IS_BORING_SCOPE(x) ((ELF_ST_BIND(x->st_info) == STB_LOCAL) || \ + ((ELF_ST_BIND(x->st_info) == STB_WEAK) && \ + (x->st_shndx == SHN_UNDEF))) + +/* Symbol has the assertions recommended for global data */ +#define HAS_NEEDED_ASSERTS(x) ((x->sd_ass != NULL) && \ + (ass_enabled(x->sd_ass, SYM_ASSERT_SIZE) || \ + ass_enabled(x->sd_ass, SYM_ASSERT_ALIAS))) + + /* + * If we're building a shared object and a mapfile is + * specified, issue guidance if any symbol mentioned in the + * mapfile is a global data symbol with no asserted size. + * + * This is somewhat heuristic to maximize the chance of + * -zguidance users seeing our good advice without us being + * annoying (eg. we don't guide when things like + * mapfile.noex* are the only mapfiles) + */ + if (OFL_GUIDANCE(ofl, FLG_OFG_NO_ASSERTS) && + (aplist_nitems(ofl->ofl_maps) > 0) && /* mapfile used */ + (ofl->ofl_flags & FLG_OF_SHAROBJ) && /* building .so */ + (ofl->ofl_flags & FLG_OF_VERDEF) && /* versions/reduce */ + (sdp->sd_ref == REF_REL_NEED) && /* symbol in .o */ + IS_DATA_SYMBOL(sdp->sd_sym) && + !IS_BORING_SCOPE(sdp->sd_sym) && + !IS_BORING_SYMBOL(sdp) && + !HAS_NEEDED_ASSERTS(sdp)) { + ld_eprintf(ofl, ERR_GUIDANCE, + MSG_INTL(MSG_GUIDE_ASSERT_SIZE), + sdp->sd_name, (Lword)sdp->sd_sym->st_size); + } } /* @@ -3608,6 +3659,209 @@ translate_link(Ofl_desc *ofl, Os_desc *osp, Word link, const char *msg) return ((Word)elf_ndxscn(osp->os_scn)); } +typedef struct { + avl_node_t aav_avl; + Ass_desc *aav_ass; +} Aav_node; + +static int +aav_compare(const void *first, const void *second) +{ + Sym *fs = ((Aav_node *)first)->aav_ass->ass_sdp->sd_sym; + Sym *ss = ((Aav_node *)second)->aav_ass->ass_sdp->sd_sym; + + if (fs->st_value < ss->st_value) + return (-1); + if (fs->st_value > ss->st_value) + return (1); + + if (fs->st_size < ss->st_size) + return (-1); + if (fs->st_size > ss->st_size) + return (1); + + return (0); +} + + +/* + * Check any assertions from mapfiles, provide guidance if there is global + * data in a shared object that does not assert its size. + */ +static uintptr_t +check_mapfile_assertions(Ofl_desc *ofl) +{ + Ass_desc *ma; + uintptr_t ret = 0; + Aliste idx; + avl_tree_t ass_avl; + + avl_create(&ass_avl, &aav_compare, sizeof (Aav_node), + SGSOFFSETOF(Aav_node, aav_avl)); + + for (APLIST_TRAVERSE(ofl->ofl_symasserts, idx, ma)) { + Sym_desc *sdp = ma->ass_sdp; + Conv_inv_buf_t inv_buf, inv_buf2; + + /* + * Try to insert the assertion into the tree if it's not an + * alias assertion. If it's already present, it means we have + * two non-alias assertions and should complain + */ + if (!ass_enabled(ma, SYM_ASSERT_ALIAS)) { + Aav_node *av = libld_calloc(1, sizeof (Aav_node)); + Aav_node *dup; + avl_index_t where; + + if (av == NULL) + return (S_ERROR); + + av->aav_ass = ma; + + if ((dup = avl_find(&ass_avl, av, &where)) != NULL) { + ld_eprintf(ofl, ERR_FATAL, + MSG_INTL(MSG_ALIAS_NOTALIAS), + ma->ass_file, + 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); + ret = S_ERROR; + } else { + avl_insert(&ass_avl, av, where); + } + } + + /* + * All assertions can assert on binding. Other + * assertion behaviour differs based on whether we're + * asserting specifics, or asserting an ALIAS. In the + * latter case, we just compare all the attributes + * against another symbol. + */ + if (ass_enabled(ma, SYM_ASSERT_BIND) && + (ma->ass_bind != ELF_ST_BIND(sdp->sd_sym->st_info))) { + Sym *sym = sdp->sd_sym; + + ld_eprintf(ofl, ERR_FATAL, MSG_INTL(MSG_ASSFAIL_SCOPE), + ma->ass_file, ma->ass_lineno, + demangle(sdp->sd_name), + conv_sym_info_bind(ma->ass_bind, CONV_FMT_ALT_CFNP, + &inv_buf), + conv_sym_info_bind(ELF_ST_BIND(sym->st_info), + CONV_FMT_ALT_CFNP, &inv_buf2)); + ret = S_ERROR; + } + + if (ass_enabled(ma, SYM_ASSERT_ALIAS)) { + Sym *rsym, *sym; + Sym_desc *asdp; + + if ((asdp = ld_sym_find(ma->ass_alias, SYM_NOHASH, + NULL, ofl)) == NULL) { + ld_eprintf(ofl, ERR_FATAL, + MSG_INTL(MSG_ALIAS_BADSYM), + ma->ass_file, ma->ass_lineno, + ma->ass_alias); + ret = S_ERROR; + } else { + /* + * We forbid aliases of aliases, preferring + * they all point to the concrete symbol. + * This is unnecessary, but a strong + * preference for maintainability. + * + * This does prevent circular references + * however, and if this check is removed a + * real check for such would need to be added. + */ + if (((asdp->sd_flags & FLG_SY_MAPASSRT) != 0) && + ass_enabled(asdp->sd_ass, + SYM_ASSERT_ALIAS)) { + ld_eprintf(ofl, ERR_FATAL, + MSG_INTL(MSG_ALIAS_TOALIAS), + ma->ass_file, ma->ass_lineno, + ma->ass_alias); + ret = S_ERROR; + } + + rsym = asdp->sd_sym; + sym = sdp->sd_sym; + + if ((rsym->st_value != sym->st_value) || + (rsym->st_size != sym->st_size) || + (ELF_ST_TYPE(rsym->st_info) != + ELF_ST_TYPE(sym->st_info))) { + ld_eprintf(ofl, ERR_FATAL, + MSG_INTL(MSG_ASSFAIL_ALIAS), + ma->ass_file, ma->ass_lineno, + demangle(sdp->sd_name), + asdp->sd_name); + ret = S_ERROR; + } + } + + /* + * If this is an alias, none of our other checks + * matter. + */ + continue; + } + + /* + * We only want to assert on the size of a _function_ if it's + * explicitly sized, otherwise skip + */ + 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, + demangle(sdp->sd_name), + ma->ass_size, (Lword)sdp->sd_sym->st_size); + ret = S_ERROR; + } + + if (ass_enabled(ma, SYM_ASSERT_BITS) && (sdp->sd_isc != NULL)) { + if ((ma->ass_bits == TRUE) && + (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, + demangle(sdp->sd_name)); + ret = S_ERROR; + } + if ((ma->ass_bits == FALSE) && + (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, + demangle(sdp->sd_name)); + ret = S_ERROR; + } + } + + if (ass_enabled(ma, SYM_ASSERT_TYPE) && + (ma->ass_type != ELF_ST_TYPE(sdp->sd_sym->st_info))) { + Ehdr *ehdr = sdp->sd_file->ifl_ehdr; + + ld_eprintf(ofl, ERR_FATAL, + MSG_INTL(MSG_ASSFAIL_TYPE), + ma->ass_file, ma->ass_lineno, + demangle(sdp->sd_name), + conv_sym_info_type(ehdr->e_machine, + ma->ass_type, CONV_FMT_ALT_CFNP, &inv_buf), + conv_sym_info_type(ehdr->e_machine, + ELF_ST_TYPE(sdp->sd_sym->st_info), + CONV_FMT_ALT_CFNP, &inv_buf2)); + ret = S_ERROR; + } + } + + return (ret); +} + + /* * Having created all of the necessary sections, segments, and associated * headers, fill in the program headers and update any other data in the @@ -4166,6 +4420,13 @@ ld_update_outfile(Ofl_desc *ofl) if ((etext = update_osym(ofl)) == (Addr)S_ERROR) return (S_ERROR); + + /* + * Now the symbol tables are complete, process any mapfile + * assertions + */ + if (check_mapfile_assertions(ofl) == S_ERROR) + return (S_ERROR); /* * If we have an PT_INTERP phdr, update it now from the associated * section information. diff --git a/usr/src/cmd/sgs/liblddbg/common/mapfile-vers b/usr/src/cmd/sgs/liblddbg/common/mapfile-vers index bd9d7c9adf..0c0c57fbb8 100644 --- a/usr/src/cmd/sgs/liblddbg/common/mapfile-vers +++ b/usr/src/cmd/sgs/liblddbg/common/mapfile-vers @@ -43,562 +43,568 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_4.83 { - global: - dbg_desc { # interposed - ld.so.1(1) - FLAGS = NODIRECT; - }; - dbg_print { # interposed - ld(1) and ld.so.1(1) - FLAGS = NODIRECT; - }; - - Dbg_args_file; - Dbg_args_option; - Dbg_args_str2chr; - Dbg_args_Wldel; - Dbg_audit_activity; - Dbg_audit_ignore; - Dbg_audit_interface; - Dbg_audit_lib; - Dbg_audit_objclose; - Dbg_audit_objfilter; - Dbg_audit_objopen; - Dbg_audit_objsearch; - Dbg_audit_pltenter; - Dbg_audit_pltexit; - Dbg_audit_preinit; - Dbg_audit_symbind; - Dbg_audit_skip; - Dbg_audit_terminate; - Dbg_audit_version; - - Dbg_basic_collect; - Dbg_basic_create; - Dbg_basic_files; - Dbg_basic_finish; - Dbg_basic_options; - Dbg_basic_relocate; - Dbg_basic_validate; - - Dbg_help; - Dbg_setup; - Dbg_state_str; - Dbg_version; - - Dbg32_bind_global; - Dbg64_bind_global; - Dbg32_bind_plt_summary; - Dbg64_bind_plt_summary; - Dbg64_bind_pltpad_from; - Dbg64_bind_pltpad_to; - Dbg32_bind_reject; - Dbg64_bind_reject; - Dbg32_bind_weak; - Dbg64_bind_weak; - - Dbg32_cap_candidate; - Dbg64_cap_candidate; - Dbg32_cap_filter; - Dbg64_cap_filter; - Dbg32_cap_id; - Dbg64_cap_id; - Dbg32_cap_identical; - Dbg64_cap_identical; - Dbg32_cap_mapfile_title; - Dbg64_cap_mapfile_title; - Dbg32_cap_post_title; - Dbg64_cap_post_title; - Dbg32_cap_ptr_entry; - Dbg64_cap_ptr_entry; - Dbg32_cap_sec_title; - Dbg64_cap_sec_title; - Dbg32_cap_val; - Dbg64_cap_val; - Dbg32_cap_val_entry; - Dbg64_cap_val_entry; - - Dbg32_dl_dladdr; - Dbg64_dl_dladdr; - Dbg32_dl_dlclose; - Dbg64_dl_dlclose; - Dbg32_dl_dldump; - Dbg64_dl_dldump; - Dbg32_dl_dlerror; - Dbg64_dl_dlerror; - Dbg32_dl_dlinfo; - Dbg64_dl_dlinfo; - Dbg32_dl_dlopen; - Dbg64_dl_dlopen; - Dbg32_dl_dlsym; - Dbg64_dl_dlsym; - Dbg32_dl_iphdr_callback; - Dbg64_dl_iphdr_callback; - Dbg32_dl_iphdr_enter; - Dbg64_dl_iphdr_enter; - Dbg32_dl_iphdr_mapchange; - Dbg64_dl_iphdr_mapchange; - Dbg32_dl_iphdr_unmap_ret; - Dbg64_dl_iphdr_unmap_ret; - - Dbg32_demangle_name; - Dbg64_demangle_name; - - Dbg32_ent_print; - Dbg64_ent_print; - - Dbg32_file_analyze; - Dbg64_file_analyze; - Dbg32_file_aout; - Dbg64_file_aout; - Dbg32_file_ar; - Dbg64_file_ar; - Dbg32_file_ar_rescan; - Dbg64_file_ar_rescan; - Dbg32_file_bind_entry; - Dbg64_file_bind_entry; - Dbg32_file_bindings; - Dbg64_file_bindings; - Dbg32_file_bindings_done; - Dbg64_file_bindings_done; - Dbg32_file_cntl; - Dbg64_file_cntl; - Dbg32_file_config_dis; - Dbg64_file_config_dis; - Dbg32_file_config_obj; - Dbg64_file_config_obj; - Dbg32_file_deferred; - Dbg64_file_deferred; - Dbg32_file_del_rescan; - Dbg64_file_del_rescan; - Dbg32_file_delete; - Dbg64_file_delete; - Dbg32_file_elf; - Dbg64_file_elf; - Dbg32_file_cleanup; - Dbg64_file_cleanup; - Dbg32_file_filtee; - Dbg64_file_filtee; - Dbg32_file_filter; - Dbg64_file_filter; - Dbg32_file_fixname; - Dbg64_file_fixname; - Dbg32_file_generic; - Dbg64_file_generic; - Dbg32_file_hdl_action; - Dbg64_file_hdl_action; - Dbg32_file_hdl_collect; - Dbg64_file_hdl_collect; - Dbg32_file_hdl_title; - Dbg64_file_hdl_title; - Dbg32_file_lazyload; - Dbg64_file_lazyload; - Dbg32_file_ldso; - Dbg64_file_ldso; - Dbg32_file_mmapobj; - Dbg64_file_mmapobj; - Dbg32_file_mode_promote; - Dbg64_file_mode_promote; - Dbg32_file_modified; - Dbg64_file_modified; - Dbg32_file_needed; - Dbg64_file_needed; - Dbg32_file_output; - Dbg64_file_output; - Dbg32_file_preload; - Dbg64_file_preload; - Dbg32_file_prot; - Dbg64_file_prot; - Dbg32_file_rejected; - Dbg64_file_rejected; - Dbg32_file_reuse; - Dbg64_file_reuse; - Dbg32_file_skip; - Dbg64_file_skip; - - Dbg32_got_display; - Dbg64_got_display; - - Dbg32_libs_audit; - Dbg64_libs_audit; - Dbg32_libs_find; - Dbg64_libs_find; - Dbg32_libs_found; - Dbg64_libs_found; - Dbg32_libs_insecure; - Dbg64_libs_insecure; - Dbg32_libs_init; - Dbg64_libs_init; - Dbg32_libs_l; - Dbg64_libs_l; - Dbg32_libs_path; - Dbg64_libs_path; - Dbg32_libs_req; - Dbg64_libs_req; - Dbg32_libs_update; - Dbg64_libs_update; - Dbg32_libs_yp; - Dbg64_libs_yp; - Dbg32_libs_ylu; - Dbg64_libs_ylu; - - Dbg32_map_cexp_id; - Dbg64_map_cexp_id; - Dbg32_map_dv; - Dbg64_map_dv; - Dbg32_map_dv_entry; - Dbg64_map_dv_entry; - Dbg32_map_ent; - Dbg64_map_ent; - Dbg32_map_ent_ord_title; - Dbg64_map_ent_ord_title; - Dbg32_map_hdr_noalloc; - Dbg64_map_hdr_noalloc; - Dbg32_map_parse; - Dbg64_map_parse; - Dbg32_map_pass; - Dbg64_map_pass; - Dbg32_map_post_title; - Dbg64_map_post_title; - Dbg32_map_seg; - Dbg64_map_seg; - Dbg32_map_seg_order; - Dbg64_map_seg_order; - Dbg32_map_seg_os_order; - Dbg64_map_seg_os_order; - Dbg32_map_size_new; - Dbg64_map_size_new; - Dbg32_map_size_old; - Dbg64_map_size_old; - Dbg32_map_sort_seg; - Dbg64_map_sort_seg; - Dbg32_map_sort_title; - Dbg64_map_sort_title; - Dbg32_map_symbol; - Dbg64_map_symbol; - Dbg32_map_version; - Dbg64_map_version; - - Dbg32_move_adjexpandreloc; - Dbg64_move_adjexpandreloc; - Dbg32_move_adjmovereloc; - Dbg64_move_adjmovereloc; - Dbg32_move_bad; - Dbg64_move_bad; - Dbg32_move_data; - Dbg64_move_data; - Dbg32_move_entry1; - Dbg64_move_entry1; - Dbg32_move_entry2; - Dbg64_move_entry2; - Dbg32_move_expand; - Dbg64_move_expand; - Dbg32_move_input; - Dbg64_move_input; - Dbg32_move_outmove; - Dbg64_move_outmove; - Dbg32_move_outsctadj; - Dbg64_move_outsctadj; - Dbg32_move_parexpn; - Dbg64_move_parexpn; - - Dbg32_reloc_apply_reg; - Dbg64_reloc_apply_reg; - Dbg32_reloc_apply_val; - Dbg64_reloc_apply_val; - Dbg32_reloc_ars_entry; - Dbg64_reloc_ars_entry; - Dbg32_reloc_copy; - Dbg64_reloc_copy; - Dbg32_reloc_discard; - Dbg64_reloc_discard; - Dbg32_reloc_doact; - Dbg64_reloc_doact; - Dbg32_reloc_doact_title; - Dbg64_reloc_doact_title; - Dbg32_reloc_dooutrel; - Dbg64_reloc_dooutrel; - Dbg32_reloc_entry; - Dbg64_reloc_entry; - Dbg32_reloc_error; - Dbg64_reloc_error; - Dbg32_reloc_generate; - Dbg64_reloc_generate; - Dbg32_reloc_in; - Dbg64_reloc_in; - Dbg32_reloc_ors_entry; - Dbg64_reloc_ors_entry; - Dbg32_reloc_out; - Dbg64_reloc_out; - Dbg32_reloc_proc; - Dbg64_reloc_proc; - Dbg32_reloc_run; - Dbg64_reloc_run; - Dbg32_reloc_sloppycomdat; - Dbg64_reloc_sloppycomdat; - Dbg32_reloc_transition; - Dbg64_reloc_transition; - - Dbg32_sec_added; - Dbg64_sec_added; - Dbg32_sec_backing; - Dbg64_sec_backing; - Dbg32_sec_created; - Dbg64_sec_created; - Dbg32_sec_discarded; - Dbg64_sec_discarded; - Dbg32_sec_genstr_compress; - Dbg64_sec_genstr_compress; - Dbg32_sec_group; - Dbg64_sec_group; - Dbg32_sec_gnu_comdat; - Dbg64_sec_gnu_comdat; - Dbg32_sec_in; - Dbg64_sec_in; - Dbg32_sec_order_error; - Dbg64_sec_order_error; - Dbg32_sec_order_list; - Dbg64_sec_order_list; - Dbg32_sec_redirected; - Dbg64_sec_redirected; - Dbg32_sec_strtab; - Dbg64_sec_strtab; - Dbg32_sec_unsup_strmerge; - Dbg64_sec_unsup_strmerge; - - Dbg32_seg_entry; - Dbg64_seg_entry; - Dbg32_seg_list; - Dbg64_seg_list; - Dbg32_seg_os; - Dbg64_seg_os; - Dbg32_seg_title; - Dbg64_seg_title; - - Dbg32_shdr_modified; - Dbg64_shdr_modified; - - Dbg32_statistics_ar; - Dbg64_statistics_ar; - Dbg32_statistics_ld; - Dbg64_statistics_ld; - - Dbg32_support_action; - Dbg64_support_action; - Dbg32_support_load; - Dbg64_support_load; - Dbg32_support_req; - Dbg64_support_req; - Dbg32_support_vnone; - Dbg64_support_vnone; - - Dbg32_syminfo_entry; - Dbg64_syminfo_entry; - Dbg32_syminfo_title; - Dbg64_syminfo_title; - - Dbg32_syms_ar_checking; - Dbg64_syms_ar_checking; - Dbg32_syms_ar_force; - Dbg64_syms_ar_force; - Dbg32_syms_ar_resolve; - Dbg64_syms_ar_resolve; - Dbg32_syms_ar_skip; - Dbg64_syms_ar_skip; - Dbg32_syms_ar_title; - Dbg64_syms_ar_title; - Dbg32_syms_cap_convert; - Dbg64_syms_cap_convert; - Dbg32_syms_cap_local; - Dbg64_syms_cap_local; - Dbg32_syms_cap_lookup; - Dbg64_syms_cap_lookup; - Dbg32_syms_cap_title; - Dbg64_syms_cap_title; - Dbg32_syms_copy_reloc; - Dbg64_syms_copy_reloc; - Dbg32_syms_created; - Dbg64_syms_created; - Dbg32_syms_discarded; - Dbg64_syms_discarded; - Dbg32_syms_dup_discarded; - Dbg64_syms_dup_discarded; - Dbg32_syms_dup_sort_addr; - Dbg64_syms_dup_sort_addr; - Dbg32_syms_entered; - Dbg64_syms_entered; - Dbg32_syms_entry; - Dbg64_syms_entry; - Dbg32_syms_global; - Dbg64_syms_global; - Dbg32_syms_ignore; - Dbg64_syms_ignore; - Dbg32_syms_ignore_gnuver; - Dbg64_syms_ignore_gnuver; - Dbg32_syms_lazy_rescan; - Dbg64_syms_lazy_rescan; - Dbg32_syms_lookup; - Dbg64_syms_lookup; - Dbg32_syms_lookup_aout; - Dbg32_syms_new; - Dbg64_syms_new; - Dbg32_syms_old; - Dbg64_syms_old; - Dbg32_syms_process; - Dbg64_syms_process; - Dbg32_syms_reduce; - Dbg64_syms_reduce; - Dbg32_syms_resolved; - Dbg64_syms_resolved; - Dbg32_syms_resolving; - Dbg64_syms_resolving; - Dbg32_syms_sec_entry; - Dbg64_syms_sec_entry; - Dbg32_syms_sec_title; - Dbg64_syms_sec_title; - Dbg32_syms_spec_title; - Dbg64_syms_spec_title; - Dbg32_syms_updated; - Dbg64_syms_updated; - Dbg32_syms_up_title; - Dbg64_syms_up_title; - Dbg32_syms_wrap; - Dbg64_syms_wrap; - - Dbg_tls_modactivity; - Dbg_tls_static_block; - Dbg_tls_static_resv; - - Dbg32_util_call_array; - Dbg64_util_call_array; - Dbg32_util_call_fini; - Dbg64_util_call_fini; - Dbg32_util_call_init; - Dbg64_util_call_init; - Dbg32_util_call_main; - Dbg64_util_call_main; - Dbg32_util_collect; - Dbg64_util_collect; - Dbg32_util_dbnotify; - Dbg64_util_dbnotify; - Dbg32_util_edge_in; - Dbg64_util_edge_in; - Dbg32_util_edge_out; - Dbg64_util_edge_out; - Dbg32_util_lcinterface; - Dbg64_util_lcinterface; - Dbg32_util_intoolate; - Dbg64_util_intoolate; - Dbg32_util_nl; - Dbg64_util_nl; - Dbg32_util_scc_entry; - Dbg64_util_scc_entry; - Dbg32_util_scc_title; - Dbg64_util_scc_title; - Dbg32_util_str; - Dbg64_util_str; - - Dbg32_unused_file; - Dbg64_unused_file; - Dbg32_unused_lcinterface; - Dbg64_unused_lcinterface; - Dbg32_unused_path; - Dbg64_unused_path; - Dbg32_unused_sec; - Dbg64_unused_sec; - Dbg32_unused_unref; - Dbg64_unused_unref; - - Dbg32_ver_avail_entry; - Dbg64_ver_avail_entry; - Dbg32_ver_avail_title; - Dbg64_ver_avail_title; - Dbg32_ver_def_title; - Dbg64_ver_def_title; - Dbg32_ver_desc_entry; - Dbg64_ver_desc_entry; - Dbg32_ver_need_done; - Dbg64_ver_need_done; - Dbg32_ver_need_entry; - Dbg64_ver_need_entry; - Dbg32_ver_need_title; - Dbg64_ver_need_title; - Dbg32_ver_nointerface; - Dbg64_ver_nointerface; - Dbg32_ver_symbol; - Dbg64_ver_symbol; + global: + dbg_desc { + # interposed - ld.so.1(1) + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + dbg_print { + # interposed - ld(1) and ld.so.1(1) + FLAGS = NODIRECT; + }; + + Dbg_args_file; + Dbg_args_option; + Dbg_args_str2chr; + Dbg_args_Wldel; + Dbg_audit_activity; + Dbg_audit_ignore; + Dbg_audit_interface; + Dbg_audit_lib; + Dbg_audit_objclose; + Dbg_audit_objfilter; + Dbg_audit_objopen; + Dbg_audit_objsearch; + Dbg_audit_pltenter; + Dbg_audit_pltexit; + Dbg_audit_preinit; + Dbg_audit_symbind; + Dbg_audit_skip; + Dbg_audit_terminate; + Dbg_audit_version; + + Dbg_basic_collect; + Dbg_basic_create; + Dbg_basic_files; + Dbg_basic_finish; + Dbg_basic_options; + Dbg_basic_relocate; + Dbg_basic_validate; + + Dbg_help; + Dbg_setup; + Dbg_state_str; + Dbg_version; + + Dbg32_bind_global; + Dbg64_bind_global; + Dbg32_bind_plt_summary; + Dbg64_bind_plt_summary; + Dbg64_bind_pltpad_from; + Dbg64_bind_pltpad_to; + Dbg32_bind_reject; + Dbg64_bind_reject; + Dbg32_bind_weak; + Dbg64_bind_weak; + + Dbg32_cap_candidate; + Dbg64_cap_candidate; + Dbg32_cap_filter; + Dbg64_cap_filter; + Dbg32_cap_id; + Dbg64_cap_id; + Dbg32_cap_identical; + Dbg64_cap_identical; + Dbg32_cap_mapfile_title; + Dbg64_cap_mapfile_title; + Dbg32_cap_post_title; + Dbg64_cap_post_title; + Dbg32_cap_ptr_entry; + Dbg64_cap_ptr_entry; + Dbg32_cap_sec_title; + Dbg64_cap_sec_title; + Dbg32_cap_val; + Dbg64_cap_val; + Dbg32_cap_val_entry; + Dbg64_cap_val_entry; + + Dbg32_dl_dladdr; + Dbg64_dl_dladdr; + Dbg32_dl_dlclose; + Dbg64_dl_dlclose; + Dbg32_dl_dldump; + Dbg64_dl_dldump; + Dbg32_dl_dlerror; + Dbg64_dl_dlerror; + Dbg32_dl_dlinfo; + Dbg64_dl_dlinfo; + Dbg32_dl_dlopen; + Dbg64_dl_dlopen; + Dbg32_dl_dlsym; + Dbg64_dl_dlsym; + Dbg32_dl_iphdr_callback; + Dbg64_dl_iphdr_callback; + Dbg32_dl_iphdr_enter; + Dbg64_dl_iphdr_enter; + Dbg32_dl_iphdr_mapchange; + Dbg64_dl_iphdr_mapchange; + Dbg32_dl_iphdr_unmap_ret; + Dbg64_dl_iphdr_unmap_ret; + + Dbg32_demangle_name; + Dbg64_demangle_name; + + Dbg32_ent_print; + Dbg64_ent_print; + + Dbg32_file_analyze; + Dbg64_file_analyze; + Dbg32_file_aout; + Dbg64_file_aout; + Dbg32_file_ar; + Dbg64_file_ar; + Dbg32_file_ar_rescan; + Dbg64_file_ar_rescan; + Dbg32_file_bind_entry; + Dbg64_file_bind_entry; + Dbg32_file_bindings; + Dbg64_file_bindings; + Dbg32_file_bindings_done; + Dbg64_file_bindings_done; + Dbg32_file_cntl; + Dbg64_file_cntl; + Dbg32_file_config_dis; + Dbg64_file_config_dis; + Dbg32_file_config_obj; + Dbg64_file_config_obj; + Dbg32_file_deferred; + Dbg64_file_deferred; + Dbg32_file_del_rescan; + Dbg64_file_del_rescan; + Dbg32_file_delete; + Dbg64_file_delete; + Dbg32_file_elf; + Dbg64_file_elf; + Dbg32_file_cleanup; + Dbg64_file_cleanup; + Dbg32_file_filtee; + Dbg64_file_filtee; + Dbg32_file_filter; + Dbg64_file_filter; + Dbg32_file_fixname; + Dbg64_file_fixname; + Dbg32_file_generic; + Dbg64_file_generic; + Dbg32_file_hdl_action; + Dbg64_file_hdl_action; + Dbg32_file_hdl_collect; + Dbg64_file_hdl_collect; + Dbg32_file_hdl_title; + Dbg64_file_hdl_title; + Dbg32_file_lazyload; + Dbg64_file_lazyload; + Dbg32_file_ldso; + Dbg64_file_ldso; + Dbg32_file_mmapobj; + Dbg64_file_mmapobj; + Dbg32_file_mode_promote; + Dbg64_file_mode_promote; + Dbg32_file_modified; + Dbg64_file_modified; + Dbg32_file_needed; + Dbg64_file_needed; + Dbg32_file_output; + Dbg64_file_output; + Dbg32_file_preload; + Dbg64_file_preload; + Dbg32_file_prot; + Dbg64_file_prot; + Dbg32_file_rejected; + Dbg64_file_rejected; + Dbg32_file_reuse; + Dbg64_file_reuse; + Dbg32_file_skip; + Dbg64_file_skip; + + Dbg32_got_display; + Dbg64_got_display; + + Dbg32_libs_audit; + Dbg64_libs_audit; + Dbg32_libs_find; + Dbg64_libs_find; + Dbg32_libs_found; + Dbg64_libs_found; + Dbg32_libs_insecure; + Dbg64_libs_insecure; + Dbg32_libs_init; + Dbg64_libs_init; + Dbg32_libs_l; + Dbg64_libs_l; + Dbg32_libs_path; + Dbg64_libs_path; + Dbg32_libs_req; + Dbg64_libs_req; + Dbg32_libs_update; + Dbg64_libs_update; + Dbg32_libs_yp; + Dbg64_libs_yp; + Dbg32_libs_ylu; + Dbg64_libs_ylu; + + Dbg32_map_cexp_id; + Dbg64_map_cexp_id; + Dbg32_map_dv; + Dbg64_map_dv; + Dbg32_map_dv_entry; + Dbg64_map_dv_entry; + Dbg32_map_ent; + Dbg64_map_ent; + Dbg32_map_ent_ord_title; + Dbg64_map_ent_ord_title; + Dbg32_map_hdr_noalloc; + Dbg64_map_hdr_noalloc; + Dbg32_map_parse; + Dbg64_map_parse; + Dbg32_map_pass; + Dbg64_map_pass; + Dbg32_map_post_title; + Dbg64_map_post_title; + Dbg32_map_seg; + Dbg64_map_seg; + Dbg32_map_seg_order; + Dbg64_map_seg_order; + Dbg32_map_seg_os_order; + Dbg64_map_seg_os_order; + Dbg32_map_size_new; + Dbg64_map_size_new; + Dbg32_map_size_old; + Dbg64_map_size_old; + Dbg32_map_sort_seg; + Dbg64_map_sort_seg; + Dbg32_map_sort_title; + Dbg64_map_sort_title; + Dbg32_map_symbol; + Dbg64_map_symbol; + Dbg32_map_version; + Dbg64_map_version; + + Dbg32_move_adjexpandreloc; + Dbg64_move_adjexpandreloc; + Dbg32_move_adjmovereloc; + Dbg64_move_adjmovereloc; + Dbg32_move_bad; + Dbg64_move_bad; + Dbg32_move_data; + Dbg64_move_data; + Dbg32_move_entry1; + Dbg64_move_entry1; + Dbg32_move_entry2; + Dbg64_move_entry2; + Dbg32_move_expand; + Dbg64_move_expand; + Dbg32_move_input; + Dbg64_move_input; + Dbg32_move_outmove; + Dbg64_move_outmove; + Dbg32_move_outsctadj; + Dbg64_move_outsctadj; + Dbg32_move_parexpn; + Dbg64_move_parexpn; + + Dbg32_reloc_apply_reg; + Dbg64_reloc_apply_reg; + Dbg32_reloc_apply_val; + Dbg64_reloc_apply_val; + Dbg32_reloc_ars_entry; + Dbg64_reloc_ars_entry; + Dbg32_reloc_copy; + Dbg64_reloc_copy; + Dbg32_reloc_discard; + Dbg64_reloc_discard; + Dbg32_reloc_doact; + Dbg64_reloc_doact; + Dbg32_reloc_doact_title; + Dbg64_reloc_doact_title; + Dbg32_reloc_dooutrel; + Dbg64_reloc_dooutrel; + Dbg32_reloc_entry; + Dbg64_reloc_entry; + Dbg32_reloc_error; + Dbg64_reloc_error; + Dbg32_reloc_generate; + Dbg64_reloc_generate; + Dbg32_reloc_in; + Dbg64_reloc_in; + Dbg32_reloc_ors_entry; + Dbg64_reloc_ors_entry; + Dbg32_reloc_out; + Dbg64_reloc_out; + Dbg32_reloc_proc; + Dbg64_reloc_proc; + Dbg32_reloc_run; + Dbg64_reloc_run; + Dbg32_reloc_sloppycomdat; + Dbg64_reloc_sloppycomdat; + Dbg32_reloc_transition; + Dbg64_reloc_transition; + + Dbg32_sec_added; + Dbg64_sec_added; + Dbg32_sec_backing; + Dbg64_sec_backing; + Dbg32_sec_created; + Dbg64_sec_created; + Dbg32_sec_discarded; + Dbg64_sec_discarded; + Dbg32_sec_genstr_compress; + Dbg64_sec_genstr_compress; + Dbg32_sec_group; + Dbg64_sec_group; + Dbg32_sec_gnu_comdat; + Dbg64_sec_gnu_comdat; + Dbg32_sec_in; + Dbg64_sec_in; + Dbg32_sec_order_error; + Dbg64_sec_order_error; + Dbg32_sec_order_list; + Dbg64_sec_order_list; + Dbg32_sec_redirected; + Dbg64_sec_redirected; + Dbg32_sec_strtab; + Dbg64_sec_strtab; + Dbg32_sec_unsup_strmerge; + Dbg64_sec_unsup_strmerge; + + Dbg32_seg_entry; + Dbg64_seg_entry; + Dbg32_seg_list; + Dbg64_seg_list; + Dbg32_seg_os; + Dbg64_seg_os; + Dbg32_seg_title; + Dbg64_seg_title; + + Dbg32_shdr_modified; + Dbg64_shdr_modified; + + Dbg32_statistics_ar; + Dbg64_statistics_ar; + Dbg32_statistics_ld; + Dbg64_statistics_ld; + + Dbg32_support_action; + Dbg64_support_action; + Dbg32_support_load; + Dbg64_support_load; + Dbg32_support_req; + Dbg64_support_req; + Dbg32_support_vnone; + Dbg64_support_vnone; + + Dbg32_syminfo_entry; + Dbg64_syminfo_entry; + Dbg32_syminfo_title; + Dbg64_syminfo_title; + + Dbg32_syms_ar_checking; + Dbg64_syms_ar_checking; + Dbg32_syms_ar_force; + Dbg64_syms_ar_force; + Dbg32_syms_ar_resolve; + Dbg64_syms_ar_resolve; + Dbg32_syms_ar_skip; + Dbg64_syms_ar_skip; + Dbg32_syms_ar_title; + Dbg64_syms_ar_title; + Dbg32_syms_cap_convert; + Dbg64_syms_cap_convert; + Dbg32_syms_cap_local; + Dbg64_syms_cap_local; + Dbg32_syms_cap_lookup; + Dbg64_syms_cap_lookup; + Dbg32_syms_cap_title; + Dbg64_syms_cap_title; + Dbg32_syms_copy_reloc; + Dbg64_syms_copy_reloc; + Dbg32_syms_created; + Dbg64_syms_created; + Dbg32_syms_discarded; + Dbg64_syms_discarded; + Dbg32_syms_dup_discarded; + Dbg64_syms_dup_discarded; + Dbg32_syms_dup_sort_addr; + Dbg64_syms_dup_sort_addr; + Dbg32_syms_entered; + Dbg64_syms_entered; + Dbg32_syms_entry; + Dbg64_syms_entry; + Dbg32_syms_global; + Dbg64_syms_global; + Dbg32_syms_ignore; + Dbg64_syms_ignore; + Dbg32_syms_ignore_gnuver; + Dbg64_syms_ignore_gnuver; + Dbg32_syms_lazy_rescan; + Dbg64_syms_lazy_rescan; + Dbg32_syms_lookup; + Dbg64_syms_lookup; + Dbg32_syms_lookup_aout; + Dbg32_syms_new; + Dbg64_syms_new; + Dbg32_syms_old; + Dbg64_syms_old; + Dbg32_syms_process; + Dbg64_syms_process; + Dbg32_syms_reduce; + Dbg64_syms_reduce; + Dbg32_syms_resolved; + Dbg64_syms_resolved; + Dbg32_syms_resolving; + Dbg64_syms_resolving; + Dbg32_syms_sec_entry; + Dbg64_syms_sec_entry; + Dbg32_syms_sec_title; + Dbg64_syms_sec_title; + Dbg32_syms_spec_title; + Dbg64_syms_spec_title; + Dbg32_syms_updated; + Dbg64_syms_updated; + Dbg32_syms_up_title; + Dbg64_syms_up_title; + Dbg32_syms_wrap; + Dbg64_syms_wrap; + + Dbg_tls_modactivity; + Dbg_tls_static_block; + Dbg_tls_static_resv; + + Dbg32_util_call_array; + Dbg64_util_call_array; + Dbg32_util_call_fini; + Dbg64_util_call_fini; + Dbg32_util_call_init; + Dbg64_util_call_init; + Dbg32_util_call_main; + Dbg64_util_call_main; + Dbg32_util_collect; + Dbg64_util_collect; + Dbg32_util_dbnotify; + Dbg64_util_dbnotify; + Dbg32_util_edge_in; + Dbg64_util_edge_in; + Dbg32_util_edge_out; + Dbg64_util_edge_out; + Dbg32_util_lcinterface; + Dbg64_util_lcinterface; + Dbg32_util_intoolate; + Dbg64_util_intoolate; + Dbg32_util_nl; + Dbg64_util_nl; + Dbg32_util_scc_entry; + Dbg64_util_scc_entry; + Dbg32_util_scc_title; + Dbg64_util_scc_title; + Dbg32_util_str; + Dbg64_util_str; + + Dbg32_unused_file; + Dbg64_unused_file; + Dbg32_unused_lcinterface; + Dbg64_unused_lcinterface; + Dbg32_unused_path; + Dbg64_unused_path; + Dbg32_unused_sec; + Dbg64_unused_sec; + Dbg32_unused_unref; + Dbg64_unused_unref; + + Dbg32_ver_avail_entry; + Dbg64_ver_avail_entry; + Dbg32_ver_avail_title; + Dbg64_ver_avail_title; + Dbg32_ver_def_title; + Dbg64_ver_def_title; + Dbg32_ver_desc_entry; + Dbg64_ver_desc_entry; + Dbg32_ver_need_done; + Dbg64_ver_need_done; + Dbg32_ver_need_entry; + Dbg64_ver_need_entry; + Dbg32_ver_need_title; + Dbg64_ver_need_title; + Dbg32_ver_nointerface; + Dbg64_ver_nointerface; + Dbg32_ver_symbol; + Dbg64_ver_symbol; } SUNWprivate_3.23; # The following interfaces are used by various parts of the link-editors and # elfdump(1). The link-editors are always packaged together but there -# seems to be a variety of old elfdump's lying around. elfdump only uses +# seems to be a variety of old elfdump's lying around. elfdump only uses # this interface, and thus by separating in from the ever changing Dbg_* # interfaces we can provide a stable versioning environment for this utility. SYMBOL_VERSION SUNWprivate_3.23 { - global: - Elf_syminfo_entry; - Elf_syminfo_title; - - Elf32_cap_entry; - Elf64_cap_entry; - Elf32_cap_title; - Elf64_cap_title; - - Elf32_demangle_name; - Elf64_demangle_name; - Elf32_dyn_entry; - Elf64_dyn_entry; - Elf32_dyn_null_entry; - Elf64_dyn_null_entry; - Elf32_dyn_title; - Elf64_dyn_title; - - Elf32_ehdr; - Elf64_ehdr; - - Elf32_got_entry; - Elf64_got_entry; - Elf32_got_title; - Elf64_got_title; - - Elf32_phdr; - Elf64_phdr; - - Elf32_reloc_apply_reg; - Elf64_reloc_apply_reg; - Elf32_reloc_apply_val; - Elf64_reloc_apply_val; - Elf32_reloc_entry_1; - Elf64_reloc_entry_1; - Elf32_reloc_entry_2; - Elf64_reloc_entry_2; - Elf32_reloc_title; - Elf64_reloc_title; - - Elf32_shdr; - Elf64_shdr; - - Elf32_syms_table_title; - Elf64_syms_table_title; - Elf32_syms_table_entry; - Elf64_syms_table_entry; - - Elf32_ver_def_title; - Elf64_ver_def_title; - Elf32_ver_line_1; - Elf64_ver_line_1; - Elf32_ver_line_2; - Elf64_ver_line_2; - Elf32_ver_line_3; - Elf64_ver_line_3; - Elf32_ver_line_4; - Elf64_ver_line_4; - Elf32_ver_line_5; - Elf64_ver_line_5; - Elf32_ver_need_title; - Elf64_ver_need_title; - - local: - *; + global: + Elf_syminfo_entry; + Elf_syminfo_title; + + Elf32_cap_entry; + Elf64_cap_entry; + Elf32_cap_title; + Elf64_cap_title; + + Elf32_demangle_name; + Elf64_demangle_name; + Elf32_dyn_entry; + Elf64_dyn_entry; + Elf32_dyn_null_entry; + Elf64_dyn_null_entry; + Elf32_dyn_title; + Elf64_dyn_title; + + Elf32_ehdr; + Elf64_ehdr; + + Elf32_got_entry; + Elf64_got_entry; + Elf32_got_title; + Elf64_got_title; + + Elf32_phdr; + Elf64_phdr; + + Elf32_reloc_apply_reg; + Elf64_reloc_apply_reg; + Elf32_reloc_apply_val; + Elf64_reloc_apply_val; + Elf32_reloc_entry_1; + Elf64_reloc_entry_1; + Elf32_reloc_entry_2; + Elf64_reloc_entry_2; + Elf32_reloc_title; + Elf64_reloc_title; + + Elf32_shdr; + Elf64_shdr; + + Elf32_syms_table_title; + Elf64_syms_table_title; + Elf32_syms_table_entry; + Elf64_syms_table_entry; + + Elf32_ver_def_title; + Elf64_ver_def_title; + Elf32_ver_line_1; + Elf64_ver_line_1; + Elf32_ver_line_2; + Elf64_ver_line_2; + Elf32_ver_line_3; + Elf64_ver_line_3; + Elf32_ver_line_4; + Elf64_ver_line_4; + Elf32_ver_line_5; + Elf64_ver_line_5; + Elf32_ver_need_title; + Elf64_ver_need_title; + + local: + *; }; diff --git a/usr/src/cmd/sgs/librtld_db/common/mapfile-vers b/usr/src/cmd/sgs/librtld_db/common/mapfile-vers index 02ac13ea5d..68dcadf9b8 100644 --- a/usr/src/cmd/sgs/librtld_db/common/mapfile-vers +++ b/usr/src/cmd/sgs/librtld_db/common/mapfile-vers @@ -77,11 +77,11 @@ $endif #Externally defined symbols SYMBOL_SCOPE { global: - ps_pauxv { FLAGS = NODIRECT PARENT }; - ps_pdmodel { FLAGS = NODIRECT PARENT }; - ps_pglobal_lookup { FLAGS = NODIRECT PARENT }; - ps_pglobal_sym { FLAGS = NODIRECT PARENT }; - ps_plog { FLAGS = NODIRECT PARENT }; - ps_pread { FLAGS = NODIRECT PARENT }; - ps_pwrite { FLAGS = NODIRECT PARENT }; + ps_pauxv { FLAGS = NODIRECT PARENT; }; + ps_pdmodel { FLAGS = NODIRECT PARENT; }; + ps_pglobal_lookup { FLAGS = NODIRECT PARENT; }; + ps_pglobal_sym { FLAGS = NODIRECT PARENT; }; + ps_plog { FLAGS = NODIRECT PARENT; }; + ps_pread { FLAGS = NODIRECT PARENT; }; + ps_pwrite { FLAGS = NODIRECT PARENT; }; }; diff --git a/usr/src/cmd/sgs/rtld/common/mapfile-vers b/usr/src/cmd/sgs/rtld/common/mapfile-vers index 0a9e5c3e5b..c67b144f2c 100644 --- a/usr/src/cmd/sgs/rtld/common/mapfile-vers +++ b/usr/src/cmd/sgs/rtld/common/mapfile-vers @@ -45,91 +45,140 @@ $mapfile_version 2 # All symbols in ld.so.1 are private as no-one should bind to these directly. # SYMBOL_VERSION SUNWprivate_1.3 { - protected: - dladdr; # Standard dlopen(3x) family - dladdr1; - dldump; - dlclose; - dlerror; - dlinfo; - dlopen; - dlmopen; - dlsym; - - _dladdr; # these should not exist - _dladdr1; - _dldump; - _dlclose; - _dlerror; - _dlinfo; - _dlopen; - _dlmopen; - _dlsym; - - _ld_libc; # provides libc initialization - - _elf_rtbndr; # dbx expects to find these - elf_rtbndr; - _rt_boot; # Provides basic adb symbol offsets - - rtld_db_dlactivity; # Required to support librtld_db - rtld_db_preinit; - rtld_db_postinit; - r_debug; - - elf_plt_write; - is_so_loaded; - lml_main; - lookup_sym; - - alist_append; # librtld support - ld_entry_cnt; - dbg_desc; # Diagnostic support - dbg_print; - eprintf; # Error message printing - veprintf; - - dgettext; # Messaging support - strerror; - - calloc; # Memory management (mapmalloc). - free; - malloc; - realloc; - - _environ; # PLT tracing getenv() support. - environ; - - memcpy; # Some routines are useful for support - snprintf; # libraries such as liblddbg. - sprintf; # Note that some of these functions - strcat; # (like sprintf) may have reduced - strcmp; # functionality over libc, as a simpler - strcpy; # implementation is provided in ld.so.1. - strlen; - strrchr; - strtok_r; - ___errno; - qsort; - dl_iterate_phdr; + protected: + dladdr; # Standard dlopen(3x) family + dladdr1; + dldump; + dlclose; + dlerror; + dlinfo; + dlopen; + dlmopen; + dlsym; + + _dladdr; # these should not exist + _dladdr1; + _dldump; + _dlclose; + _dlerror; + _dlinfo; + _dlopen; + _dlmopen; + _dlsym; + + _ld_libc; # provides libc initialization + + _elf_rtbndr; # dbx expects to find these + elf_rtbndr; + _rt_boot; # Provides basic adb symbol offsets + + rtld_db_dlactivity; # Required to support librtld_db + rtld_db_preinit; + rtld_db_postinit; + r_debug { + ASSERT = { + TYPE = OBJECT; + $if _x86 && _ELF32 + + SIZE = 44; + $elif _x86 && _ELF64 + + SIZE = 80; + $else + + $error Unknown platform + + $endif + + }; + }; + + elf_plt_write; + is_so_loaded; + lml_main { + ASSERT = { + TYPE = OBJECT; + $if _x86 && _ELF32 + + SIZE = addrsize[41]; + $elif _x86 && _ELF64 + + SIZE = addrsize[38]; + $else + + $error Unknown platform + + $endif + + }; + }; + lookup_sym; + + alist_append; # librtld support + ld_entry_cnt { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + # Diagnostic support + dbg_desc { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + dbg_print; + eprintf; # Error message printing + veprintf; + + dgettext; # Messaging support + strerror; + + calloc; # Memory management (mapmalloc). + free; + malloc; + realloc; + + # PLT tracing getenv() support. + _environ { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + environ { + ASSERT = { + BINDING = WEAK; + ALIAS = _environ; + }; + }; + + memcpy; # Some routines are useful for support + snprintf; # libraries such as liblddbg. + sprintf; # Note that some of these functions + strcat; # (like sprintf) may have reduced + strcmp; # functionality over libc, as a simpler + strcpy; # implementation is provided in ld.so.1. + strlen; + strrchr; + strtok_r; + ___errno; + qsort; + dl_iterate_phdr; $if _x86 && _ELF64 - # amd64 ABI exception unwinding - _dlamd64getunwind; - dlamd64getunwind; + # amd64 ABI exception unwinding + _dlamd64getunwind; + dlamd64getunwind; $endif - # doXX_reloc_rtld and relocXX_table are required to - # support librtld.so. + # doXX_reloc_rtld and relocXX_table are required to + # support librtld.so. $if _ELF32 - do32_reloc_rtld; - reloc32_table; + do32_reloc_rtld; + reloc32_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[117]; + }; + }; $elif _ELF64 - do64_reloc_rtld; - reloc64_table; + do64_reloc_rtld; + reloc64_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[68]; + }; + }; $else $error unknown ELFCLASS $endif - local: - *; + local: + *; }; diff --git a/usr/src/cmd/sgs/tools/SUNWonld-README b/usr/src/cmd/sgs/tools/SUNWonld-README index d29de0aa81..3ae424340c 100644 --- a/usr/src/cmd/sgs/tools/SUNWonld-README +++ b/usr/src/cmd/sgs/tools/SUNWonld-README @@ -1671,3 +1671,4 @@ Bugid Risk Synopsis 11067 debug statistics crash ld(1) when -z allextract 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 diff --git a/usr/src/cmd/sgs/yacc/common/mapfile-vers b/usr/src/cmd/sgs/yacc/common/mapfile-vers index 0dd3e28202..84ce31733a 100644 --- a/usr/src/cmd/sgs/yacc/common/mapfile-vers +++ b/usr/src/cmd/sgs/yacc/common/mapfile-vers @@ -43,6 +43,7 @@ SYMBOL_VERSION SUNW_1.1 { global: main; yyerror; - local: + local: *; }; + diff --git a/usr/src/lib/README.mapfiles b/usr/src/lib/README.mapfiles index ab6650c485..16878de6b7 100644 --- a/usr/src/lib/README.mapfiles +++ b/usr/src/lib/README.mapfiles @@ -107,7 +107,7 @@ SYMBOL_VERSION ILLUMOS_0.2 { # Second interface change in illumos SYMBOL_VERSION ILLUMOS_0.1 { # First interface change in illumos global: wb_poll; -} SUNW_1.2; +} SUNW_1.2; SYMBOL_VERSION SUNW_1.2 { # update to libwombat, Solaris 10 global: @@ -252,6 +252,10 @@ The minor revision number is incremented whenever one or more new interfaces is added to a library. Once a version comes to exist in illumos, it is from that point onward considered to be immutable. +While strongly discouraged, if it is necessary to add global data symbols to a +library (which become part of the ABI), an assertion that specifies the size +of the object must be added. + 4.2 Adding a Private interface Private interfaces are the non-ABI interfaces of the library. Unlike @@ -280,6 +284,9 @@ link-editor, the public interface to which is provided by the ld command. When making a modification to the interface of such a library, you should follow the convention already in place. +As with public interfaces, the size of global objects must be asserted in +private versions (though it will be less problematic to change them later). + 4.3 Historical handling of Solaris update releases. To aid the understanding of our existing mapfiles, it is useful to note how @@ -295,15 +302,15 @@ though not all, new interfaces were included in the intervening update releases between full releases. Consequently, the new version number for an update cannot be a minor -increment, but must be a micro increment to ensure that was a distinct -version between the two releases. For example, if Release N had version -number SUNW_1.3 and Release N+1 had SUNW_1.4, then interfaces added to -an update of Release N must have micro numbers such as SUNW_1.3.1, -SUNW_1.3.2, etc. (note that the micro number is not directly tied to the -update number: SUNW_1.3.1 may have appeared in Update 2). The micro versions form -an inheritance chain that is inserted between two successive minor versions. -For example, the mapfile-vers file for minor release "N+1" to reflect its -inclusion of micro releases will look like the following: +increment, but must be a micro increment to ensure that was a distinct version +between the two releases. For example, if Release N had version number +SUNW_1.3 and Release N+1 had SUNW_1.4, then interfaces added to an update of +Release N must have micro numbers such as SUNW_1.3.1, SUNW_1.3.2, etc. (note +that the micro number is not directly tied to the update number: SUNW_1.3.1 +may have appeared in Update 2). The micro versions form an inheritance chain +that is inserted between two successive minor versions. For example, the +mapfile-vers file for minor release "N+1" to reflect its inclusion of micro +releases will look like the following: $mapfile_version 2 @@ -441,12 +448,12 @@ that uses the interface. For example: library SYSVABI and SISCD are reserved version names for interfaces listed in the -System V Interface Definition and the Sparc Compliance Definition. Avoid using -these version names when copying the implementation of standard interfaces to -another library. Instead, use ILLUMOS_0.1 for a new library, and ILLUMOS_m.n for -an existing library (where m.n is the next version; i.e., if the -last version was ILLUMOS_0.8, then you should version the interfaces with -ILLUMOS_0.9). +System V Interface Definition and the Sparc Compliance Definition. Avoid +using these version names when copying the implementation of standard +interfaces to another library. Instead, use ILLUMOS_0.1 for a new library, +and ILLUMOS_m.n for an existing library (where m.n is the next version; i.e., +if the last version was ILLUMOS_0.8, then you should version the interfaces +with ILLUMOS_0.9). ------------------------------------------------------------------------------- diff --git a/usr/src/lib/brand/shared/librtld_db/common/mapfile-vers b/usr/src/lib/brand/shared/librtld_db/common/mapfile-vers index d7d8b53f06..9d02ee1830 100644 --- a/usr/src/lib/brand/shared/librtld_db/common/mapfile-vers +++ b/usr/src/lib/brand/shared/librtld_db/common/mapfile-vers @@ -39,26 +39,35 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { - global: - rtld_db_brand_ops32; + global: + rtld_db_brand_ops32 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[5]; + }; + }; $if _ELF64 - rtld_db_brand_ops64; + rtld_db_brand_ops64 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[5]; + }; + }; $endif - local: - *; + local: + *; }; #Externally defined symbols SYMBOL_SCOPE { global: - ps_pauxv { FLAGS = NODIRECT PARENT }; - ps_pdmodel { FLAGS = NODIRECT PARENT }; - ps_pglobal_lookup { FLAGS = NODIRECT PARENT }; - ps_pglobal_sym { FLAGS = NODIRECT PARENT }; - ps_plog { FLAGS = NODIRECT PARENT }; - ps_pread { FLAGS = NODIRECT PARENT }; - ps_pwrite { FLAGS = NODIRECT PARENT }; + ps_pauxv { FLAGS = NODIRECT PARENT; }; + ps_pdmodel { FLAGS = NODIRECT PARENT; }; + ps_pglobal_lookup { FLAGS = NODIRECT PARENT; }; + ps_pglobal_sym { FLAGS = NODIRECT PARENT; }; + ps_plog { FLAGS = NODIRECT PARENT; }; + ps_pread { FLAGS = NODIRECT PARENT; }; + ps_pwrite { FLAGS = NODIRECT PARENT; }; }; - diff --git a/usr/src/lib/cfgadm_plugins/ccid/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/ccid/common/mapfile-vers index 7c7f7d2c0e..ded39a995a 100644 --- a/usr/src/lib/cfgadm_plugins/ccid/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/ccid/common/mapfile-vers @@ -36,7 +36,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/fp/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/fp/common/mapfile-vers index e0dd2bf462..b048ce0e22 100644 --- a/usr/src/lib/cfgadm_plugins/fp/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/fp/common/mapfile-vers @@ -47,7 +47,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; diff --git a/usr/src/lib/cfgadm_plugins/ib/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/ib/common/mapfile-vers index cb08f9f389..c82cd6d447 100644 --- a/usr/src/lib/cfgadm_plugins/ib/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/ib/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/pci/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/pci/common/mapfile-vers index cb08f9f389..c82cd6d447 100644 --- a/usr/src/lib/cfgadm_plugins/pci/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/pci/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/sata/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/sata/common/mapfile-vers index cb08f9f389..c82cd6d447 100644 --- a/usr/src/lib/cfgadm_plugins/sata/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/sata/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/sbd/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/sbd/common/mapfile-vers index 0546d02b01..f64d34eee4 100644 --- a/usr/src/lib/cfgadm_plugins/sbd/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/sbd/common/mapfile-vers @@ -38,13 +38,13 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { - global: - cfga_version; - cfga_change_state; - cfga_private_func; - cfga_test; - cfga_list_ext; - cfga_help; - local: - *; + global: + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + cfga_change_state; + cfga_private_func; + cfga_test; + cfga_list_ext; + cfga_help; + local: + *; }; diff --git a/usr/src/lib/cfgadm_plugins/scsi/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/scsi/common/mapfile-vers index cb08f9f389..c82cd6d447 100644 --- a/usr/src/lib/cfgadm_plugins/scsi/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/scsi/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/shp/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/shp/common/mapfile-vers index 70211d1678..4c422b9b5c 100644 --- a/usr/src/lib/cfgadm_plugins/shp/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/shp/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/cfgadm_plugins/usb/common/mapfile-vers b/usr/src/lib/cfgadm_plugins/usb/common/mapfile-vers index cb08f9f389..c82cd6d447 100644 --- a/usr/src/lib/cfgadm_plugins/usb/common/mapfile-vers +++ b/usr/src/lib/cfgadm_plugins/usb/common/mapfile-vers @@ -45,7 +45,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { cfga_list_ext; cfga_private_func; cfga_test; - cfga_version; + cfga_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/efcode/interpreter/mapfile64 b/usr/src/lib/efcode/interpreter/mapfile64 index 736f4a333e..d783341f56 100644 --- a/usr/src/lib/efcode/interpreter/mapfile64 +++ b/usr/src/lib/efcode/interpreter/mapfile64 @@ -43,5 +43,4 @@ # $mapfile_version 2 - LOAD_SEGMENT text { VADDR = 0x80000000 }; diff --git a/usr/src/lib/getloginx/common/mapfile-vers b/usr/src/lib/getloginx/common/mapfile-vers index c0850bcf2f..875d47fc1d 100644 --- a/usr/src/lib/getloginx/common/mapfile-vers +++ b/usr/src/lib/getloginx/common/mapfile-vers @@ -44,4 +44,3 @@ SYMBOL_VERSION ILLUMOS_0.1 { # first release of getloginx.so.1 local: *; }; - diff --git a/usr/src/lib/gss_mechs/mech_dh/backend/mapfile-vers b/usr/src/lib/gss_mechs/mech_dh/backend/mapfile-vers index b5ad1c7a6a..d09110f295 100644 --- a/usr/src/lib/gss_mechs/mech_dh/backend/mapfile-vers +++ b/usr/src/lib/gss_mechs/mech_dh/backend/mapfile-vers @@ -21,7 +21,7 @@ # CDDL HEADER END # # Generic interface definition for: -# usr/src/lib/gss_mechs/mech_dh/backend/mech_dh.so.1 +# usr/src/lib/gss_mechs/mech_dh/backend/mech_dh.so.1 # # @@ -41,10 +41,15 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { - global: - __dh_gss_initialize; - __DH_GSS_C_NT_NETNAME; - __context_debug_entry; - local: - *; + global: + __dh_gss_initialize; + __DH_GSS_C_NT_NETNAME { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __context_debug_entry; + local: + *; }; diff --git a/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers b/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers index bbe2bf414d..81225f7a8a 100644 --- a/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers +++ b/usr/src/lib/gss_mechs/mech_krb5/mapfile-vers @@ -222,14 +222,54 @@ SYMBOL_VERSION SUNWprivate_1.1 { gss_krb5_ccache_name; gss_krb5_copy_ccache; gss_mech_initialize; - gss_mech_krb5; - gss_mech_krb5_old; - gss_mech_krb5_wrong; - gss_mech_set_krb5; - gss_mech_set_krb5_both; - gss_mech_set_krb5_old; - gss_nt_krb5_name; - gss_nt_krb5_principal; + gss_mech_krb5 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_mech_krb5_old { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_mech_krb5_wrong { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_mech_set_krb5 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_mech_set_krb5_both { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_mech_set_krb5_old { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_nt_krb5_name { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_nt_krb5_principal { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; gssspi_acquire_cred_with_password; imp_error_table; k5_ef_hash; @@ -252,7 +292,13 @@ SYMBOL_VERSION SUNWprivate_1.1 { kg_make_seq_num; kg_seal; kg_unseal; - kg_vdb; +$if _ELF64 + kg_vdb { ASSERT = { TYPE = OBJECT; SIZE = 48; }; }; +$elif _ELF32 + kg_vdb { ASSERT = { TYPE = OBJECT; SIZE = 36; }; }; +$else +$error unknown ELFCLASS +$endif kpws_error_table; krb5_425_conv_principal; krb5_524_conv_principal; @@ -323,9 +369,19 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_cc_default; krb5_cc_default_name; krb5_cc_destroy; - krb5_cc_dfl_ops; + krb5_cc_dfl_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; krb5_cc_end_seq_get; - krb5_cc_file_ops; + krb5_cc_file_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[23]; + }; + }; krb5_cc_gen_new; krb5_cc_get_name; krb5_cc_get_principal; @@ -345,8 +401,29 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_check_transited_list; krb5_checksum_size; krb5_cksumtype_to_string; - krb5_cksumtypes_length; - krb5_cksumtypes_list; + krb5_cksumtypes_length { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; +$if _ELF64 + krb5_cksumtypes_list { + ASSERT = { + TYPE = OBJECT; + SIZE = 672; + }; + }; +$elif _ELF32 + krb5_cksumtypes_list { + ASSERT = { + TYPE = OBJECT; + SIZE = 384; + }; + }; +$else +$error unknown ELFCLASS +$endif krb5_clear_error_message; krb5_copy_addr; krb5_copy_addresses; @@ -366,9 +443,24 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_decode_kdc_rep; krb5_decode_ticket; krb5_decrypt_tkt_part; - krb5_default_pwd_prompt1; - krb5_default_pwd_prompt2; - krb5_defkeyname; + krb5_default_pwd_prompt1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + krb5_default_pwd_prompt2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + krb5_defkeyname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; krb5_do_preauth; krb5_encode_authdata_container; krb5_encode_kdc_rep; @@ -376,12 +468,27 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_encrypt_tkt_part; krb5_enctype_to_string; krb5_enctype_to_istring; - krb5_enctypes_length; - krb5_enctypes_list; + krb5_enctypes_length { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + krb5_enctypes_list { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[200]; + }; + }; krb5_error_table; krb5_externalize_data; krb5_externalize_opaque; - krb5_fcc_ops; + krb5_fcc_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[23]; + }; + }; krb5_find_serializer; krb5_free_address; krb5_free_addresses; @@ -493,7 +600,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_getenv; krb5_gss_display_status2; krb5_gss_import_name; - krb5_gss_oid_array; + krb5_gss_oid_array { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[14]; + }; + }; krb5_gss_userok; krb5_gss_register_acceptor_identity; krb5_hmac; @@ -512,7 +624,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_kt_close; krb5_kt_default; krb5_kt_default_name; - krb5_kt_dfl_ops; + krb5_kt_dfl_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; krb5_kt_end_seq_get; krb5_kt_find_realm; krb5_kt_free_entry; @@ -528,8 +645,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_kt_resolve; krb5_kt_start_seq_get; krb5_kt_ad_validate; - krb5_ktf_ops; - krb5_ktf_writable_ops; + krb5_ktf_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; + krb5_ktf_writable_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; krb5_ktfile_add; krb5_ktfile_close; krb5_ktfile_end_get; @@ -538,7 +665,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_ktfile_get_next; krb5_ktfile_remove; krb5_ktfile_resolve; - krb5_ktfile_ser_entry; + krb5_ktfile_ser_entry { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[4]; + }; + }; krb5_ktfile_start_seq_get; krb5_ktfile_wresolve; krb5_ktfileint_close; @@ -556,8 +688,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_lock_file; krb5_make_full_ipaddr; krb5_make_fulladdr; - krb5_max_dgram_size; - krb5_max_skdc_timeout; + krb5_max_dgram_size { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + krb5_max_skdc_timeout { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; krb5_mk_1cred; krb5_mk_error; krb5_mk_ncred; @@ -577,7 +719,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_os_hostaddr; krb5_os_init_context; krb5_os_localaddr; - krb5_overridekeyname; + krb5_overridekeyname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; krb5_pac_add_buffer; krb5_pac_free; krb5_pac_get_buffer; @@ -606,7 +753,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_rc_file_get_name; krb5_rc_file_get_span; krb5_rc_file_init; - krb5_rc_file_ops; + krb5_rc_file_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; krb5_rc_file_recover; krb5_rc_file_resolve; krb5_rc_file_store; @@ -628,7 +780,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_rc_mem_get_name; krb5_rc_mem_get_span; krb5_rc_mem_init; - krb5_rc_mem_ops; + krb5_rc_mem_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; krb5_rc_mem_recover; krb5_rc_mem_resolve; krb5_rc_mem_store; @@ -690,8 +847,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_set_time_offsets; krb5_setenv; krb5_size_opaque; - krb5_skdc_timeout_1; - krb5_skdc_timeout_shift; + krb5_skdc_timeout_1 { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + krb5_skdc_timeout_shift { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; krb5_sname_to_principal; krb5_string_to_cksumtype; krb5_string_to_deltat; @@ -733,7 +900,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5int_get_plugin_dir_data; krb5int_getspecific; krb5int_gmt_mktime; - krb5int_hash_sha1; + krb5int_hash_sha1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[3]; + }; + }; krb5int_init_context_kdc; krb5int_init_fac; krb5int_mutex_alloc; @@ -742,7 +914,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5int_pbkdf2_hmac_sha1; krb5int_pthread_loaded; krb5int_key_register; - krb5int_sendtokdc_debug_handler; + krb5int_sendtokdc_debug_handler { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; krb5int_setspecific; krb5int_vset_error; kwarn_add_warning; diff --git a/usr/src/lib/hbaapi/common/mapfile-vers b/usr/src/lib/hbaapi/common/mapfile-vers index 7252d66360..fbcfbe27a7 100644 --- a/usr/src/lib/hbaapi/common/mapfile-vers +++ b/usr/src/lib/hbaapi/common/mapfile-vers @@ -119,4 +119,3 @@ SYMBOL_VERSION SUNW_2.0 { local: *; }; - diff --git a/usr/src/lib/krb5/kadm5/srv/mapfile-vers b/usr/src/lib/krb5/kadm5/srv/mapfile-vers index 20f09393f0..0fc042bc22 100644 --- a/usr/src/lib/krb5/kadm5/srv/mapfile-vers +++ b/usr/src/lib/krb5/kadm5/srv/mapfile-vers @@ -55,10 +55,30 @@ SYMBOL_VERSION SUNWprivate_1.1 { destroy_dict; find_word; handle_chpw; - hist_db; - hist_key; - hist_kvno; - hist_princ; + hist_db { + ASSERT = { + TYPE = OBJECT; + SIZE = 68; + }; + }; + hist_key { + ASSERT = { + TYPE = OBJECT; + SIZE = 28; + }; + }; + hist_kvno { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + hist_princ { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; init_dict; kadm5_check_min_life; kadm5_chpass_principal; @@ -142,8 +162,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_read_realm_params; krb5_string_to_flags; krb5_string_to_keysalts; - master_db; - master_princ; + master_db { + ASSERT = { + TYPE = OBJECT; + SIZE = 68; + }; + }; + master_princ { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; osa_free_princ_ent; passwd_check; trunc_name; diff --git a/usr/src/lib/krb5/kdb/mapfile-vers b/usr/src/lib/krb5/kdb/mapfile-vers index da493e0dfa..fdf1ffa70a 100644 --- a/usr/src/lib/krb5/kdb/mapfile-vers +++ b/usr/src/lib/krb5/kdb/mapfile-vers @@ -43,12 +43,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { - global: + global: SUNW_1.1; }; SYMBOL_VERSION SUNWprivate_1.1 { - global: + global: krb5_db_alloc; krb5_db_create; krb5_db_create_policy; @@ -95,13 +95,28 @@ SYMBOL_VERSION SUNWprivate_1.1 { krb5_dbekd_decrypt_key_data; krb5_dbekd_encrypt_key_data; krb5_def_store_mkey; - krb5_kt_kdb_ops; + krb5_kt_kdb_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = 48; + }; + }; krb5_ktkdb_close; krb5_ktkdb_get_entry; krb5_ktkdb_resolve; krb5_ktkdb_set_context; - krb5_mkey_pwd_prompt1; - krb5_mkey_pwd_prompt2; + krb5_mkey_pwd_prompt1 { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + krb5_mkey_pwd_prompt2 { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; ulog_add_update; ulog_conv_2logentry; ulog_delete_update; @@ -111,6 +126,6 @@ SYMBOL_VERSION SUNWprivate_1.1 { ulog_map; ulog_replay; ulog_set_role; - local: + local: *; }; diff --git a/usr/src/lib/krb5/plugins/kdb/db2/mapfile-vers b/usr/src/lib/krb5/plugins/kdb/db2/mapfile-vers index d2b91c0614..d5be91cf83 100644 --- a/usr/src/lib/krb5/plugins/kdb/db2/mapfile-vers +++ b/usr/src/lib/krb5/plugins/kdb/db2/mapfile-vers @@ -36,15 +36,16 @@ # MAPFILE HEADER END # -# Due to mistakes made early in the history of this library, there are -# no SUNW_1.1 symbols, but the version is now kept as a placeholder. -# Don't add any symbols to this version. - $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - kdb_function_table; + kdb_function_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[39]; + }; + }; local: *; }; diff --git a/usr/src/lib/krb5/plugins/kdb/ldap/mapfile-vers b/usr/src/lib/krb5/plugins/kdb/ldap/mapfile-vers index 35851d60b1..d5be91cf83 100644 --- a/usr/src/lib/krb5/plugins/kdb/ldap/mapfile-vers +++ b/usr/src/lib/krb5/plugins/kdb/ldap/mapfile-vers @@ -40,7 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - kdb_function_table; + kdb_function_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[39]; + }; + }; local: *; }; diff --git a/usr/src/lib/krb5/plugins/preauth/pkinit/mapfile-vers b/usr/src/lib/krb5/plugins/preauth/pkinit/mapfile-vers index 352586b973..91dc7f4027 100644 --- a/usr/src/lib/krb5/plugins/preauth/pkinit/mapfile-vers +++ b/usr/src/lib/krb5/plugins/preauth/pkinit/mapfile-vers @@ -45,8 +45,18 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - preauthentication_client_1; - preauthentication_server_1; + preauthentication_client_1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[11]; + }; + }; + preauthentication_server_1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[9]; + }; + }; local: - *; + *; }; diff --git a/usr/src/lib/krb5/ss/mapfile-vers b/usr/src/lib/krb5/ss/mapfile-vers index a92c5d4731..149d376991 100644 --- a/usr/src/lib/krb5/ss/mapfile-vers +++ b/usr/src/lib/krb5/ss/mapfile-vers @@ -62,7 +62,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { ss_quit; ss_self_identify; ss_set_prompt; - ss_std_requests; + ss_std_requests { + ASSERT = { + TYPE = OBJECT; + SIZE = 8; + }; + }; ss_subsystem_name; ss_subsystem_version; ss_unimplemented; diff --git a/usr/src/lib/libadm/common/mapfile-vers b/usr/src/lib/libadm/common/mapfile-vers index 914a9f530d..eed3e03c79 100644 --- a/usr/src/lib/libadm/common/mapfile-vers +++ b/usr/src/lib/libadm/common/mapfile-vers @@ -55,7 +55,7 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNW_0.7 { global: - pkgdir; + pkgdir { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; read_vtoc; write_vtoc; }; @@ -74,7 +74,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { ckgid_err; ckgid_hlp; ckgid_val; - ckindent; + ckindent { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; ckint; ckint_err; ckint_hlp; @@ -88,7 +93,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { ckpath_hlp; ckpath_stx; ckpath_val; - ckquit; + ckquit { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; ckrange; ckrange_err; ckrange_hlp; @@ -106,7 +116,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { ckuid_err; ckuid_hlp; ckuid_val; - ckwidth; + ckwidth { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; ckyorn; ckyorn_err; ckyorn_hlp; @@ -136,7 +151,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { _moddevtabrec; _opendevtab; _opendgrptab; - pkgfile; + pkgfile { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; pkginfo; pkginfofind; pkgnmchk; @@ -175,26 +195,18 @@ $if _sparc || (_x86 && _ELF32) SYMBOL_VERSION SUNW_0.7 { global: - circf; - sed; - nbra { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x4 }; -$if _ELF32 - loc1 { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x4 }; - loc2 { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x4 }; - locs { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x4 }; -$elif _ELF64 - loc1 { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x8 }; - loc2 { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x8 }; - locs { TYPE = DATA; FILTER = libgen.so.1; SIZE = 0x8 }; -$else -$error unknown ELFCLASS -$endif + circf { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + sed { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + nbra { TYPE = DATA; FILTER = libgen.so.1; SIZE = addrsize; }; + loc1 { TYPE = DATA; FILTER = libgen.so.1; SIZE = addrsize; }; + loc2 { TYPE = DATA; FILTER = libgen.so.1; SIZE = addrsize; }; + locs { TYPE = DATA; FILTER = libgen.so.1; SIZE = addrsize; }; }; SYMBOL_VERSION SUNWprivate_1.1 { global: - advance { TYPE = FUNCTION; FILTER = libgen.so.1 }; - compile { TYPE = FUNCTION; FILTER = libgen.so.1 }; - step { TYPE = FUNCTION; FILTER = libgen.so.1 }; + advance { TYPE = FUNCTION; FILTER = libgen.so.1; }; + compile { TYPE = FUNCTION; FILTER = libgen.so.1; }; + step { TYPE = FUNCTION; FILTER = libgen.so.1; }; }; $endif diff --git a/usr/src/lib/libc/port/mapfile-vers b/usr/src/lib/libc/port/mapfile-vers index 751df1f13c..b5f36072ae 100644 --- a/usr/src/lib/libc/port/mapfile-vers +++ b/usr/src/lib/libc/port/mapfile-vers @@ -84,9 +84,14 @@ SYMBOL_VERSION ILLUMOS_0.38 { } ILLUMOS_0.37; SYMBOL_VERSION ILLUMOS_0.37 { - global: - __stack_chk_guard; - protected: + global: + __stack_chk_guard { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + protected: __stack_chk_fail; } ILLUMOS_0.36; @@ -437,43 +442,62 @@ SYMBOL_VERSION ILLUMOS_0.5 { # common C++ ABI exit handlers SYMBOL_VERSION ILLUMOS_0.4 { # Illumos additions protected: - pipe2; - dup3; - mkostemp; - mkostemps; + pipe2; + dup3; + mkostemp; + mkostemps; $if lf64 - mkostemp64; - mkostemps64; + mkostemp64; + mkostemps64; $endif } ILLUMOS_0.3; SYMBOL_VERSION ILLUMOS_0.3 { # Illumos additions protected: - assfail3; + assfail3; } ILLUMOS_0.2; SYMBOL_VERSION ILLUMOS_0.2 { # Illumos additions protected: - posix_spawn_pipe_np; + posix_spawn_pipe_np; } ILLUMOS_0.1; SYMBOL_VERSION ILLUMOS_0.1 { # Illumos additions protected: - timegm; + timegm; } SUNW_1.23; SYMBOL_VERSION SUNW_1.23 { # SunOS 5.11 (Solaris 11) global: - _nl_domain_bindings; - _nl_msg_cat_cntr; + _nl_domain_bindings { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _nl_msg_cat_cntr { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; $if _ELF32 - dl_iterate_phdr { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; + dl_iterate_phdr { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; $elif sparcv9 - dl_iterate_phdr { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; + dl_iterate_phdr { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; $elif amd64 - dl_iterate_phdr { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; + dl_iterate_phdr { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; $else $error unknown platform $endif @@ -670,7 +694,7 @@ $if lf64 $endif } SUNW_1.22.7; -SYMBOL_VERSION SUNW_1.22.7 { # s10u10 - SunOS 5.10 (Solaris 10) patch additions +SYMBOL_VERSION SUNW_1.22.7 { # s10u10 - SunOS 5.10 (Solaris 10) patch additions protected: SUNW_1.22.7; } SUNW_1.22.6; @@ -710,14 +734,14 @@ SYMBOL_VERSION SUNW_1.22.1 { # SunOS 5.10 (Solaris 10) patch additions protected: atomic_add_8; atomic_add_8_nv; - atomic_add_char { FLAGS = NODYNSORT }; - atomic_add_char_nv { FLAGS = NODYNSORT }; - atomic_add_int { FLAGS = NODYNSORT }; - atomic_add_int_nv { FLAGS = NODYNSORT }; - atomic_add_ptr { FLAGS = NODYNSORT }; - atomic_add_ptr_nv { FLAGS = NODYNSORT }; - atomic_add_short { FLAGS = NODYNSORT }; - atomic_add_short_nv { FLAGS = NODYNSORT }; + atomic_add_char { FLAGS = NODYNSORT; }; + atomic_add_char_nv { FLAGS = NODYNSORT; }; + atomic_add_int { FLAGS = NODYNSORT; }; + atomic_add_int_nv { FLAGS = NODYNSORT; }; + atomic_add_ptr { FLAGS = NODYNSORT; }; + atomic_add_ptr_nv { FLAGS = NODYNSORT; }; + atomic_add_short { FLAGS = NODYNSORT; }; + atomic_add_short_nv { FLAGS = NODYNSORT; }; atomic_and_16; atomic_and_16_nv; atomic_and_32_nv; @@ -725,23 +749,23 @@ SYMBOL_VERSION SUNW_1.22.1 { # SunOS 5.10 (Solaris 10) patch additions atomic_and_64_nv; atomic_and_8; atomic_and_8_nv; - atomic_and_uchar { FLAGS = NODYNSORT }; - atomic_and_uchar_nv { FLAGS = NODYNSORT }; - atomic_and_uint_nv { FLAGS = NODYNSORT }; - atomic_and_ulong { FLAGS = NODYNSORT }; - atomic_and_ulong_nv { FLAGS = NODYNSORT }; - atomic_and_ushort { FLAGS = NODYNSORT }; - atomic_and_ushort_nv { FLAGS = NODYNSORT }; + atomic_and_uchar { FLAGS = NODYNSORT; }; + atomic_and_uchar_nv { FLAGS = NODYNSORT; }; + atomic_and_uint_nv { FLAGS = NODYNSORT; }; + atomic_and_ulong { FLAGS = NODYNSORT; }; + atomic_and_ulong_nv { FLAGS = NODYNSORT; }; + atomic_and_ushort { FLAGS = NODYNSORT; }; + atomic_and_ushort_nv { FLAGS = NODYNSORT; }; atomic_cas_16; atomic_cas_32; atomic_cas_64; atomic_cas_8; - atomic_cas_ptr { FLAGS = NODYNSORT }; - atomic_cas_uchar { FLAGS = NODYNSORT }; - atomic_cas_uint { FLAGS = NODYNSORT }; - atomic_cas_ulong { FLAGS = NODYNSORT }; - atomic_cas_ushort { FLAGS = NODYNSORT }; - atomic_clear_long_excl { FLAGS = NODYNSORT }; + atomic_cas_ptr { FLAGS = NODYNSORT; }; + atomic_cas_uchar { FLAGS = NODYNSORT; }; + atomic_cas_uint { FLAGS = NODYNSORT; }; + atomic_cas_ulong { FLAGS = NODYNSORT; }; + atomic_cas_ushort { FLAGS = NODYNSORT; }; + atomic_clear_long_excl { FLAGS = NODYNSORT; }; atomic_dec_16; atomic_dec_16_nv; atomic_dec_32; @@ -750,14 +774,14 @@ SYMBOL_VERSION SUNW_1.22.1 { # SunOS 5.10 (Solaris 10) patch additions atomic_dec_64_nv; atomic_dec_8; atomic_dec_8_nv; - atomic_dec_uchar { FLAGS = NODYNSORT }; - atomic_dec_uchar_nv { FLAGS = NODYNSORT }; - atomic_dec_uint { FLAGS = NODYNSORT }; - atomic_dec_uint_nv { FLAGS = NODYNSORT }; - atomic_dec_ulong { FLAGS = NODYNSORT }; - atomic_dec_ulong_nv { FLAGS = NODYNSORT }; - atomic_dec_ushort { FLAGS = NODYNSORT }; - atomic_dec_ushort_nv { FLAGS = NODYNSORT }; + atomic_dec_uchar { FLAGS = NODYNSORT; }; + atomic_dec_uchar_nv { FLAGS = NODYNSORT; }; + atomic_dec_uint { FLAGS = NODYNSORT; }; + atomic_dec_uint_nv { FLAGS = NODYNSORT; }; + atomic_dec_ulong { FLAGS = NODYNSORT; }; + atomic_dec_ulong_nv { FLAGS = NODYNSORT; }; + atomic_dec_ushort { FLAGS = NODYNSORT; }; + atomic_dec_ushort_nv { FLAGS = NODYNSORT; }; atomic_inc_16; atomic_inc_16_nv; atomic_inc_32; @@ -766,14 +790,14 @@ SYMBOL_VERSION SUNW_1.22.1 { # SunOS 5.10 (Solaris 10) patch additions atomic_inc_64_nv; atomic_inc_8; atomic_inc_8_nv; - atomic_inc_uchar { FLAGS = NODYNSORT }; - atomic_inc_uchar_nv { FLAGS = NODYNSORT }; - atomic_inc_uint { FLAGS = NODYNSORT }; - atomic_inc_uint_nv { FLAGS = NODYNSORT }; - atomic_inc_ulong { FLAGS = NODYNSORT }; - atomic_inc_ulong_nv { FLAGS = NODYNSORT }; - atomic_inc_ushort { FLAGS = NODYNSORT }; - atomic_inc_ushort_nv { FLAGS = NODYNSORT }; + atomic_inc_uchar { FLAGS = NODYNSORT; }; + atomic_inc_uchar_nv { FLAGS = NODYNSORT; }; + atomic_inc_uint { FLAGS = NODYNSORT; }; + atomic_inc_uint_nv { FLAGS = NODYNSORT; }; + atomic_inc_ulong { FLAGS = NODYNSORT; }; + atomic_inc_ulong_nv { FLAGS = NODYNSORT; }; + atomic_inc_ushort { FLAGS = NODYNSORT; }; + atomic_inc_ushort_nv { FLAGS = NODYNSORT; }; atomic_or_16; atomic_or_16_nv; atomic_or_32_nv; @@ -781,23 +805,23 @@ SYMBOL_VERSION SUNW_1.22.1 { # SunOS 5.10 (Solaris 10) patch additions atomic_or_64_nv; atomic_or_8; atomic_or_8_nv; - atomic_or_uchar { FLAGS = NODYNSORT }; - atomic_or_uchar_nv { FLAGS = NODYNSORT }; - atomic_or_uint_nv { FLAGS = NODYNSORT }; - atomic_or_ulong { FLAGS = NODYNSORT }; - atomic_or_ulong_nv { FLAGS = NODYNSORT }; - atomic_or_ushort { FLAGS = NODYNSORT }; - atomic_or_ushort_nv { FLAGS = NODYNSORT }; - atomic_set_long_excl { FLAGS = NODYNSORT }; + atomic_or_uchar { FLAGS = NODYNSORT; }; + atomic_or_uchar_nv { FLAGS = NODYNSORT; }; + atomic_or_uint_nv { FLAGS = NODYNSORT; }; + atomic_or_ulong { FLAGS = NODYNSORT; }; + atomic_or_ulong_nv { FLAGS = NODYNSORT; }; + atomic_or_ushort { FLAGS = NODYNSORT; }; + atomic_or_ushort_nv { FLAGS = NODYNSORT; }; + atomic_set_long_excl { FLAGS = NODYNSORT; }; atomic_swap_16; atomic_swap_32; atomic_swap_64; atomic_swap_8; - atomic_swap_ptr { FLAGS = NODYNSORT }; - atomic_swap_uchar { FLAGS = NODYNSORT }; - atomic_swap_uint { FLAGS = NODYNSORT }; - atomic_swap_ulong { FLAGS = NODYNSORT }; - atomic_swap_ushort { FLAGS = NODYNSORT }; + atomic_swap_ptr { FLAGS = NODYNSORT; }; + atomic_swap_uchar { FLAGS = NODYNSORT; }; + atomic_swap_uint { FLAGS = NODYNSORT; }; + atomic_swap_ulong { FLAGS = NODYNSORT; }; + atomic_swap_ushort { FLAGS = NODYNSORT; }; membar_consumer; membar_enter; membar_exit; @@ -812,69 +836,72 @@ $if i386 # we add the NODYNSORT attribute to them. On this platform, they are # aliases for the non-_nv versions. If that is changed, these lines # should be removed. - atomic_and_64_nv { FLAGS = NODYNSORT }; - atomic_dec_64_nv { FLAGS = NODYNSORT }; - atomic_inc_64_nv { FLAGS = NODYNSORT }; - atomic_or_64_nv { FLAGS = NODYNSORT }; + atomic_and_64_nv { FLAGS = NODYNSORT; }; + atomic_dec_64_nv { FLAGS = NODYNSORT; }; + atomic_inc_64_nv { FLAGS = NODYNSORT; }; + atomic_or_64_nv { FLAGS = NODYNSORT; }; $endif $if _sparc # Note: atomic_OP_WIDTH_nv symbols are also defined above. Here, # we add the NODYNSORT attribute to them. On this platform, they are # aliases for the non-_nv versions. If that is changed, these lines # should be removed. - atomic_add_8_nv { FLAGS = NODYNSORT }; - atomic_and_8_nv { FLAGS = NODYNSORT }; - atomic_and_16_nv { FLAGS = NODYNSORT }; - atomic_and_32_nv { FLAGS = NODYNSORT }; - atomic_and_64_nv { FLAGS = NODYNSORT }; - atomic_dec_8_nv { FLAGS = NODYNSORT }; - atomic_dec_16_nv { FLAGS = NODYNSORT }; - atomic_dec_32_nv { FLAGS = NODYNSORT }; - atomic_dec_64_nv { FLAGS = NODYNSORT }; - atomic_inc_8_nv { FLAGS = NODYNSORT }; - atomic_inc_16_nv { FLAGS = NODYNSORT }; - atomic_inc_32_nv { FLAGS = NODYNSORT }; - atomic_inc_64_nv { FLAGS = NODYNSORT }; - atomic_or_8_nv { FLAGS = NODYNSORT }; - atomic_or_16_nv { FLAGS = NODYNSORT }; - atomic_or_32_nv { FLAGS = NODYNSORT }; - atomic_or_64_nv { FLAGS = NODYNSORT }; + atomic_add_8_nv { FLAGS = NODYNSORT; }; + atomic_and_8_nv { FLAGS = NODYNSORT; }; + atomic_and_16_nv { FLAGS = NODYNSORT; }; + atomic_and_32_nv { FLAGS = NODYNSORT; }; + atomic_and_64_nv { FLAGS = NODYNSORT; }; + atomic_dec_8_nv { FLAGS = NODYNSORT; }; + atomic_dec_16_nv { FLAGS = NODYNSORT; }; + atomic_dec_32_nv { FLAGS = NODYNSORT; }; + atomic_dec_64_nv { FLAGS = NODYNSORT; }; + atomic_inc_8_nv { FLAGS = NODYNSORT; }; + atomic_inc_16_nv { FLAGS = NODYNSORT; }; + atomic_inc_32_nv { FLAGS = NODYNSORT; }; + atomic_inc_64_nv { FLAGS = NODYNSORT; }; + atomic_or_8_nv { FLAGS = NODYNSORT; }; + atomic_or_16_nv { FLAGS = NODYNSORT; }; + atomic_or_32_nv { FLAGS = NODYNSORT; }; + atomic_or_64_nv { FLAGS = NODYNSORT; }; $endif } SUNW_1.22; SYMBOL_VERSION SUNW_1.22 { # SunOS 5.10 (Solaris 10) global: $if _ELF32 - dladdr { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlclose { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dldump { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlerror { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - dlsym { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; + dladdr { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlclose { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dldump { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlerror { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; + dlsym { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1; }; $elif sparcv9 - dladdr { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlclose { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dldump { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlerror { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - dlsym { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; + dladdr { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlclose { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dldump { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlerror { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; + dlsym { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1; }; $elif amd64 - dladdr { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlamd64getunwind { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlclose { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dldump { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlerror { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - dlsym { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; + dladdr { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlamd64getunwind { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + dlclose { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dldump { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlerror { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; + dlsym { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1; }; $else $error unknown platform $endif @@ -888,12 +915,12 @@ $endif atomic_add_32_nv; atomic_add_64; atomic_add_64_nv; - atomic_add_long { FLAGS = NODYNSORT }; - atomic_add_long_nv { FLAGS = NODYNSORT }; + atomic_add_long { FLAGS = NODYNSORT; }; + atomic_add_long_nv { FLAGS = NODYNSORT; }; atomic_and_32; - atomic_and_uint { FLAGS = NODYNSORT }; + atomic_and_uint { FLAGS = NODYNSORT; }; atomic_or_32; - atomic_or_uint { FLAGS = NODYNSORT }; + atomic_or_uint { FLAGS = NODYNSORT; }; _Exit; getisax; _getisax; @@ -1016,9 +1043,9 @@ $endif pthread_barrier_wait; pthread_condattr_getclock; pthread_condattr_setclock; - pthread_mutexattr_getrobust_np { FLAGS = NODYNSORT }; - pthread_mutexattr_setrobust_np { FLAGS = NODYNSORT }; - pthread_mutex_consistent_np { FLAGS = NODYNSORT }; + pthread_mutexattr_getrobust_np { FLAGS = NODYNSORT; }; + pthread_mutexattr_setrobust_np { FLAGS = NODYNSORT; }; + pthread_mutex_consistent_np { FLAGS = NODYNSORT; }; pthread_mutex_reltimedlock_np; pthread_mutex_timedlock; pthread_rwlock_reltimedrdlock_np; @@ -1104,16 +1131,16 @@ $if _sparc # the NODYNSORT attribute to them. On this platform, they are aliases # for the non-_nv versions. If that is changed, these lines should be # removed. - atomic_add_16_nv { FLAGS = NODYNSORT }; - atomic_add_32_nv { FLAGS = NODYNSORT }; - atomic_add_64_nv { FLAGS = NODYNSORT }; + atomic_add_16_nv { FLAGS = NODYNSORT; }; + atomic_add_32_nv { FLAGS = NODYNSORT; }; + atomic_add_64_nv { FLAGS = NODYNSORT; }; $endif $if i386 # Note: atomic_add_64_nv is also defined above. Here, we add the # NODYNSORT attribute to it. On this platform, it is an aliases for # atomic_add_64. If that is changed, this line should be removed. - atomic_add_64_nv { FLAGS = NODYNSORT }; + atomic_add_64_nv { FLAGS = NODYNSORT; }; $endif $if amd64 @@ -1129,10 +1156,30 @@ $if amd64 _SUNW_Unwind_Resume; _SUNW_Unwind_SetGR; _SUNW_Unwind_SetIP; - _UA_CLEANUP_PHASE; - _UA_FORCE_UNWIND; - _UA_HANDLER_FRAME; - _UA_SEARCH_PHASE; + _UA_CLEANUP_PHASE { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _UA_FORCE_UNWIND { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _UA_HANDLER_FRAME { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _UA_SEARCH_PHASE { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _Unwind_DeleteException; _Unwind_ForcedUnwind; _Unwind_GetCFA; @@ -1202,7 +1249,7 @@ SYMBOL_VERSION SUNW_1.21 { # SunOS 5.9 (Solaris 9) getcpuid; _getcpuid; gethomelgroup; - _gethomelgroup { FLAGS = NODYNSORT }; + _gethomelgroup { FLAGS = NODYNSORT; }; getpagesizes; getrctl; _getrctl; @@ -1463,7 +1510,12 @@ SYMBOL_VERSION SUNW_1.2 { SYMBOL_VERSION SUNW_1.1 { # SunOS 5.6 (Solaris 2.6) global: - __loc1; + __loc1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; protected: basename; bindtextdomain; @@ -1576,8 +1628,8 @@ SYMBOL_VERSION SUNW_1.1 { # SunOS 5.6 (Solaris 2.6) regex; resolvepath; _resolvepath; - rwlock_destroy { FLAGS = NODYNSORT }; - _rwlock_destroy { FLAGS = NODYNSORT }; + rwlock_destroy { FLAGS = NODYNSORT; }; + _rwlock_destroy { FLAGS = NODYNSORT; }; sema_destroy; _sema_destroy; _setjmp; @@ -1694,7 +1746,7 @@ $if lf64 setrlimit64; _setrlimit64; s_fcntl; - _s_fcntl { FLAGS = NODYNSORT }; + _s_fcntl { FLAGS = NODYNSORT; }; s_ioctl; stat64; _stat64; @@ -1780,13 +1832,19 @@ SYMBOL_VERSION SUNW_0.9 { # SunOS 5.5 (Solaris 2.5) SYMBOL_VERSION SUNW_0.8 { # SunOS 5.4 (Solaris 2.4) global: - __xpg4 { FLAGS = NODIRECT }; + __xpg4 { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; protected: addsev; - cond_broadcast { FLAGS = NODYNSORT }; - cond_destroy { FLAGS = NODYNSORT }; + cond_broadcast { FLAGS = NODYNSORT; }; + cond_destroy { FLAGS = NODYNSORT; }; cond_init; - cond_signal { FLAGS = NODYNSORT }; + cond_signal { FLAGS = NODYNSORT; }; cond_timedwait; cond_wait; confstr; @@ -1798,24 +1856,24 @@ SYMBOL_VERSION SUNW_0.8 { # SunOS 5.4 (Solaris 2.4) iconv_close; iconv_open; lfmt; - mutex_destroy { FLAGS = NODYNSORT }; + mutex_destroy { FLAGS = NODYNSORT; }; mutex_init; - mutex_lock { FLAGS = NODYNSORT }; - mutex_trylock { FLAGS = NODYNSORT }; - mutex_unlock { FLAGS = NODYNSORT }; + mutex_lock { FLAGS = NODYNSORT; }; + mutex_trylock { FLAGS = NODYNSORT; }; + mutex_unlock { FLAGS = NODYNSORT; }; pfmt; regcomp; regerror; regexec; regfree; rwlock_init; - rw_rdlock { FLAGS = NODYNSORT }; + rw_rdlock { FLAGS = NODYNSORT; }; rw_read_held; - rw_tryrdlock { FLAGS = NODYNSORT }; - rw_trywrlock { FLAGS = NODYNSORT }; - rw_unlock { FLAGS = NODYNSORT }; + rw_tryrdlock { FLAGS = NODYNSORT; }; + rw_trywrlock { FLAGS = NODYNSORT; }; + rw_unlock { FLAGS = NODYNSORT; }; rw_write_held; - rw_wrlock { FLAGS = NODYNSORT }; + rw_wrlock { FLAGS = NODYNSORT; }; sema_held; sema_init; sema_post; @@ -1834,7 +1892,7 @@ SYMBOL_VERSION SUNW_0.8 { # SunOS 5.4 (Solaris 2.4) thr_join; thr_keycreate; thr_kill; - thr_self { FLAGS = NODYNSORT }; + thr_self { FLAGS = NODYNSORT; }; thr_setconcurrency; thr_setprio; thr_setspecific; @@ -1849,35 +1907,135 @@ SYMBOL_VERSION SUNW_0.8 { # SunOS 5.4 (Solaris 2.4) SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3) global: - altzone; - _ctype; - isnanf { TYPE = FUNCTION; FILTER = libm.so.2 }; - lone; - lten; - lzero; - memalign { FLAGS = NODIRECT }; - modff { TYPE = FUNCTION; FILTER = libm.so.2 }; - nss_default_finders; - _sibuf; - _sobuf; - _sys_buslist; - _sys_cldlist; - _sys_fpelist; - _sys_illlist; - _sys_segvlist; - _sys_siginfolistp; - _sys_siglist; - _sys_siglistn; - _sys_siglistp; - _sys_traplist; - valloc { FLAGS = NODIRECT }; + altzone { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _ctype { + ASSERT = { + BINDING = WEAK; + ALIAS = __ctype; + }; + }; + isnanf { TYPE = FUNCTION; FILTER = libm.so.2; }; + lone { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + lten { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + lzero { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + memalign { FLAGS = NODIRECT; }; + modff { TYPE = FUNCTION; FILTER = libm.so.2; }; + nss_default_finders { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _sibuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 1032; + }; + }; + _sobuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 1032; + }; + }; + _sys_buslist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[3]; + }; + }; + _sys_cldlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[6]; + }; + }; + _sys_fpelist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[9]; + }; + }; + _sys_illlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[8]; + }; + }; + _sys_segvlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + _sys_siginfolistp { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _sys_siglist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + _sys_siglistn { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _sys_siglistp { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _sys_traplist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[6]; + }; + }; + valloc { FLAGS = NODIRECT; }; $if _ELF32 - _bufendtab; - _lastbuf; - sys_errlist; - sys_nerr; - _sys_nsig; + _bufendtab { + ASSERT = { + TYPE = OBJECT; + SIZE = 244; + }; + }; + _lastbuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + sys_errlist { + ASSERT = { + TYPE = OBJECT; + SIZE = 608; + }; + }; + sys_nerr { + ASSERT = { + BINDING = WEAK; + ALIAS = _sys_num_err; + }; + }; + _sys_nsig { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; $endif protected: @@ -1927,7 +2085,7 @@ $endif file_to_decimal; finite; _flsbuf; - fork1 { FLAGS = NODYNSORT }; + fork1 { FLAGS = NODYNSORT; }; fpclass; fpgetmask; fpgetsticky; @@ -2010,8 +2168,8 @@ $endif mlockall; mrand48; munlockall; - _mutex_held { FLAGS = NODYNSORT }; - _mutex_lock { FLAGS = NODYNSORT }; + _mutex_held { FLAGS = NODYNSORT; }; + _mutex_lock { FLAGS = NODYNSORT; }; nrand48; _nss_netdb_aliases; _nss_XbyY_buf_alloc; @@ -2095,16 +2253,15 @@ $endif vhangup; vsyslog; yield; - $if i386 - # Note: _syscall is also defined above. Here, we add the NODYNSORT - # attribute to it. On this platform, it is an alias to syscall. + # Note: _syscall is also defined above. Here, we add the NODYNSORT + # attribute to it. On this platform, _syscall is an alias to syscall # If that is changed, this lines should be removed. - _syscall { FLAGS = NODYNSORT }; + _syscall { FLAGS = NODYNSORT; }; $endif -# The 32-bit sparc ABI requires SISCD_2.3. On other platforms, those symbols -# go directly into SUNW_0.7. + # The 32-bit sparc ABI requires SISCD_2.3. On other platforms, those symbols + # go directly into SUNW_0.7. $if sparc32 } SISCD_2.3; @@ -2112,8 +2269,21 @@ SYMBOL_VERSION SISCD_2.3 { $endif global: - errno { FLAGS = NODIRECT }; - _iob; + errno { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; + +$if _ELF64 + _iob { ASSERT = { TYPE = OBJECT; SIZE = 2560; }; }; +$elif _ELF32 + _iob { ASSERT = { TYPE = OBJECT; SIZE = 960; }; }; +$else +$error unknown ELFCLASS +$endif protected: addseverity; @@ -2184,12 +2354,13 @@ $if sparc32 _Q_ulltoq; sbrk; _sbrk; - __umul64 { FLAGS = NODYNSORT }; # Same address as __mul64 + __umul64 { FLAGS = NODYNSORT; }; # Same address as __mul64 $endif -# On 32-bit platforms, the following symbols go into SYSVABI_1.3, but on -# other platforms they go directly into the current version (which will be -# either SUNW_0.7, or SISCD_2.3, depending on the similar issue described above. + # On 32-bit platforms, the following symbols go into SYSVABI_1.3, but + # on other platforms they go directly into the current version (which + # will be either SUNW_0.7, or SISCD_2.3, depending on the similar + # issue described above. $if _ELF32 } SYSVABI_1.3; @@ -2197,49 +2368,91 @@ SYMBOL_VERSION SYSVABI_1.3 { $endif global: - _altzone; - calloc { FLAGS = NODIRECT }; - __ctype; - daylight; - _daylight; - environ { FLAGS = NODIRECT }; - _environ { FLAGS = NODIRECT }; - free { FLAGS = NODIRECT }; - frexp { TYPE = FUNCTION; FILTER = libm.so.2 }; - getdate_err; - _getdate_err; + _altzone { ASSERT = { BINDING = WEAK; ALIAS = altzone; }; }; + calloc { FLAGS = NODIRECT; }; + __ctype { + ASSERT = { + TYPE = OBJECT; + SIZE = 521; + }; + }; + daylight { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + _daylight { ASSERT = { BINDING = WEAK; ALIAS = daylight; }; }; + environ { + ASSERT = { + BINDING = WEAK; + ALIAS = _environ; + }; + FLAGS = NODIRECT; + }; + _environ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + FLAGS = NODIRECT; + }; + free { FLAGS = NODIRECT; }; + frexp { TYPE = FUNCTION; FILTER = libm.so.2; }; + getdate_err { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + _getdate_err { + ASSERT = { + BINDING = WEAK; + ALIAS = getdate_err; + }; + }; getenv; - __huge_val; - __iob; - isnan { TYPE = FUNCTION; FILTER = libm.so.2 }; - _isnan { TYPE = FUNCTION; FILTER = libm.so.2 }; - isnand { TYPE = FUNCTION; FILTER = libm.so.2 }; - _isnand { TYPE = FUNCTION; FILTER = libm.so.2 }; - ldexp { TYPE = FUNCTION; FILTER = libm.so.2 }; - logb { TYPE = FUNCTION; FILTER = libm.so.2 }; - malloc { FLAGS = NODIRECT }; + __huge_val { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + __iob { ASSERT = { BINDING = WEAK; ALIAS = _iob; }; }; + isnan { TYPE = FUNCTION; FILTER = libm.so.2; }; + _isnan { TYPE = FUNCTION; FILTER = libm.so.2; }; + isnand { TYPE = FUNCTION; FILTER = libm.so.2; }; + _isnand { TYPE = FUNCTION; FILTER = libm.so.2; }; + ldexp { TYPE = FUNCTION; FILTER = libm.so.2; }; + logb { TYPE = FUNCTION; FILTER = libm.so.2; }; + malloc { FLAGS = NODIRECT; }; memcmp; memcpy; memmove; memset; - modf { TYPE = FUNCTION; FILTER = libm.so.2 }; - _modf { TYPE = FUNCTION; FILTER = libm.so.2 }; - nextafter { TYPE = FUNCTION; FILTER = libm.so.2 }; - _nextafter { TYPE = FUNCTION; FILTER = libm.so.2 }; - _numeric; - optarg; - opterr; - optind; - optopt; - realloc { FLAGS = NODIRECT }; - scalb { TYPE = FUNCTION; FILTER = libm.so.2 }; - _scalb { TYPE = FUNCTION; FILTER = libm.so.2 }; - timezone; - _timezone; - tzname; - _tzname; + modf { TYPE = FUNCTION; FILTER = libm.so.2; }; + _modf { TYPE = FUNCTION; FILTER = libm.so.2; }; + nextafter { TYPE = FUNCTION; FILTER = libm.so.2; }; + _nextafter { TYPE = FUNCTION; FILTER = libm.so.2; }; + _numeric { ASSERT = { TYPE = OBJECT; SIZE = 2; }; }; + optarg { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + opterr { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + optind { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + optopt { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + realloc { FLAGS = NODIRECT; }; + scalb { TYPE = FUNCTION; FILTER = libm.so.2; }; + _scalb { TYPE = FUNCTION; FILTER = libm.so.2; }; + timezone { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _timezone { ASSERT = { BINDING = WEAK; ALIAS = timezone; }; }; + tzname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + _tzname { + ASSERT = { + BINDING = WEAK; + ALIAS = tzname; + }; + }; $if i386 - _fp_hw; + _fp_hw { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; $endif protected: @@ -2283,8 +2496,8 @@ $endif _cleanup; clearerr; clock; - _close; close; + _close; closedir; _closedir; creat; @@ -2576,7 +2789,7 @@ $endif _semop; setbuf; setcontext; - _setcontext { FLAGS = NODYNSORT }; + _setcontext { FLAGS = NODYNSORT; }; setgid; _setgid; setgroups; @@ -2604,7 +2817,7 @@ $endif shmget; _shmget; sigaction; - _sigaction { FLAGS = NODYNSORT }; + _sigaction { FLAGS = NODYNSORT; }; sigaddset; _sigaddset; sigaltstack; @@ -2639,7 +2852,7 @@ $endif sigset; _sigset; sigsetjmp; - _sigsetjmp { FLAGS = NODYNSORT }; + _sigsetjmp { FLAGS = NODYNSORT; }; sigsuspend; _sigsuspend; sleep; @@ -2797,7 +3010,7 @@ $if sparc32 .stret2; .stret4; # .stret4 and .stret8 are the same thing - .stret8 { FLAGS = NODYNSORT }; + .stret8 { FLAGS = NODYNSORT; }; .udiv; .umul; .urem; @@ -2828,12 +3041,12 @@ $endif $if sparcv9 # __align_cpy_1 is an alias for memcpy. Filter it out of # the .SUNW_dynsymsort section - __align_cpy_1 { FLAGS = NODYNSORT }; + __align_cpy_1 { FLAGS = NODYNSORT; }; __align_cpy_16; __align_cpy_2; __align_cpy_4; # __align_cpy_8 is same as __align_cpy_16 - __align_cpy_8 { FLAGS = NODYNSORT }; + __align_cpy_8 { FLAGS = NODYNSORT; }; __dtoul; __ftoul; _Qp_add; @@ -2865,8 +3078,8 @@ $if sparcv9 __sparc_utrap_install; $endif -# On amd64, we also have SYSVABI_1.3, but it contains a small subset of -# the symbols put in that version on other platforms. + # On amd64, we also have SYSVABI_1.3, but it contains a small subset of + # the symbols put in that version on other platforms. $if amd64 } SYSVABI_1.3; @@ -2874,7 +3087,7 @@ SYMBOL_VERSION SYSVABI_1.3 { $endif global: $if !_sparc - __flt_rounds; + __flt_rounds { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; $endif protected: @@ -2903,91 +3116,416 @@ $endif SYMBOL_VERSION SUNWprivate_1.1 { global: - ___Argv { FLAGS = NODIRECT }; - cfree { FLAGS = NODIRECT }; - _cswidth; - __ctype_mask; - __environ_lock { FLAGS = NODIRECT }; - __inf_read; - __inf_written; - __i_size; - _isnanf { TYPE = FUNCTION; FILTER = libm.so.2 }; + ___Argv { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + cfree { FLAGS = NODIRECT; }; + _cswidth { + ASSERT = { + TYPE = OBJECT; + SIZE = 16; + }; + }; + __ctype_mask { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __environ_lock { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 24; + }; + }; + __inf_read { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __inf_written { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __i_size { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _isnanf { + TYPE = FUNCTION; + FILTER = libm.so.2; + }; __iswrune; - __libc_threaded; - _lib_version { FLAGS = NODIRECT }; - _logb { TYPE = FUNCTION; FILTER = libm.so.2 }; - _lone { FLAGS = NODYNSORT }; - _lten { FLAGS = NODYNSORT }; - _lzero { FLAGS = NODYNSORT }; - __malloc_lock; + __libc_threaded { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _lib_version { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; + _logb { + TYPE = FUNCTION; + FILTER = libm.so.2; + }; + _lone { + FLAGS = NODYNSORT; + ASSERT = { + BINDING = WEAK; + ALIAS = lone; + }; + }; + _lten { + FLAGS = NODYNSORT; + ASSERT = { + BINDING = WEAK; + ALIAS = lten; + }; + }; + _lzero { + FLAGS = NODYNSORT; + ASSERT = { + BINDING = WEAK; + ALIAS = lzero; + }; + }; + __malloc_lock { + ASSERT = { + TYPE = OBJECT; + SIZE = 24; + }; + }; _memcmp; - _memcpy { FLAGS = NODYNSORT }; + _memcpy { FLAGS = NODYNSORT; }; _memmove; _memset; - _modff { TYPE = FUNCTION; FILTER = libm.so.2 }; - __nan_read; - __nan_written; + _modff { + TYPE = FUNCTION; + FILTER = libm.so.2; + }; + __nan_read { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __nan_written { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; __nextwctype; - __nis_debug_bind; - __nis_debug_calls; - __nis_debug_file; - __nis_debug_rpc; - __nis_prefsrv; - __nis_preftype; - __nis_server; - _nss_default_finders; - __progname { FLAGS = NODIRECT }; - _smbuf; - _sp; - __strdupa_str { FLAGS = NODIRECT }; - __strdupa_len { FLAGS = NODIRECT }; - _tdb_bootstrap; - __threaded; - thr_probe_getfunc_addr; - __trans_lower; - __trans_upper; - _uberdata; - __xpg6 { FLAGS = NODIRECT }; + __nis_debug_bind { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __nis_debug_calls { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __nis_debug_file { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __nis_debug_rpc { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __nis_prefsrv { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __nis_preftype { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __nis_server { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _nss_default_finders { + ASSERT = { + BINDING = WEAK; + ALIAS = nss_default_finders; + }; + }; + __progname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + FLAGS = NODIRECT; + }; + +$if _ELF64 + _smbuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 168; + }; + }; +$elif _ELF32 + _smbuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 488; + }; + }; +$else +$error unknown ELFCLASS +$endif + _sp { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __strdupa_str { + ASSERT = { + TYPE = TLS; + SIZE = addrsize; + }; + FLAGS = NODIRECT; + }; + __strdupa_len { + ASSERT = { + TYPE = TLS; + SIZE = addrsize; + }; + FLAGS = NODIRECT; + }; + _tdb_bootstrap { + ASSERT = { + BINDING = WEAK; + ALIAS = __tdb_bootstrap; + }; + }; + __threaded { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + thr_probe_getfunc_addr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __trans_lower { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __trans_upper { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _uberdata { + ASSERT = { + BINDING = WEAK; + ALIAS = __uberdata; + }; + }; + __xpg6 { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; $if _ELF32 - _dladdr { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlclose { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dldump { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlerror { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlopen { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _dlsym { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _ld_libc { TYPE = FUNCTION; FILTER = /usr/lib/ld.so.1 }; - _sys_errlist; - _sys_errs; - _sys_index; - _sys_nerr { FLAGS = NODYNSORT }; - _sys_num_err; + _dladdr { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dladdr1 { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlclose { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dldump { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlerror { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlinfo { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlmopen { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlopen { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _dlsym { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _ld_libc { + TYPE = FUNCTION; + FILTER = /usr/lib/ld.so.1; + }; + _sys_errlist { + ASSERT = { + BINDING = WEAK; + ALIAS = sys_errlist; + }; + }; + _sys_errs { + ASSERT = { + TYPE = OBJECT; + SIZE = 3216; + }; + }; + _sys_index { + ASSERT = { + TYPE = OBJECT; + SIZE = 608; + }; + }; + _sys_nerr { + FLAGS = NODYNSORT; + ASSERT = { + BINDING = WEAK; + ALIAS = _sys_num_err; + }; + }; + _sys_num_err { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; $elif sparcv9 - _dladdr { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlclose { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dldump { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlerror { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlopen { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _dlsym { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; - _ld_libc { TYPE = FUNCTION; FILTER = /usr/lib/sparcv9/ld.so.1 }; + _dladdr { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dladdr1 { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlclose { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dldump { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlerror { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlinfo { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlmopen { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlopen { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _dlsym { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; + _ld_libc { + TYPE = FUNCTION; + FILTER = /usr/lib/sparcv9/ld.so.1; + }; $elif amd64 - _dladdr { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dladdr1 { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlamd64getunwind { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlclose { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dldump { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlerror { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlinfo { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlmopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlopen { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _dlsym { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; - _ld_libc { TYPE = FUNCTION; FILTER = /usr/lib/amd64/ld.so.1 }; + _dladdr { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dladdr1 { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlamd64getunwind { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlclose { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dldump { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlerror { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlinfo { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlmopen { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlopen { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _dlsym { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; + _ld_libc { + TYPE = FUNCTION; + FILTER = /usr/lib/amd64/ld.so.1; + }; $else $error unknown platform $endif @@ -2998,7 +3536,12 @@ $if _sparc __yday_to_month; $endif $if i386 - _sse_hw; + _sse_hw { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; $endif protected: @@ -3061,8 +3604,8 @@ $endif _findiop; __fini_daemon_priv; _finite; - _fork1 { FLAGS = NODYNSORT }; - _forkall { FLAGS = NODYNSORT }; + _fork1 { FLAGS = NODYNSORT; }; + _forkall { FLAGS = NODYNSORT; }; _fpclass; _fpgetmask; _fpgetround; @@ -3104,7 +3647,7 @@ $endif klpd_register_id; klpd_unregister; klpd_unregister_id; - _lgrp_home_fast { FLAGS = NODYNSORT }; + _lgrp_home_fast { FLAGS = NODYNSORT; }; _lgrpsys; _lltostr; _lock_clear; @@ -3120,12 +3663,12 @@ $endif modutx; msgctl64; __multi_innetgr; - _mutex_destroy { FLAGS = NODYNSORT }; + _mutex_destroy { FLAGS = NODYNSORT; }; mutex_enter; mutex_exit; mutex_held; - _mutex_init { FLAGS = NODYNSORT }; - _mutex_unlock { FLAGS = NODYNSORT }; + _mutex_init { FLAGS = NODYNSORT; }; + _mutex_unlock { FLAGS = NODYNSORT; }; name_to_attr; nfs_getfh; nfssvc; @@ -3422,96 +3965,96 @@ $if i386 __udivrem64; $endif -# The following functions should not be exported from libc, -# but /lib/libm.so.2, some older versions of the Studio -# compiler/debugger components, and some ancient programs -# found in /usr/dist reference them. When we no longer -# care about these old and broken binary objects, these -# symbols should be deleted. - _brk { FLAGS = NODYNSORT }; - _cond_broadcast { FLAGS = NODYNSORT }; - _cond_init { FLAGS = NODYNSORT }; - _cond_signal { FLAGS = NODYNSORT }; - _cond_wait { FLAGS = NODYNSORT }; - _ecvt { FLAGS = NODYNSORT }; - _fcvt { FLAGS = NODYNSORT }; - _getc_unlocked { FLAGS = NODYNSORT }; - _llseek { FLAGS = NODYNSORT }; - _pthread_attr_getdetachstate { FLAGS = NODYNSORT }; - _pthread_attr_getinheritsched { FLAGS = NODYNSORT }; - _pthread_attr_getschedparam { FLAGS = NODYNSORT }; - _pthread_attr_getschedpolicy { FLAGS = NODYNSORT }; - _pthread_attr_getscope { FLAGS = NODYNSORT }; - _pthread_attr_getstackaddr { FLAGS = NODYNSORT }; - _pthread_attr_getstacksize { FLAGS = NODYNSORT }; - _pthread_attr_init { FLAGS = NODYNSORT }; - _pthread_condattr_getpshared { FLAGS = NODYNSORT }; - _pthread_condattr_init { FLAGS = NODYNSORT }; - _pthread_cond_init { FLAGS = NODYNSORT }; - _pthread_create { FLAGS = NODYNSORT }; - _pthread_getschedparam { FLAGS = NODYNSORT }; - _pthread_join { FLAGS = NODYNSORT }; - _pthread_key_create { FLAGS = NODYNSORT }; - _pthread_mutexattr_getprioceiling { FLAGS = NODYNSORT }; - _pthread_mutexattr_getprotocol { FLAGS = NODYNSORT }; - _pthread_mutexattr_getpshared { FLAGS = NODYNSORT }; - _pthread_mutexattr_init { FLAGS = NODYNSORT }; - _pthread_mutex_getprioceiling { FLAGS = NODYNSORT }; - _pthread_mutex_init { FLAGS = NODYNSORT }; - _pthread_sigmask { FLAGS = NODYNSORT }; - _rwlock_init { FLAGS = NODYNSORT }; - _rw_rdlock { FLAGS = NODYNSORT }; - _rw_unlock { FLAGS = NODYNSORT }; - _rw_wrlock { FLAGS = NODYNSORT }; - _sbrk_unlocked { FLAGS = NODYNSORT }; - _select { FLAGS = NODYNSORT }; - _sema_init { FLAGS = NODYNSORT }; - _sema_post { FLAGS = NODYNSORT }; - _sema_trywait { FLAGS = NODYNSORT }; - _sema_wait { FLAGS = NODYNSORT }; - _sysfs { FLAGS = NODYNSORT }; - _thr_create { FLAGS = NODYNSORT }; - _thr_exit { FLAGS = NODYNSORT }; - _thr_getprio { FLAGS = NODYNSORT }; - _thr_getspecific { FLAGS = NODYNSORT }; - _thr_join { FLAGS = NODYNSORT }; - _thr_keycreate { FLAGS = NODYNSORT }; - _thr_kill { FLAGS = NODYNSORT }; - _thr_main { FLAGS = NODYNSORT }; - _thr_self { FLAGS = NODYNSORT }; - _thr_setspecific { FLAGS = NODYNSORT }; - _thr_sigsetmask { FLAGS = NODYNSORT }; - _thr_stksegment { FLAGS = NODYNSORT }; - _ungetc_unlocked { FLAGS = NODYNSORT }; + # The following functions should not be exported from libc, + # but /lib/libm.so.2, some older versions of the Studio + # compiler/debugger components, and some ancient programs + # found in /usr/dist reference them. When we no longer + # care about these old and broken binary objects, these + # symbols should be deleted. + _brk { FLAGS = NODYNSORT; }; + _cond_broadcast { FLAGS = NODYNSORT; }; + _cond_init { FLAGS = NODYNSORT; }; + _cond_signal { FLAGS = NODYNSORT; }; + _cond_wait { FLAGS = NODYNSORT; }; + _ecvt { FLAGS = NODYNSORT; }; + _fcvt { FLAGS = NODYNSORT; }; + _getc_unlocked { FLAGS = NODYNSORT; }; + _llseek { FLAGS = NODYNSORT; }; + _pthread_attr_getdetachstate { FLAGS = NODYNSORT; }; + _pthread_attr_getinheritsched { FLAGS = NODYNSORT; }; + _pthread_attr_getschedparam { FLAGS = NODYNSORT; }; + _pthread_attr_getschedpolicy { FLAGS = NODYNSORT; }; + _pthread_attr_getscope { FLAGS = NODYNSORT; }; + _pthread_attr_getstackaddr { FLAGS = NODYNSORT; }; + _pthread_attr_getstacksize { FLAGS = NODYNSORT; }; + _pthread_attr_init { FLAGS = NODYNSORT; }; + _pthread_condattr_getpshared { FLAGS = NODYNSORT; }; + _pthread_condattr_init { FLAGS = NODYNSORT; }; + _pthread_cond_init { FLAGS = NODYNSORT; }; + _pthread_create { FLAGS = NODYNSORT; }; + _pthread_getschedparam { FLAGS = NODYNSORT; }; + _pthread_join { FLAGS = NODYNSORT; }; + _pthread_key_create { FLAGS = NODYNSORT; }; + _pthread_mutexattr_getprioceiling { FLAGS = NODYNSORT; }; + _pthread_mutexattr_getprotocol { FLAGS = NODYNSORT; }; + _pthread_mutexattr_getpshared { FLAGS = NODYNSORT; }; + _pthread_mutexattr_init { FLAGS = NODYNSORT; }; + _pthread_mutex_getprioceiling { FLAGS = NODYNSORT; }; + _pthread_mutex_init { FLAGS = NODYNSORT; }; + _pthread_sigmask { FLAGS = NODYNSORT; }; + _rwlock_init { FLAGS = NODYNSORT; }; + _rw_rdlock { FLAGS = NODYNSORT; }; + _rw_unlock { FLAGS = NODYNSORT; }; + _rw_wrlock { FLAGS = NODYNSORT; }; + _sbrk_unlocked { FLAGS = NODYNSORT; }; + _select { FLAGS = NODYNSORT; }; + _sema_init { FLAGS = NODYNSORT; }; + _sema_post { FLAGS = NODYNSORT; }; + _sema_trywait { FLAGS = NODYNSORT; }; + _sema_wait { FLAGS = NODYNSORT; }; + _sysfs { FLAGS = NODYNSORT; }; + _thr_create { FLAGS = NODYNSORT; }; + _thr_exit { FLAGS = NODYNSORT; }; + _thr_getprio { FLAGS = NODYNSORT; }; + _thr_getspecific { FLAGS = NODYNSORT; }; + _thr_join { FLAGS = NODYNSORT; }; + _thr_keycreate { FLAGS = NODYNSORT; }; + _thr_kill { FLAGS = NODYNSORT; }; + _thr_main { FLAGS = NODYNSORT; }; + _thr_self { FLAGS = NODYNSORT; }; + _thr_setspecific { FLAGS = NODYNSORT; }; + _thr_sigsetmask { FLAGS = NODYNSORT; }; + _thr_stksegment { FLAGS = NODYNSORT; }; + _ungetc_unlocked { FLAGS = NODYNSORT; }; local: - __imax_lldiv { FLAGS = NODYNSORT }; - _ti_thr_self { FLAGS = NODYNSORT }; - *; + _ti_thr_self { FLAGS = NODYNSORT; }; + __imax_lldiv { FLAGS = NODYNSORT; }; + *; $if lf64 - _seekdir64 { FLAGS = NODYNSORT }; - _telldir64 { FLAGS = NODYNSORT }; + _seekdir64 { FLAGS = NODYNSORT; }; + _telldir64 { FLAGS = NODYNSORT; }; $endif $if _sparc - __cerror { FLAGS = NODYNSORT }; + __cerror { FLAGS = NODYNSORT; }; $endif $if sparc32 - __cerror64 { FLAGS = NODYNSORT }; + __cerror64 { FLAGS = NODYNSORT; }; $endif $if sparcv9 - __cleanup { FLAGS = NODYNSORT }; + __cleanup { FLAGS = NODYNSORT; }; $endif $if i386 - _syscall6 { FLAGS = NODYNSORT }; - __systemcall6 { FLAGS = NODYNSORT }; + _syscall6 { FLAGS = NODYNSORT; }; + __systemcall6 { FLAGS = NODYNSORT; }; $endif $if amd64 - ___tls_get_addr { FLAGS = NODYNSORT }; + ___tls_get_addr { FLAGS = NODYNSORT; }; $endif }; diff --git a/usr/src/lib/libc_db/common/mapfile-vers b/usr/src/lib/libc_db/common/mapfile-vers index abf5c55d05..7b4a958515 100644 --- a/usr/src/lib/libc_db/common/mapfile-vers +++ b/usr/src/lib/libc_db/common/mapfile-vers @@ -120,7 +120,7 @@ SYMBOL_SCOPE { ps_lgetfpregs { FLAGS = EXTERN }; ps_lgetregs { FLAGS = EXTERN }; ps_lgetxregs { FLAGS = EXTERN }; - ps_lgetxregsize { FLAGS = EXTERN }; + ps_lgetxregsize { FLAGS = EXTERN }; ps_lsetfpregs { FLAGS = EXTERN }; ps_lsetregs { FLAGS = EXTERN }; ps_lsetxregs { FLAGS = EXTERN }; diff --git a/usr/src/lib/libcpc/common/mapfile-vers b/usr/src/lib/libcpc/common/mapfile-vers index 330ed4b118..470b563c06 100644 --- a/usr/src/lib/libcpc/common/mapfile-vers +++ b/usr/src/lib/libcpc/common/mapfile-vers @@ -119,7 +119,6 @@ $endif SYMBOL_VERSION SUNWprivate_1.1 { global: - SUNWprivate_1.1; cpc_terminate; local: *; diff --git a/usr/src/lib/libcrypt/common/mapfile-vers b/usr/src/lib/libcrypt/common/mapfile-vers index 8484e7e84d..2f1b877c99 100644 --- a/usr/src/lib/libcrypt/common/mapfile-vers +++ b/usr/src/lib/libcrypt/common/mapfile-vers @@ -40,15 +40,15 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { global: - crypt { TYPE = FUNCTION; FILTER = libc.so.1 }; - encrypt { TYPE = FUNCTION; FILTER = libc.so.1 }; - setkey { TYPE = FUNCTION; FILTER = libc.so.1 }; + crypt { TYPE = FUNCTION; FILTER = libc.so.1; }; + encrypt { TYPE = FUNCTION; FILTER = libc.so.1; }; + setkey { TYPE = FUNCTION; FILTER = libc.so.1; }; }; SYMBOL_VERSION SUNWprivate_1.1 { global: cbc_crypt; - _crypt { TYPE = FUNCTION; FILTER = libc.so.1 }; + _crypt { TYPE = FUNCTION; FILTER = libc.so.1; }; crypt_close; _crypt_close; crypt_close_nolock; @@ -64,14 +64,14 @@ SYMBOL_VERSION SUNWprivate_1.1 { _des_setkey; des_setparity; ecb_crypt; - _encrypt { TYPE = FUNCTION; FILTER = libc.so.1 }; + _encrypt { TYPE = FUNCTION; FILTER = libc.so.1; }; makekey; _makekey; run_crypt; _run_crypt; run_setkey; _run_setkey; - _setkey { TYPE = FUNCTION; FILTER = libc.so.1 }; + _setkey { TYPE = FUNCTION; FILTER = libc.so.1; }; local: *; }; diff --git a/usr/src/lib/libctf/common/mapfile-vers b/usr/src/lib/libctf/common/mapfile-vers index 1337fbba45..09d4b8f084 100644 --- a/usr/src/lib/libctf/common/mapfile-vers +++ b/usr/src/lib/libctf/common/mapfile-vers @@ -161,7 +161,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { ctf_type_size; ctf_type_visit; ctf_version; - _libctf_debug; + _libctf_debug { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/libcurses/screen/mapfile-vers b/usr/src/lib/libcurses/screen/mapfile-vers index 6e7cf9d1a6..1ec3ccd80c 100644 --- a/usr/src/lib/libcurses/screen/mapfile-vers +++ b/usr/src/lib/libcurses/screen/mapfile-vers @@ -370,62 +370,238 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNWprivate_1.1 { global: - acs32map; - acs_map; - BC; - bit_attributes; + acs32map { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + acs_map { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + BC { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + bit_attributes { + ASSERT = { + TYPE = OBJECT; + SIZE = 36; + }; + }; _blast_keys; - boolcodes; - boolfnames; - boolnames; + boolcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; + boolfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; + boolnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; box32; _branchto; - _called_before; + _called_before { + ASSERT = { + TYPE = OBJECT; + SIZE = 1; + }; + }; _ccleanup; cconvert; cexpand; _change_color; _change_video; _chkinput; - COLOR_PAIRS; - COLORS; - COLS; + COLOR_PAIRS { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + COLORS { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + COLS { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _countchar; cpr; - _csmax; - cswidth; - cur_bools; - cur_nums; - curscr; + _csmax { + ASSERT = { + TYPE = OBJECT; + SIZE = 2; + }; + }; + cswidth { + ASSERT = { + TYPE = OBJECT; + SIZE = 8; + }; + }; + cur_bools { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + cur_nums { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + curscr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; curserr; - curs_errno; - curs_err_strings; - curses_version; + curs_errno { + ASSERT = { + TYPE = OBJECT; + SIZE = 2; + }; + }; + curs_err_strings { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[4]; + }; + }; + curses_version { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _curs_mbstowcs; _curs_mbtowc; - curs_parm_err; - _curs_scrwidth; - cur_strs; + curs_parm_err { + ASSERT = { + TYPE = OBJECT; + SIZE = 32; + }; + }; + _curs_scrwidth { + ASSERT = { + TYPE = OBJECT; + SIZE = 8; + }; + }; + cur_strs { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _curs_wcstombs; _curs_wctomb; - cur_term; - Def_term; + cur_term { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + Def_term { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _delay; delkey; delkeymap; delterm; - _do_slk_noref; - _do_slk_ref; - _do_slk_tch; + _do_slk_noref { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _do_slk_ref { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _do_slk_tch { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; draino; - _endwin; - _first_term; + _endwin { + ASSERT = { + TYPE = OBJECT; + SIZE = 1; + }; + }; +$if _ELF64 + _first_term { + ASSERT = { + TYPE = OBJECT; + SIZE = 2032; + }; + }; +$elif _ELF32 + _first_term { + ASSERT = { + TYPE = OBJECT; + SIZE = 1340; + }; + }; +$else +$error unknown ELFCLASS +$endif fixterm; force_doupdate; - _frst_bools; - _frst_nums; - _frst_strs; - _frst_tblstr; + _frst_bools { + ASSERT = { + TYPE = OBJECT; + SIZE = 38; + }; + }; + _frst_nums { + ASSERT = { + TYPE = OBJECT; + SIZE = 68; + }; + }; + _frst_strs { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + _frst_tblstr { + ASSERT = { + TYPE = OBJECT; + SIZE = 1400; + }; + }; garbagedlines; garbagedwin; getattrs; @@ -449,7 +625,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { _init_costs; _init_HP_pair; initscr32; - LINES; + LINES { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; m_addch; m_addstr; makenew; @@ -463,7 +639,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { mbgetwidth; _mbinsshift; mbscrw; - _mbtrue; + _mbtrue { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; _mbvalid; m_clear; memSset; @@ -474,7 +650,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { mouse_off; mouse_on; mouse_set; - Mouse_status; + Mouse_status { ASSERT = { TYPE = OBJECT; SIZE = 20; }; }; m_refresh; mvhline; mvvline; @@ -483,19 +659,34 @@ SYMBOL_VERSION SUNWprivate_1.1 { newkey; newscreen; newterm32; - numcodes; - numfnames; - numnames; - Oldcolors; - ospeed; + numcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + numfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + numnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + Oldcolors { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + ospeed { ASSERT = { TYPE = OBJECT; SIZE = 2; }; }; _outch; _outchar; - outchcount; + outchcount { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; _outwch; _overlap; p32echochar; _padjust; - PC; + PC { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; pr_bfooting; pr_bheading; pr_boolean; @@ -506,48 +697,104 @@ SYMBOL_VERSION SUNWprivate_1.1 { pr_nfooting; pr_nheading; pr_number; - prog_istermios; - progname { FLAGS = NODIRECT }; + prog_istermios { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + progname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + FLAGS = NODIRECT; + }; pr_onecolumn; pr_sfooting; pr_sheading; pr_string; pr_width; _quick_echo; - _quick_ptr; + _quick_ptr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; request_mouse_pos; resetterm; - _rip_init; + _rip_init { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; rmpadding; saveterm; _scr_all; scr_ll_dump; - _scrmax; + _scrmax { ASSERT = { TYPE = OBJECT; SIZE = 2; }; }; scr_reset; setcurscreen; set_curterm; setcurterm; - _setidln; + _setidln { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; setkeymap; - shell_istermios; - _slk_init; + shell_istermios { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + _slk_init { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; slk_start; _slk_update; - SP; + SP { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _sprintw; __sscans; - stdscr; + stdscr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _strbyte2code; _strcode2byte; - strcodes; - strfnames; - strnames; - TABSIZE; + strcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + strfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + strnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + TABSIZE { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; _tcsearch; termerr; - term_errno; - term_err_strings; - term_parm_err; + term_errno { ASSERT = { TYPE = OBJECT; SIZE = 2; }; }; + term_err_strings { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[8]; + }; + }; + term_parm_err { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; tgetch; tgetwch; tifgetflag; @@ -565,17 +812,37 @@ SYMBOL_VERSION SUNWprivate_1.1 { traceon; _tstp; ttimeout; - ttytype; - _unctrl; - UP; + ttytype { ASSERT = { TYPE = OBJECT; SIZE = 1024; }; }; + _unctrl { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[128]; + }; + }; + UP { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _update_old_y_area; use_env; - _use_env; - _useidln; + _use_env { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + _useidln { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; vid32attr; vid32puts; vidupdate; - _virtscr; + _virtscr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; vline; w32addch; w32attroff; @@ -587,7 +854,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { wmbinch; wmbmove; wmouse_position; - _y16update; + _y16update { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; local: *; }; diff --git a/usr/src/lib/libdtrace/common/mapfile-vers b/usr/src/lib/libdtrace/common/mapfile-vers index c46ac0adaa..72131e6257 100644 --- a/usr/src/lib/libdtrace/common/mapfile-vers +++ b/usr/src/lib/libdtrace/common/mapfile-vers @@ -59,7 +59,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { dtrace_close; dtrace_consume; dtrace_ctlfd; - _dtrace_debug; + _dtrace_debug { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; dtrace_desc2str; dtrace_dof_create; dtrace_dof_destroy; @@ -118,7 +123,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { dtrace_type_strcompile; dtrace_uaddr2str; dtrace_update; - _dtrace_version; + _dtrace_version { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; dtrace_vopen; dtrace_work; dtrace_xstr2desc; diff --git a/usr/src/lib/libeti/form/common/mapfile-vers b/usr/src/lib/libeti/form/common/mapfile-vers index 210f8e70ed..a1d06c9ebe 100644 --- a/usr/src/lib/libeti/form/common/mapfile-vers +++ b/usr/src/lib/libeti/form/common/mapfile-vers @@ -119,12 +119,32 @@ SYMBOL_VERSION SUNWprivate_1.1 { __advance; _beg_field; _beg_line; - __braelist; - __braslist; - __bravar; + __braelist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[10]; + }; + }; + __braslist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[10]; + }; + }; + __bravar { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[10]; + }; + }; _buf_to_win; __cclass; - __cflg; + __cflg { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _checkchar; _checkfield; _clr_eof; @@ -136,9 +156,24 @@ SYMBOL_VERSION SUNWprivate_1.1 { _data_entry; _data_manipulation; _data_navigation; - _DEFAULT_FIELD; - _DEFAULT_FIELDTYPE; - _DEFAULT_FORM; + _DEFAULT_FIELD { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _DEFAULT_FIELDTYPE { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _DEFAULT_FORM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _del_char; _del_line; _del_prev; @@ -147,7 +182,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { _down_field; _end_field; _end_line; - __eptr_; + __eptr_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __execute; _field_navigation; _first_active; @@ -159,12 +199,21 @@ SYMBOL_VERSION SUNWprivate_1.1 { _ins_char; _ins_line; _ins_mode; - __i_size { TYPE = DATA; FILTER = libc.so.1; SIZE = 0x4 }; + __i_size { + TYPE = DATA; + FILTER = libc.so.1; + SIZE = 0x4; + }; _last_field; _last_page; _left_char; _left_field; - __lptr_; + __lptr_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _makearg; _misc_request; _new_line; @@ -207,21 +256,66 @@ SYMBOL_VERSION SUNWprivate_1.1 { __size; _slast_field; _snext_field; - __sp_; + __sp_ { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _sprev_field; - __st; - __stmax; + __st { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[51]; + }; + }; + __stmax { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _sync_attrs; _sync_buffer; _sync_field; _sync_linked; _sync_opts; - TYPE_ALNUM; - TYPE_ALPHA; - TYPE_ENUM; - TYPE_INTEGER; - TYPE_NUMERIC; - TYPE_REGEXP; + TYPE_ALNUM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + TYPE_ALPHA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + TYPE_ENUM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + TYPE_INTEGER { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + TYPE_NUMERIC { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + TYPE_REGEXP { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _up_char; _update_current; _up_field; @@ -233,17 +327,11 @@ SYMBOL_VERSION SUNWprivate_1.1 { __xpop; __xpush; - __loc1 { - TYPE = DATA; - FILTER = libc.so.1; -$if _ELF32 - SIZE = 0x4; -$elif _ELF64 - SIZE = 0x8; -$else -$error unknown ELFCLASS -$endif - }; + __loc1 { + TYPE = DATA; + FILTER = libc.so.1; + SIZE = addrsize; + }; local: *; diff --git a/usr/src/lib/libeti/menu/common/mapfile-vers b/usr/src/lib/libeti/menu/common/mapfile-vers index e154c78aba..a659b7d47e 100644 --- a/usr/src/lib/libeti/menu/common/mapfile-vers +++ b/usr/src/lib/libeti/menu/common/mapfile-vers @@ -108,8 +108,35 @@ SYMBOL_VERSION SUNWprivate_1.1 { _chk_current; _chk_top; _connect; - _Default_Item; - _Default_Menu; +$if _ELF64 + _Default_Item { + ASSERT = { + TYPE = OBJECT; + SIZE = 112; + }; + }; + _Default_Menu { + ASSERT = { + TYPE = OBJECT; + SIZE = 192; + }; + }; +$elif _ELF32 + _Default_Item { + ASSERT = { + TYPE = OBJECT; + SIZE = 60; + }; + }; + _Default_Menu { + ASSERT = { + TYPE = OBJECT; + SIZE = 128; + }; + }; +$else +$error unknown ELFCLASS +$endif _disconnect; _draw; _link_items; diff --git a/usr/src/lib/libeti/panel/common/mapfile-vers b/usr/src/lib/libeti/panel/common/mapfile-vers index 5a3eba14ee..f2c43cde9e 100644 --- a/usr/src/lib/libeti/panel/common/mapfile-vers +++ b/usr/src/lib/libeti/panel/common/mapfile-vers @@ -60,12 +60,27 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNWprivate_1.1 { global: _alloc_overlap; - _Bottom_panel; + _Bottom_panel { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _free_overlap; _intersect_panel; - _Panel_cnt; + _Panel_cnt { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; _remove_overlap; - _Top_panel; + _Top_panel { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _unlink_obs; local: *; diff --git a/usr/src/lib/libfakekernel/Makefile.com b/usr/src/lib/libfakekernel/Makefile.com index 72fad2f3af..036dc5e205 100644 --- a/usr/src/lib/libfakekernel/Makefile.com +++ b/usr/src/lib/libfakekernel/Makefile.com @@ -70,6 +70,10 @@ CPPFLAGS += -D_FILE_OFFSET_BITS=64 # this library is for debugging, let's always define DEBUG here. CPPFLAGS += -DDEBUG +# libfakekernel isn't delivered, and is a special case, disable global data +# complaints +ZGUIDANCE= -Wl,-zguidance=noasserts + LDLIBS += -lumem -lcryptoutil -lsocket -lc .KEEP_STATE: diff --git a/usr/src/lib/libgen/common/mapfile-vers b/usr/src/lib/libgen/common/mapfile-vers index ec4a5ac5a4..fa1ecb537f 100644 --- a/usr/src/lib/libgen/common/mapfile-vers +++ b/usr/src/lib/libgen/common/mapfile-vers @@ -42,9 +42,9 @@ SYMBOL_VERSION SUNW_1.1 { global: advance; bgets; - braelist; + braelist { ASSERT = { TYPE = OBJECT; SIZE = addrsize[128]; }; }; ___braelist; - braslist; + braslist { ASSERT = { TYPE = OBJECT; SIZE = addrsize[128]; }; }; ___braslist; bufsplit; compile; @@ -52,21 +52,21 @@ SYMBOL_VERSION SUNW_1.1 { eaccess; gmatch; isencrypt; - loc1; + loc1 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; ___loc1; - loc2; + loc2 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; ___loc2; - locs; + locs { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; ___locs; mkdirp; - nbra; + nbra { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; ___nbra; p2close; p2open; pathfind; - regerrno; + regerrno { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; ___regerrno; - reglength; + reglength { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; ___reglength; rmdirp; step; diff --git a/usr/src/lib/libgss/mapfile-vers b/usr/src/lib/libgss/mapfile-vers index c81e8b897e..0dec2dac10 100644 --- a/usr/src/lib/libgss/mapfile-vers +++ b/usr/src/lib/libgss/mapfile-vers @@ -20,7 +20,7 @@ # # # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. -# Copyright 2011 Nexenta Systems, Inc. All rights reserved. +# Copyright 2011 Nexenta Systems, Inc. All rights reserved. # # @@ -43,7 +43,12 @@ SYMBOL_VERSION SUNW_1.3 { global: gss_add_buffer_set_member; gss_create_empty_buffer_set; - GSS_C_INQ_SSPI_SESSION_KEY; + GSS_C_INQ_SSPI_SESSION_KEY { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; gss_inquire_sec_context_by_oid; gss_release_buffer_set; } SUNW_1.2; @@ -57,12 +62,42 @@ SYMBOL_VERSION SUNW_1.2 { gss_add_cred_with_password; gss_add_oid_set_member; gss_canonicalize_name; - GSS_C_NT_ANONYMOUS; - GSS_C_NT_EXPORT_NAME; - GSS_C_NT_HOSTBASED_SERVICE; - GSS_C_NT_MACHINE_UID_NAME; - GSS_C_NT_STRING_UID_NAME; - GSS_C_NT_USER_NAME; + GSS_C_NT_ANONYMOUS { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + GSS_C_NT_EXPORT_NAME { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + GSS_C_NT_HOSTBASED_SERVICE { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + GSS_C_NT_MACHINE_UID_NAME { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + GSS_C_NT_STRING_UID_NAME { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + GSS_C_NT_USER_NAME { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; gss_compare_name; gss_context_time; gss_create_empty_oid_set; @@ -130,10 +165,30 @@ SYMBOL_VERSION SUNWprivate_1.1 { __gss_get_modOptions; __gss_mech_qops; __gss_mech_to_oid; - gss_mech_krb5; - gss_nt_exported_name; - gss_nt_service_name; - gss_nt_service_name_v2; + gss_mech_krb5 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_nt_exported_name { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_nt_service_name { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + gss_nt_service_name_v2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __gss_num_to_qop; __gss_oid_to_mech; gss_oid_to_str; diff --git a/usr/src/lib/libhotplug/common/mapfile-vers b/usr/src/lib/libhotplug/common/mapfile-vers index 4f9374f464..84b6da30d2 100644 --- a/usr/src/lib/libhotplug/common/mapfile-vers +++ b/usr/src/lib/libhotplug/common/mapfile-vers @@ -58,7 +58,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { hp_pack; hp_unpack; hp_last_change; - libhotplug_debug; + libhotplug_debug { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/libilb/common/mapfile-vers b/usr/src/lib/libilb/common/mapfile-vers index 77403c83d7..c189a47b33 100644 --- a/usr/src/lib/libilb/common/mapfile-vers +++ b/usr/src/lib/libilb/common/mapfile-vers @@ -75,4 +75,3 @@ SYMBOL_VERSION SUNWprivate { local: *; }; - diff --git a/usr/src/lib/libipd/common/mapfile-vers b/usr/src/lib/libipd/common/mapfile-vers index 91c4632dea..edfb45d6f2 100644 --- a/usr/src/lib/libipd/common/mapfile-vers +++ b/usr/src/lib/libipd/common/mapfile-vers @@ -31,8 +31,8 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - ipd_errno; - ipd_errmsg; + ipd_errno { ASSERT = { TYPE = TLS; SIZE = 4; }; }; + ipd_errmsg { ASSERT = { TYPE = TLS; SIZE = 512; }; }; ipd_strerror; ipd_open; ipd_close; diff --git a/usr/src/lib/libipsecutil/common/mapfile-vers b/usr/src/lib/libipsecutil/common/mapfile-vers index eff1929fd3..b023c23a53 100644 --- a/usr/src/lib/libipsecutil/common/mapfile-vers +++ b/usr/src/lib/libipsecutil/common/mapfile-vers @@ -56,13 +56,19 @@ SYMBOL_VERSION SUNWprivate_1.1 { dump_key; dump_sadb_idtype; dump_sockaddr; - env; - _errfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _errxfp { TYPE = FUNCTION; FILTER = libc.so.1 }; +$if _ELF64 + env { ASSERT = { TYPE = OBJECT; SIZE = 64; }; }; +$elif _ELF32 + env { ASSERT = { TYPE = OBJECT; SIZE = 40; }; }; +$else +$error unknown ELFCLASS +$endif + _errfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _errxfp { TYPE = FUNCTION; FILTER = libc.so.1; }; getipsecalgs; getipsecprotos; in_masktoprefix; - interactive; + interactive { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; ipsecalgs_diag; ipsecproto_get_exec_mode; ipsecproto_set_exec_mode; @@ -74,18 +80,28 @@ SYMBOL_VERSION SUNWprivate_1.1 { keysock_diag; kmc_insert_mapping; kmc_lookup_by_cookie; - lineno; - lines_added; - lines_parsed; + lineno { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + lines_added { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + lines_parsed { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; list_ints; - nflag; + nflag { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; bytecnt2out; bytecnt2str; - debugfile; - my_fmri; + debugfile { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + my_fmri { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; opensavefile; parsedbgopts; - pflag; + pflag { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; print_address; print_asn1_name; print_diagnostic; @@ -103,7 +119,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { print_supp; printsatime; privstr2num; - readfile; + readfile { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; rparsealg; rparseidtype; rparsesatype; @@ -116,12 +132,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { secs2str; spdsock_diag; spdsock_get_ext; - _verrfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _verrxfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _vwarnfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _vwarnxfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _warnfp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _warnxfp { TYPE = FUNCTION; FILTER = libc.so.1 }; + _verrfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _verrxfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _vwarnfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _vwarnxfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _warnfp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _warnxfp { TYPE = FUNCTION; FILTER = libc.so.1; }; local: *; }; diff --git a/usr/src/lib/libiscsit/common/mapfile-vers b/usr/src/lib/libiscsit/common/mapfile-vers index b6c6654da7..a6a12c1098 100644 --- a/usr/src/lib/libiscsit/common/mapfile-vers +++ b/usr/src/lib/libiscsit/common/mapfile-vers @@ -93,4 +93,3 @@ SYMBOL_VERSION SUNWprivate { local: *; }; - diff --git a/usr/src/lib/libkmf/libkmf/common/mapfile-vers b/usr/src/lib/libkmf/libkmf/common/mapfile-vers index 977112d733..e797445ae4 100644 --- a/usr/src/lib/libkmf/libkmf/common/mapfile-vers +++ b/usr/src/lib/libkmf/libkmf/common/mapfile-vers @@ -39,202 +39,1182 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { global: - KMFOID_AliasedEntryName; - KMFOID_AuthorityInfoAccess; - KMFOID_AuthorityKeyID; - KMFOID_AuthorityKeyIdentifier; - KMFOID_AuthorityRevocationList; - KMFOID_BasicConstraints; - KMFOID_BusinessCategory; - KMFOID_CACertificate; - KMFOID_CertificatePolicies; - KMFOID_CertificateRevocationList; - KMFOID_ChallengePassword; - KMFOID_CollectiveFacsimileTelephoneNumber; - KMFOID_CollectiveInternationalISDNNumber; - KMFOID_CollectiveOrganizationName; - KMFOID_CollectiveOrganizationalUnitName; - KMFOID_CollectivePhysicalDeliveryOfficeName; - KMFOID_CollectivePostOfficeBox; - KMFOID_CollectivePostalAddress; - KMFOID_CollectivePostalCode; - KMFOID_CollectiveStateProvinceName; - KMFOID_CollectiveStreetAddress; - KMFOID_CollectiveTelephoneNumber; - KMFOID_CollectiveTelexNumber; - KMFOID_CollectiveTelexTerminalIdentifier; - KMFOID_CommonName; - KMFOID_ContentType; - KMFOID_CounterSignature; - KMFOID_CountryName; - KMFOID_CrlDistributionPoints; - KMFOID_CrlNumber; - KMFOID_CrlReason; - KMFOID_CrossCertificatePair; - KMFOID_DNQualifier; - KMFOID_DSA; - KMFOID_DeltaCrlIndicator; - KMFOID_Description; - KMFOID_DestinationIndicator; - KMFOID_DistinguishedName; - KMFOID_EC_PUBLIC_KEY; - KMFOID_ECC_c2pnb163v1; - KMFOID_ECC_c2pnb163v2; - KMFOID_ECC_c2pnb163v3; - KMFOID_ECC_c2pnb176v1; - KMFOID_ECC_c2pnb208w1; - KMFOID_ECC_c2pnb272w1; - KMFOID_ECC_c2pnb304w1; - KMFOID_ECC_c2pnb368w1; - KMFOID_ECC_c2tnb191v1; - KMFOID_ECC_c2tnb191v2; - KMFOID_ECC_c2tnb191v3; - KMFOID_ECC_c2tnb239v1; - KMFOID_ECC_c2tnb239v2; - KMFOID_ECC_c2tnb239v3; - KMFOID_ECC_c2tnb359v1; - KMFOID_ECC_c2tnb431r1; - KMFOID_ECC_prime192v2; - KMFOID_ECC_prime192v3; - KMFOID_ECC_secp112r1; - KMFOID_ECC_secp112r2; - KMFOID_ECC_secp128r1; - KMFOID_ECC_secp128r2; - KMFOID_ECC_secp160k1; - KMFOID_ECC_secp160r1; - KMFOID_ECC_secp160r2; - KMFOID_ECC_secp192k1; - KMFOID_ECC_secp224k1; - KMFOID_ECC_secp224r1; - KMFOID_ECC_secp256k1; - KMFOID_ECC_secp384r1; - KMFOID_ECC_secp521r1; - KMFOID_ECC_sect113r1; - KMFOID_ECC_sect113r2; - KMFOID_ECC_sect131r1; - KMFOID_ECC_sect131r2; - KMFOID_ECC_sect163k1; - KMFOID_ECC_sect163r1; - KMFOID_ECC_sect163r2; - KMFOID_ECC_sect193r1; - KMFOID_ECC_sect193r2; - KMFOID_ECC_sect233k1; - KMFOID_ECC_sect233r1; - KMFOID_ECC_sect239k1; - KMFOID_ECC_sect283k1; - KMFOID_ECC_sect283r1; - KMFOID_ECC_sect409k1; - KMFOID_ECC_sect409r1; - KMFOID_ECC_sect571k1; - KMFOID_ECC_sect571r1; - KMFOID_ECC_secp192r1; - KMFOID_ECC_secp256r1; - KMFOID_EmailAddress; - KMFOID_EnhancedSearchGuide; - KMFOID_ExtendedCertificateAttributes; - KMFOID_ExtendedKeyUsage; - KMFOID_ExtensionRequest; - KMFOID_FacsimileTelephoneNumber; - KMFOID_GenerationQualifier; - KMFOID_GivenName; - KMFOID_HoldInstructionCode; - KMFOID_HouseIdentifier; - KMFOID_Initials; - KMFOID_InternationalISDNNumber; - KMFOID_InvalidityDate; - KMFOID_IssuerAltName; - KMFOID_IssuingDistributionPoints; - KMFOID_KeyUsage; - KMFOID_KeyUsageRestriction; - KMFOID_KnowledgeInformation; - KMFOID_LocalityName; - KMFOID_MD2WithRSA; - KMFOID_MD5; - KMFOID_MD5WithRSA; - KMFOID_Member; - KMFOID_MessageDigest; - KMFOID_MS_KP_SCLogon; - KMFOID_MS_KP_SCLogon_UPN; - KMFOID_Name; - KMFOID_NameConstraints; - KMFOID_ObjectClass; - KMFOID_OrganizationName; - KMFOID_OrganizationalUnitName; - KMFOID_Owner; - KMFOID_PKINIT_ClientAuth; - KMFOID_PKINIT_Kdc; - KMFOID_PKINIT_san; - KMFOID_PKIX_KP_ClientAuth; - KMFOID_PKIX_KP_CodeSigning; - KMFOID_PKIX_KP_EmailProtection; - KMFOID_PKIX_KP_IPSecEndSystem; - KMFOID_PKIX_KP_IPSecTunnel; - KMFOID_PKIX_KP_IPSecUser; - KMFOID_PKIX_KP_OCSPSigning; - KMFOID_PKIX_KP_ServerAuth; - KMFOID_PKIX_KP_TimeStamping; - KMFOID_PKIX_PQ_CPSuri; - KMFOID_PKIX_PQ_Unotice; - KMFOID_PhysicalDeliveryOfficeName; - KMFOID_PkixAdCaIssuers; - KMFOID_PkixAdOcsp; - KMFOID_PolicyConstraints; - KMFOID_PolicyMappings; - KMFOID_PostOfficeBox; - KMFOID_PostalAddress; - KMFOID_PostalCode; - KMFOID_PreferredDeliveryMethod; - KMFOID_PresentationAddress; - KMFOID_PrivateKeyUsagePeriod; - KMFOID_ProtocolInformation; - KMFOID_RFC822mailbox; - KMFOID_RSA; - KMFOID_RegisteredAddress; - KMFOID_RoleOccupant; - KMFOID_SHA1; - KMFOID_SHA1WithDSA; - KMFOID_SHA1WithECDSA; - KMFOID_SHA1WithRSA; - KMFOID_SHA224; - KMFOID_SHA256; - KMFOID_SHA384; - KMFOID_SHA512; - KMFOID_SHA224WithDSA; - KMFOID_SHA256WithDSA; - KMFOID_SHA224WithECDSA; - KMFOID_SHA256WithECDSA; - KMFOID_SHA256WithRSA; - KMFOID_SHA384WithECDSA; - KMFOID_SHA384WithRSA; - KMFOID_SHA512WithECDSA; - KMFOID_SHA512WithRSA; - KMFOID_SearchGuide; - KMFOID_SeeAlso; - KMFOID_SerialNumber; - KMFOID_SigningTime; - KMFOID_StateProvinceName; - KMFOID_StreetAddress; - KMFOID_SubjectAltName; - KMFOID_SubjectDirectoryAttributes; - KMFOID_SubjectKeyIdentifier; - KMFOID_SupportedApplicationContext; - KMFOID_Surname; - KMFOID_TelephoneNumber; - KMFOID_TelexNumber; - KMFOID_TelexTerminalIdentifier; - KMFOID_Title; - KMFOID_UniqueIdentifier; - KMFOID_UniqueMember; - KMFOID_UnstructuredAddress; - KMFOID_UnstructuredName; - KMFOID_UserCertificate; - KMFOID_UserPassword; - KMFOID_VerisignCertificatePolicy; - KMFOID_X9CM_DSA; - KMFOID_X9CM_DSAWithSHA1; - KMFOID_X_121Address; - KMFOID_domainComponent; - KMFOID_userid; + KMFOID_AliasedEntryName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_AuthorityInfoAccess { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_AuthorityKeyID { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_AuthorityKeyIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_AuthorityRevocationList { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_BasicConstraints { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_BusinessCategory { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CACertificate { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CertificatePolicies { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CertificateRevocationList { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ChallengePassword { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveFacsimileTelephoneNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveInternationalISDNNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveOrganizationName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveOrganizationalUnitName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectivePhysicalDeliveryOfficeName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectivePostOfficeBox { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectivePostalAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectivePostalCode { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveStateProvinceName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveStreetAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveTelephoneNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveTelexNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CollectiveTelexTerminalIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CommonName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ContentType { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CounterSignature { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CountryName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CrlDistributionPoints { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CrlNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CrlReason { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_CrossCertificatePair { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_DNQualifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_DSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_DeltaCrlIndicator { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Description { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_DestinationIndicator { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_DistinguishedName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb163v1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb163v2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb163v3 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb176v1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb208w1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb272w1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb304w1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2pnb368w1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb191v1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb191v2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb191v3 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb239v1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb239v2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb239v3 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb359v1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_c2tnb431r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_prime192v2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_prime192v3 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp112r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp112r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp128r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp128r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp160k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp160r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp160r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp192k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp192r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp224k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp224r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp256k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp256r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp384r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_secp521r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect113r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect113r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect131r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect131r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect163k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect163r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect163r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect193r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect193r2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect233k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect233r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect239k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect283k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect283r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect409k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect409r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect571k1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ECC_sect571r1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_EC_PUBLIC_KEY { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_EmailAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_EnhancedSearchGuide { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ExtendedCertificateAttributes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ExtendedKeyUsage { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ExtensionRequest { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_FacsimileTelephoneNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_GenerationQualifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_GivenName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_HoldInstructionCode { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_HouseIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Initials { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_InternationalISDNNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_InvalidityDate { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_IssuerAltName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_IssuingDistributionPoints { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_KeyUsage { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_KeyUsageRestriction { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_KnowledgeInformation { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_LocalityName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MD2WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MD5 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MD5WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MS_KP_SCLogon { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MS_KP_SCLogon_UPN { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Member { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_MessageDigest { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Name { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_NameConstraints { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ObjectClass { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_OrganizationName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_OrganizationalUnitName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Owner { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKINIT_ClientAuth { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKINIT_Kdc { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKINIT_san { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_ClientAuth { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_CodeSigning { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_EmailProtection { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_IPSecEndSystem { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_IPSecTunnel { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_IPSecUser { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_OCSPSigning { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_ServerAuth { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_KP_TimeStamping { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_PQ_CPSuri { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PKIX_PQ_Unotice { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PhysicalDeliveryOfficeName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PkixAdCaIssuers { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PkixAdOcsp { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PolicyConstraints { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PolicyMappings { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PostOfficeBox { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PostalAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PostalCode { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PreferredDeliveryMethod { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PresentationAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_PrivateKeyUsagePeriod { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_ProtocolInformation { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_RFC822mailbox { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_RSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_RegisteredAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_RoleOccupant { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA1WithDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA1WithECDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA1WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA224 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA224WithDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA224WithECDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA256 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA256WithDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA256WithECDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA256WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA384 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA384WithECDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA384WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA512 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA512WithECDSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SHA512WithRSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SearchGuide { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SeeAlso { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SerialNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SigningTime { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_StateProvinceName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_StreetAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SubjectAltName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SubjectDirectoryAttributes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SubjectKeyIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_SupportedApplicationContext { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Surname { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_TelephoneNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_TelexNumber { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_TelexTerminalIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_Title { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UniqueIdentifier { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UniqueMember { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UnstructuredAddress { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UnstructuredName { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UserCertificate { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_UserPassword { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_VerisignCertificatePolicy { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_X9CM_DSA { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_X9CM_DSAWithSHA1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_X_121Address { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_domainComponent { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + KMFOID_userid { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; kmf_add_cert_eku; kmf_add_csr_eku; kmf_add_policy_to_db; diff --git a/usr/src/lib/libkrb5/common/mapfile-vers b/usr/src/lib/libkrb5/common/mapfile-vers index 42127c9ae3..645ee2df71 100644 --- a/usr/src/lib/libkrb5/common/mapfile-vers +++ b/usr/src/lib/libkrb5/common/mapfile-vers @@ -50,296 +50,296 @@ SYMBOL_SCOPE { global: # com_err.h - com_err { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - com_err_va { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - error_message { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + com_err { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + com_err_va { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + error_message { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; # krb5.h (non-private and non-deprecated) - krb5_c_encrypt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_decrypt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_encrypt_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_block_size { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_init_state { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_free_state { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_make_random_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_random_make_octets { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_string_to_key_with_params { + krb5_c_encrypt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_decrypt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_encrypt_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_block_size { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_init_state { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_free_state { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_make_random_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_random_make_octets { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_string_to_key_with_params { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_c_enctype_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_make_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_verify_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_checksum_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_keyed_checksum_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_valid_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_valid_cksumtype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_is_coll_proof_cksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_c_is_keyed_cksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_gen_new { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_initialize { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_destroy { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_close { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_store_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_retrieve_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_get_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_get_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_start_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_next_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_end_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_remove_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_set_flags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_get_type { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_get_type { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_get_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_close { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_get_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_start_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_next_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_end_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_init_context { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_init_secure_context { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_enctype_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_make_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_verify_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_checksum_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_keyed_checksum_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_valid_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_valid_cksumtype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_is_coll_proof_cksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_c_is_keyed_cksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_gen_new { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_initialize { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_destroy { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_close { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_store_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_retrieve_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_get_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_get_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_start_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_next_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_end_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_remove_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_set_flags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_get_type { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_get_type { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_get_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_close { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_get_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_start_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_next_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_end_seq_get { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_init_context { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_init_secure_context { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; krb5_free_context { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_default_tgs_enctypes { + krb5_set_default_tgs_enctypes { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_permitted_enctypes { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_is_thread_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_tgt_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_credentials { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_credentials_validate { + krb5_get_permitted_enctypes { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_is_thread_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_tgt_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_credentials { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_credentials_validate { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_credentials_renew { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_req { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_req_extended { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_rep { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_rep { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_priv { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_parse_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_unparse_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_unparse_name_ext { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_principal_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_address_search { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_address_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_address_order { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_realm_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_principal_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_init_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_keyblock_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_addresses { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_authdata { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_authenticator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_copy_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_server_rcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_build_principal_ext { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_build_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_resolve { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_default { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_keytab_entry_contents { + krb5_get_credentials_renew { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_req { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_req_extended { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_rep { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_rep { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_priv { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_parse_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_unparse_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_unparse_name_ext { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_principal_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_address_search { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_address_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_address_order { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_realm_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_principal_compare { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_init_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_keyblock_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_addresses { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_authdata { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_authenticator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_copy_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_server_rcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_build_principal_ext { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_build_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_resolve { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_default { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_keytab_entry_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_kt_remove_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_add_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_principal2salt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_resolve { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_set_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_default { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cc_copy_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_authenticator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_addresses { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_authdata { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_cred_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_checksum_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_keyblock_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_ap_rep_enc_part { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_data_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_unparsed_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_cksumtypes { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_us_timeofday { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_timeofday { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_os_localaddr { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_sname_to_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_change_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_password_using_ccache { + krb5_kt_remove_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_add_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_principal2salt { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_resolve { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_set_default_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_default { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cc_copy_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_authenticator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_addresses { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_authdata { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_error { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_cred_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_checksum { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_checksum_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_keyblock_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_ap_rep_enc_part { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_data_contents { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_unparsed_name { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_cksumtypes { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_us_timeofday { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_timeofday { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_os_localaddr { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_default_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_sname_to_principal { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_change_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_password_using_ccache { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_profile { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_req { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_read_service_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_priv { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_sendauth { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_recvauth { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_recvauth_version { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_ncred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_mk_1cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_rd_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_fwd_tgt_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_setflags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getflags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_set_checksum_func { + krb5_get_profile { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_req { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_read_service_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_safe { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_priv { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_sendauth { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_recvauth { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_recvauth_version { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_ncred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_mk_1cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_rd_cred { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_fwd_tgt_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_setflags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getflags { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_set_checksum_func { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_get_checksum_func { + krb5_auth_con_get_checksum_func { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_setaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_setports { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_setuseruserkey { + krb5_auth_con_setaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_setports { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_setuseruserkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_getkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getsendsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getrecvsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_setsendsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_setrecvsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getlocalseqnumber { + krb5_auth_con_getkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getsendsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getrecvsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_setsendsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_setrecvsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getlocalseqnumber { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_getremoteseqnumber { + krb5_auth_con_getremoteseqnumber { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_setrcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getrcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_getauthenticator { + krb5_auth_con_setrcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getrcache { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_getauthenticator { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_read_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_aname_to_localname { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_host_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_host_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kuserok { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_auth_con_genaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_real_time { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_salttype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_cksumtype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_timestamp { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_deltat { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_enctype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_salttype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_cksumtype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_timestamp_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_timestamp_to_sfstring { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_deltat_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_xfree_wrap { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_xfree { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_prompter_posix { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_init_creds_opt_init { + krb5_read_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_aname_to_localname { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_host_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_host_realm { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kuserok { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_auth_con_genaddrs { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_real_time { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_salttype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_cksumtype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_timestamp { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_deltat { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_enctype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_salttype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_cksumtype_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_timestamp_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_timestamp_to_sfstring { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_deltat_to_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_xfree_wrap { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_xfree { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_prompter_posix { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_init_creds_opt_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_tkt_life { + krb5_get_init_creds_opt_set_tkt_life { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_renew_life { + krb5_get_init_creds_opt_set_renew_life { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_forwardable { + krb5_get_init_creds_opt_set_forwardable { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_proxiable { + krb5_get_init_creds_opt_set_proxiable { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_etype_list { + krb5_get_init_creds_opt_set_etype_list { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_address_list { + krb5_get_init_creds_opt_set_address_list { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_init_creds_opt_set_preauth_list { - TYPE = FUNCTION; + krb5_get_init_creds_opt_set_preauth_list { + TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_opt_set_salt { + krb5_get_init_creds_opt_set_salt { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_password { + krb5_get_init_creds_password { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_init_creds_keytab { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_verify_init_creds_opt_init { + krb5_get_init_creds_keytab { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_verify_init_creds_opt_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_verify_init_creds_opt_set_ap_req_nofail { + krb5_verify_init_creds_opt_set_ap_req_nofail { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_verify_init_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_validated_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_renewed_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_decode_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_appdefault_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_appdefault_boolean { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_realm_iterator_create { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_realm_iterator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_realm_iterator_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_free_realm_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_prompt_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_use_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_init_allocated_keyblock { + krb5_verify_init_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_validated_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_renewed_creds { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_decode_ticket { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_appdefault_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_appdefault_boolean { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_realm_iterator_create { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_realm_iterator { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_realm_iterator_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_free_realm_string { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_prompt_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_use_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_init_allocated_keyblock { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_get_key_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_key_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_get_key_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_key_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_key_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_set_key_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_add_buffer { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_get_buffer { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_get_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_parse { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_pac_verify { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_key_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_key_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_get_key_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_key_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_key_data { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_set_key_length { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_add_buffer { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_free { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_get_buffer { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_get_types { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_init { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_parse { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_pac_verify { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; krb5_decode_authdata_container { TYPE = FUNCTION; FILTER = mech_krb5.so.1; @@ -350,15 +350,15 @@ SYMBOL_SCOPE { }; # krb5.h - priv/deprecated - krb5_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_use_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_string_to_key { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_use_enctype { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; krb5_checksum_size { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; - krb5_kt_free_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; + krb5_kt_free_entry { TYPE = FUNCTION; FILTER = mech_krb5.so.1 }; krb5_auth_con_getlocalsubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; - krb5_auth_con_getremotesubkey { + krb5_auth_con_getremotesubkey { TYPE = FUNCTION; FILTER = mech_krb5.so.1; }; diff --git a/usr/src/lib/libm/common/mapfile-vers b/usr/src/lib/libm/common/mapfile-vers index 4d1b411824..c5a23ae933 100644 --- a/usr/src/lib/libm/common/mapfile-vers +++ b/usr/src/lib/libm/common/mapfile-vers @@ -18,9 +18,9 @@ # # CDDL HEADER END # -# Copyright 2011 Nexenta Systems, Inc. All rights reserved. +# Copyright 2011 Nexenta Systems, Inc. All rights reserved. # -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Interface definition for libm.so.2 @@ -71,670 +71,681 @@ $add amd64 $endif SYMBOL_VERSION SUNW_1.3 { - global: - __isnanf; #LSARC/2003/658 - __isnanl; #LSARC/2003/658 - _isnan { FLAGS = NODYNSORT }; #LSARC/2003/658 - _isnand { FLAGS = NODYNSORT }; #LSARC/2003/658 - _isnanf { FLAGS = NODYNSORT }; #LSARC/2003/658 - _logb { FLAGS = NODYNSORT }; #LSARC/2003/658 - _modf { FLAGS = NODYNSORT }; #LSARC/2003/658 - _modff { FLAGS = NODYNSORT }; #LSARC/2003/658 - _nextafter { FLAGS = NODYNSORT }; #LSARC/2003/658 - _scalb { FLAGS = NODYNSORT }; #LSARC/2003/658 - isnand { FLAGS = NODYNSORT }; #LSARC/2003/658 - isnanf; #LSARC/2003/658 - isnanl; #LSARC/2003/658 + global: + __isnanf; #LSARC/2003/658 + __isnanl; #LSARC/2003/658 + _isnan { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _isnand { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _isnanf { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _logb { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _modf { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _modff { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _nextafter { FLAGS = NODYNSORT; }; #LSARC/2003/658 + _scalb { FLAGS = NODYNSORT; }; #LSARC/2003/658 + isnand { FLAGS = NODYNSORT; }; #LSARC/2003/658 + isnanf; #LSARC/2003/658 + isnanl; #LSARC/2003/658 } SUNW_1.2; SYMBOL_VERSION SUNW_1.2 { - global: - __acoshf; - __acoshl; - __asinhf; - __asinhl; - __atanhf; - __atanhl; - __cabs; - __cabsf; - __cabsl; - __cacos; - __cacosf; - __cacosh; - __cacoshf; - __cacoshl; - __cacosl; - __carg; - __cargf; - __cargl; - __casin; - __casinf; - __casinh; - __casinhf; - __casinhl; - __casinl; - __catan; - __catanf; - __catanh; - __catanhf; - __catanhl; - __catanl; - __cbrtf; - __cbrtl; - __ccos; - __ccosf; - __ccosh; - __ccoshf; - __ccoshl; - __ccosl; - __cexp; - __cexpf; - __cexpl; - __cimag; - __cimagf; - __cimagl; - __clog; - __clogf; - __clogl; - __conj; - __conjf; - __conjl; - __copysignf; - __copysignl; - __cpow; - __cpowf; - __cpowl; - __cproj; - __cprojf; - __cprojl; - __creal; - __crealf; - __creall; - __csin; - __csinf; - __csinh; - __csinhf; - __csinhl; - __csinl; - __csqrt; - __csqrtf; - __csqrtl; - __ctan; - __ctanf; - __ctanh; - __ctanhf; - __ctanhl; - __ctanl; - __erfcf; - __erfcl; - __erff; - __erfl; - __exp2; - __exp2f; - __exp2l; - __expm1f; - __expm1l; - __fdim; - __fdimf; - __fdiml; - __feclearexcept; - __fegetenv; - __fegetexceptflag; + global: + __acoshf; + __acoshl; + __asinhf; + __asinhl; + __atanhf; + __atanhl; + __cabs; + __cabsf; + __cabsl; + __cacos; + __cacosf; + __cacosh; + __cacoshf; + __cacoshl; + __cacosl; + __carg; + __cargf; + __cargl; + __casin; + __casinf; + __casinh; + __casinhf; + __casinhl; + __casinl; + __catan; + __catanf; + __catanh; + __catanhf; + __catanhl; + __catanl; + __cbrtf; + __cbrtl; + __ccos; + __ccosf; + __ccosh; + __ccoshf; + __ccoshl; + __ccosl; + __cexp; + __cexpf; + __cexpl; + __cimag; + __cimagf; + __cimagl; + __clog; + __clogf; + __clogl; + __conj; + __conjf; + __conjl; + __copysignf; + __copysignl; + __cpow; + __cpowf; + __cpowl; + __cproj; + __cprojf; + __cprojl; + __creal; + __crealf; + __creall; + __csin; + __csinf; + __csinh; + __csinhf; + __csinhl; + __csinl; + __csqrt; + __csqrtf; + __csqrtl; + __ctan; + __ctanf; + __ctanh; + __ctanhf; + __ctanhl; + __ctanl; + __erfcf; + __erfcl; + __erff; + __erfl; + __exp2; + __exp2f; + __exp2l; + __expm1f; + __expm1l; + __fdim; + __fdimf; + __fdiml; + __feclearexcept; + __fegetenv; + __fegetexceptflag; $if _x86 - __fegetprec; #LSARC/1996/175 + __fegetprec; #LSARC/1996/175 $endif - __fegetround; - __feholdexcept; - __fenv_dfl_env; #LSARC/1996/175 - __feraiseexcept; - __fesetenv; - __fesetexceptflag; + __fegetround; + __feholdexcept; + __fenv_dfl_env { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[25]; + }; + }; #LSARC/1996/175 + __feraiseexcept; + __fesetenv; + __fesetexceptflag; $if _x86 - __fesetprec; #LSARC/1996/175 + __fesetprec; #LSARC/1996/175 $endif - __fesetround; - __fetestexcept; - __feupdateenv; - __fex_get_handling; #LSARC/1996/175 - __fex_get_log; #LSARC/1996/175 - __fex_get_log_depth; #LSARC/1996/175 - __fex_getexcepthandler; #LSARC/1996/175 - __fex_log_entry; #LSARC/1996/175 - __fex_merge_flags; #LSARC/1996/175 - __fex_set_handling; #LSARC/1996/175 - __fex_set_log; #LSARC/1996/175 - __fex_set_log_depth; #LSARC/1996/175 - __fex_setexcepthandler; #LSARC/1996/175 - __fma; - __fmaf; - __fmal; - __fmax; - __fmaxf; - __fmaxl; - __fmin; - __fminf; - __fminl; - __frexp; - __gammaf; #LSARC/2003/279 - __gammaf_r; #LSARC/2003/279 - __gammal; #LSARC/2003/279 - __gammal_r; #LSARC/2003/279 - __hypotf; - __hypotl; - __ilogbf; - __ilogbl; - __j0f; #LSARC/2003/279 - __j0l; #LSARC/2003/279 - __j1f; #LSARC/2003/279 - __j1l; #LSARC/2003/279 - __jnf; #LSARC/2003/279 - __jnl; #LSARC/2003/279 - __ldexp; - __lgammaf; - __lgammaf_r; #LSARC/2003/279 - __lgammal; - __lgammal_r; #LSARC/2003/279 + __fesetround; + __fetestexcept; + __feupdateenv; + __fex_get_handling; #LSARC/1996/175 + __fex_get_log; #LSARC/1996/175 + __fex_get_log_depth; #LSARC/1996/175 + __fex_getexcepthandler; #LSARC/1996/175 + __fex_log_entry; #LSARC/1996/175 + __fex_merge_flags; #LSARC/1996/175 + __fex_set_handling; #LSARC/1996/175 + __fex_set_log; #LSARC/1996/175 + __fex_set_log_depth; #LSARC/1996/175 + __fex_setexcepthandler; #LSARC/1996/175 + __fma; + __fmaf; + __fmal; + __fmax; + __fmaxf; + __fmaxl; + __fmin; + __fminf; + __fminl; + __frexp; + __gammaf; #LSARC/2003/279 + __gammaf_r; #LSARC/2003/279 + __gammal; #LSARC/2003/279 + __gammal_r; #LSARC/2003/279 + __hypotf; + __hypotl; + __ilogbf; + __ilogbl; + __j0f; #LSARC/2003/279 + __j0l; #LSARC/2003/279 + __j1f; #LSARC/2003/279 + __j1l; #LSARC/2003/279 + __jnf; #LSARC/2003/279 + __jnl; #LSARC/2003/279 + __ldexp; + __lgammaf; + __lgammaf_r; #LSARC/2003/279 + __lgammal; + __lgammal_r; #LSARC/2003/279 $if amd64 || sparcv9 - __llrint { FLAGS = NODYNSORT }; - __llrintf { FLAGS = NODYNSORT }; - __llrintl { FLAGS = NODYNSORT }; - __llround { FLAGS = NODYNSORT }; - __llroundf { FLAGS = NODYNSORT }; - __llroundl { FLAGS = NODYNSORT }; + __llrint { FLAGS = NODYNSORT; }; + __llrintf { FLAGS = NODYNSORT; }; + __llrintl { FLAGS = NODYNSORT; }; + __llround { FLAGS = NODYNSORT; }; + __llroundf { FLAGS = NODYNSORT; }; + __llroundl { FLAGS = NODYNSORT; }; $else - __llrint; - __llrintf; - __llrintl; - __llround; - __llroundf; - __llroundl; + __llrint; + __llrintf; + __llrintl; + __llround; + __llroundf; + __llroundl; $endif - __log1pf; - __log1pl; - __log2; - __log2f; - __log2l; - __logbf; - __logbl; + __log1pf; + __log1pl; + __log2; + __log2f; + __log2l; + __logbf; + __logbl; $if amd64 || sparcv9 - __lrint { FLAGS = NODYNSORT }; - __lrintf { FLAGS = NODYNSORT }; - __lrintl { FLAGS = NODYNSORT }; - __lround { FLAGS = NODYNSORT }; - __lroundf { FLAGS = NODYNSORT }; - __lroundl { FLAGS = NODYNSORT }; + __lrint { FLAGS = NODYNSORT; }; + __lrintf { FLAGS = NODYNSORT; }; + __lrintl { FLAGS = NODYNSORT; }; + __lround { FLAGS = NODYNSORT; }; + __lroundf { FLAGS = NODYNSORT; }; + __lroundl { FLAGS = NODYNSORT; }; $else - __lrint; - __lrintf; - __lrintl; - __lround; - __lroundf; - __lroundl; + __lrint; + __lrintf; + __lrintl; + __lround; + __lroundf; + __lroundl; $endif - __modf; - __nan; - __nanf; - __nanl; - __nearbyint; - __nearbyintf; - __nearbyintl; - __nextafterf; - __nextafterl; - __nexttoward; - __nexttowardf; - __nexttowardl; - __remainderf; - __remainderl; - __remquo; - __remquof; - __remquol; - __rintf; - __rintl; - __round; - __roundf; - __roundl; - __scalbf; #LSARC/2003/279 - __scalbl; #LSARC/2003/279 - __scalbln; - __scalblnf; - __scalblnl; - __scalbnf; - __scalbnl; - __signgamf; #LSARC/2003/279 - __signgaml; #LSARC/2003/279 - __significandf; #LSARC/2003/279 - __significandl; #LSARC/2003/279 - __sincos; #LSARC/2003/279 - __sincosf; #LSARC/2003/279 - __sincosl; #LSARC/2003/279 - __tgamma; - __tgammaf; - __tgammal; - __trunc; - __truncf; - __truncl; - __xpg6 { FLAGS = NODIRECT }; #private contract with libc group - __y0f; #LSARC/2003/279 - __y0l; #LSARC/2003/279 - __y1f; #LSARC/2003/279 - __y1l; #LSARC/2003/279 - __ynf; #LSARC/2003/279 - __ynl; #LSARC/2003/279 - acosf; - acoshf; - acoshl; - acosl; - asinf; - asinhf; - asinhl; - asinl; - atan2f; - atan2l; - atanf; - atanhf; - atanhl; - atanl; - cabs; - cabsf; - cabsl; - cacos; - cacosf; - cacosh; - cacoshf; - cacoshl; - cacosl; - carg; - cargf; - cargl; - casin; - casinf; - casinh; - casinhf; - casinhl; - casinl; - catan; - catanf; - catanh; - catanhf; - catanhl; - catanl; - cbrtf; - cbrtl; - ccos; - ccosf; - ccosh; - ccoshf; - ccoshl; - ccosl; - ceilf; - ceill; - cexp; - cexpf; - cexpl; - cimag; - cimagf; - cimagl; - clog; - clogf; - clogl; - conj; - conjf; - conjl; - copysignf; - copysignl; - cosf; - coshf; - coshl; - cosl; - cpow; - cpowf; - cpowl; - cproj; - cprojf; - cprojl; - creal; - crealf; - creall; - csin; - csinf; - csinh; - csinhf; - csinhl; - csinl; - csqrt; - csqrtf; - csqrtl; - ctan; - ctanf; - ctanh; - ctanhf; - ctanhl; - ctanl; - erfcf; - erfcl; - erff; - erfl; - exp2; - exp2f; - exp2l; - expf; - expl; - expm1f; - expm1l; - fabsf; - fabsl; - fdim; - fdimf; - fdiml; - feclearexcept; - fegetenv; - fegetexceptflag; + __modf; + __nan; + __nanf; + __nanl; + __nearbyint; + __nearbyintf; + __nearbyintl; + __nextafterf; + __nextafterl; + __nexttoward; + __nexttowardf; + __nexttowardl; + __remainderf; + __remainderl; + __remquo; + __remquof; + __remquol; + __rintf; + __rintl; + __round; + __roundf; + __roundl; + __scalbf; #LSARC/2003/279 + __scalbl; #LSARC/2003/279 + __scalbln; + __scalblnf; + __scalblnl; + __scalbnf; + __scalbnl; + __signgamf { ASSERT = { BINDING = WEAK; ALIAS = signgamf; }; }; #LSARC/2003/279 + __signgaml { ASSERT = { BINDING = WEAK; ALIAS = signgaml; }; }; #LSARC/2003/279 + __significandf; #LSARC/2003/279 + __significandl; #LSARC/2003/279 + __sincos; #LSARC/2003/279 + __sincosf; #LSARC/2003/279 + __sincosl; #LSARC/2003/279 + __tgamma; + __tgammaf; + __tgammal; + __trunc; + __truncf; + __truncl; + __xpg6 { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; #private contract with libc group + __y0f; #LSARC/2003/279 + __y0l; #LSARC/2003/279 + __y1f; #LSARC/2003/279 + __y1l; #LSARC/2003/279 + __ynf; #LSARC/2003/279 + __ynl; #LSARC/2003/279 + acosf; + acoshf; + acoshl; + acosl; + asinf; + asinhf; + asinhl; + asinl; + atan2f; + atan2l; + atanf; + atanhf; + atanhl; + atanl; + cabs; + cabsf; + cabsl; + cacos; + cacosf; + cacosh; + cacoshf; + cacoshl; + cacosl; + carg; + cargf; + cargl; + casin; + casinf; + casinh; + casinhf; + casinhl; + casinl; + catan; + catanf; + catanh; + catanhf; + catanhl; + catanl; + cbrtf; + cbrtl; + ccos; + ccosf; + ccosh; + ccoshf; + ccoshl; + ccosl; + ceilf; + ceill; + cexp; + cexpf; + cexpl; + cimag; + cimagf; + cimagl; + clog; + clogf; + clogl; + conj; + conjf; + conjl; + copysignf; + copysignl; + cosf; + coshf; + coshl; + cosl; + cpow; + cpowf; + cpowl; + cproj; + cprojf; + cprojl; + creal; + crealf; + creall; + csin; + csinf; + csinh; + csinhf; + csinhl; + csinl; + csqrt; + csqrtf; + csqrtl; + ctan; + ctanf; + ctanh; + ctanhf; + ctanhl; + ctanl; + erfcf; + erfcl; + erff; + erfl; + exp2; + exp2f; + exp2l; + expf; + expl; + expm1f; + expm1l; + fabsf; + fabsl; + fdim; + fdimf; + fdiml; + feclearexcept; + fegetenv; + fegetexceptflag; $if _x86 - fegetprec; #LSARC/1996/175 + fegetprec; #LSARC/1996/175 $endif - fegetround; - feholdexcept; - feraiseexcept; - fesetenv; - fesetexceptflag; + fegetround; + feholdexcept; + feraiseexcept; + fesetenv; + fesetexceptflag; $if _x86 - fesetprec; #LSARC/1996/175 + fesetprec; #LSARC/1996/175 $endif - fesetround; - fetestexcept; - feupdateenv; - fex_get_handling; #LSARC/1996/175 - fex_get_log; #LSARC/1996/175 - fex_get_log_depth; #LSARC/1996/175 - fex_getexcepthandler; #LSARC/1996/175 - fex_log_entry; #LSARC/1996/175 - fex_merge_flags; #LSARC/1996/175 - fex_set_handling; #LSARC/1996/175 - fex_set_log; #LSARC/1996/175 - fex_set_log_depth; #LSARC/1996/175 - fex_setexcepthandler; #LSARC/1996/175 - floorf; - floorl; - fma; - fmaf; - fmal; - fmax; - fmaxf; - fmaxl; - fmin; - fminf; - fminl; - fmodf; - fmodl; - frexp; - frexpf; - frexpl; - gammaf; #LSARC/2003/279 - gammaf_r; #LSARC/2003/279 - gammal; #LSARC/2003/279 - gammal_r; #LSARC/2003/279 - hypotf; - hypotl; - ilogbf; - ilogbl; - j0f; #LSARC/2003/279 - j0l; #LSARC/2003/279 - j1f; #LSARC/2003/279 - j1l; #LSARC/2003/279 - jnf; #LSARC/2003/279 - jnl; #LSARC/2003/279 - ldexp; - ldexpf; - ldexpl; - lgammaf; - lgammaf_r; #LSARC/2003/279 - lgammal; - lgammal_r; #LSARC/2003/279 + fesetround; + fetestexcept; + feupdateenv; + fex_get_handling; #LSARC/1996/175 + fex_get_log; #LSARC/1996/175 + fex_get_log_depth; #LSARC/1996/175 + fex_getexcepthandler; #LSARC/1996/175 + fex_log_entry; #LSARC/1996/175 + fex_merge_flags; #LSARC/1996/175 + fex_set_handling; #LSARC/1996/175 + fex_set_log; #LSARC/1996/175 + fex_set_log_depth; #LSARC/1996/175 + fex_setexcepthandler; #LSARC/1996/175 + floorf; + floorl; + fma; + fmaf; + fmal; + fmax; + fmaxf; + fmaxl; + fmin; + fminf; + fminl; + fmodf; + fmodl; + frexp; + frexpf; + frexpl; + gammaf; #LSARC/2003/279 + gammaf_r; #LSARC/2003/279 + gammal; #LSARC/2003/279 + gammal_r; #LSARC/2003/279 + hypotf; + hypotl; + ilogbf; + ilogbl; + j0f; #LSARC/2003/279 + j0l; #LSARC/2003/279 + j1f; #LSARC/2003/279 + j1l; #LSARC/2003/279 + jnf; #LSARC/2003/279 + jnl; #LSARC/2003/279 + ldexp; + ldexpf; + ldexpl; + lgammaf; + lgammaf_r; #LSARC/2003/279 + lgammal; + lgammal_r; #LSARC/2003/279 $if amd64 || sparcv9 - llrint { FLAGS = NODYNSORT }; - llrintf { FLAGS = NODYNSORT }; - llrintl { FLAGS = NODYNSORT }; - llround { FLAGS = NODYNSORT }; - llroundf { FLAGS = NODYNSORT }; - llroundl { FLAGS = NODYNSORT }; + llrint { FLAGS = NODYNSORT; }; + llrintf { FLAGS = NODYNSORT; }; + llrintl { FLAGS = NODYNSORT; }; + llround { FLAGS = NODYNSORT; }; + llroundf { FLAGS = NODYNSORT; }; + llroundl { FLAGS = NODYNSORT; }; $else - llrint; - llrintf; - llrintl; - llround; - llroundf; - llroundl; + llrint; + llrintf; + llrintl; + llround; + llroundf; + llroundl; $endif - log10f; - log10l; - log1pf; - log1pl; - log2; - log2f; - log2l; - logbf; - logbl; - logf; - logl; - lrint; - lrintf; - lrintl; - lround; - lroundf; - lroundl; - modf; - modff; - modfl; - nan; - nanf; - nanl; - nearbyint; - nearbyintf; - nearbyintl; - nextafterf; - nextafterl; - nexttoward; - nexttowardf; - nexttowardl; - powf; - powl; - remainderf; - remainderl; - remquo; - remquof; - remquol; - rintf; - rintl; - round; - roundf; - roundl; - scalbf; #LSARC/2003/279 - scalbl; #LSARC/2003/279 - scalbln; - scalblnf; - scalblnl; - scalbnf; - scalbnl; - signgamf; #LSARC/2003/279 - signgaml; #LSARC/2003/279 - significandf; #LSARC/2003/279 - significandl; #LSARC/2003/279 - sincos; #LSARC/2003/279 - sincosf; #LSARC/2003/279 - sincosl; #LSARC/2003/279 - sinf; - sinhf; - sinhl; - sinl; - sqrtf; - sqrtl; - tanf; - tanhf; - tanhl; - tanl; - tgamma; - tgammaf; - tgammal; - trunc; - truncf; - truncl; - y0f; #LSARC/2003/279 - y0l; #LSARC/2003/279 - y1f; #LSARC/2003/279 - y1l; #LSARC/2003/279 - ynf; #LSARC/2003/279 - ynl; #LSARC/2003/279 + log10f; + log10l; + log1pf; + log1pl; + log2; + log2f; + log2l; + logbf; + logbl; + logf; + logl; + lrint; + lrintf; + lrintl; + lround; + lroundf; + lroundl; + modf; + modff; + modfl; + nan; + nanf; + nanl; + nearbyint; + nearbyintf; + nearbyintl; + nextafterf; + nextafterl; + nexttoward; + nexttowardf; + nexttowardl; + powf; + powl; + remainderf; + remainderl; + remquo; + remquof; + remquol; + rintf; + rintl; + round; + roundf; + roundl; + scalbf; #LSARC/2003/279 + scalbl; #LSARC/2003/279 + scalbln; + scalblnf; + scalblnl; + scalbnf; + scalbnl; + signgamf { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; #LSARC/2003/279 + signgaml { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; #LSARC/2003/279 + significandf; #LSARC/2003/279 + significandl; #LSARC/2003/279 + sincos; #LSARC/2003/279 + sincosf; #LSARC/2003/279 + sincosl; #LSARC/2003/279 + sinf; + sinhf; + sinhl; + sinl; + sqrtf; + sqrtl; + tanf; + tanhf; + tanhl; + tanl; + tgamma; + tgammaf; + tgammal; + trunc; + truncf; + truncl; + y0f; #LSARC/2003/279 + y0l; #LSARC/2003/279 + y1f; #LSARC/2003/279 + y1l; #LSARC/2003/279 + ynf; #LSARC/2003/279 + ynl; #LSARC/2003/279 } SUNW_1.1.1; SYMBOL_VERSION SUNW_1.1.1 { - global: - __acosf; - __acosl; - __asinf; - __asinl; - __atan2f; - __atan2l; - __atanf; - __atanl; - __ceilf; - __ceill; - __cosf; - __coshf; - __coshl; - __cosl; - __expf; - __expl; - __fabsf; - __fabsl; - __floorf; - __floorl; - __fmodf; - __fmodl; - __frexpf; - __frexpl; - __ldexpf; - __ldexpl; - __log10f; - __log10l; - __logf; - __logl; - __modff; - __modfl; - __powf; - __powl; - __sinf; - __sinhf; - __sinhl; - __sinl; - __sqrtf; - __sqrtl; - __tanf; - __tanhf; - __tanhl; - __tanl; + global: + __acosf; + __acosl; + __asinf; + __asinl; + __atan2f; + __atan2l; + __atanf; + __atanl; + __ceilf; + __ceill; + __cosf; + __coshf; + __coshl; + __cosl; + __expf; + __expl; + __fabsf; + __fabsl; + __floorf; + __floorl; + __fmodf; + __fmodl; + __frexpf; + __frexpl; + __ldexpf; + __ldexpl; + __log10f; + __log10l; + __logf; + __logl; + __modff; + __modfl; + __powf; + __powl; + __sinf; + __sinhf; + __sinhl; + __sinl; + __sqrtf; + __sqrtl; + __tanf; + __tanhf; + __tanhl; + __tanl; } SUNW_1.1; SYMBOL_VERSION SUNW_1.1 { - global: - __acos; - __acosh; - __asin; - __asinh; - __atan; - __atan2; - __atanh; - __cbrt; - __ceil; - __copysign; - __cos; - __cosh; - __erf; - __erfc; - __exp; - __expm1; - __fabs; - __floor; - __fmod; - __gamma; - __gamma_r; - __hypot; - __ilogb; - __isnan; - __j0; - __j1; - __jn; - __lgamma; - __lgamma_r; - __log; - __log10; - __log1p; - __logb; - __nextafter; - __pow; - __remainder; - __rint; - __scalb; - __scalbn; - __signgam; - __significand; - __sin; - __sinh; - __sqrt; - __tan; - __tanh; - __y0; - __y1; - __yn; - acos; - acosh; - asin; - asinh; - atan; - atan2; - atanh; - cbrt; - ceil; - copysign; - cos; - cosh; - erf; - erfc; - exp; - expm1; - fabs; - floor; - fmod; - gamma; - gamma_r; - hypot; - ilogb; - isnan; - j0; - j1; - jn; - lgamma; - lgamma_r; - log; - log10; - log1p; - logb; - matherr { FLAGS = NODIRECT }; - nextafter; - pow; - remainder; - rint; - scalb; - scalbn; - signgam; - significand; - sin; - sinh; - sqrt; - tan; - tanh; - y0; - y1; - yn; + global: + __acos; + __acosh; + __asin; + __asinh; + __atan; + __atan2; + __atanh; + __cbrt; + __ceil; + __copysign; + __cos; + __cosh; + __erf; + __erfc; + __exp; + __expm1; + __fabs; + __floor; + __fmod; + __gamma; + __gamma_r; + __hypot; + __ilogb; + __isnan; + __j0; + __j1; + __jn; + __lgamma; + __lgamma_r; + __log; + __log10; + __log1p; + __logb; + __nextafter; + __pow; + __remainder; + __rint; + __scalb; + __scalbn; + __signgam { ASSERT = { BINDING = WEAK; ALIAS = signgam; }; }; + __significand; + __sin; + __sinh; + __sqrt; + __tan; + __tanh; + __y0; + __y1; + __yn; + acos; + acosh; + asin; + asinh; + atan; + atan2; + atanh; + cbrt; + ceil; + copysign; + cos; + cosh; + erf; + erfc; + exp; + expm1; + fabs; + floor; + fmod; + gamma; + gamma_r; + hypot; + ilogb; + isnan; + j0; + j1; + jn; + lgamma; + lgamma_r; + log; + log10; + log1p; + logb; + matherr { FLAGS = NODIRECT; }; + nextafter; + pow; + remainder; + rint; + scalb; + scalbn; + signgam { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + significand; + sin; + sinh; + sqrt; + tan; + tanh; + y0; + y1; + yn; }; $if amd64 || sparcv9 @@ -743,8 +754,19 @@ $else SYMBOL_VERSION SUNWprivate_1.3 { $endif global: - __libm_mt_fex_sync; # -lmtsk - __mt_fex_sync; # -lmtsk + # -lmtsk + __libm_mt_fex_sync { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __mt_fex_sync { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize + }; + }; $if amd64 || sparcv9 } SUNWprivate_1.1; $else @@ -758,21 +780,26 @@ $endif SYMBOL_VERSION SUNWprivate_1.1 { global: - _lib_version; + _lib_version { + ASSERT = { + TYPE = OBJECT; + SIZE = 4 + }; + }; __libm__rem_pio2; __libm__rem_pio2m; # anything else is local local: # For symbols with multiple names, move the less preferred # names out of .SUNW_dynsymsort - feclearexcept96 { FLAGS = NODYNSORT }; - feraiseexcept96 { FLAGS = NODYNSORT }; - fetestexcept96 { FLAGS = NODYNSORT }; + feclearexcept96 { FLAGS = NODYNSORT }; + feraiseexcept96 { FLAGS = NODYNSORT }; + fetestexcept96 { FLAGS = NODYNSORT }; fegetexceptflag96 { FLAGS = NODYNSORT }; fesetexceptflag96 { FLAGS = NODYNSORT }; - feupdateenv96 { FLAGS = NODYNSORT }; - fegetenv96 { FLAGS = NODYNSORT }; - fesetenv96 { FLAGS = NODYNSORT }; - fegetround96 { FLAGS = NODYNSORT }; + feupdateenv96 { FLAGS = NODYNSORT }; + fegetenv96 { FLAGS = NODYNSORT }; + fesetenv96 { FLAGS = NODYNSORT }; + fegetround96 { FLAGS = NODYNSORT }; *; # symbols not mentioned in this file are scoped out }; diff --git a/usr/src/lib/libm1/common/mapfile-vers b/usr/src/lib/libm1/common/mapfile-vers index da5e870241..a34aa3a8a2 100644 --- a/usr/src/lib/libm1/common/mapfile-vers +++ b/usr/src/lib/libm1/common/mapfile-vers @@ -18,9 +18,9 @@ # # CDDL HEADER END # -# Copyright 2011 Nexenta Systems, Inc. All rights reserved. +# Copyright 2011 Nexenta Systems, Inc. All rights reserved. # -# Copyright 2006 Sun Microsystems, Inc. All rights reserved. +# Copyright 2006 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # Interface definition for libm.so.1 @@ -71,169 +71,174 @@ $add amd64 $endif SYMBOL_VERSION SUNW_1.1.1 { - global: - __acosf; - __acosl; - __asinf; - __asinl; - __atan2f; - __atan2l; - __atanf; - __atanl; - __ceilf; - __ceill; - __cosf; - __coshf; - __coshl; - __cosl; - __expf; - __expl; - __fabsf; - __fabsl; - __floorf; - __floorl; - __fmodf; - __fmodl; - __frexpf; - __frexpl; - __ldexpf; - __ldexpl; - __log10f; - __log10l; - __logf; - __logl; - __modff; - __modfl; - __powf; - __powl; - __sinf; - __sinhf; - __sinhl; - __sinl; - __sqrtf; - __sqrtl; - __tanf; - __tanhf; - __tanhl; - __tanl; + global: + __acosf; + __acosl; + __asinf; + __asinl; + __atan2f; + __atan2l; + __atanf; + __atanl; + __ceilf; + __ceill; + __cosf; + __coshf; + __coshl; + __cosl; + __expf; + __expl; + __fabsf; + __fabsl; + __floorf; + __floorl; + __fmodf; + __fmodl; + __frexpf; + __frexpl; + __ldexpf; + __ldexpl; + __log10f; + __log10l; + __logf; + __logl; + __modff; + __modfl; + __powf; + __powl; + __sinf; + __sinhf; + __sinhl; + __sinl; + __sqrtf; + __sqrtl; + __tanf; + __tanhf; + __tanhl; + __tanl; } SUNW_1.1; SYMBOL_VERSION SUNW_1.1 { - global: - __acos; - __acosh; - __asin; - __asinh; - __atan; - __atan2; - __atanh; - __cbrt; - __ceil; - __copysign; - __cos; - __cosh; - __erf; - __erfc; - __exp; - __expm1; - __fabs; - __floor; - __fmod; - __gamma; - __gamma_r; - __hypot; - __ilogb; - __isnan; - __j0; - __j1; - __jn; - __lgamma; - __lgamma_r; - __log; - __log10; - __log1p; - __logb; - __nextafter; - __pow; - __remainder; - __rint; - __scalb; - __scalbn; - __signgam; - __significand; - __sin; - __sinh; - __sqrt; - __tan; - __tanh; - __y0; - __y1; - __yn; - acos; - acosh; - asin; - asinh; - atan; - atan2; - atanh; - cbrt; - ceil; - copysign; - cos; - cosh; - erf; - erfc; - exp; - expm1; - fabs; - floor; - fmod; - gamma; - gamma_r; - hypot; - ilogb; - isnan; - j0; - j1; - jn; - lgamma; - lgamma_r; - log; - log10; - log1p; - logb; - matherr; - nextafter; - pow; - remainder; - rint; - scalb; - scalbn; - signgam; - significand; - sin; - sinh; - sqrt; - tan; - tanh; - y0; - y1; - yn; + global: + __acos; + __acosh; + __asin; + __asinh; + __atan; + __atan2; + __atanh; + __cbrt; + __ceil; + __copysign; + __cos; + __cosh; + __erf; + __erfc; + __exp; + __expm1; + __fabs; + __floor; + __fmod; + __gamma; + __gamma_r; + __hypot; + __ilogb; + __isnan; + __j0; + __j1; + __jn; + __lgamma; + __lgamma_r; + __log; + __log10; + __log1p; + __logb; + __nextafter; + __pow; + __remainder; + __rint; + __scalb; + __scalbn; + __signgam { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + __significand; + __sin; + __sinh; + __sqrt; + __tan; + __tanh; + __y0; + __y1; + __yn; + acos; + acosh; + asin; + asinh; + atan; + atan2; + atanh; + cbrt; + ceil; + copysign; + cos; + cosh; + erf; + erfc; + exp; + expm1; + fabs; + floor; + fmod; + gamma; + gamma_r; + hypot; + ilogb; + isnan; + j0; + j1; + jn; + lgamma; + lgamma_r; + log; + log10; + log1p; + logb; + matherr; + nextafter; + pow; + remainder; + rint; + scalb; + scalbn; + signgam { + ASSERT = { + BINDING = WEAK; + ALIAS = __signgam; + }; + }; + significand; + sin; + sinh; + sqrt; + tan; + tanh; + y0; + y1; + yn; }; $if i386 SYMBOL_VERSION SUNWprivate_1.2 { - global: - __libm_errno; # SC3.0.1 -lmopt + global: + __libm_errno; # SC3.0.1 -lmopt } SUNWprivate_1.1; $endif SYMBOL_VERSION SUNWprivate_1.1 { - global: - _lib_version; - __libm__rem_pio2; - __libm__rem_pio2m; + global: + _lib_version { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + __libm__rem_pio2; + __libm__rem_pio2m; # anything else is local - local: - *; # symbols not mentioned in this file are scoped out + local: + *; # symbols not mentioned in this file are scoped out }; diff --git a/usr/src/lib/libmd/common/mapfile-vers b/usr/src/lib/libmd/common/mapfile-vers index 39578d4c6d..174330b944 100644 --- a/usr/src/lib/libmd/common/mapfile-vers +++ b/usr/src/lib/libmd/common/mapfile-vers @@ -84,24 +84,24 @@ SYMBOL_VERSION SUNW_1.1 { MD4Init; MD4Update; md5_calc; - MD5Final { FLAGS = NODIRECT }; # Addr interpose from testsuite - MD5Init { FLAGS = NODIRECT }; # Addr interpose from testsuite - MD5Update { FLAGS = NODIRECT }; # Addr interpose from testsuite + MD5Final { FLAGS = NODIRECT; }; # Addr interpose from testsuite + MD5Init { FLAGS = NODIRECT; }; # Addr interpose from testsuite + MD5Update { FLAGS = NODIRECT; }; # Addr interpose from testsuite SHA1Final; SHA1Init; SHA1Update; - SHA256Final { FLAGS = NODYNSORT }; + SHA256Final { FLAGS = NODYNSORT; }; SHA256Init; - SHA256Update { FLAGS = NODYNSORT }; + SHA256Update { FLAGS = NODYNSORT; }; SHA2Final; SHA2Init; SHA2Update; - SHA384Final { FLAGS = NODYNSORT }; + SHA384Final { FLAGS = NODYNSORT; }; SHA384Init; - SHA384Update { FLAGS = NODYNSORT }; - SHA512Final { FLAGS = NODYNSORT }; + SHA384Update { FLAGS = NODYNSORT; }; + SHA512Final { FLAGS = NODYNSORT; }; SHA512Init; - SHA512Update { FLAGS = NODYNSORT }; + SHA512Update { FLAGS = NODYNSORT; }; }; SYMBOL_VERSION ILLUMOSprivate { diff --git a/usr/src/lib/libmlrpc/common/mapfile-vers b/usr/src/lib/libmlrpc/common/mapfile-vers index 21fee6d1ca..352c9563ec 100644 --- a/usr/src/lib/libmlrpc/common/mapfile-vers +++ b/usr/src/lib/libmlrpc/common/mapfile-vers @@ -49,8 +49,8 @@ SYMBOL_VERSION SUNWprivate { mlrpc_clh_unbind; # Allow debug/test programs to provide these. - ndo_printf { FLAGS = NODIRECT }; - ndo_trace { FLAGS = NODIRECT }; + ndo_printf { FLAGS = NODIRECT; }; + ndo_trace { FLAGS = NODIRECT; }; ndr_buf_decode; ndr_buf_fini; @@ -96,20 +96,39 @@ SYMBOL_VERSION SUNWprivate { nds_destruct; nds_initialize; - ndt__char; - ndt_s_char; - ndt__uchar; - ndt_s_uchar; - ndt__wchar; - ndt_s_wchar; - ndt__short; - ndt_s_short; - ndt__ushort; - ndt_s_ushort; - ndt__long; - ndt_s_long; - ndt__ulong; - ndt_s_ulong; +$if _ELF32 + ndt__char { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_char { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__uchar { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_uchar { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__wchar { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_wchar { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__short { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_short { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__ushort { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_ushort { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__long { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_long { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt__ulong { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; + ndt_s_ulong { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; +$elif _ELF64 + ndt__char { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_char { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__uchar { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_uchar { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__wchar { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_wchar { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__short { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_short { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__ushort { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_ushort { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__long { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_long { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt__ulong { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; + ndt_s_ulong { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; +$else +$error unknown ELFCLASS +$endif local: *; diff --git a/usr/src/lib/libndmp/common/mapfile-vers b/usr/src/lib/libndmp/common/mapfile-vers index 84604dd12d..40b1ca78d7 100644 --- a/usr/src/lib/libndmp/common/mapfile-vers +++ b/usr/src/lib/libndmp/common/mapfile-vers @@ -10,10 +10,10 @@ # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: -# - Redistributions of source code must retain the above copyright +# - Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # -# - Redistributions in binary form must reproduce the above copyright +# - Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. @@ -61,13 +61,13 @@ SYMBOL_VERSION SUNWprivate_1.1 { ndmp_get_session_info_free; ndmp_get_stats; ndmp_get_prop; - ndmp_set_prop; + ndmp_set_prop; ndmp_service_refresh; ndmp_door_status; ndmp_base64_encode; ndmp_base64_decode; ndmp_strerror; - ndmp_errno; + ndmp_errno { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; ndmp_door_decode_start; ndmp_door_decode_finish; ndmp_door_encode_start; diff --git a/usr/src/lib/libnisdb/mapfile-vers b/usr/src/lib/libnisdb/mapfile-vers index 15a6129269..deee02c155 100644 --- a/usr/src/lib/libnisdb/mapfile-vers +++ b/usr/src/lib/libnisdb/mapfile-vers @@ -54,7 +54,13 @@ SYMBOL_VERSION SUNWprivate_2.1 { assertExclusive; beginTransaction; bp2buf; - cons; + cons { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; createQuery; db_abort_merge_dict; db_add_entry; @@ -110,10 +116,31 @@ SYMBOL_VERSION SUNWprivate_2.1 { init_yptol_flag; internalTableName; internal_table_name; - justTesting; - ldapConfig; - ldapDBTableMapping; - ldapMappingList; + justTesting { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; + ldapConfig { + ASSERT = { + TYPE = OBJECT; + SIZE = 60; + }; + }; + ldapDBTableMapping { + ASSERT = { + TYPE = OBJECT; + SIZE = 140; + }; + }; + ldapMappingList { + ASSERT = { + TYPE = OBJECT; + SIZE = 340; + }; + }; loadAllLDAP; lock_core; lock_map; @@ -122,7 +149,13 @@ SYMBOL_VERSION SUNWprivate_2.1 { __make_legal; mapFromLDAP; mapToLDAP; - mflag; + mflag { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; __nisdb_get_tsd; __nisdb_lock_report; __nisdb_rlock; @@ -144,10 +177,28 @@ SYMBOL_VERSION SUNWprivate_2.1 { __nis_scan_table_mt; __nis_ulock_db_table; __nis_ulock_hash_table; - nogecos; - nopw; - noshell; - numMisaligned; + nogecos { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; + nopw { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; + noshell { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; + numMisaligned { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; objFromLDAP; objToLDAP; p2buf; @@ -160,7 +211,13 @@ SYMBOL_VERSION SUNWprivate_2.1 { remove_root_object; rename_map; sc2buf; - setColumnsDuringConfig; + setColumnsDuringConfig { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; sfree; shim_changepasswd; shim_dbm_close; @@ -173,23 +230,40 @@ SYMBOL_VERSION SUNWprivate_2.1 { shim_dbm_open; shim_dbm_store; shim_exit; - single; + single { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; socket; - tbl_prototype; + tbl_prototype { + ASSERT = { + TYPE = OBJECT; + SIZE = 24; + }; + }; unlock_core; unlock_map; unlockTransLog; update_root_object; validloginshell; validstr; - verbose; + verbose { + ASSERT = { + BINDING = WEAK; + TYPE = OBJECT; + SIZE = 4; + }; + }; xdr_nis_fetus_object; xdr_nis_name_abbrev; ypcheck_domain_yptol; ypcheck_map_existence_yptol; ypmkfilename; - yptol_mode; - yptol_newlock; + yptol_mode { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + yptol_newlock { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; local: *; }; diff --git a/usr/src/lib/libnls/common/mapfile-vers b/usr/src/lib/libnls/common/mapfile-vers index 29298afb19..007bdd7723 100644 --- a/usr/src/lib/libnls/common/mapfile-vers +++ b/usr/src/lib/libnls/common/mapfile-vers @@ -48,10 +48,10 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNWprivate_1.1 { global: nlsc2addr; - _nlscall; + _nlscall { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; nlsenv; - _nlslog; - _nlsrmsg; + _nlslog { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + _nlsrmsg { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; local: *; }; diff --git a/usr/src/lib/libnsl/common/mapfile-vers b/usr/src/lib/libnsl/common/mapfile-vers index 0b12140f41..9ed468583d 100644 --- a/usr/src/lib/libnsl/common/mapfile-vers +++ b/usr/src/lib/libnsl/common/mapfile-vers @@ -40,7 +40,7 @@ $mapfile_version 2 -SYMBOL_VERSION ILLUMOS_0.1 { # illumos additions +SYMBOL_VERSION ILLUMOS_0.1 { # illumos additions global: svc_tp_create_addr; } SUNW_1.10; @@ -52,7 +52,7 @@ SYMBOL_VERSION SUNW_1.10 { # SunOS 5.11 (Solaris 11) SYMBOL_VERSION SUNW_1.9.1 { # SunOS 5.10 (Solaris 10 update 5) global: - inet_aton { TYPE = FUNCTION; FILTER = libc.so.1 }; + inet_aton { TYPE = FUNCTION; FILTER = libc.so.1; }; } SUNW_1.9; SYMBOL_VERSION SUNW_1.9 { # SunOS 5.10 (Solaris 10) @@ -78,8 +78,8 @@ SYMBOL_VERSION SUNW_1.7 { # SunOS 5.8 (Solaris 8) freehostent; getipnodebyaddr; getipnodebyname; - inet_ntop { TYPE = FUNCTION; FILTER = libc.so.1 }; - inet_pton { TYPE = FUNCTION; FILTER = libc.so.1 }; + inet_ntop { TYPE = FUNCTION; FILTER = libc.so.1; }; + inet_pton { TYPE = FUNCTION; FILTER = libc.so.1; }; } SUNW_1.6; SYMBOL_VERSION SUNW_1.6 { # SunOS 5.7 (Solaris 7) @@ -119,12 +119,17 @@ SYMBOL_VERSION SUNW_1.2 { SUNW_1.2; } SUNW_1.1; -SYMBOL_VERSION SUNW_1.1 { # SunOS 5.6 (Solaris 2.6) +SYMBOL_VERSION SUNW_1.1 { # SunOS 5.6 (Solaris 2.6) global: clnt_create_vers_timed; clnt_door_create; $if _ELF32 - _new_svc_fdset; + _new_svc_fdset { + ASSERT = { + TYPE = OBJECT; + SIZE = 8192; + }; + }; $endif rpc_gss_getcred; rpc_gss_get_error; @@ -142,8 +147,13 @@ $endif rpc_gss_set_svc_name; rpc_gss_svc_max_data_length; svc_door_create; - svc_max_pollfd; - svc_pollfd; + svc_max_pollfd { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + svc_pollfd { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; _xti_accept; _xti_alloc; _xti_bind; @@ -199,7 +209,7 @@ SYMBOL_VERSION SUNW_0.8 { # SunOS 5.4 (Solaris 2.4) SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3) global: authdes_create; - authdes_lock; + authdes_lock { ASSERT = { TYPE = OBJECT; SIZE = 24; }; }; auth_destroy; callrpc; clnt_broadcast; @@ -234,10 +244,21 @@ SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3) getrpcbynumber_r; getrpcent; getrpcent_r; - h_errno { FLAGS = NODIRECT }; - inet_ntoa_r { TYPE = FUNCTION; FILTER = libc.so.1 }; + h_errno { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + inet_ntoa_r { TYPE = FUNCTION; FILTER = libc.so.1; }; key_secretkey_is_set; - maxbno; + maxbno { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; nc_sperror; netdir_perror; netdir_sperror; @@ -282,7 +303,7 @@ SYMBOL_VERSION SUNW_0.7 { # SunOS 5.3 (Solaris 2.3) svc_unregister; __t_errno; t_getname; - t_nerr; + t_nerr { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; t_strerror; undial; xdr_destroy; @@ -318,12 +339,12 @@ SYMBOL_VERSION SISCD_2.3 { $endif gethostbyaddr; gethostbyname; - inet_addr { TYPE = FUNCTION; FILTER = libc.so.1 }; - inet_netof { TYPE = FUNCTION; FILTER = libc.so.1 }; - inet_ntoa { TYPE = FUNCTION; FILTER = libc.so.1 }; - _null_auth; + inet_addr { TYPE = FUNCTION; FILTER = libc.so.1; }; + inet_netof { TYPE = FUNCTION; FILTER = libc.so.1; }; + inet_ntoa { TYPE = FUNCTION; FILTER = libc.so.1; }; + _null_auth { ASSERT = { TYPE = OBJECT; SIZE = addrsize[3]; }; }; rpc_broadcast_exp; - svc_fdset; + svc_fdset { ASSERT = { TYPE = OBJECT; SIZE = 8192; }; }; $if _ELF32 } SYSVABI_1.3; @@ -362,7 +383,7 @@ $endif key_gendes; key_setsecret; nc_perror; - _nderror; + _nderror { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; netdir_free; netdir_getbyaddr; netdir_getbyname; @@ -377,7 +398,7 @@ $endif rpcb_set; rpcb_unset; rpc_call; - rpc_createerr; + rpc_createerr { ASSERT = { TYPE = OBJECT; SIZE = 16; }; }; rpc_reg; setnetconfig; setnetpath; @@ -406,7 +427,7 @@ $endif t_bind; t_close; t_connect; - t_errno; + t_errno { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; t_error; t_free; t_getinfo; @@ -554,18 +575,43 @@ SYMBOL_VERSION SUNWprivate_1.2 { SYMBOL_VERSION SUNWprivate_1.1 { global: __authenticate; - bitno; - blkno; + bitno { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + blkno { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; calchash; cbc_crypt; __cbc_triple_crypt; check_version; __clnt_create_loopback; - dbrdonly; + dbrdonly { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; __des_crypt; des_setparity_g; - dirbuf; - dirf; + dirbuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 4096; + }; + }; + dirf { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; ecb_crypt; __empty_yp_cache; firsthash; @@ -573,7 +619,10 @@ SYMBOL_VERSION SUNWprivate_1.1 { __gen_dhkeys; __gen_dhkeys_g; getdomainname; - gethostname { TYPE = FUNCTION; FILTER = libc.so.1 }; + gethostname { + TYPE = FUNCTION; + FILTER = libc.so.1; + }; _get_hostserv_inetnetdir_byaddr; _get_hostserv_inetnetdir_byname; __getnetnamebyuid; @@ -585,7 +634,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { getsecretkey_g; hashinc; _herrno2nss; - hmask; + hmask { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __inet_address_count; __inet_free_local_interfaces; __inet_get_addr; @@ -597,13 +651,28 @@ SYMBOL_VERSION SUNWprivate_1.1 { key_decryptsession_g; key_decryptsession_pk; key_decryptsession_pk_g; - __key_decryptsession_pk_LOCAL; + __key_decryptsession_pk_LOCAL { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; key_encryptsession_g; key_encryptsession_pk; key_encryptsession_pk_g; - __key_encryptsession_pk_LOCAL; + __key_encryptsession_pk_LOCAL { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; key_gendes_g; - __key_gendes_LOCAL; + __key_gendes_LOCAL { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; key_get_conv; key_get_conv_g; key_removesecret_g; @@ -631,12 +700,27 @@ SYMBOL_VERSION SUNWprivate_1.1 { __nis_rpc_domain; __nis_translate_mechanism; nis_write_obj; - __nsl_dom; + __nsl_dom { + ASSERT = { + TYPE = OBJECT; + SIZE = 16; + }; + }; __nss2herrno; nss_ioctl; order_haddrlist_af; - pagbuf; - pagf; + pagbuf { + ASSERT = { + TYPE = OBJECT; + SIZE = 1024; + }; + }; + pagf { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; passwd2des; passwd2des_g; __rpcbind_is_up; @@ -666,7 +750,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { str2servent; __svcauth_des; svc_get_local_cred; - _svc_getreqset_proc; + _svc_getreqset_proc { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __svc_get_svcauth; __svc_set_proc_cleanup_cb; __svc_vc_dup; @@ -676,8 +765,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { svc_xprt_free; _switch_gethostbyaddr_r; _switch_gethostbyname_r; - t_errlist; - tiusr_statetbl; + t_errlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[58]; + }; + }; + tiusr_statetbl { + ASSERT = { + TYPE = OBJECT; + SIZE = 225; + }; + }; _uncached_gethostbyaddr_r; _uncached_gethostbyname_r; usingypmap; diff --git a/usr/src/lib/libnvpair/mapfile-vers b/usr/src/lib/libnvpair/mapfile-vers index 0403964e05..fb5abb3432 100644 --- a/usr/src/lib/libnvpair/mapfile-vers +++ b/usr/src/lib/libnvpair/mapfile-vers @@ -42,69 +42,69 @@ $mapfile_version 2 SYMBOL_VERSION ILLUMOS_0.1 { # Illumos additions global: - fnvlist_alloc; - fnvlist_free; - fnvlist_size; - fnvlist_pack; - fnvlist_pack_free; - fnvlist_unpack; - fnvlist_dup; - fnvlist_merge; - fnvlist_num_pairs; - fnvlist_add_boolean; - fnvlist_add_boolean_value; - fnvlist_add_byte; - fnvlist_add_int8; - fnvlist_add_uint8; - fnvlist_add_int16; - fnvlist_add_uint16; - fnvlist_add_int32; - fnvlist_add_uint32; - fnvlist_add_int64; - fnvlist_add_uint64; - fnvlist_add_string; - fnvlist_add_nvlist; - fnvlist_add_nvpair; - fnvlist_add_boolean_array; - fnvlist_add_byte_array; - fnvlist_add_int8_array; - fnvlist_add_uint8_array; - fnvlist_add_int16_array; - fnvlist_add_uint16_array; - fnvlist_add_int32_array; - fnvlist_add_uint32_array; - fnvlist_add_int64_array; - fnvlist_add_uint64_array; - fnvlist_add_string_array; - fnvlist_add_nvlist_array; - fnvlist_remove; - fnvlist_remove_nvpair; - fnvlist_lookup_nvpair; - fnvlist_lookup_boolean; - fnvlist_lookup_boolean_value; - fnvlist_lookup_byte; - fnvlist_lookup_int8; - fnvlist_lookup_int16; - fnvlist_lookup_int32; - fnvlist_lookup_int64; - fnvlist_lookup_uint8_t; - fnvlist_lookup_uint16; - fnvlist_lookup_uint32; - fnvlist_lookup_uint64; - fnvlist_lookup_string; - fnvlist_lookup_nvlist; - fnvpair_value_boolean_value; - fnvpair_value_byte; - fnvpair_value_int8; - fnvpair_value_int16; - fnvpair_value_int32; - fnvpair_value_int64; - fnvpair_value_uint8_t; - fnvpair_value_uint16; - fnvpair_value_uint32; - fnvpair_value_uint64; - fnvpair_value_string; - fnvpair_value_nvlist; + fnvlist_alloc; + fnvlist_free; + fnvlist_size; + fnvlist_pack; + fnvlist_pack_free; + fnvlist_unpack; + fnvlist_dup; + fnvlist_merge; + fnvlist_num_pairs; + fnvlist_add_boolean; + fnvlist_add_boolean_value; + fnvlist_add_byte; + fnvlist_add_int8; + fnvlist_add_uint8; + fnvlist_add_int16; + fnvlist_add_uint16; + fnvlist_add_int32; + fnvlist_add_uint32; + fnvlist_add_int64; + fnvlist_add_uint64; + fnvlist_add_string; + fnvlist_add_nvlist; + fnvlist_add_nvpair; + fnvlist_add_boolean_array; + fnvlist_add_byte_array; + fnvlist_add_int8_array; + fnvlist_add_uint8_array; + fnvlist_add_int16_array; + fnvlist_add_uint16_array; + fnvlist_add_int32_array; + fnvlist_add_uint32_array; + fnvlist_add_int64_array; + fnvlist_add_uint64_array; + fnvlist_add_string_array; + fnvlist_add_nvlist_array; + fnvlist_remove; + fnvlist_remove_nvpair; + fnvlist_lookup_nvpair; + fnvlist_lookup_boolean; + fnvlist_lookup_boolean_value; + fnvlist_lookup_byte; + fnvlist_lookup_int8; + fnvlist_lookup_int16; + fnvlist_lookup_int32; + fnvlist_lookup_int64; + fnvlist_lookup_uint8_t; + fnvlist_lookup_uint16; + fnvlist_lookup_uint32; + fnvlist_lookup_uint64; + fnvlist_lookup_string; + fnvlist_lookup_nvlist; + fnvpair_value_boolean_value; + fnvpair_value_byte; + fnvpair_value_int8; + fnvpair_value_int16; + fnvpair_value_int32; + fnvpair_value_int64; + fnvpair_value_uint8_t; + fnvpair_value_uint16; + fnvpair_value_uint32; + fnvpair_value_uint64; + fnvpair_value_string; + fnvpair_value_nvlist; } SUNW_1.3; @@ -133,9 +133,19 @@ SYMBOL_VERSION SUNW_1.2 { global: nv_alloc_fini; nv_alloc_init; - nv_alloc_nosleep; + nv_alloc_nosleep { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; nv_alloc_reset; - nv_fixed_ops; + nv_fixed_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; nvlist_add_boolean_array; nvlist_add_boolean_value; nvlist_add_int8; diff --git a/usr/src/lib/libpcsc/common/mapfile-vers b/usr/src/lib/libpcsc/common/mapfile-vers index 5a3786670a..7c363651da 100644 --- a/usr/src/lib/libpcsc/common/mapfile-vers +++ b/usr/src/lib/libpcsc/common/mapfile-vers @@ -31,9 +31,24 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate { global: - g_rgSCardRawPci; - g_rgSCardT0Pci; - g_rgSCardT1Pci; + g_rgSCardRawPci { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + g_rgSCardT0Pci { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + g_rgSCardT1Pci { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; SCardEstablishContext; SCardReleaseContext; SCardFreeMemory; diff --git a/usr/src/lib/libpicltree/mapfile-vers b/usr/src/lib/libpicltree/mapfile-vers index 6a3c7fa4cc..a65a64729a 100644 --- a/usr/src/lib/libpicltree/mapfile-vers +++ b/usr/src/lib/libpicltree/mapfile-vers @@ -89,7 +89,7 @@ SYMBOL_VERSION SUNWprivate_1.2 { global: dbg_exec; dbg_print; - verbose_level; + verbose_level { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; } SUNWprivate_1.1; SYMBOL_VERSION SUNWprivate_1.1 { diff --git a/usr/src/lib/libpkg/common/mapfile-vers b/usr/src/lib/libpkg/common/mapfile-vers index 40dcd44f49..15b4dae943 100644 --- a/usr/src/lib/libpkg/common/mapfile-vers +++ b/usr/src/lib/libpkg/common/mapfile-vers @@ -99,7 +99,7 @@ SYMBOL_VERSION SUNWprivate { gpkglist; gpkgmap; gpkgmapvfp; - holdcinfo; + holdcinfo { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; init_cache; isFdRemote; isFstypeRemote; diff --git a/usr/src/lib/libproc/common/mapfile-vers b/usr/src/lib/libproc/common/mapfile-vers index 61934de499..963ab12d28 100644 --- a/usr/src/lib/libproc/common/mapfile-vers +++ b/usr/src/lib/libproc/common/mapfile-vers @@ -78,7 +78,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { Lgetareg; Lgrab; Lgrab_error; - _libproc_debug; + _libproc_debug { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; Lmain_stack; Lprochandle; Lpsinfo; @@ -221,7 +221,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { proc_get_fdinfo; proc_get_priv; proc_get_psinfo; - proc_get_secflags; + proc_get_secflags; proc_get_status; proc_initstdio; proc_lwp_in_set; @@ -278,18 +278,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { ps_pbrandname; ps_pcontinue; ps_pdmodel; - ps_pdread { FLAGS = NODYNSORT }; # Alias of ps_pread - ps_pdwrite { FLAGS = NODYNSORT }; # Alias of ps_pwrite + ps_pdread { FLAGS = NODYNSORT; }; # Alias of ps_pread + ps_pdwrite { FLAGS = NODYNSORT; }; # Alias of ps_pwrite ps_pglobal_lookup; ps_pglobal_sym; ps_plog; ps_pread; ps_pstop; - ps_ptread { FLAGS = NODYNSORT }; # Alias of ps_pread - ps_ptwrite { FLAGS = NODYNSORT }; # Alias of ps_pwrite + ps_ptread { FLAGS = NODYNSORT; }; # Alias of ps_pread + ps_ptwrite { FLAGS = NODYNSORT; }; # Alias of ps_pwrite ps_pwrite; Psecflags; - Psecflags_free; + Psecflags_free; Pstack_iter; Pstate; Pstatus; diff --git a/usr/src/lib/libpthread/common/mapfile-vers b/usr/src/lib/libpthread/common/mapfile-vers index 11c260863c..e2f88ed97c 100644 --- a/usr/src/lib/libpthread/common/mapfile-vers +++ b/usr/src/lib/libpthread/common/mapfile-vers @@ -274,4 +274,3 @@ SYMBOL_VERSION SUNWprivate_1.1 { _thr_self { TYPE = FUNCTION }; _thr_setspecific { TYPE = FUNCTION }; }; - diff --git a/usr/src/lib/libresolv/mapfile-vers b/usr/src/lib/libresolv/mapfile-vers index 55371c37bd..b5059b0628 100644 --- a/usr/src/lib/libresolv/mapfile-vers +++ b/usr/src/lib/libresolv/mapfile-vers @@ -55,7 +55,7 @@ SYMBOL_VERSION SUNW_0.7 { fp_query; _getlong; _getshort; - h_errno { FLAGS = NODIRECT; FILTER = libnsl.so.1 }; + h_errno { FLAGS = NODIRECT; FILTER = libnsl.so.1; }; hostalias; p_cdname; p_class; @@ -64,15 +64,20 @@ SYMBOL_VERSION SUNW_0.7 { p_time; p_type; putlong; - _res; + _res { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[99]; + }; + }; res_init; res_mkquery; res_query; res_querydomain; res_search; res_send; - strcasecmp { TYPE = FUNCTION; FILTER = libc.so.1 }; - strncasecmp { TYPE = FUNCTION; FILTER = libc.so.1 }; + strcasecmp { TYPE = FUNCTION; FILTER = libc.so.1; }; + strncasecmp { TYPE = FUNCTION; FILTER = libc.so.1; }; }; SYMBOL_VERSION SUNWprivate_1.1 { @@ -80,8 +85,18 @@ SYMBOL_VERSION SUNWprivate_1.1 { res_endhostent; res_gethostbyaddr; res_gethostbyname; - _res_opcodes; - _res_resultcodes; + _res_opcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[16]; + }; + }; + _res_resultcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[16]; + }; + }; res_sethostent; __res_set_no_hosts_fallback; local: diff --git a/usr/src/lib/libresolv2/common/mapfile-vers b/usr/src/lib/libresolv2/common/mapfile-vers index 4eebdbb9ea..8a1639ffe5 100644 --- a/usr/src/lib/libresolv2/common/mapfile-vers +++ b/usr/src/lib/libresolv2/common/mapfile-vers @@ -46,7 +46,7 @@ SYMBOL_VERSION SUNW_2.3 { # SunOS 5.11 (Solaris 11) SYMBOL_VERSION SUNW_2.2.2 { # SunOS 5.10 (Solaris 10 Update 5) global: - inet_aton { TYPE = FUNCTION; FILTER = libc.so.1 }; + inet_aton { TYPE = FUNCTION; FILTER = libc.so.1; }; } SUNW_2.2.1; SYMBOL_VERSION SUNW_2.2.1 { # SunOS 5.10 (Solaris 10 Update 4) @@ -77,7 +77,11 @@ SYMBOL_VERSION SUNW_2.1 { # SunOS 5.6 (Solaris 2.6) __fp_query; _getlong; _getshort; - h_errno { FLAGS = NODIRECT; FILTER = libnsl.so.1 }; + h_errno { + SIZE = 4; + FLAGS = NODIRECT; + FILTER = libnsl.so.1; + }; __hostalias; hstrerror; __p_cdname; @@ -86,7 +90,13 @@ SYMBOL_VERSION SUNW_2.1 { # SunOS 5.6 (Solaris 2.6) __p_time; __p_type; __putlong; - _res; +$if _ELF64 + _res { ASSERT = { TYPE = OBJECT; SIZE = 552; }; }; +$elif _ELF32 + _res { ASSERT = { TYPE = OBJECT; SIZE = 512; }; }; +$else +$error unknown ELFCLASS +$endif res_init; res_mkquery; res_query; @@ -117,7 +127,12 @@ SYMBOL_VERSION SUNWprivate_2.2 { SYMBOL_VERSION SUNWprivate_2.1 { global: - __assertion_failed; + __assertion_failed { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; assertion_type_to_text; b64_ntop; __b64_ntop; @@ -132,7 +147,7 @@ SYMBOL_VERSION SUNWprivate_2.1 { __ctl_sendhelp; __ctl_server; __ctl_setcsctx; - daemon { TYPE = FUNCTION; FILTER = libc.so.1 }; + daemon { TYPE = FUNCTION; FILTER = libc.so.1; }; dn_count_labels; __dn_count_labels; dn_skipname; @@ -151,7 +166,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { __dst_sign_data; __dst_s_put_int16; __dst_s_verify_str; - dst_t_func; + dst_t_func { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[158]; + }; + }; __dst_verify_data; __dst_write_key; __evAddTime; @@ -182,7 +202,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { __fp_nquery; fp_query; __fp_resstat; - h_errlist; + h_errlist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[5]; + }; + }; __h_errno; __h_errno_set; hostalias; @@ -200,7 +225,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { __ISC_res_nmkupdate; __ISC_res_nupdate; __ISC_res_update; - key_file_fmt_str; + key_file_fmt_str { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; loc_aton; __loc_aton; loc_ntoa; @@ -232,7 +262,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { __net_data_minimize; __ns_datetosecs; __ns_find_tsig; - _ns_flagdata; + _ns_flagdata { + ASSERT = { + TYPE = OBJECT; + SIZE = 128; + }; + }; __ns_format_ttl; __ns_get16; __ns_get32; @@ -282,11 +317,26 @@ SYMBOL_VERSION SUNWprivate_2.1 { __ns_verify_tcp; __ns_verify_tcp_init; p_cdname; - __p_cert_syms; + __p_cert_syms { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[18]; + }; + }; p_class; - __p_class_syms; + __p_class_syms { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[24]; + }; + }; p_fqnname; - __p_key_syms; + __p_key_syms { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[18]; + }; + }; p_option; __p_option; p_query; @@ -297,7 +347,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { __p_section; p_time; p_type; - __p_type_syms; + __p_type_syms { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[207]; + }; + }; putlong; putshort; __putshort; @@ -330,7 +385,12 @@ SYMBOL_VERSION SUNWprivate_2.1 { res_nmkupdate; res_nupdate; __res_no_hosts_fallback; - _res_opcodes; + _res_opcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[16]; + }; + }; __res_override_retry; res_ownok; __res_ownok; diff --git a/usr/src/lib/libsched/common/mapfile-vers b/usr/src/lib/libsched/common/mapfile-vers index 06c27e072e..4321a089eb 100644 --- a/usr/src/lib/libsched/common/mapfile-vers +++ b/usr/src/lib/libsched/common/mapfile-vers @@ -45,4 +45,3 @@ SYMBOL_VERSION SUNWprivate_1.1 { local: *; }; - diff --git a/usr/src/lib/libshare/autofs/mapfile-vers b/usr/src/lib/libshare/autofs/mapfile-vers index 71a63e2c32..a2289b0520 100644 --- a/usr/src/lib/libshare/autofs/mapfile-vers +++ b/usr/src/lib/libshare/autofs/mapfile-vers @@ -40,7 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - sa_plugin_ops; + sa_plugin_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[27]; + }; + }; local: *; }; diff --git a/usr/src/lib/libshare/common/mapfile-vers b/usr/src/lib/libshare/common/mapfile-vers index 48a62e0bfd..c104541e4b 100644 --- a/usr/src/lib/libshare/common/mapfile-vers +++ b/usr/src/lib/libshare/common/mapfile-vers @@ -21,7 +21,7 @@ # # Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2016 by Delphix. All rights reserved. -# Copyright 2019 Nexenta Systems, Inc. All rights reserved. +# Copyright 2019 Nexenta Systems, Inc. All rights reserved. # # @@ -158,4 +158,3 @@ SYMBOL_VERSION SUNWprivate { local: *; }; - diff --git a/usr/src/lib/libshare/nfs/mapfile-vers b/usr/src/lib/libshare/nfs/mapfile-vers index 018d6a1e43..63b56f55ef 100644 --- a/usr/src/lib/libshare/nfs/mapfile-vers +++ b/usr/src/lib/libshare/nfs/mapfile-vers @@ -40,8 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - sa_plugin_ops; + sa_plugin_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[27]; + }; + }; local: *; }; - diff --git a/usr/src/lib/libshare/smb/mapfile-vers b/usr/src/lib/libshare/smb/mapfile-vers index 018d6a1e43..63b56f55ef 100644 --- a/usr/src/lib/libshare/smb/mapfile-vers +++ b/usr/src/lib/libshare/smb/mapfile-vers @@ -40,8 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - sa_plugin_ops; + sa_plugin_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[27]; + }; + }; local: *; }; - diff --git a/usr/src/lib/libshare/smbfs/mapfile-vers b/usr/src/lib/libshare/smbfs/mapfile-vers index 6bd21f5016..e57fab094a 100644 --- a/usr/src/lib/libshare/smbfs/mapfile-vers +++ b/usr/src/lib/libshare/smbfs/mapfile-vers @@ -40,8 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - sa_plugin_ops; + sa_plugin_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[27]; + }; + }; local: *; }; - diff --git a/usr/src/lib/libsmbfs/smb/mapfile-vers b/usr/src/lib/libsmbfs/smb/mapfile-vers index a94b3bc6e1..99f56b2689 100644 --- a/usr/src/lib/libsmbfs/smb/mapfile-vers +++ b/usr/src/lib/libsmbfs/smb/mapfile-vers @@ -19,7 +19,7 @@ # # # Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. -# Copyright 2018 Nexenta Systems, Inc. All rights reserved. +# Copyright 2018 Nexenta Systems, Inc. All rights reserved. # # @@ -65,8 +65,8 @@ SYMBOL_VERSION SUNWprivate { nls_str_toloc; nls_str_upper; - nsmb_close { FLAGS = NODIRECT }; - nsmb_ioctl { FLAGS = NODIRECT }; + nsmb_close { FLAGS = NODIRECT; }; + nsmb_ioctl { FLAGS = NODIRECT; }; smb_cf_minauth_from_str; smb_cf_version_from_str; @@ -83,7 +83,7 @@ SYMBOL_VERSION SUNWprivate { smb_ctx_gethandle; smb_ctx_init; smb_ctx_kill; - smb_ctx_newvc { FLAGS = NODIRECT }; + smb_ctx_newvc { FLAGS = NODIRECT; }; smb_ctx_opt; smb_ctx_parseunc; smb_ctx_readrc; @@ -107,34 +107,46 @@ SYMBOL_VERSION SUNWprivate { smb_ctx_setuser; smb_ctx_setwins; - smb_debug { FLAGS = NODIRECT }; # data + smb_debug { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; smb_error; -# -# Functions to support named pipes + # + # Functions to support named pipes smb_fh_close; smb_fh_getssnkey; smb_fh_open; smb_fh_read; smb_fh_write; smb_fh_xactnp; -# + # smb_get_authentication; smb_getprogname; smb_iod_connect; smb_iod_door_path; - smb_iod_open_door { FLAGS = NODIRECT }; - smb_iod_start { FLAGS = NODIRECT }; + smb_iod_open_door { FLAGS = NODIRECT; }; + smb_iod_start { FLAGS = NODIRECT; }; smb_iod_work; smb_lib_init; - smb_open_driver { FLAGS = NODIRECT }; + smb_open_driver { FLAGS = NODIRECT; }; smb_open_printer; smb_open_rcfile; smb_simplecrypt; smb_simpledecrypt; smb_strerror; - smb_verbose { FLAGS = NODIRECT }; # data -# -# Functions to support Access Control Lists (ACLs) + smb_verbose { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + FLAGS = NODIRECT; + }; + # + # Functions to support Access Control Lists (ACLs) smbfs_acl_free_sd; smbfs_acl_get; smbfs_acl_getsd; @@ -143,7 +155,7 @@ SYMBOL_VERSION SUNWprivate { smbfs_acl_set; smbfs_acl_setsd; smbfs_acl_zfs2sd; -# + # smbfs_default_dom_usr; smbfs_keychain_add; smbfs_keychain_addhash; @@ -155,7 +167,12 @@ SYMBOL_VERSION SUNWprivate { smbfs_set_default_domain; smbfs_set_default_user; - smbutil_std_opts; + smbutil_std_opts { + ASSERT = { + TYPE = OBJECT; + SIZE = 29; + }; + }; spnegoCreateNegTokenHint; spnegoCreateNegTokenInit; diff --git a/usr/src/lib/libsmbios/common/mapfile-vers b/usr/src/lib/libsmbios/common/mapfile-vers index 1016220cd7..70667deb49 100644 --- a/usr/src/lib/libsmbios/common/mapfile-vers +++ b/usr/src/lib/libsmbios/common/mapfile-vers @@ -42,7 +42,7 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - _smb_debug; + _smb_debug { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; smbios_battery_chem_desc; smbios_bboard_flag_desc; smbios_bboard_flag_name; diff --git a/usr/src/lib/libsocket/common/mapfile-vers b/usr/src/lib/libsocket/common/mapfile-vers index f44e54897a..614094c3f1 100644 --- a/usr/src/lib/libsocket/common/mapfile-vers +++ b/usr/src/lib/libsocket/common/mapfile-vers @@ -47,7 +47,7 @@ SYMBOL_VERSION ILLUMOS_0.2 { # reentrant ethers(3SOCKET) ether_ntoa_r; } ILLUMOS_0.1; -SYMBOL_VERSION ILLUMOS_0.1 { # illumos additions +SYMBOL_VERSION ILLUMOS_0.1 { # illumos additions global: accept4; } SUNW_1.7; @@ -95,8 +95,18 @@ SYMBOL_VERSION SUNW_1.4 { if_indextoname; if_nameindex; if_nametoindex; - in6addr_any; - in6addr_loopback; + in6addr_any { + ASSERT = { + TYPE = OBJECT; + SIZE = 16; + }; + }; + in6addr_loopback { + ASSERT = { + TYPE = OBJECT; + SIZE = 16; + }; + }; rcmd_af; rexec_af; rresvport_af; @@ -152,10 +162,10 @@ SYMBOL_VERSION SUNW_0.7 { getservbyport_r; getservent; getservent_r; - htonl { TYPE = FUNCTION; FILTER = libc.so.1 }; - htons { TYPE = FUNCTION; FILTER = libc.so.1 }; - ntohl { TYPE = FUNCTION; FILTER = libc.so.1 }; - ntohs { TYPE = FUNCTION; FILTER = libc.so.1 }; + htonl { TYPE = FUNCTION; FILTER = libc.so.1; }; + htons { TYPE = FUNCTION; FILTER = libc.so.1; }; + ntohl { TYPE = FUNCTION; FILTER = libc.so.1; }; + ntohs { TYPE = FUNCTION; FILTER = libc.so.1; }; rcmd; rexec; rresvport; @@ -185,9 +195,9 @@ $endif getservbyport; getsockname; getsockopt; - inet_lnaof { TYPE = FUNCTION; FILTER = libc.so.1 }; - inet_makeaddr { TYPE = FUNCTION; FILTER = libc.so.1 }; - inet_network { TYPE = FUNCTION; FILTER = libc.so.1 }; + inet_lnaof { TYPE = FUNCTION; FILTER = libc.so.1; }; + inet_makeaddr { TYPE = FUNCTION; FILTER = libc.so.1; }; + inet_network { TYPE = FUNCTION; FILTER = libc.so.1; }; listen; recv; recvfrom; diff --git a/usr/src/lib/libsqlite/mapfile-sqlite b/usr/src/lib/libsqlite/mapfile-sqlite index f93dc474b4..c78a1f6f72 100644 --- a/usr/src/lib/libsqlite/mapfile-sqlite +++ b/usr/src/lib/libsqlite/mapfile-sqlite @@ -70,13 +70,18 @@ SYMBOL_VERSION ILLUMOS_sqlite_2.8.15 { sqlite_decode_binary; # exported data - sqlite_version; - sqlite_encoding; + sqlite_version { ASSERT = { TYPE = OBJECT; SIZE = 17; }; }; + sqlite_encoding { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; }; SYMBOL_VERSION SUNWprivate { global: - sqlite_temp_directory; + sqlite_temp_directory { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; sqliteIsNumber; sqliteOsFileExists; sqliteStrICmp; diff --git a/usr/src/lib/libstmf/common/mapfile-vers b/usr/src/lib/libstmf/common/mapfile-vers index ade03df69a..191034f63d 100644 --- a/usr/src/lib/libstmf/common/mapfile-vers +++ b/usr/src/lib/libstmf/common/mapfile-vers @@ -94,7 +94,7 @@ SYMBOL_VERSION SUNW_1.1 { stmfSetLuProp; stmfSetStmfProp; stmfGetStmfProp; - stmfValidateView; + stmfValidateView; local: *; }; @@ -108,4 +108,3 @@ SYMBOL_VERSION SUNWprivate { local: *; }; - diff --git a/usr/src/lib/libstmfproxy/common/mapfile-vers b/usr/src/lib/libstmfproxy/common/mapfile-vers index 2502068502..23a40308ec 100644 --- a/usr/src/lib/libstmfproxy/common/mapfile-vers +++ b/usr/src/lib/libstmfproxy/common/mapfile-vers @@ -49,4 +49,3 @@ SYMBOL_VERSION SUNWprivate { local: *; }; - diff --git a/usr/src/lib/libsun_ima/common/mapfile-vers b/usr/src/lib/libsun_ima/common/mapfile-vers index 7e5127fcd6..305f7a3b2f 100644 --- a/usr/src/lib/libsun_ima/common/mapfile-vers +++ b/usr/src/lib/libsun_ima/common/mapfile-vers @@ -140,4 +140,3 @@ SYMBOL_VERSION SUNWprivate_1.0 { local: *; }; - diff --git a/usr/src/lib/libtnfctl/mapfile-vers b/usr/src/lib/libtnfctl/mapfile-vers index 0d74d0ec43..e140f9a48b 100644 --- a/usr/src/lib/libtnfctl/mapfile-vers +++ b/usr/src/lib/libtnfctl/mapfile-vers @@ -71,9 +71,19 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNWprivate_1.1 { global: - _tnfctl_externally_traced_pid; - _tnfctl_internal_tracing_flag; + _tnfctl_externally_traced_pid { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + _tnfctl_internal_tracing_flag { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; local: - # Redunce all remaining globals to local scope + # Reduce all remaining globals to local scope *; }; diff --git a/usr/src/lib/libtnfprobe/mapfile-vers b/usr/src/lib/libtnfprobe/mapfile-vers index bcee4b1a23..e0be7e0492 100644 --- a/usr/src/lib/libtnfprobe/mapfile-vers +++ b/usr/src/lib/libtnfprobe/mapfile-vers @@ -40,7 +40,7 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate_1.1 { global: - fork { FLAGS = NODIRECT }; + fork { FLAGS = NODIRECT; }; fork1; pthread_create; pthread_exit; @@ -48,59 +48,229 @@ SYMBOL_VERSION SUNWprivate_1.1 { thr_create; thr_exit; tnf_allocate; - tnf_char_tag_data; - tnf_float32_tag_data; - tnf_float64_tag_data; - tnf_int16_tag_data; - tnf_int32_tag_data; - tnf_int64_tag_data; - tnf_int8_tag_data; - tnf_lwpid_tag_data; - tnf_name_tag_data; - tnf_non_threaded_test_addr; - tnf_opaque_tag_data; - tnf_pid_tag_data; + tnf_char_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_float32_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_float64_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_int16_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_int32_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_int64_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_int8_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_lwpid_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_name_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_non_threaded_test_addr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_opaque_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_pid_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __tnf_probe_alloc; tnf_probe_debug; - tnf_probe_event_tag_data; + tnf_probe_event_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; tnf_probe_get_arg_indexed; tnf_probe_get_chars; tnf_probe_get_num_args; tnf_probe_get_type_indexed; tnf_probe_get_value; - __tnf_probe_list_head; - __tnf_probe_list_valid; - __tnf_probe_memseg_p; + __tnf_probe_list_head { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __tnf_probe_list_valid { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + __tnf_probe_memseg_p { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; __tnf_probe_notify; - __tnf_probe_thr_sync; - __tnf_probe_version_1_info; + __tnf_probe_thr_sync { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __tnf_probe_version_1_info { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; tnf_process_disable; tnf_process_enable; tnf_ref32_1; - tnf_size_tag_data; + tnf_size_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; tnf_string_1; - tnf_string_tag_data; + tnf_string_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; tnf_struct_tag_1; - tnf_tag_tag_data; - __tnf_tag_version_1_info; + tnf_tag_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __tnf_tag_version_1_info { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; tnf_thread_disable; - tnf_threaded_test_addr; + tnf_threaded_test_addr { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; tnf_thread_enable; - tnf_time_base_tag_data; - tnf_time_delta_tag_data; + tnf_time_base_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_time_delta_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; tnf_trace_alloc; tnf_trace_commit; tnf_trace_end; - tnf_trace_file_min; - tnf_trace_file_name; - tnf_trace_file_size; + tnf_trace_file_min { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + tnf_trace_file_name { + ASSERT = { + TYPE = OBJECT; + SIZE = 1024; + }; + }; + tnf_trace_file_size { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; tnf_trace_rollback; - tnf_uint16_tag_data; - tnf_uint32_tag_data; - tnf_uint64_tag_data; - tnf_uint8_tag_data; - tnf_user_struct_properties; - _tnfw_b_control; + tnf_uint16_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_uint32_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_uint64_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_uint8_tag_data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + tnf_user_struct_properties { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + _tnfw_b_control { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; $if _sparc thr_stksegment; diff --git a/usr/src/lib/libwrap/mapfile-vers b/usr/src/lib/libwrap/mapfile-vers index f2ef67f6b6..85dc40f09e 100644 --- a/usr/src/lib/libwrap/mapfile-vers +++ b/usr/src/lib/libwrap/mapfile-vers @@ -25,53 +25,117 @@ $mapfile_version 2 SYMBOL_VERSION ILLUMOS_0.2 { - global: - resident { FLAGS = NODIRECT; }; + global: + resident { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; } ILLUMOS_0.1; SYMBOL_VERSION ILLUMOS_0.1 { - global: - allow_severity { FLAGS = NODIRECT; }; - clean_exit; - deny_severity { FLAGS = NODIRECT; }; - dot_quad_addr; - dry_run; - eval_client; - eval_hostaddr; - eval_hostinfo; - eval_hostname; - eval_server; - eval_user; - fromhost; - hosts_access; - hosts_access_verbose; - hosts_allow_table; - hosts_ctl; - hosts_deny_table; - numeric_addr; - paranoid; - percent_m; - percent_x; - process_options; - refuse; - request_init; - request_set; - rfc931; - rfc931_timeout; - shell_cmd; - skip_ipv6_addrs; - sock_host; - sock_hostaddr; - sock_hostname; - sockgen_simplify; - split_at; - tcpd_buf; - tcpd_context; - tcpd_gethostbyname; - tcpd_warn; - tli_host; - unknown; - xgets; - local: - *; + global: + allow_severity { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + clean_exit; + deny_severity { + FLAGS = NODIRECT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + dot_quad_addr; + dry_run { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + eval_client; + eval_hostaddr; + eval_hostinfo; + eval_hostname; + eval_server; + eval_user; + fromhost; + hosts_access; + hosts_access_verbose { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + hosts_allow_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + hosts_ctl; + hosts_deny_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + numeric_addr; + paranoid { ASSERT = { TYPE = OBJECT; SIZE = 9; }; }; + percent_m; + percent_x; + process_options; + refuse; + request_init; + request_set; + rfc931; + rfc931_timeout { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + shell_cmd; + skip_ipv6_addrs; + sock_host; + sock_hostaddr; + sock_hostname; + sockgen_simplify; + split_at; + tcpd_buf { + ASSERT = { + TYPE = OBJECT; + $if _x86 && _ELF64 + + SIZE = addrsize[8]; + $elif _x86 && _ELF32 + + SIZE = addrsize[10]; + $else + + $error Unknown architecture + + $endif + + }; + }; + tcpd_context { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; + tcpd_gethostbyname; + tcpd_warn; + tli_host; + unknown { + ASSERT = { + TYPE = OBJECT; + SIZE = 8; + }; + }; + xgets; + local: + *; }; diff --git a/usr/src/lib/libxcurses/src/mapfile-vers b/usr/src/lib/libxcurses/src/mapfile-vers index a95e9cb147..b18dadc567 100644 --- a/usr/src/lib/libxcurses/src/mapfile-vers +++ b/usr/src/lib/libxcurses/src/mapfile-vers @@ -40,14 +40,14 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.2 { global: - COLOR_PAIRS; - COLORS; - COLS; - curscr; - cur_term; - LINES; + COLOR_PAIRS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + COLORS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + COLS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + curscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + cur_term { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + LINES { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; putp; - stdscr; + stdscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; tparm; tputs; } SUNW_1.1; diff --git a/usr/src/lib/libxcurses2/src/mapfile-vers b/usr/src/lib/libxcurses2/src/mapfile-vers index 7541706afe..5e27362cc3 100644 --- a/usr/src/lib/libxcurses2/src/mapfile-vers +++ b/usr/src/lib/libxcurses2/src/mapfile-vers @@ -41,15 +41,15 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.2 { global: add_wchstr; - COLOR_PAIRS; - COLORS; - COLS; - curscr; - cur_term; - LINES; + COLOR_PAIRS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + COLORS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + COLS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + curscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + cur_term { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + LINES { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; mvget_wstr; putp; - stdscr; + stdscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; tparm; tputs; } SUNW_1.1; @@ -429,45 +429,100 @@ SYMBOL_VERSION SUNW_1.1 { SYMBOL_VERSION SUNWprivate_1.1 { global: - boolcodes; - boolfnames; - boolnames; - __cht1; - __cht2; - numcodes; - numfnames; - numnames; - __pcht1; - __pcht2; - strcodes; - strfnames; - strnames; - __w1; - __WACS_BLOCK; - __WACS_BOARD; - __WACS_BTEE; - __WACS_BULLET; - __WACS_CKBOARD; - __WACS_DARROW; - __WACS_DEGREE; - __WACS_DIAMOND; - __WACS_HLINE; - __WACS_LANTERN; - __WACS_LARROW; - __WACS_LLCORNER; - __WACS_LRCORNER; - __WACS_LTEE; - __WACS_PLMINUS; - __WACS_PLUS; - __WACS_RARROW; - __WACS_RTEE; - __WACS_S1; - __WACS_S9; - __WACS_TTEE; - __WACS_UARROW; - __WACS_ULCORNER; - __WACS_URCORNER; - __WACS_VLINE; + boolcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; + boolfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; + boolnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[38]; + }; + }; + __cht1 { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + __cht2 { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + numcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + numfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + numnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; + __pcht1 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + __pcht2 { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + strcodes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + strfnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + strnames { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[395]; + }; + }; + __w1 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + __WACS_BLOCK { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_BOARD { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_BTEE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_BULLET { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_CKBOARD { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_DARROW { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_DEGREE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_DIAMOND { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_HLINE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_LANTERN { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_LARROW { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_LLCORNER { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_LRCORNER { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_LTEE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_PLMINUS { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_PLUS { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_RARROW { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_RTEE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_S1 { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_S9 { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_TTEE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_UARROW { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_ULCORNER { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_URCORNER { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; + __WACS_VLINE { ASSERT = { TYPE = OBJECT; SIZE = 32; }; }; local: *; }; diff --git a/usr/src/lib/libzfs/common/mapfile-vers b/usr/src/lib/libzfs/common/mapfile-vers index 0083c052df..196751b44c 100644 --- a/usr/src/lib/libzfs/common/mapfile-vers +++ b/usr/src/lib/libzfs/common/mapfile-vers @@ -51,7 +51,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { fletcher_4_incremental_native; fletcher_4_incremental_byteswap; libzfs_add_handle; - libzfs_config_ops; + libzfs_config_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[2]; + }; + }; libzfs_errno; libzfs_error_action; libzfs_error_description; @@ -64,7 +69,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { libzfs_init; libzfs_mnttab_cache; libzfs_print_on_error; - spa_feature_table; + spa_feature_table { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[162]; + }; + }; zfs_allocatable_devs; zfs_asprintf; zfs_bookmark_exists; @@ -93,7 +103,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { zfs_get_user_props; zfs_get_type; zfs_handle_dup; - zfs_history_event_names; + zfs_history_event_names { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[41]; + }; + }; zfs_hold; zfs_init_libshare_arg; zfs_is_mounted; @@ -183,7 +198,12 @@ SYMBOL_VERSION SUNWprivate_1.1 { zfs_valid_proplist; zfs_get_fsacl; zfs_set_fsacl; - zfs_userquota_prop_prefixes; + zfs_userquota_prop_prefixes { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[12]; + }; + }; zfs_zpl_version_map; zpool_add; zpool_checkpoint; diff --git a/usr/src/lib/pkcs11/libkcfd/common/mapfile-vers b/usr/src/lib/pkcs11/libkcfd/common/mapfile-vers index 3b93ffdf5f..261d3db744 100644 --- a/usr/src/lib/pkcs11/libkcfd/common/mapfile-vers +++ b/usr/src/lib/pkcs11/libkcfd/common/mapfile-vers @@ -288,7 +288,7 @@ SYMBOL_VERSION SUNW_1.1 { TYPE = FUNCTION; FILTER = pkcs11_softtoken.so.1; }; - C_VerifyRecover { + C_VerifyRecover { TYPE = FUNCTION; FILTER = pkcs11_softtoken.so.1; }; @@ -312,4 +312,3 @@ SYMBOL_VERSION SUNW_1.1 { local: *; }; - diff --git a/usr/src/lib/pkcs11/libsoftcrypto/common/mapfile-vers b/usr/src/lib/pkcs11/libsoftcrypto/common/mapfile-vers index 1ec1d4f87c..52d33dc746 100644 --- a/usr/src/lib/pkcs11/libsoftcrypto/common/mapfile-vers +++ b/usr/src/lib/pkcs11/libsoftcrypto/common/mapfile-vers @@ -55,7 +55,35 @@ SYMBOL_VERSION SUNWprivate { aes_xor_block; arcfour_crypt; arcfour_key_init; - big_One; +$if _ELF64 + big_One { + ASSERT = { + TYPE = OBJECT; + SIZE = 24; + }; + }; + big_Two { + ASSERT = { + TYPE = OBJECT; + SIZE = 24; + }; + }; +$elif _ELF32 + big_One { + ASSERT = { + TYPE = OBJECT; + SIZE = 20; + }; + }; + big_Two { + ASSERT = { + TYPE = OBJECT; + SIZE = 20; + }; + }; +$else +$error unknown ELFCLASS +$endif big_Two; big_add; big_bitlength; @@ -115,13 +143,48 @@ SYMBOL_VERSION SUNWprivate { rsa_decrypt; rsa_encrypt; rsa_genkey_pair; - DEFAULT_PUB_EXPO; - MD5_DER_PREFIX; - SHA1_DER_PREFIX; - SHA1_DER_PREFIX_OID; - SHA256_DER_PREFIX; - SHA384_DER_PREFIX; - SHA512_DER_PREFIX; + DEFAULT_PUB_EXPO { + ASSERT = { + TYPE = OBJECT; + SIZE = 3; + }; + }; + MD5_DER_PREFIX { + ASSERT = { + TYPE = OBJECT; + SIZE = 18; + }; + }; + SHA1_DER_PREFIX { + ASSERT = { + TYPE = OBJECT; + SIZE = 15; + }; + }; + SHA1_DER_PREFIX_OID { + ASSERT = { + TYPE = OBJECT; + SIZE = 13; + }; + }; + SHA256_DER_PREFIX { + ASSERT = { + TYPE = OBJECT; + SIZE = 19; + }; + }; + SHA384_DER_PREFIX { + ASSERT = { + TYPE = OBJECT; + SIZE = 19; + }; + }; + SHA512_DER_PREFIX { + ASSERT = { + TYPE = OBJECT; + SIZE = 19; + }; + }; local: *; }; diff --git a/usr/src/lib/smbclnt/libfknsmb/Makefile.com b/usr/src/lib/smbclnt/libfknsmb/Makefile.com index c2c7dcc973..a11ce4c928 100644 --- a/usr/src/lib/smbclnt/libfknsmb/Makefile.com +++ b/usr/src/lib/smbclnt/libfknsmb/Makefile.com @@ -98,6 +98,9 @@ SMOFF += all_func_returns,deref_check,signed LDLIBS += $(MACH_LDLIBS) LDLIBS += -lfakekernel -lpkcs11 -lnsl -lc +# libfknsmb isn't delivered, and is a special case, disable global data complaints +ZGUIDANCE= -Wl,-zguidance=noasserts + NSMB_DIR=$(SRC)/uts/common/fs/smbclnt/netsmb SRCS= $(OBJS_LOCAL:%.o=$(SRCDIR)/%.c) \ $(OBJS_NSMB:%.o=$(NSMB_DIR)/%.c) diff --git a/usr/src/lib/smbsrv/libsmbrp/common/mapfile-vers b/usr/src/lib/smbsrv/libsmbrp/common/mapfile-vers index bdc9653aaf..d3db7a987e 100644 --- a/usr/src/lib/smbsrv/libsmbrp/common/mapfile-vers +++ b/usr/src/lib/smbsrv/libsmbrp/common/mapfile-vers @@ -41,7 +41,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNWprivate { global: - rp_plugin_ops; + rp_plugin_ops { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[7]; + }; + }; local: *; }; diff --git a/usr/src/lib/smhba/common/mapfile-vers b/usr/src/lib/smhba/common/mapfile-vers index b5a7a4d341..39990b2ebf 100644 --- a/usr/src/lib/smhba/common/mapfile-vers +++ b/usr/src/lib/smhba/common/mapfile-vers @@ -133,4 +133,3 @@ SYMBOL_VERSION SUNW_1.1 { local: *; }; - diff --git a/usr/src/man/man1/ld.1 b/usr/src/man/man1/ld.1 index 2d0893fdc4..9ff3680e82 100644 --- a/usr/src/man/man1/ld.1 +++ b/usr/src/man/man1/ld.1 @@ -9,7 +9,6 @@ .SH NAME ld \- link-editor for object files .SH SYNOPSIS -.LP .nf \fBld\fR [\fB-32\fR | \fB-64\fR] [\fB-a\fR | \fB-r\fR] [\fB-b\fR] [\fB-B\fRdirect | nodirect] [\fB-B\fR dynamic | static] [\fB-B\fR eliminate] [\fB-B\fR group] [\fB-B\fR local] @@ -40,7 +39,6 @@ ld \- link-editor for object files .fi .SH DESCRIPTION -.LP The link-editor, \fBld\fR, combines relocatable object files by resolving symbol references to symbol definitions, together with performing relocations. \fBld\fR operates in two modes, static or dynamic, as governed by the \fB-d\fR @@ -104,7 +102,6 @@ Similarly, only objects of a single machine type are allowed. See the \fB-32\fR, \fB-64\fR and \fB-z target\fR options, and the \fBLD_NOEXEC_64\fR environment variable. .SS "Static Executables" -.LP The creation of static executables has been discouraged for many releases. In fact, 64-bit system archive libraries have never been provided. Because a static executable is built against system archive libraries, the executable @@ -139,7 +136,6 @@ executables is no longer achievable without specialized system knowledge. However, the capability of \fBld\fR to process static linking options, and the processing of archive libraries, remains unchanged. .SH OPTIONS -.LP The following options are supported. .sp .ne 2 @@ -1036,8 +1032,8 @@ had been built using the \fB-B\fR \fBgroup\fR option. Give messages suggesting link-editor features that could improve the resulting dynamic object. .LP -Specific classes of suggestion can be silenced by specifying an optional comma separated -list of guidance identifiers. +Specific classes of suggestion can be silenced by specifying an optional comma +separated list of guidance identifiers. .LP The current classes of suggestion provided are: @@ -1120,6 +1116,19 @@ removed from the link-editor command line. Can be disabled with \fB-z guidance=nounused\fR. .RE + +.sp +.ne 2 +.na +Global data in shared libraries built with mapfiles have size assertions +.ad +.sp .6 +.RS 4n +Suggests that any global data in a library built with a mapfile asserts the +size of that global data for ABI stability purposes. + +Can be disabled with \fB-z guidance=noasserts\fR. +.RE .RE .sp @@ -1841,8 +1850,8 @@ that is in effect. See the \fB-S\fR option. .sp .LP Notice that environment variable-names that begin with the -characters '\fBLD_\fR' are reserved for possible future enhancements to \fBld\fR and -\fBld.so.1\fR(1). +characters '\fBLD_\fR' are reserved for possible future enhancements to +\fBld\fR and \fBld.so.1\fR(1). .SH FILES .ne 2 .na @@ -1893,7 +1902,6 @@ defining memory layouts, aligning bss, and defining non-executable stacks. .RE .SH ATTRIBUTES -.LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp @@ -1908,7 +1916,6 @@ Interface Stability Committed .TE .SH SEE ALSO -.LP \fBas\fR(1), \fBcrle\fR(1), \fBgprof\fR(1), \fBld.so.1\fR(1), \fBldd\fR(1), \fBmcs\fR(1), \fBpvs\fR(1), \fBexec\fR(2), \fBstat\fR(2), \fBdlopen\fR(3C), \fBdldump\fR(3C), \fBelf\fR(3ELF), \fBar.h\fR(3HEAD), \fBa.out\fR(4), @@ -1917,7 +1924,6 @@ Interface Stability Committed .LP \fILinker and Libraries Guide\fR .SH NOTES -.LP Default options applied by \fBld\fR are maintained for historic reasons. In today's programming environment, where dynamic objects dominate, alternative defaults would often make more sense. However, historic defaults must be diff --git a/usr/src/pkg/manifests/system-test-elftest.mf b/usr/src/pkg/manifests/system-test-elftest.mf index ef3f45b5fc..c6300add29 100644 --- a/usr/src/pkg/manifests/system-test-elftest.mf +++ b/usr/src/pkg/manifests/system-test-elftest.mf @@ -25,6 +25,9 @@ dir path=opt/elf-tests/runfiles dir path=opt/elf-tests/tests dir path=opt/elf-tests/tests/assert-deflib dir path=opt/elf-tests/tests/linker-sets +dir path=opt/elf-tests/tests/mapfiles +dir path=opt/elf-tests/tests/mapfiles/assert +dir path=opt/elf-tests/tests/mapfiles/parser dir path=opt/elf-tests/tests/tls dir path=opt/elf-tests/tests/tls/amd64 dir path=opt/elf-tests/tests/tls/amd64/ie @@ -40,6 +43,47 @@ file path=opt/elf-tests/tests/linker-sets/in-use-check mode=0555 file path=opt/elf-tests/tests/linker-sets/simple mode=0555 file path=opt/elf-tests/tests/linker-sets/simple-src.c mode=0444 file path=opt/elf-tests/tests/linker-sets/simple.out mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.alias-with-others \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.circalias mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.guidance mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.no-extern mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.no-parent mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.not-alias mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.true mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.unknown-alias mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.unknown-assert mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.unknown-bind mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.unknown-shattr mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.unknown-type mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongalias mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongbits mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongbits2 mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongscope mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongsize mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongtype mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongtype-alias \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/mapfile.wrongtype2 mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/object.c mode=0444 +file path=opt/elf-tests/tests/mapfiles/assert/test-assert mode=0555 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.addrsize.good mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.addrsize.mult mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.addrsize.substring \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.addrsize.superstring \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.addrsize.wrong mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.sizemult.good mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.sizemult.noterm \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.sizemult.overflow \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.sizemult.twobegin \ + mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/mapfile.sizemult.wrong mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/object.c mode=0444 +file path=opt/elf-tests/tests/mapfiles/parser/test-parser mode=0555 file path=opt/elf-tests/tests/tls/amd64/ie/Makefile.test mode=0444 file path=opt/elf-tests/tests/tls/amd64/ie/amd64-ie-test mode=0555 file path=opt/elf-tests/tests/tls/amd64/ie/style1-func-with-r12.s mode=0444 diff --git a/usr/src/test/elf-tests/runfiles/default.run b/usr/src/test/elf-tests/runfiles/default.run index 780b36a0e2..87b7cd352e 100644 --- a/usr/src/test/elf-tests/runfiles/default.run +++ b/usr/src/test/elf-tests/runfiles/default.run @@ -20,11 +20,17 @@ timeout = 60 post = outputdir = /var/tmp/test_results +[/opt/elf-tests/tests/assert-deflib] +tests = ['test-deflib'] + [/opt/elf-tests/tests/linker-sets] tests = ['simple', 'in-use-check'] -[/opt/elf-tests/tests/assert-deflib] -tests = ['test-deflib'] +[/opt/elf-tests/tests/mapfiles/parser] +tests = ['test-parser'] + +[/opt/elf-tests/tests/mapfiles/assert] +tests = ['test-assert'] [/opt/elf-tests/tests/tls/amd64/ie] arch = i86pc @@ -37,3 +43,4 @@ tests = ['i386-ld-test'] [/opt/elf-tests/tests/tls/amd64/ld] arch = i86pc tests = ['amd64-ld-test'] + diff --git a/usr/src/test/elf-tests/tests/Makefile b/usr/src/test/elf-tests/tests/Makefile index 5da70cc241..060d1c2e3e 100644 --- a/usr/src/test/elf-tests/tests/Makefile +++ b/usr/src/test/elf-tests/tests/Makefile @@ -17,6 +17,7 @@ SUBDIRS = \ assert-deflib \ linker-sets \ + mapfiles \ tls include $(SRC)/test/Makefile.com diff --git a/usr/src/test/elf-tests/tests/mapfiles/Makefile b/usr/src/test/elf-tests/tests/mapfiles/Makefile new file mode 100644 index 0000000000..aebddb4e98 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/Makefile @@ -0,0 +1,18 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# Copyright 2019, Richard Lowe. + +SUBDIRS = \ + assert \ + parser + +include $(SRC)/test/Makefile.com diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/Makefile b/usr/src/test/elf-tests/tests/mapfiles/assert/Makefile new file mode 100644 index 0000000000..11e47c2ca7 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/Makefile @@ -0,0 +1,67 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# Copyright 2019, Richard Lowe. + +include $(SRC)/cmd/Makefile.cmd +include $(SRC)/test/Makefile.com + +PROG = test-assert + +DATAFILES= \ + mapfile.alias-with-others \ + mapfile.circalias \ + mapfile.guidance \ + mapfile.no-extern \ + mapfile.no-parent \ + mapfile.not-alias \ + mapfile.true \ + mapfile.unknown-alias \ + mapfile.unknown-assert \ + mapfile.unknown-bind \ + mapfile.unknown-shattr \ + mapfile.unknown-type \ + mapfile.wrongalias \ + mapfile.wrongbits \ + mapfile.wrongbits2 \ + mapfile.wrongscope \ + mapfile.wrongsize \ + mapfile.wrongtype \ + mapfile.wrongtype-alias \ + mapfile.wrongtype2 \ + object.c + +ROOTOPTPKG = $(ROOT)/opt/elf-tests +TESTDIR = $(ROOTOPTPKG)/tests/mapfiles/assert + +CMDS = $(PROG:%=$(TESTDIR)/%) +$(CMDS) := FILEMODE = 0555 + +DATA = $(DATAFILES:%=$(TESTDIR)/%) +$(DATA) := FILEMODE = 0444 + +all: $(PROG) + +install: all $(CMDS) $(DATA) + +clobber: clean + -$(RM) $(PROG) + +clean: + -$(RM) $(CLEANFILES) + +$(CMDS): $(TESTDIR) $(PROG) + +$(TESTDIR): + $(INS.dir) + +$(TESTDIR)/%: % + $(INS.file) diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.alias-with-others b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.alias-with-others new file mode 100644 index 0000000000..48c658ebdb --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.alias-with-others @@ -0,0 +1,31 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + weak_function { + ASSERT = { + TYPE = FUNCTION; + ALIAS = function; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.circalias b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.circalias new file mode 100644 index 0000000000..9640dec15f --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.circalias @@ -0,0 +1,31 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = weak_function; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.guidance b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.guidance new file mode 100644 index 0000000000..c3e0197e22 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.guidance @@ -0,0 +1,43 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common; + data; + function { + ASSERT = { + TYPE = FUNCTION; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = function; + }; + }; + weak_data { ASSERT = { BINDING = WEAK; ALIAS = data; }; }; + tbs; + tdata; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-extern b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-extern new file mode 100644 index 0000000000..9704b640a3 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-extern @@ -0,0 +1,75 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + data { + ASSERT = { + TYPE = OBJECT; + SIZE = 5; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + function { + ASSERT = { + TYPE = FUNCTION; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = function; + }; + }; + weak_data { ASSERT = { BINDING = WEAK; ALIAS = data; }; }; + tbs { + ASSERT = { + TYPE = TLS; + SH_ATTR = NOBITS; + SIZE = 4; + }; + }; + tdata { + ASSERT = { + TYPE = TLS; + SH_ATTR = BITS; + SIZE = 4; + }; + }; + extern { + FLAGS = EXTERN; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-parent b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-parent new file mode 100644 index 0000000000..d6954d6e04 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.no-parent @@ -0,0 +1,75 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + data { + ASSERT = { + TYPE = OBJECT; + SIZE = 5; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + function { + ASSERT = { + TYPE = FUNCTION; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = function; + }; + }; + weak_data { ASSERT = { BINDING = WEAK; ALIAS = data; }; }; + tbs { + ASSERT = { + TYPE = TLS; + SH_ATTR = NOBITS; + SIZE = 4; + }; + }; + tdata { + ASSERT = { + TYPE = TLS; + SH_ATTR = BITS; + SIZE = 4; + }; + }; + parent { + FLAGS = PARENT; + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + }; + }; + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.not-alias b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.not-alias new file mode 100644 index 0000000000..0d4b84fb40 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.not-alias @@ -0,0 +1,69 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + data { + ASSERT = { + TYPE = OBJECT; + SIZE = 5; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + function { + ASSERT = { + TYPE = FUNCTION; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = function; + }; + }; + weak_data { ASSERT = { BINDING = WEAK; SIZE = 5; }; }; + tbs { + ASSERT = { + TYPE = TLS; + SH_ATTR = NOBITS; + SIZE = 4; + }; + }; + tdata { + ASSERT = { + TYPE = TLS; + SH_ATTR = BITS; + SIZE = 4; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.true b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.true new file mode 100644 index 0000000000..76008effa4 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.true @@ -0,0 +1,69 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + data { + ASSERT = { + TYPE = OBJECT; + SIZE = 5; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + function { + ASSERT = { + TYPE = FUNCTION; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = function; + }; + }; + weak_data { ASSERT = { BINDING = WEAK; ALIAS = data; }; }; + tbs { + ASSERT = { + TYPE = TLS; + SH_ATTR = NOBITS; + SIZE = addrsize; + }; + }; + tdata { + ASSERT = { + TYPE = TLS; + SH_ATTR = BITS; + SIZE = addrsize; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-alias b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-alias new file mode 100644 index 0000000000..0668af569c --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-alias @@ -0,0 +1,31 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + weak_function { + ASSERT = { + BINDING = WEAK; + ALIAS = undefined_symbol; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-assert b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-assert new file mode 100644 index 0000000000..c6f1400fcf --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-assert @@ -0,0 +1,27 @@ + +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { ASSERT = { ICE = COLD; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-bind b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-bind new file mode 100644 index 0000000000..604fb36588 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-bind @@ -0,0 +1,27 @@ + +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { ASSERT = { BINDING = HEMPEN; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-shattr b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-shattr new file mode 100644 index 0000000000..470ea5e5f7 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-shattr @@ -0,0 +1,27 @@ + +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { ASSERT = { SH_ATTR = WET; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-type b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-type new file mode 100644 index 0000000000..55e5b4c695 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.unknown-type @@ -0,0 +1,27 @@ + +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { ASSERT = { TYPE = CHEWY; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongalias b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongalias new file mode 100644 index 0000000000..8ee5b45daa --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongalias @@ -0,0 +1,26 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + weak_function { ASSERT = { BINDING = WEAK; ALIAS = common; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits new file mode 100644 index 0000000000..668c8167e6 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits @@ -0,0 +1,32 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { + ASSERT = { + TYPE = OBJECT; + SIZE = 5; + SH_ATTR = NOBITS; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits2 b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits2 new file mode 100644 index 0000000000..8a262b5910 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongbits2 @@ -0,0 +1,32 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 4; + SH_ATTR = BITS; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongscope b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongscope new file mode 100644 index 0000000000..b6b4188945 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongscope @@ -0,0 +1,26 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + function { ASSERT = { TYPE = FUNC; BINDING = WEAK; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongsize b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongsize new file mode 100644 index 0000000000..280352d6a0 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongsize @@ -0,0 +1,26 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype new file mode 100644 index 0000000000..6d6ae24885 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype @@ -0,0 +1,25 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { ASSERT = { TYPE = FUNCTION; }; }; + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype-alias b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype-alias new file mode 100644 index 0000000000..467507bc34 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype-alias @@ -0,0 +1,26 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + weak_function { ASSERT = { BINDING = WEAK; ALIAS = 31; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype2 b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype2 new file mode 100644 index 0000000000..b90fd24cfd --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/mapfile.wrongtype2 @@ -0,0 +1,25 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { ASSERT = { TYPE = COMMON; SIZE = 5; }; }; + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/object.c b/usr/src/test/elf-tests/tests/mapfiles/assert/object.c new file mode 100644 index 0000000000..70ed1921a4 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/object.c @@ -0,0 +1,31 @@ + +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2012, Richard Lowe. + */ + +__thread char *tbs; +__thread char *tdata = "tdata!"; + +char *common; + +const char data[] = "data"; + +#pragma weak weak_function = function +#pragma weak weak_data = data + +int +function(void) +{ + return (1); +} diff --git a/usr/src/test/elf-tests/tests/mapfiles/assert/test-assert.sh b/usr/src/test/elf-tests/tests/mapfiles/assert/test-assert.sh new file mode 100644 index 0000000000..63447e2e08 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/assert/test-assert.sh @@ -0,0 +1,144 @@ +#! /usr/bin/sh +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# Copyright 2012, Richard Lowe. + +TESTDIR=$(dirname $0) + +tmpdir=/tmp/test.$$ +mkdir $tmpdir +cd $tmpdir + +cleanup() { + cd / + rm -fr $tmpdir +} + +trap 'cleanup' EXIT + +if [[ $PWD != $tmpdir ]]; then + print -u2 "Failed to create temporary directory: $tmpdir" + exit 1; +fi + +if [[ -n $PROTO ]]; then + export LD_ALTEXEC=$PROTO/bin/ld +fi + +LDFLAGS="-Wl,-zguidance -Wl,-zfatal-warnings -Wl,-zdirect -Wl,-zlazyload" +ret=0 + +function should_succeed { + mapfile=$1 + msg=$2 + + if gcc -m32 -shared $LDFLAGS -Wl,-M,${TESTDIR}/$mapfile \ + ${TESTDIR}/object.c -o object.so; then + echo "pass (32): $msg" + else + echo "FAIL (32): $msg" + ret=1 + fi + + if gcc -m64 -shared $LDFLAGS -Wl,-M,${TESTDIR}/$mapfile \ + ${TESTDIR}/object.c -o object.so; then + echo "pass (64): $msg" + else + echo "FAIL (64): $msg" + ret=1 + fi +} + +function should_fail { + mapfile=$1 + msg=$2 + error=$3 + + if gcc -m32 -shared $LDFLAGS -Wl,-M,${TESTDIR}/$mapfile \ + ${TESTDIR}/object.c -o object.so 2>&1 | \ + /usr/bin/grep -Eq "$error"; then + echo "pass (32): $msg" + else + echo "FAIL (32): $msg" + ret=1 + fi + + if gcc -m64 -shared $LDFLAGS -Wl,-M,${TESTDIR}/$mapfile \ + ${TESTDIR}/object.c -o object.so 2>&1 | \ + /usr/bin/grep -Eq "$error"; then + echo "pass (64): $msg" + else + echo "FAIL (64): $msg" + ret=1 + fi +} + +should_succeed mapfile.true "link with correct mapfile" + +should_fail mapfile.guidance "link without sized data" \ + "guidance:.*size assertion.*data" + +should_fail mapfile.wrongtype "link with incorrect type in object (data v. function)" \ + "ld: fatal: .*mapfile.wrongtype: [0-9]+: assertion failed: type of symbol data should be:" + +should_fail mapfile.wrongtype2 "link with incorrect type in object (common v. data)" \ + "ld: fatal: .*mapfile.wrongtype2: [0-9]+: assertion failed: type of symbol data should be:" + +should_fail mapfile.wrongsize "link with incorrect size in object" \ + "ld: fatal: .*mapfile.wrongsize: [0-9]+: assertion failed: size of symbol data should be:" + +should_fail mapfile.wrongscope "link with incorrect scope in object" \ + "ld: fatal: .*mapfile.wrongscope: [0-9]+: assertion failed: scope of symbol function should be:" + +should_fail mapfile.wrongbits "link with incorrect shattr in object (nobits when bits)" \ + "ld: fatal: .*mapfile.wrongbits: [0-9]+: assertion failed: symbol [^ ]* is not in an SHT_NOBITS section" + +should_fail mapfile.wrongbits2 "link with incorrect shattr in object (bits when nobits)" \ + "ld: fatal: .*mapfile.wrongbits2: [0-9]+: assertion failed: symbol [^ ]* is in an SHT_NOBITS section" + +should_fail mapfile.unknown-assert "link with unknown assertion type" \ + "expected attribute name \([^\)]*\), or terminator \([^\)]*\): ICE" + +should_fail mapfile.unknown-type "link with unknown type value" \ + "expected symbol type \([^\)]*\): CHEWY" + +should_fail mapfile.unknown-bind "link with unknown bind value" \ + "expected binding type \([^\)]*\): HEMPEN" + +should_fail mapfile.unknown-shattr "link with unknown shattr value" \ + "expected section attribute \([^)\]*\): WET" + +should_fail mapfile.wrongalias "link with incorrect alias" \ + "ld: fatal: .*mapfile.wrongalias: [0-9]+: assertion failed: symbol weak_function is not an alias of common" + +should_fail mapfile.alias-with-others "link with alias and other assertions" \ + "ALIAS assertions may only be used with BINDING" + +should_fail mapfile.unknown-alias "link with alias to unknown symbol" \ + "ld: fatal: .*mapfile.unknown-alias: [0-9]+: assertion failed: unknown symbol in ALIAS: undefined_symbol" + +should_fail mapfile.wrongtype-alias "link with alias to invalid token" \ + "expected string valued ALIAS" + +should_fail mapfile.not-alias "link with two non-alias of the same value" \ + "ld: fatal: .*mapfile.not-alias: [0-9]+: weak_data and data (.*mapfile.not-alias: [0-9]+)" + +should_fail mapfile.no-extern "link with assertions on an extern symbol" \ + "ld: fatal: .*mapfile.no-extern: [0-9]+: can't assert attributes of extern/parent symbol: extern" + +should_fail mapfile.no-parent "link with assertions on a parent symbol" \ + "ld: fatal: .*mapfile.no-parent: [0-9]+: can't assert attributes of extern/parent symbol: parent" + +should_fail mapfile.circalias "link with alias of alias" \ + "ld: fatal: .*mapfile.circalias: [0-9]+: weak_function should not be aliased to an alias" + +exit $ret diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/Makefile b/usr/src/test/elf-tests/tests/mapfiles/parser/Makefile new file mode 100644 index 0000000000..d527f3a375 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/Makefile @@ -0,0 +1,56 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# Copyright 2019, Richard Lowe. + +include $(SRC)/cmd/Makefile.cmd +include $(SRC)/test/Makefile.com + +PROG = test-parser + +DATAFILES= mapfile.addrsize.good \ + mapfile.addrsize.mult \ + mapfile.addrsize.substring \ + mapfile.addrsize.superstring \ + mapfile.addrsize.wrong \ + mapfile.sizemult.good \ + mapfile.sizemult.noterm \ + mapfile.sizemult.overflow \ + mapfile.sizemult.twobegin \ + mapfile.sizemult.wrong \ + object.c + +ROOTOPTPKG = $(ROOT)/opt/elf-tests +TESTDIR = $(ROOTOPTPKG)/tests/mapfiles/parser + +CMDS = $(PROG:%=$(TESTDIR)/%) +$(CMDS) := FILEMODE = 0555 + +DATA = $(DATAFILES:%=$(TESTDIR)/%) +$(DATA) := FILEMODE = 0444 + +all: $(PROG) + +install: all $(CMDS) $(DATA) + +clobber: clean + -$(RM) $(PROG) + +clean: + -$(RM) $(CLEANFILES) + +$(CMDS): $(TESTDIR) $(PROG) + +$(TESTDIR): + $(INS.dir) + +$(TESTDIR)/%: % + $(INS.file) diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.good b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.good new file mode 100644 index 0000000000..932784accd --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.good @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.mult b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.mult new file mode 100644 index 0000000000..28486ef1e7 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.mult @@ -0,0 +1,26 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { ASSERT = { TYPE = OBJECT; SIZE = addrsize[2]; }; }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.substring b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.substring new file mode 100644 index 0000000000..fded002c04 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.substring @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = addrs; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.superstring b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.superstring new file mode 100644 index 0000000000..74d5f2b01f --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.superstring @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsizes; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.wrong b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.wrong new file mode 100644 index 0000000000..306c3af6c1 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.addrsize.wrong @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + data { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + SH_ATTR = BITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.good b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.good new file mode 100644 index 0000000000..8f8194ea06 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.good @@ -0,0 +1,38 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; +$if _ELF32 + SIZE = 2[2]; +$elif _ELF64 + SIZE = 4[2]; +$else +$error unknown platform +$endif + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.noterm b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.noterm new file mode 100644 index 0000000000..dd678b9154 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.noterm @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 2[4; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.overflow b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.overflow new file mode 100644 index 0000000000..6cee34e19c --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.overflow @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + +$mapfile_version 2 + +SYMBOL_VERSION foo { + global: + gensym { TYPE = DATA; + # Overflow size +$if _ELF32 + SIZE = 0xffffffff[0x2]; +$elif _ELF64 + SIZE = 0xffffffffffffffff[0x2]; +$else +$error unknown platform +$endif + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.twobegin b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.twobegin new file mode 100644 index 0000000000..ce782d8dfe --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.twobegin @@ -0,0 +1,33 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; + SIZE = 2[[4]; + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.wrong b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.wrong new file mode 100644 index 0000000000..d04b0b4d05 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/mapfile.sizemult.wrong @@ -0,0 +1,39 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2012, Richard Lowe. +# + + +$mapfile_version 2 + + +SYMBOL_VERSION foo { + global: + common { + ASSERT = { + TYPE = OBJECT; +$if _ELF32 + SIZE = 2[4]; +$elif _ELF64 + SIZE = 4[4]; +$else +$error unknown platform +$endif + SH_ATTR = NOBITS; + BINDING = GLOBAL; + }; + }; + + local: + *; +}; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/object.c b/usr/src/test/elf-tests/tests/mapfiles/parser/object.c new file mode 100644 index 0000000000..bac42fe326 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/object.c @@ -0,0 +1,18 @@ + +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright 2012, Richard Lowe. + */ + +char *common; +const char *data[2]; diff --git a/usr/src/test/elf-tests/tests/mapfiles/parser/test-parser.sh b/usr/src/test/elf-tests/tests/mapfiles/parser/test-parser.sh new file mode 100644 index 0000000000..1fb8634da9 --- /dev/null +++ b/usr/src/test/elf-tests/tests/mapfiles/parser/test-parser.sh @@ -0,0 +1,108 @@ +#! /usr/bin/sh +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# + +# Copyright 2012, Richard Lowe. + +TESTDIR=$(dirname $0) + +tmpdir=/tmp/test.$$ +mkdir $tmpdir +cd $tmpdir + +cleanup() { + cd / + rm -fr $tmpdir +} + +trap 'cleanup' EXIT + +if [[ $PWD != $tmpdir ]]; then + print -u2 "Failed to create temporary directory: $tmpdir" + exit 1; +fi + +if [[ -n $PROTO ]]; then + export LD_ALTEXEC=$PROTO/bin/ld +fi + +ret=0 + +function should_succeed { + mapfile=$1 + msg=$2 + + if gcc -m32 -shared -Wl,-M,${TESTDIR}/$mapfile ${TESTDIR}/object.c \ + -o object.so; then + echo "pass (32): $msg" + else + echo "FAIL (32): $msg" + ret=1 + fi + + if gcc -m64 -shared -Wl,-M,${TESTDIR}/$mapfile ${TESTDIR}/object.c \ + -o object.so; then + echo "pass (64): $msg" + else + echo "FAIL (64): $msg" + ret=1 + fi +} + +function should_fail { + mapfile=$1 + msg=$2 + error=$3 + + if gcc -m32 -shared -Wl,-M,${TESTDIR}/$mapfile ${TESTDIR}/object.c \ + -o object.so 2>&1 | /usr/bin/grep -Eq "$error"; then + echo "pass (32): $msg" + else + echo "FAIL (32): $msg" + ret=1 + fi + + if gcc -m64 -shared -Wl,-M,${TESTDIR}/$mapfile ${TESTDIR}/object.c \ + -o object.so 2>&1 | /usr/bin/grep -Eq "$error"; then + echo "pass (64): $msg" + else + echo "FAIL (64): $msg" + ret=1 + fi +} + +should_succeed mapfile.sizemult.good "link with integer multiplier syntax" + +should_fail mapfile.sizemult.wrong "link with integer multiplier syntax with wrong result" \ + "assertion failed: size of symbol common should be: [0-9]+ is: [0-9]+" +should_fail mapfile.sizemult.noterm "link with integer multiplier syntax with no terminating ]" \ + "expected '.' to terminate multiplier of: 2" + +should_fail mapfile.sizemult.twobegin "link with integer multiplier with two [s" \ + "expected integer value following '.': 2..4" + +should_fail mapfile.sizemult.overflow "link with integer multiplier that overflows" \ + "multiplication overflow" + +should_succeed mapfile.addrsize.good "link with addrsized symbol" + +should_succeed mapfile.addrsize.mult "link with addrsized symbol with multiplier" + +should_fail mapfile.addrsize.wrong "link with addrsized symbol with wrong value" \ + "assertion failed: size of symbol" + +should_fail mapfile.addrsize.substring "link with addrsized symbol with substring of valid name" \ + "expected integer value following SIZE: addrs" + +should_fail mapfile.addrsize.superstring "link with addrsized symbol with superstring of valid name" \ + "expected integer value following SIZE: addrsizes" + +exit $ret diff --git a/usr/src/tools/ctf/libctf/Makefile.com b/usr/src/tools/ctf/libctf/Makefile.com index 31b5d19f4d..f132031de5 100644 --- a/usr/src/tools/ctf/libctf/Makefile.com +++ b/usr/src/tools/ctf/libctf/Makefile.com @@ -29,6 +29,10 @@ LDLIBS += -lc -lelf -L$(ROOTONBLDLIBMACH) -ldwarf -lavl NATIVE_LIBS += libelf.so libavl.so libc.so DYNFLAGS += '-R$$ORIGIN/../../lib/$(MACH)' +# As a bootstrapping issue, we can't use the real mapfile because we build +# early in tools and thus don't have support for assertions. +MAPFILES= + .KEEP_STATE: all: $(LIBS) diff --git a/usr/src/tools/sgs/libelf/Makefile b/usr/src/tools/sgs/libelf/Makefile index d90cb937c0..7fc734dc99 100644 --- a/usr/src/tools/sgs/libelf/Makefile +++ b/usr/src/tools/sgs/libelf/Makefile @@ -34,6 +34,10 @@ SGSMSGTARG += $(SGSMSG32) NATIVE_LIBS += libc.so CW_LINKER = +# As a bootstrapping issue, we can't use the real mapfile because we build +# early in tools and thus don't have support for assertions. +MAPFILES= + .KEEP_STATE: install: all $(ROOTONBLDLIBMACH)/$(DYNLIB) $(ROOTONBLDLIBMACH)/$(LIBLINKS) diff --git a/usr/src/tools/sgs/liblddbg/Makefile b/usr/src/tools/sgs/liblddbg/Makefile index b15dd2f33c..968af30d3e 100644 --- a/usr/src/tools/sgs/liblddbg/Makefile +++ b/usr/src/tools/sgs/liblddbg/Makefile @@ -37,6 +37,9 @@ SGSMSGTARG += $(SGSMSG32) NATIVE_LIBS += libc.so CW_LINKER = +# A bootstrapping problem means we can't use the regular mapfile just yet +MAPFILES = + all: $(DYNLIB) $(LIBLINKS) install: all $(ROOTONBLDLIBMACH)/$(DYNLIB) $(ROOTONBLDLIBMACH)/$(LIBLINKS) diff --git a/usr/src/ucblib/libcurses/mapfile-vers b/usr/src/ucblib/libcurses/mapfile-vers index a5a3d7fce6..925671f9cf 100644 --- a/usr/src/ucblib/libcurses/mapfile-vers +++ b/usr/src/ucblib/libcurses/mapfile-vers @@ -40,127 +40,147 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { global: - AL; - AL_PARM; - AM; - BC; + AL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + AL_PARM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + AM { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + BC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; box; - BS; - BT; - CA; - CD; - CE; - CL; - CM; - COLS; - CR; - CS; - curscr; - DA; - DB; - DC; - Def_term; + BS { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + BT { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + CA { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + CD { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + CE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + CL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + CM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + COLS { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + CR { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + CS { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + curscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + DA { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + DB { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + DC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + Def_term { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; delwin; - DL; - DL_PARM; - DM; - DO; - DOWN_PARM; - _echoit; - ED; - EI; + DL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + DL_PARM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + DM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + DO { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + DOWN_PARM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + _echoit { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + ED { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + EI { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; endwin; - _endwin; - EO; + _endwin { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + EO { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; getcap; gettmode; - GT; - HC; - HO; - HZ; - IC; + GT { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + HC { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + HO { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + HZ { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + IC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; idlok; - IM; - IN; + IM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + IN { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; initscr; - IP; - K0; - K1; - K2; - K3; - K4; - K5; - K6; - K7; - K8; - K9; - KD; - KE; - KH; - KL; - KR; - KS; - KU; - LEFT_PARM; - LINES; - LL; + IP { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K0 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K1 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K2 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K3 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K4 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K5 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K6 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K7 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K8 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + K9 { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KD { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KH { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KR { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KS { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + KU { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + LEFT_PARM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + LINES { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + LL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; longname; - MA; - MI; - MS; + MA { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + MI { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + MS { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; mvcur; mvprintw; mvscanw; mvwin; mvwprintw; mvwscanw; - My_term; - NC; - ND; + My_term { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + NC { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + ND { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; newwin; - NL; - NONL; - normtty; - NS; - OS; + NL { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + NONL { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + normtty { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + NS { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + OS { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; overlay; overwrite; - PC; - _pfast; + PC { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + _pfast { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; printw; - _rawmode; - RC; - _res_flg; - RIGHT_PARM; - SC; + _rawmode { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + RC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + _res_flg { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + RIGHT_PARM { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + SC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; scanw; scroll; - SE; + SE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; setterm; - SF; - SO; - SR; - stdscr; + SF { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + SO { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + SR { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + stdscr { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; subwin; - TA; - TE; - TI; + TA { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + TE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + TI { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; touchline; touchwin; - _tty; - _tty_ch; - ttytype; - UC; - UE; - UL; - _unctrl; - UP; - UP_PARM; - UPPERCASE; - US; - VB; - VE; - VS; + _tty { ASSERT = { TYPE = OBJECT; SIZE = 8; }; }; + _tty_ch { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; + ttytype { ASSERT = { TYPE = OBJECT; SIZE = 50; }; }; + UC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + UE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + UL { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + _unctrl { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[128]; + }; + }; + UP { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + UP_PARM { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize; + }; + }; + UPPERCASE { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + US { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + VB { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + VE { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + VS { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; waddch; waddstr; wclear; @@ -179,11 +199,11 @@ SYMBOL_VERSION SUNW_1.1 { wscanw; wstandend; wstandout; - XB; - XN; - XS; - XT; - XX; + XB { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + XN { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + XS { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + XT { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; + XX { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; }; SYMBOL_VERSION SUNWprivate_1.1 { diff --git a/usr/src/ucblib/libdbm/mapfile-vers b/usr/src/ucblib/libdbm/mapfile-vers index 91a6fa644b..495328dda1 100644 --- a/usr/src/ucblib/libdbm/mapfile-vers +++ b/usr/src/ucblib/libdbm/mapfile-vers @@ -40,21 +40,21 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { global: - bitno; - blkno; + bitno { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + blkno { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; dbmclose; dbminit; - dbrdonly; + dbrdonly { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; delete; - dirbuf; - dirf; + dirbuf { ASSERT = { TYPE = OBJECT; SIZE = 4096; }; }; + dirf { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; fetch; firstkey; - hmask; - maxbno; + hmask { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + maxbno { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; nextkey; - pagbuf; - pagf; + pagbuf { ASSERT = { TYPE = OBJECT; SIZE = 1024; }; }; + pagf { ASSERT = { TYPE = OBJECT; SIZE = 4; }; }; store; }; diff --git a/usr/src/ucblib/libtermcap/mapfile-vers b/usr/src/ucblib/libtermcap/mapfile-vers index c977042dd3..abacf9b42e 100644 --- a/usr/src/ucblib/libtermcap/mapfile-vers +++ b/usr/src/ucblib/libtermcap/mapfile-vers @@ -40,16 +40,16 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.1 { global: - BC; - ospeed; - PC; + BC { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; + ospeed { ASSERT = { TYPE = OBJECT; SIZE = 2; }; }; + PC { ASSERT = { TYPE = OBJECT; SIZE = 1; }; }; tgetent; tgetflag; tgetnum; tgetstr; tgoto; tputs; - UP; + UP { ASSERT = { TYPE = OBJECT; SIZE = addrsize; }; }; local: *; }; diff --git a/usr/src/ucblib/libucb/port/mapfile-vers b/usr/src/ucblib/libucb/port/mapfile-vers index 09dd708502..e6424acc42 100644 --- a/usr/src/ucblib/libucb/port/mapfile-vers +++ b/usr/src/ucblib/libucb/port/mapfile-vers @@ -40,7 +40,12 @@ $mapfile_version 2 SYMBOL_VERSION SUNW_1.3 { global: - _siguhandler; + _siguhandler { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; } SUNW_1.2; # Due to mistakes made early in the history of this library, there are @@ -57,7 +62,7 @@ SYMBOL_VERSION SUNW_1.2 { # between platforms: # amd64: SUNW_1.1 is empty, and SUNW_0.7 contains everything. # i386, sparc: SUNW_1.1 contains 5 largefile API routines, and everything -# else in in SUNW_0.7. +# else in in SUNW_0.7. # sparcv9: Everything is in SUNW_1.1, and SUNW_0.7 is empty SYMBOL_VERSION SUNW_1.1 { @@ -92,7 +97,7 @@ $endif gethostid; gethostname; getpagesize; - getrusage { TYPE = FUNCTION; FILTER = libc.so.1 }; + getrusage { TYPE = FUNCTION; FILTER = libc.so.1; }; gettimeofday; getwd; index; @@ -122,16 +127,21 @@ $endif sigstack; sigvec; sigvechandler; - sleep { TYPE = FUNCTION; FILTER = libc.so.1 }; + sleep { TYPE = FUNCTION; FILTER = libc.so.1; }; sprintf; srand; statfs; - sys_siglist; + sys_siglist { + ASSERT = { + TYPE = OBJECT; + SIZE = addrsize[34]; + }; + }; times; - ualarm { TYPE = FUNCTION; FILTER = libc.so.1 }; + ualarm { TYPE = FUNCTION; FILTER = libc.so.1; }; usignal; usigpause; - usleep { TYPE = FUNCTION; FILTER = libc.so.1 }; + usleep { TYPE = FUNCTION; FILTER = libc.so.1; }; vfprintf; vprintf; vsprintf; @@ -146,8 +156,8 @@ $if _sparc longjmp; setjmp; $elif _x86 && _ELF32 - longjmp { TYPE = FUNCTION; FILTER = libc.so.1 }; - setjmp { TYPE = FUNCTION; FILTER = libc.so.1 }; + longjmp { TYPE = FUNCTION; FILTER = libc.so.1; }; + setjmp { TYPE = FUNCTION; FILTER = libc.so.1; }; $endif $if _sparc && _ELF64 @@ -183,20 +193,17 @@ $if _sparc _setjmp; __sigcleanup; $if _ELF32 - syscall { TYPE = FUNCTION; FILTER = libc.so.1 }; + syscall { TYPE = FUNCTION; FILTER = libc.so.1; }; $endif $endif $if _x86 && _ELF32 - _longjmp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _setjmp { TYPE = FUNCTION; FILTER = libc.so.1 }; - _syscall { TYPE = FUNCTION; FILTER = libc.so.1 }; - _times { TYPE = FUNCTION; FILTER = libc.so.1 }; + _longjmp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _setjmp { TYPE = FUNCTION; FILTER = libc.so.1; }; + _syscall { TYPE = FUNCTION; FILTER = libc.so.1; }; + _times { TYPE = FUNCTION; FILTER = libc.so.1; }; $endif - local: *; }; - - |