15088Sab196087# 25088Sab196087# CDDL HEADER START 35088Sab196087# 45088Sab196087# The contents of this file are subject to the terms of the 55088Sab196087# Common Development and Distribution License (the "License"). 65088Sab196087# You may not use this file except in compliance with the License. 75088Sab196087# 85088Sab196087# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 95088Sab196087# or http://www.opensolaris.org/os/licensing. 105088Sab196087# See the License for the specific language governing permissions 115088Sab196087# and limitations under the License. 125088Sab196087# 135088Sab196087# When distributing Covered Code, include this CDDL HEADER in each 145088Sab196087# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 155088Sab196087# If applicable, add the following below this CDDL HEADER, with the 165088Sab196087# fields enclosed by brackets "[]" replaced with your own identifying 175088Sab196087# information: Portions Copyright [yyyy] [name of copyright owner] 185088Sab196087# 195088Sab196087# CDDL HEADER END 205088Sab196087# 215088Sab196087 225088Sab196087# 2311827SRod.Evans@Sun.COM# Copyright 2010 Sun Microsystems, Inc. All rights reserved. 245088Sab196087# Use is subject to license terms. 255088Sab196087# 265088Sab196087 275088Sab196087@ _START_ 285088Sab196087 295088Sab196087# Message file for cmd/sgs/elfedit. 305088Sab196087 315088Sab196087@ MSG_ID_ELFEDIT 325088Sab196087 335088Sab196087 345088Sab196087# Usage Messages 355088Sab196087 365088Sab196087@ MSG_USAGE_BRIEF "usage: elfedit [-adrw] [-e cmd] [-L modpath] \ 375088Sab196087 [-o style] [file] [outfile]\n" 385088Sab196087@ MSG_USAGE_DETAIL1 "\t[-a] Autoprint (show edit results)\n" 395088Sab196087@ MSG_USAGE_DETAIL2 "\t[-d] Issue messages describing internal \ 405088Sab196087 operations\n" 415088Sab196087@ MSG_USAGE_DETAIL3 "\t[-e cmd] edit command\n" 425088Sab196087@ MSG_USAGE_DETAIL4 "\t[-L modpath] Set module path\n" 435088Sab196087@ MSG_USAGE_DETAIL5 "\t[-o ostyle] Output style (default|simple|num)\n" 445088Sab196087@ MSG_USAGE_DETAIL6 "\t[-r] Readonly session (outfile not \ 455088Sab196087 allowed)\n" 465088Sab196087@ MSG_USAGE_DETAIL_LAST "\n\tExtensive help for edit commands is available.\n\ 475088Sab196087 \tEnter 'help' at the elfedit prompt.\n" 485088Sab196087@ MSG_USAGE_CMD "usage: %s\n" 495088Sab196087 505088Sab196087 515088Sab196087# sys:set option names 525088Sab196087 535088Sab196087@ MSG_SYSSET_A "autoprint flag" 545088Sab196087@ MSG_SYSSET_D "debug flag" 555088Sab196087 565088Sab196087 575088Sab196087# Names of things we allocate dynamically 585088Sab196087 595088Sab196087@ MSG_ALLOC_OBJSTATE "object state" 605088Sab196087@ MSG_ALLOC_SYMTABOS "symbol table information buffer" 615088Sab196087@ MSG_ALLOC_MODDEF "module definition" 625088Sab196087@ MSG_ALLOC_UCMD "user command state" 635088Sab196087@ MSG_ALLOC_UCMDSTR "user command string buffer" 645088Sab196087@ MSG_ALLOC_TOKBUF "user command token buffer" 655088Sab196087@ MSG_ALLOC_BATCHLST "list of -e commands" 665088Sab196087@ MSG_ALLOC_EXPATH "expanded module search path" 675088Sab196087@ MSG_ALLOC_PATHARR "search path array" 685088Sab196087@ MSG_ALLOC_HELPITEM "help state" 695088Sab196087@ MSG_ALLOC_SECMSGPRE "section message prefix string" 709273SAli.Bahrami@Sun.COM@ MSG_ALLOC_ELFCONDESC "ELF constant string descriptors" 715088Sab196087 725088Sab196087# Format strings 735088Sab196087 745088Sab196087@ MSG_FMT_BUILTIN "<built in>" 755088Sab196087@ MSG_FMT_UNKNOWN "<unknown>" 765088Sab196087 775088Sab196087# Debug messages 785088Sab196087 795088Sab196087@ MSG_DEBUG_ADDDYNFLG "[%d: %s][%d]: Set DF_1_EDITED flag\n" 805088Sab196087@ MSG_DEBUG_SEEDYNFLG "[%d: %s][%d]: Previously edited file \ 815088Sab196087 (DF_1_EDITED flag is set) \n" 825088Sab196087@ MSG_DEBUG_CMDALIAS "Command %s:%s is an alias for %s:%s\n" 835088Sab196087@ MSG_DEBUG_MODLOAD "load module: %s: %s\n" 845088Sab196087@ MSG_DEBUG_MODUNLOAD "unload module: %s: %s\n" 855088Sab196087@ MSG_DEBUG_CPFILE "copied %s to output file: %s\n"; 865088Sab196087@ MSG_DEBUG_UNLINKFILE "unlink unsaved output file: %s\n"; 875088Sab196087@ MSG_DEBUG_VERSION "%d-bit version\n" 885088Sab196087@ MSG_DEBUG_READONLY "session is readonly\n"; 8911827SRod.Evans@Sun.COM@ MSG_DEBUG_NOFILE "no ELF object specified. Limited functionality is \ 9011827SRod.Evans@Sun.COM available\n"; 915088Sab196087@ MSG_DEBUG_DIRTYEXIT "discarding unsaved edits\n"; 925892Sab196087@ MSG_DEBUG_FNDSEC "[%d: %s]: section\n" 935088Sab196087@ MSG_DEBUG_FNDCAP "[%d: %s]: capabilities section\n" 945088Sab196087@ MSG_DEBUG_FNDDYN "[%d: %s]: dynamic section\n" 955088Sab196087@ MSG_DEBUG_FNDSTR "[%d: %s][%d]: string: %s\n" 966225Sab196087@ MSG_DEBUG_FNDSTRTAB "[%d: %s]: string table section (SHT_STRTAB)\n" 976225Sab196087@ MSG_DEBUG_FNDSTRTABFL "[%d: %s]: string table section (SHF_STRINGS)\n" 985088Sab196087@ MSG_DEBUG_FNDSYMTAB "[%d: %s]: %s symbol table section\n" 995088Sab196087@ MSG_DEBUG_FNDSYMINFO "[%d: %s]: syminfo section\n" 1005088Sab196087@ MSG_DEBUG_FNDVERSYM "[%d: %s]: versym section: [%d: %s]\n" 1015088Sab196087@ MSG_DEBUG_FNDXSHNDX "[%d: %s]: extended section index section: [%d: %s]\n" 1025088Sab196087@ MSG_DEBUG_EXISTSTR "[%d: %s][%d]: Found existing string in section: %s\n" 1035308Sab196087@ MSG_DEBUG_ADDSTR "[%d: %s][%d]: Using %d/%d bytes from reserved area \ 1045088Sab196087 to add string: %s\n" 1055088Sab196087@ MSG_DEBUG_NULL2DYNFL1 "[%d: %s]: No existing flags1 field to modify. \ 1065088Sab196087 Will use extra DT_NULL in slot [%d] \n" 1075088Sab196087@ MSG_DEBUG_AUX_LINK "[%d: %s]: Ignoring section: sh_link field references \ 1085088Sab196087 non-symbol table section: [%d]\n" 1095088Sab196087@ MSG_DEBUG_AUX_SIZE "[%d: %s][%d]: Ignoring section: Not enough elements \ 1105088Sab196087 for corresponding symbol table: [%d: %s][%d]\n" 1115088Sab196087@ MSG_DEBUG_EXECCMD "command: %s\n" 1125088Sab196087@ MSG_DEBUG_SHNAM2NDX "[%d: %s]: section name: %s\n" 1135088Sab196087@ MSG_DEBUG_SYMNAM2NDX "[%d: %s][%d]: symbol \"%s\"\n" 1145088Sab196087@ MSG_DEBUG_INPLACEWARN "warning: editing input file in place is not \ 1155088Sab196087 recommended: %s\n" 1165088Sab196087@ MSG_DEBUG_SHNDX_RANGE "Specified section index [%d] is outside of valid \ 1175088Sab196087 of range for this object: 0-%d\n" 1185088Sab196087@ MSG_DEBUG_ARRCPY_1 "%s: copy array element [%d] to [%d]\n" 1195088Sab196087@ MSG_DEBUG_ARRCPY_N "%s: copy array elements [%d-%d] to [%d-%d]\n" 1205088Sab196087@ MSG_DEBUG_ARRZERO_1 "%s[%d]: zero array element\n" 1215088Sab196087@ MSG_DEBUG_ARRZERO_N "%s[%d-%d]: zero %d array elements\n" 1225088Sab196087@ MSG_DEBUG_ARRMOVE_1 "%s: moved element [%d] to [%d]\n" 1235088Sab196087@ MSG_DEBUG_ARRMOVE_N "%s: moved %d elements from [%d-%d] to [%d-%d]\n" 1245088Sab196087 1255088Sab196087# Errors 1265088Sab196087 1275088Sab196087@ MSG_ERR_NOFILSYSONLY "No ELF object specified. Only commands from \ 1285088Sab196087 module sys: are allowed: %s:%s\n" 1295088Sab196087@ MSG_ERR_BADOSTYLE "Unrecognized output style \ 1305088Sab196087 (default|simple|num): %s\n" 1315088Sab196087@ MSG_ERR_BADCONST "internal error: bad constant value in \ 1325088Sab196087 elfedit_const_to_atoui()\n" 1335088Sab196087@ MSG_ERR_BADGETVAL "internal error: bad required value passed to \ 1345088Sab196087 elfedit_XXX_get_value()\n" 1355088Sab196087@ MSG_ERR_PATHTOOLONG "path too long: %s/%s.so\n" 1365088Sab196087@ MSG_ERR_CNTDLOPEN "unable to load module sharable object %s: %s\n" 1375088Sab196087@ MSG_ERR_CNTDLCLOSE "unable to unload module sharable object %s: %s\n" 1385892Sab196087@ MSG_ERR_ESCEOL "backslash escape cannot be used at end of line\n" 1395892Sab196087@ MSG_ERR_BADCESC "unrecognized escape in double quoted token: \\%c\n" 1405892Sab196087@ MSG_ERR_UNTERMQUOTE "command is missing closing quote: %c\n" 1415088Sab196087@ MSG_ERR_UNRECMOD "no such module: %s\n" 1425088Sab196087@ MSG_ERR_UNRECCMD "no such command: %s:%s\n" 1435088Sab196087@ MSG_ERR_SONOTMOD "sharable object is not a valid elfedit module: %s\n" 1445088Sab196087@ MSG_ERR_CNTULSMOD "cannot unload built in module: %s\n" 1455088Sab196087@ MSG_ERR_NULLPRICMDNAM "module has empty string for primary command: %s\n" 1465088Sab196087@ MSG_ERR_BADMODLOAD "elfedit module failed to initialize: %s\n" 1475088Sab196087@ MSG_ERR_BADMODNAME "sharable library provides module '%s' rather \ 1485088Sab196087 than expected '%s': %s\n" 1495088Sab196087@ MSG_ERR_OPT_MODPRE "command option name must start with \ 1505088Sab196087 a '-': %s : %s:%s %s\n" 1515088Sab196087@ MSG_ERR_OPT_MODLEN "command option name must have at least one character: \ 1525088Sab196087 %s : %s:%s %s\n" 1535088Sab196087@ MSG_ERR_OPT_EXCMASKN0 "command option oa_excmask is non-zero when \ 1545088Sab196087 oa_idmask is zero: %s : %s:%s %s\n" 1555088Sab196087@ MSG_ERR_OPT_IDMASKPOW2 "command option oa_idmask must be 0 or power \ 1565088Sab196087 of 2: %s : %s:%s %s\n" 1575088Sab196087@ MSG_ERR_OPT_IDMASKUNIQ "command option oa_idmask must be 0 or must be unique \ 1585088Sab196087 value: %s : %s:%s %s\n" 1595088Sab196087@ MSG_ERR_ARG_MODPRE "command argument name may not start with \ 1605088Sab196087 a '-': %s : %s:%s %s\n" 1615088Sab196087@ MSG_ERR_ARG_MODLEN "command argument name must have at least one \ 1625088Sab196087 character: %s : %s:%s %s\n" 1635088Sab196087@ MSG_ERR_ARG_CMDOA_VAL "command argument has ELFEDIT_CMDOA_F_VALUE set, \ 1645088Sab196087 which is only allowed for command \ 1655088Sab196087 options: %s : %s:%s %s\n" 1665088Sab196087@ MSG_ERR_ARG_MASKNOT0 "command argument oa_idmask and oa_excmask fields \ 1675088Sab196087 must both be set to 0: %s : %s:%s %s\n" 1685088Sab196087@ MSG_ERR_BADSTDOA "internal error: argument or option uses \ 1695088Sab196087 ELFEDIT_CMDOA_F_VALUE incorrectly: %s : %s:%s\n" 1705088Sab196087@ MSG_ERR_CMDOA_VALNAM "ELFEDIT_CMDOA_F_VALUE optarg has NULL \ 1715088Sab196087 oa_name: %s : %s:%s %s\n" 1725088Sab196087@ MSG_ERR_CMDOA_VALNOT0 "ELFEDIT_CMDOA_F_VALUE optarg has non-0 oa_help, \ 1735088Sab196087 oa_flags, oa_idmask or oa_excmask \ 1745088Sab196087 field: %s : %s:%s %s\n" 1755088Sab196087@ MSG_ERR_BADMODOPTVAL "command option has ELFEDIT_CMDOA_F_VALUE bit set, \ 1765088Sab196087 but following value item is missing: %s : %s:%s %s\n" 1775088Sab196087@ MSG_ERR_CNTOPNFILE "open failed: %s: %s\n" 1785088Sab196087@ MSG_ERR_CNTOPNDIR "unable to read directory: %s: %s\n" 1795088Sab196087@ MSG_ERR_SIGACTION "unable to set signal handler: %s\n" 1805088Sab196087@ MSG_ERR_NOAR "unable to edit ELF archive: %s\n" 1815088Sab196087@ MSG_ERR_UNRECELFFILE "unable to edit non-ELF file: %s\n" 1825088Sab196087@ MSG_ERR_BADELFCLASS "unable to edit file with unknown ELFCLASS: %s\n" 1835088Sab196087@ MSG_ERR_MALLOC "%s: malloc: %s\n" 1845088Sab196087@ MSG_ERR_LIBELF "%s: %s failed: %s\n" 1855088Sab196087@ MSG_ERR_MODNOCMD "module '%s' specified without a command\n" 1865088Sab196087@ MSG_ERR_CNTFORK "unable to execute child process: %s\n" 1875088Sab196087@ MSG_ERR_CNTWAIT "unable to wait for child process: %s\n" 1885088Sab196087@ MSG_ERR_CNTEXEC "%sunable to exec %s: %s\n" 1895088Sab196087@ MSG_ERR_CNTSTAT "unable to stat %s: %s\n" 1905088Sab196087@ MSG_ERR_CNTCHMOD "unable to chmod %s: %s\n" 1915088Sab196087@ MSG_ERR_BADSECNDX "Specified section index [%d] is outside valid \ 1925088Sab196087 range: 1-%d\n" 1935088Sab196087@ MSG_ERR_NOCAP "ELF object does not have a capabilities section\n" 1945088Sab196087@ MSG_ERR_NODYN "ELF object does not have a dynamic section\n" 1955088Sab196087@ MSG_ERR_NOSYM "[%d: %s]: Symbol table does not contain symbol: %s\n" 1965088Sab196087@ MSG_ERR_NOSYMTAB "symbol table section not found\n" 1975088Sab196087@ MSG_ERR_NOSYMINFO "ELF object does not have a syminfo section\n" 1985088Sab196087@ MSG_ERR_NOTSYMTAB "[%d: %s]: section is not a symbol table\n" 1995088Sab196087@ MSG_ERR_STRSHNDX "string section index %d is outside expected \ 2005892Sab196087 range 1 - %d\n" 2015088Sab196087@ MSG_ERR_NOTSTRSH "[%d: %s]: Section is not a string table as expected\n" 2025088Sab196087@ MSG_ERR_NOSTRPAD "[%d: %s]: String table does not have room to add \ 2035088Sab196087 string\n" 2045088Sab196087@ MSG_ERR_BADSTROFF "[%d: %s]: String offset [%d] is outside valid \ 2055088Sab196087 range: 0-%d\n" 2065088Sab196087@ MSG_ERR_NOVERSYMSEC "[%d: %s]: symbol table does not have an associated \ 2075088Sab196087 versym section\n" 2085088Sab196087@ MSG_ERR_NOXSHSEC "[%d: %s]: symbol table does not have an associated \ 2095088Sab196087 extended index section\n" 2105088Sab196087@ MSG_ERR_BADATOISTR "not a valid numeric value: '%s'\n" 2115088Sab196087@ MSG_ERR_ATOIRANGE "%s value is out of range [%lld - %lld]: %lld\n" 2125088Sab196087@ MSG_ERR_ATOUIRANGE "%s value is out of range [%llu - %llu]: %llu\n" 2135088Sab196087@ MSG_ERR_BADPATHCODE "Unrecognized code encountered in module \ 2145088Sab196087 search path: %%%c\n" 2155088Sab196087@ MSG_ERR_UNKNOWNSYSERR "<unknown>" 2165088Sab196087@ MSG_ERR_PAGERFINI "Error encountered closing pager process\n" 2175088Sab196087@ MSG_ERR_PRINTF "Error encountered writing output\n" 2185088Sab196087@ MSG_ERR_FWRITE "Error encountered writing output: %s\n" 2195088Sab196087@ MSG_ERR_MODNAMTOOLONG "module name too long: %s\n" 2205088Sab196087@ MSG_ERR_CNTGETORIGIN "Unable to determine elfedit $ORIGIN\n" 2215088Sab196087@ MSG_ERR_GLREAD "error reading from stdin: %s\n" 2225088Sab196087@ MSG_ERR_READONLY "Operation not allowed in readonly session\n" 2235088Sab196087@ MSG_ERR_NODIRTYQUIT "Output ELF file has changes pending. Use 'write' \ 2245088Sab196087 to save them, or 'quit -f' to exit without saving\n" 2255088Sab196087@ MSG_ERR_NOSECNAM "File does not contain section of name: %s\n" 2265088Sab196087@ MSG_ERR_NOSECTYP "File does not contain section of type: %s\n" 2275088Sab196087@ MSG_ERR_ARRBNDS "%s[%d]: attempt to access elements outside \ 2285088Sab196087 of valid of range for this section: 0-%d\n" 2295088Sab196087@ MSG_ERR_ARRMVOVERLAP "%s: Array source [%d-%d] and destination \ 2305088Sab196087 [%d-%d] regions overlap\n" 2319273SAli.Bahrami@Sun.COM@ MSG_ERR_BADOSABI "Operation not supported by current OS ABI: %s\n"; 2325088Sab196087 2335088Sab196087# Format strings for sys:help 2345088Sab196087@ MSG_HLPFMT_MOD "\nMODULE\n %s - %s\n" 2355088Sab196087@ MSG_HLPFMT_NAME "\nNAME\n %s - %s\n" 2365088Sab196087@ MSG_HLPFMT_SYNOPSIS "\nSYNOPSIS\n %s\n" 2375088Sab196087@ MSG_HLPFMT_ALIASES "\nALIASES\n" 2385088Sab196087@ MSG_HLPFMT_MODDEFCMD "module default"; 2395088Sab196087@ MSG_HLPFMT_DEFCMD "\t\t(Default Command For Module)"; 2405088Sab196087@ MSG_HLPFMT_DESC "\nDESCRIPTION\n" 2415088Sab196087@ MSG_HLPFMT_ARGS "\nARGUMENTS\n" 2425088Sab196087@ MSG_HLPFMT_OPT "\nOPTIONS\n" 2435088Sab196087@ MSG_HLPFMT_MULTIEND "[End: %s, Next: %s]\n" 2445088Sab196087@ MSG_HLPFMT_INFILE "Input File: %s\n" 2455088Sab196087@ MSG_HLPFMT_INFILERO "Input File: %s (readonly)\n" 2465088Sab196087@ MSG_HLPFMT_INFILENONE "Input File: <not present>\n" 2475088Sab196087@ MSG_HLPFMT_OUTFILE "Output File: %s\n" 24811827SRod.Evans@Sun.COM@ MSG_HLPFMT_CNGPENDING " (changes pending)\n" 2495088Sab196087@ MSG_HLPFMT_VARHDR "\nOptions:\n" 2505088Sab196087@ MSG_HLPFMT_AFLG " a (Autoprint): %s\n" 2515088Sab196087@ MSG_HLPFMT_DFLG " d (Debug): %s\n" 2525088Sab196087@ MSG_HLPFMT_OFLG " o (Output Style): %s\n" 2535088Sab196087@ MSG_HLPFMT_PATHHDR "\nModule Load Path:\n" 2545088Sab196087@ MSG_HLPFMT_MODHDR "\nCurrently Loaded Modules:\n" 2555088Sab196087@ MSG_HLPFMT_SUMSYNOPSIS "\n %s\n" 2565088Sab196087 2575088Sab196087 2585088Sab196087# Names we use when an ELF item lacks a name 2595088Sab196087 2605088Sab196087@ MSG_UNKNOWNSECNAM "<unknown section name>" 2615088Sab196087@ MSG_BADSYMOFFSETNAM "<bad symbol name>" 2625088Sab196087 2635088Sab196087 2645088Sab196087# builtin sys: module description 2655088Sab196087 2665088Sab196087@ MSG_MOD_SYS_DESC "Built in elfedit commands" 2675088Sab196087 2685088Sab196087 2695088Sab196087# 1-line description strings for builtin commands. 2705088Sab196087 2715088Sab196087@ MSG_SYS_DESC_HELP "Display module information and/or command \ 2725088Sab196087 documentation" 2735088Sab196087@ MSG_SYS_DESC_LOAD "Load module(s)" 2745088Sab196087@ MSG_SYS_DESC_SET "Set elfedit options" 2755088Sab196087@ MSG_SYS_DESC_STATUS "Session status (files, modules, options)" 2765088Sab196087@ MSG_SYS_DESC_QUIT "Exit elfedit session" 2775088Sab196087@ MSG_SYS_DESC_UNLOAD "Unload module(s)" 2785088Sab196087@ MSG_SYS_DESC_WRITE "Flush any changes back to current ELF file" 2795088Sab196087 2805088Sab196087 2815088Sab196087# Command option description strings for builtin commands 2825088Sab196087 2835088Sab196087@ MSG_SYS_OPTDESC_HELP_S "\ 2845088Sab196087 Generate a command synopsis rather than full command help.\n" 2855088Sab196087 2865088Sab196087@ MSG_SYS_OPTDESC_LOAD_A "\ 2875088Sab196087 Load every module that can be found by following the module\n\ 2885088Sab196087 load path.\n" 2895088Sab196087@ MSG_SYS_OPTDESC_QUIT_F "\ 2905088Sab196087 Exit the elfedit session without first requiring changes to\n\ 2915088Sab196087 be saved. Any modifications made to the output file will be\n\ 2925088Sab196087 quietly discarded, and will be lost." 2935088Sab196087@ MSG_SYS_OPTDESC_UNLOAD_A "\ 2945088Sab196087 Unload every currently loaded module. Loaded modules can be\n\ 2955088Sab196087 displayed using the \"status\" command.\n" 2965088Sab196087 2975088Sab196087 2985088Sab196087# Command option description strings for builtin commands 2995088Sab196087 3005088Sab196087@ MSG_ARGDESC_HELP_ARG "\ 3015088Sab196087 Items for which help is desired. Module names and/or command\n\ 3025088Sab196087 names are allowed, as described above.\n" 3035088Sab196087@ MSG_ARGDESC_LOAD_MODNAME "Name(s) of modules to be loaded.\n" 3045088Sab196087@ MSG_ARGDESC_SET_OPTION "Name of option to be set.\n" 3055088Sab196087@ MSG_ARGDESC_SET_VALUE "Value to be set for option.\n" 3065088Sab196087@ MSG_ARGDESC_UNLOAD_MODNAME "Name(s) of modules to be loaded.\n" 3075088Sab196087 3085088Sab196087 3095088Sab196087# Help text for builtin commands. 3105088Sab196087 3115088Sab196087@ MSG_SYS_HELP_HELP_NOARG " \ 3125088Sab196087 Welcome to elfedit, a utility for examining and editing\n\ 3135088Sab196087 ELF objects. This brief discussion will tell you the basics\n\ 3145088Sab196087 you need to know in order to use the elfedit help facility.\n\ 3155088Sab196087 With that, you will be able to find desired information about\n\ 3165088Sab196087 elfedit and its available commands.\n\ 3175088Sab196087 \n\ 3185088Sab196087 To reach the point where you are reading this text, you entered\n\ 3195088Sab196087 the elfedit command \"help\", without any arguments. Actually, you\n\ 3205088Sab196087 may have entered any of the following:\n\ 3215088Sab196087 \n\ 3225088Sab196087 \t?, help, man, sys:?, sys:help, sys:man\n\ 3235088Sab196087 \n\ 3245088Sab196087 As we will see below, these are simply different names for the\n\ 3255088Sab196087 help command.\n\ 3265088Sab196087 \n\ 3275088Sab196087 You use elfedit by issuing commands for it to execute.\n\ 3285088Sab196087 The syntax is similar to that used by Unix command line\n\ 3295088Sab196087 utilities, and follows the general form:\n\ 3305088Sab196087 \n\ 3315088Sab196087 \t> module:command [-opt]... arg...\n\ 3325088Sab196087 \n\ 3335088Sab196087 The '>' character is the elfedit prompt, and not part of the\n\ 3345088Sab196087 command. We show elfedit commands with the prompt, but you\n\ 3355088Sab196087 should not type the prompt in. elfedit supplies it to let\n\ 3365088Sab196087 you know when it is expecting a command to process.\n\ 3375088Sab196087 \n\ 3385088Sab196087 As with a Unix utility, there are options (which start with a '-'\n\ 3395088Sab196087 character) and plain arguments (which do not start with a '-').\n\ 3405088Sab196087 The plain arguments follow the options. The options and plain\n\ 3415088Sab196087 arguments differ from command to command. Each command sets its own\n\ 3425088Sab196087 rules for whether it accepts options and arguments, as well as\n\ 3435088Sab196087 which ones and how many. These details are found in the online\n\ 3445088Sab196087 help that is available for each command. To learn more about\n\ 3455088Sab196087 any command, use the help command:\n\ 3465088Sab196087 \n\ 3475088Sab196087 \t> help cmdname\n\ 3485088Sab196087 \n\ 3495088Sab196087 where 'cmdname' is the name of the command you are interested in.\n\ 3505088Sab196087 help is simply an elfedit command, like any other. As such, you\n\ 3515088Sab196087 can read the full documentation for help by entering the command:\n\ 3525088Sab196087 \n\ 3535088Sab196087 \t> help sys:help\n\ 3545088Sab196087 \n\ 3555088Sab196087 elfedit functionality is organized as \"modules\", which are\n\ 3565088Sab196087 dynamically loadable ELF objects that contain related editing\n\ 3575088Sab196087 commands. To refer to a command, you enter its module name,\n\ 3585088Sab196087 a colon (:), and the command name, all as a single unit without\n\ 3595088Sab196087 any intervening white-space. The 'sys' module is special: It is\n\ 3605088Sab196087 a built in module that contains the core commands required for\n\ 3615088Sab196087 elfedit to work. As a convenience, if you omit the module name\n\ 3625088Sab196087 from a command, elfedit assumes that you are referring to the sys\n\ 3635088Sab196087 module. This is why sys:help and help are really the same command,\n\ 3645088Sab196087 and why we did not have to write the above help command as:\n\ 3655088Sab196087 \n\ 3665088Sab196087 \t> sys:help sys:help\n\ 3675088Sab196087 \n\ 3685088Sab196087 In fact, we could have written it even more simply, as:\n\ 3695088Sab196087 \n\ 3705088Sab196087 \t> help help\n\ 3715088Sab196087 \n\ 3725088Sab196087 To access a command from any module other than sys, you must\n\ 3735088Sab196087 enter both the module and command names. This means that if\n\ 3745088Sab196087 you write your own module, the module name needs to be unique,\n\ 3755088Sab196087 but the command names it supplies can be the same names used by\n\ 3765088Sab196087 other modules. For instance, most elfedit modules supply a command\n\ 3775088Sab196087 named dump to display information about their part of the ELF \n\ 3785088Sab196087 file in a style similar to that used by the Unix elfdump command.\n\ 3795088Sab196087 Despite having the same name (dump), these are all distinct and\n\ 3805088Sab196087 separate commands. elfedit uses the module/command pair to know\n\ 3815088Sab196087 which one you mean.\n\ 3825088Sab196087 \n\ 3835088Sab196087 elfedit commands can sometimes have more than one name, or alias.\n\ 3845088Sab196087 Usually, each command only has one name, but there are some\n\ 3855088Sab196087 exceptions. For example, as we have already seen, sys:?, and \n\ 3865088Sab196087 sys:man are aliases of sys:help. These are all common names\n\ 3875088Sab196087 that different programs use to supply help. elfedit accepts all\n\ 3885088Sab196087 of these names in the hope that a new user who doesn't know\n\ 3895088Sab196087 elfedit yet will try one of them, and find this information.\n\ 3905088Sab196087 \n\ 3915088Sab196087 Most modules provide a \"default command\". This command will be\n\ 3925088Sab196087 run if you provide only the module name. Most modules use this\n\ 3935088Sab196087 feature to provide a shortcut for their \"dump\" command. For\n\ 3945088Sab196087 instance, both of the following commands run dyn:dump:\n\ 3955088Sab196087 \n\ 3965088Sab196087 \t> dyn:\n\ 3975088Sab196087 \t> dyn:dump\n\ 3985088Sab196087 \n\ 3995088Sab196087 Although the command name dump was not required, the colon\n\ 4005088Sab196087 (:) character is. Without it, elfedit will think you mean the\n\ 4015088Sab196087 command sys:dyn.\n\ 4025088Sab196087 \n\ 4035088Sab196087 Using the help command (sys:help), you can easily learn about\n\ 4045088Sab196087 the other commands that are available. To see which modules\n\ 4055088Sab196087 are available and a synopsis of the commands they provide:\n\ 4065088Sab196087 \n\ 4075088Sab196087 \t> help -s\n\ 4085088Sab196087 \n\ 4095088Sab196087 To see the full documentation for a command, you give the\n\ 4105088Sab196087 name of the command to the help command as a plain argument.\n\ 4115088Sab196087 As we saw above, this command will show you the detailed\n\ 4125088Sab196087 documentation for the help command itself:\n\ 4135088Sab196087 \n\ 4145088Sab196087 \t> help help\n\ 4155088Sab196087 \n\ 4165088Sab196087 The arguments to help can also be module names, without the\n\ 4175088Sab196087 command. In that case, output similar to that from the -s\n\ 4185088Sab196087 option will be displayed for that module.\n\ 4195088Sab196087 \n\ 4205088Sab196087 If you are new to elfedit, we recommend that you start by learning\n\ 4215088Sab196087 about the commands in the sys module. This will provide you with\n\ 4225088Sab196087 such basic knowledge as how to find out the status of your session\n\ 4235088Sab196087 (sys:status) or how to exit the elfedit program (sys:quit). Once\n\ 4245088Sab196087 you understand the basic commands, you can branch out and learn\n\ 4255088Sab196087 about the available modules and commands and how they can be used\n\ 4265088Sab196087 to edit ELF files.\n" 4275088Sab196087 4285088Sab196087@ MSG_SYS_HELP_HELP " \ 4295088Sab196087 The sys:help command provides information on elfedit modules\n\ 4305088Sab196087 and commands:\n\ 4315088Sab196087 \n\ 4325088Sab196087 o\tIf called with command names as arguments, documentation\n\ 4335088Sab196087 \tfor each given command is displayed. If the -s option is\n\ 4345088Sab196087 \tspecified, a basic synopsis for the command is given.\n\ 4355088Sab196087 \tOtherwise, the full documentation is shown.\n\ 4365088Sab196087 \n\ 4375088Sab196087 o\tIf called with module names as arguments, the name and\n\ 4385088Sab196087 \tpurpose of each module is shown, along with a brief synopsis\n\ 4395088Sab196087 \tof the commands the module provides.\n\ 4405088Sab196087 \n\ 4415088Sab196087 o\tIf called with the -s option, and no arguments, a brief\n\ 4425088Sab196087 \tsynopsis of every command is shown, organized by module,\n\ 4435088Sab196087 \tfor every module visible from the module load path.\n\ 4445088Sab196087 \n\ 4455088Sab196087 o\tIf called with no arguments, and the -s option is not\n\ 4465088Sab196087 \tused, a brief welcome message is displayed, giving basic\n\ 4475088Sab196087 \tinformation on elfedit operation and the use of the\n\ 4485088Sab196087 \thelp command.\n" 4495088Sab196087 4505088Sab196087@ MSG_SYS_HELP_LOAD "\ 4515088Sab196087 The sys:load command is used to explicitly load elfedit modules.\n\ 4525088Sab196087 \n\ 4535088Sab196087 Most of the functionality available in elfedit is not built\n\ 4545088Sab196087 into the elfedit program directly. Instead, functionality\n\ 4555088Sab196087 is contained in \"modules\", which are implemented as dynamically\n\ 4565088Sab196087 loadable ELF sharable objects. This design allows for easy\n\ 4575088Sab196087 extensibility of elfedit's abilities, and it is also efficient,\n\ 4585088Sab196087 since it allows elfedit to be a relatively small program.\n\ 4595088Sab196087 \n\ 4605088Sab196087 elfedit will automatically load a module under the following\n\ 4615088Sab196087 circumstances:\n\ 4625088Sab196087 \n \ 4635088Sab196087 o\tA command from the module needs to be run.\n\ 4645088Sab196087 \n \ 4655088Sab196087 o\tTo display help information about the module or a command\n\ 4665088Sab196087 \tfound in the module.\n\ 4675088Sab196087 \n \ 4685088Sab196087 o\tTo perform command completion in an interactive session.\n\ 4695088Sab196087 \tCommand completion can cause many, or all modules visible\n\ 4705088Sab196087 \tin the module path to be loaded.\n\ 4715088Sab196087 \n\ 4725088Sab196087 There is usually little need for explicit module loading.\n\ 4735088Sab196087 It is usually best to allow elfedit to load modules as they\n\ 4745088Sab196087 are needed.\n" 4755088Sab196087 4765088Sab196087@ MSG_SYS_HELP_SET "\ 4775088Sab196087 Set options that control how elfedit works.\n\ 4785088Sab196087 \n\ 47911827SRod.Evans@Sun.COM Most variables accept boolean (true/false) values. The sys:set\n\ 4805088Sab196087 command accepts any of the following as a boolean value:\n\ 4815088Sab196087 0/1, true/false, t/f, yes/no, y/n, on/off.\n\ 4825088Sab196087 \n\ 4835088Sab196087 The variables, and their allowed values, are as follows:\n\ 4845088Sab196087 \n\ 4855088Sab196087 a\tAutoprint [boolean]\n\ 4865088Sab196087 \tWhen autoprint is active, elfedit automatically displays\n\ 4875088Sab196087 \tthe results of any edits after carrying them out. By default,\n\ 4885088Sab196087 \tautoprint is on for interactive sessions, and false for\n\ 4895088Sab196087 \tsessions where the input is not a tty. The elfedit -a option\n\ 4905088Sab196087 \tcan be used to enable autoprint at session start.\n\ 4915088Sab196087 \n\ 4925088Sab196087 d\tDebug [boolean]\n\ 4935088Sab196087 \tWhen enabled, elfedit issues detailed messages showing\n\ 4945088Sab196087 \twhere ELF data is being accessed, and how specific edits\n\ 4955088Sab196087 \tare being carried out. Debug mode is off by default. The\n\ 4965088Sab196087 \telfedit -d option can be used to enable debug mode at\n\ 4975088Sab196087 \tsession start.\n\ 4985088Sab196087 \n\ 4995088Sab196087 o\tOutput Style [default, simple, num]\n\ 5005088Sab196087 \tControls the format in which elfedit prints ELF data:\n\ 5015088Sab196087 \n\ 5025088Sab196087 \tdefault\n\ 5035088Sab196087 \tInformation is displayed in a style similar to that used by\n\ 5045088Sab196087 \tthe elfdump utility. This style is best for interactive use.\n\ 5055088Sab196087 \n\ 5065088Sab196087 \tsimple\n\ 5075088Sab196087 \tData is displayed in a simple format, without extraneous\n\ 5085088Sab196087 \tinformation or formatting. Strings are displayed as is.\n\ 5095088Sab196087 \tNumbers are displayed as symbolic constants when possible,\n\ 5105088Sab196087 \tand in integer form otherwise.\n\ 5115088Sab196087 \n\ 5125088Sab196087 \tnum\n\ 5135088Sab196087 \tInteger values are always shown in integer form. Strings\n\ 5145088Sab196087 \tare shown as the integer offset into the containing string\n\ 5155088Sab196087 \ttable.\n" 5165088Sab196087 5175088Sab196087@ MSG_SYS_HELP_STATUS "\ 5185088Sab196087 The status of the current elfedit session is shown:\n\ 5195088Sab196087 \n\ 5205088Sab196087 o\tInput and output files\n\ 5215088Sab196087 \n\ 5225088Sab196087 o\tCurrent settings of the elfedit options (See 'help set'\n\ 5235088Sab196087 \tfor more information on elfedit options)\n\ 5245088Sab196087 \n\ 5255088Sab196087 o\tModule load path\n\ 5265088Sab196087 \n\ 5275088Sab196087 o\tLoaded modules and the paths of the sharable objects\n\ 5285088Sab196087 \tthat provide them\n" 5295088Sab196087 5305088Sab196087@ MSG_SYS_HELP_QUIT "\ 5315088Sab196087 Exits the elfedit session.\n\ 5325088Sab196087 \n\ 5335088Sab196087 elfedit will normally refuse to exit a non-readonly session\n\ 5345088Sab196087 while there are unsaved edits pending. The sys:write command\n\ 5355088Sab196087 can be used to save such edits, or the -f option can be used to\n\ 5365088Sab196087 discard pending edits and exit immediately.\n" 5375088Sab196087 5385088Sab196087@ MSG_SYS_HELP_UNLOAD "\ 5395088Sab196087 The sys:unload command is used to explicitly unload elfedit modules.\n\ 5405088Sab196087 \n\ 5415088Sab196087 There is usually little need to explicitly unload modules.\n\ 5425088Sab196087 \n\ 5435088Sab196087 The description of the sys:load command discusses module loading\n\ 5445088Sab196087 in more detail.\n" 5455088Sab196087 5465088Sab196087@ MSG_SYS_HELP_WRITE "\ 5475088Sab196087 Writes all pending edits to the output file. Until this is done,\n\ 5485088Sab196087 the edits are not permanent, and can be abandoned by exiting the\n\ 5495088Sab196087 session using the -f option to sys:quit. Once sys:write is used,\n\ 5505088Sab196087 these changes become permanent.\n" 5515088Sab196087 5525088Sab196087 5535088Sab196087 5545088Sab196087# Command option description strings for inheritable option strings 5555088Sab196087 5565088Sab196087@ MSG_STDOA_OPTDESC_AND "\ 5575088Sab196087 The new value should be bitwised AND'd against the\n\ 5585088Sab196087 existing value.\n" 5595088Sab196087 5605088Sab196087@ MSG_STDOA_OPTDESC_CMP "\ 5615088Sab196087 The new value should be bitwise complemented\n\ 5625088Sab196087 (1 values set to 0, and 0 values set to 1) before being\n\ 5635088Sab196087 applied to the existing value.\n" 5645088Sab196087 5655088Sab196087@ MSG_STDOA_OPTDESC_O "\ 5665088Sab196087 Overrides the global output style (as set via the sys:set\n\ 5675088Sab196087 command) for the duration of the call to this command.\n\ 5685088Sab196087 The valid values for the outstyle argument are: default,\n\ 5695088Sab196087 simple, or num.\n\ 5705088Sab196087 \n\ 5715088Sab196087 Output styles are described in more detail in the documentation\n\ 5725088Sab196087 for the sys:set command.\n" 5735088Sab196087 5745088Sab196087@ MSG_STDOA_OPTDESC_OR "\ 5755088Sab196087 The new value should be bitwised OR'd against the\n\ 5765088Sab196087 existing value.\n" 5775088Sab196087 5785088Sab196087 5795088Sab196087 5805088Sab196087 5815088Sab196087@ _END_ 5825088Sab196087 5835088Sab196087 5845088Sab196087# The following strings represent reserved words, files, pathnames and symbols. 5855088Sab196087# Reference to this strings is via the MSG_ORIG() macro, and thus no message 5865088Sab196087# translation is required. 5875088Sab196087 5885088Sab196087# Names of libelf functions 5895088Sab196087 5905088Sab196087@ MSG_ELF_BEGIN "elf_begin" 5915088Sab196087@ MSG_ELF_GETEHDR "elf_getehdr" 5925088Sab196087@ MSG_ELF_GETDATA "elf_getdata" 5939900SAli.Bahrami@Sun.COM@ MSG_ELF_GETPHDRNUM "elf_getphdrnum" 5945088Sab196087@ MSG_ELF_GETPHDR "elf_getphdr" 5955088Sab196087@ MSG_ELF_GETSCN "elf_getscn" 5965088Sab196087@ MSG_ELF_GETSHDR "elf_getshdr" 5979900SAli.Bahrami@Sun.COM@ MSG_ELF_GETSHDRNUM "elf_getshdrnum" 5989900SAli.Bahrami@Sun.COM@ MSG_ELF_GETSHDRSTRNDX "elf_getshdrstrndx" 5995088Sab196087@ MSG_ELF_UPDATE "elf_update" 6005088Sab196087 6015088Sab196087 6025088Sab196087# Names of sh_type SHT_* type constants 6035088Sab196087 6045088Sab196087@ MSG_SHT_SYMTAB "SHT_SYMTAB" # 2 6055088Sab196087@ MSG_SHT_SYMTAB_ALT1 "symtab" 6065088Sab196087@ MSG_SHT_STRTAB "SHT_STRTAB" # 3 6075088Sab196087@ MSG_SHT_STRTAB_ALT1 "strtab" 6085088Sab196087@ MSG_SHT_DYNSYM "SHT_DYNSYM" # 11 6095088Sab196087@ MSG_SHT_DYNSYM_ALT1 "dynsym" 6105088Sab196087@ MSG_SHT_SUNW_LDYNSYM "SHT_SUNW_LDYNSYM" # 0x6ffffff3 6115088Sab196087@ MSG_SHT_SUNW_LDYNSYM_ALT1 "sunw_ldynsym" 6125088Sab196087 6135088Sab196087 6145088Sab196087# ISA strings. These could be separated into separate message modules 6155088Sab196087# on a per-platform basis if their size became large, but this is probably 6165088Sab196087# cheaper for this small set of strings. 6175088Sab196087@ MSG_ISA_SPARC_32 "sparc" 6185088Sab196087@ MSG_ISA_SPARC_64 "sparcv9" 6195088Sab196087@ MSG_ISA_X86_32 "i386" 6205088Sab196087@ MSG_ISA_X86_64 "amd64" 6215088Sab196087 6225088Sab196087# Format strings 6235088Sab196087 6245088Sab196087@ MSG_FMT_BLDPATH "%s/%s" 6255088Sab196087@ MSG_FMT_BLDSOPATH "%s/%s.so" 6265088Sab196087@ MSG_FMT_MODCMD "%s:%s" 6275088Sab196087@ MSG_FMT_SYSCMD "[sys]:%s" 6285088Sab196087@ MSG_FMT_WORDVAL "%u" 6295088Sab196087@ MSG_FMT_WRAPUSAGE "\n%s" 6305088Sab196087@ MSG_FMT_SECMSGPRE "[%d: %s]" 6315088Sab196087 6325088Sab196087# Miscellaneous clutter 6335088Sab196087 6345088Sab196087@ MSG_STR_NULL "" 6355088Sab196087@ MSG_STR_ARG "arg" 6365088Sab196087@ MSG_STR_SP_BAR_SP " | " 6375088Sab196087@ MSG_STR_ELIPSES "..." 638*12029SRod.Evans@Sun.COM@ MSG_STR_OPTIONS "ade:L:o:r" 6395088Sab196087@ MSG_STR_ELFEDIT "elfedit: " 6405088Sab196087@ MSG_STR_PROMPT "> " 6415088Sab196087@ MSG_STR_NL "\n" 6425088Sab196087@ MSG_STR_TAB "\t" 6435088Sab196087@ MSG_STR_BINCP "/bin/cp" 6445088Sab196087@ MSG_STR_BINMORE "/bin/more" 6455088Sab196087@ MSG_STR_PAGER "PAGER" 6465088Sab196087@ MSG_STR_ELFEDITINIT32 "elfedit32_init" 6475088Sab196087@ MSG_STR_ELFEDITINIT64 "elfedit64_init" 6485088Sab196087@ MSG_STR_HLPINDENT " "; 6495088Sab196087@ MSG_STR_HLPUSEINDENT " "; 6505088Sab196087@ MSG_STR_HLPSUMINDENT " "; 6515088Sab196087@ MSG_STR_HLPOPTARG "%s"; 6525088Sab196087@ MSG_STR_HLPOPTARG2 "%s %s"; 6535088Sab196087@ MSG_STR_ENVVAR "ELFEDIT_PATH" 6545088Sab196087@ MSG_STR_MODPATH "%r/usr/lib/elfedit/%I" 6555088Sab196087@ MSG_STR_EMPTY "" 6565088Sab196087@ MSG_STR_DOT "." 6575088Sab196087@ MSG_STR_COLON ":" 6585088Sab196087@ MSG_STR_SPACE " " 6595088Sab196087@ MSG_STR_COMMA_SP ", " 6605088Sab196087@ MSG_STR_CPAREN ")" 6615088Sab196087@ MSG_STR_DOTSO ".so" 6625088Sab196087@ MSG_STR_MINUS_MINUS "--" 6635088Sab196087@ MSG_STR_MINUS_A "-a" 6645088Sab196087@ MSG_STR_MINUS_AND "-and" 6655088Sab196087@ MSG_STR_MINUS_CMP "-cmp" 6665088Sab196087@ MSG_STR_MINUS_F "-f" 6675088Sab196087@ MSG_STR_MINUS_S "-s" 6685088Sab196087@ MSG_STR_MINUS_O "-o" 6695088Sab196087@ MSG_STR_MINUS_OR "-or" 6705088Sab196087@ MSG_STR_MODNAME "modname" 6715088Sab196087@ MSG_STR_TRUE "true" 6725088Sab196087@ MSG_STR_FALSE "false" 6735088Sab196087@ MSG_STR_ON "on" 6745088Sab196087@ MSG_STR_OFF "off" 6755088Sab196087@ MSG_STR_YES "yes" 6765088Sab196087@ MSG_STR_NO "no" 6775088Sab196087@ MSG_STR_0 "0" 6785088Sab196087@ MSG_STR_1 "1" 6795088Sab196087@ MSG_STR_A "a" 6805088Sab196087@ MSG_STR_D "d" 6815088Sab196087@ MSG_STR_F "f" 6825088Sab196087@ MSG_STR_N "n" 6835088Sab196087@ MSG_STR_O "o" 6845088Sab196087@ MSG_STR_OPTION "option" 6855088Sab196087@ MSG_STR_T "t" 6865088Sab196087@ MSG_STR_VALUE "value" 6875088Sab196087@ MSG_STR_W "w" 6885088Sab196087@ MSG_STR_Y "y" 6895088Sab196087@ MSG_STR_DEFAULT "default" 6905088Sab196087@ MSG_STR_MINUS_O_DEFAULT "-odefault" 6915088Sab196087@ MSG_STR_SIMPLE "simple" 6925088Sab196087@ MSG_STR_MINUS_O_SIMPLE "-osimple" 6935088Sab196087@ MSG_STR_NUM "num" 6945088Sab196087@ MSG_STR_MINUS_O_NUM "-onum" 6955088Sab196087@ MSG_STR_OUTSTYLE "outstyle" 6965088Sab196087 6975088Sab196087 6985088Sab196087# Format strings for sys:help 6995088Sab196087@ MSG_HLPFMT_MULTIHDR "::::::::::::::\n%s\n::::::::::::::\n" 7005088Sab196087@ MSG_HLPFMT_NAMDSCCOL " %-15s%s\n" 7015088Sab196087@ MSG_HLPFMT_NAMDSCHDR "%s - %s\n" 7025088Sab196087@ MSG_HLPFMT_NAMSUMHDR " %s - %s\n" 7035088Sab196087@ MSG_HLPFMT_PATHELT " %s\n" 7045088Sab196087@ MSG_HLPFMT_MULTNAM "%s (" 7055088Sab196087 7065088Sab196087# name of builtin sys: module 7075088Sab196087 7085088Sab196087@ MSG_MOD_SYS "sys" 7095088Sab196087 7105088Sab196087# Names of sys: builtin commands 7115088Sab196087@ MSG_SYS_CMD_HELP "help" 7125088Sab196087@ MSG_SYS_CMD_HELP_A1 "?" 7135088Sab196087@ MSG_SYS_CMD_HELP_A2 "man" 7145088Sab196087@ MSG_SYS_CMD_LOAD "load" 7155088Sab196087@ MSG_SYS_CMD_QUIT "quit" 7165088Sab196087@ MSG_SYS_CMD_QUIT_A1 "exit" 7175088Sab196087@ MSG_SYS_CMD_QUIT_A2 "bye" 7185088Sab196087@ MSG_SYS_CMD_SET "set" 7195088Sab196087@ MSG_SYS_CMD_STATUS "status" 7205088Sab196087@ MSG_SYS_CMD_UNLOAD "unload" 7215088Sab196087@ MSG_SYS_CMD_WRITE "write" 7225088Sab196087@ MSG_SYS_CMD_WRITE_A1 "flush" 7235088Sab196087@ MSG_SYS_CMD_WRITE_A2 "save" 724