1d29b2c44Sab# 2d29b2c44Sab# CDDL HEADER START 3d29b2c44Sab# 4d29b2c44Sab# The contents of this file are subject to the terms of the 5d29b2c44Sab# Common Development and Distribution License (the "License"). 6d29b2c44Sab# You may not use this file except in compliance with the License. 7d29b2c44Sab# 8d29b2c44Sab# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9d29b2c44Sab# or http://www.opensolaris.org/os/licensing. 10d29b2c44Sab# See the License for the specific language governing permissions 11d29b2c44Sab# and limitations under the License. 12d29b2c44Sab# 13d29b2c44Sab# When distributing Covered Code, include this CDDL HEADER in each 14d29b2c44Sab# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15d29b2c44Sab# If applicable, add the following below this CDDL HEADER, with the 16d29b2c44Sab# fields enclosed by brackets "[]" replaced with your own identifying 17d29b2c44Sab# information: Portions Copyright [yyyy] [name of copyright owner] 18d29b2c44Sab# 19d29b2c44Sab# CDDL HEADER END 20d29b2c44Sab# 21d29b2c44Sab 22d29b2c44Sab# 23*cce0e03bSab# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24d29b2c44Sab# Use is subject to license terms. 25d29b2c44Sab# 26d29b2c44Sab# ident "%Z%%M% %I% %E% SMI" 27d29b2c44Sab 28d29b2c44Sab@ _START_ 29d29b2c44Sab 30d29b2c44Sab# Message file for elfedit 'shdr' module 31d29b2c44Sab 32d29b2c44Sab@ MSG_ID_ELFEDIT_SHDR 33d29b2c44Sab 34d29b2c44Sab 35d29b2c44Sab# Section header format 36d29b2c44Sab@ MSG_ELF_SHDR "Section Header[%d]: sh_name: %s\n" 37d29b2c44Sab 38d29b2c44Sab# Debug messages 39d29b2c44Sab 40d29b2c44Sab@ MSG_DEBUG_S_OK "shdr[%d: %s].%s: value unchanged: %s\n" 41d29b2c44Sab@ MSG_DEBUG_S_CHG "shdr[%d: %s].%s: change from %s to %s\n" 42d29b2c44Sab@ MSG_DEBUG_LLX_OK "shdr[%d: %s].%s: value unchanged: %#llx\n" 43d29b2c44Sab@ MSG_DEBUG_LLX_CHG "shdr[%d: %s].%s: change from %#llx to %#llx\n" 44d29b2c44Sab@ MSG_DEBUG_D_OK "shdr[%d: %s].%s: value unchanged: %d\n" 45d29b2c44Sab@ MSG_DEBUG_D_CHG "shdr[%d: %s].%s: change from %d to %d\n" 46d29b2c44Sab@ MSG_DEBUG_CHGSHDR0 "ELF warning: Unexpected direct change to \ 47d29b2c44Sab section header [0]: Header [0] is used for \ 48d29b2c44Sab extended section and program headers by the ehdr \ 49d29b2c44Sab module, and should otherwise be completely zero\n" 50d29b2c44Sab@ MSG_DEBUG_ADDRALIGN "ELF warning: sh_addralign value is expected to \ 51d29b2c44Sab be 0, 1, or a power of 2: %s\n" 52d29b2c44Sab 53d29b2c44Sab 54d29b2c44Sab# Module description 55d29b2c44Sab 56d29b2c44Sab@ MSG_MOD_DESC "Section Header Array" 57d29b2c44Sab 58d29b2c44Sab 59d29b2c44Sab# 1-line description strings 60d29b2c44Sab 61d29b2c44Sab@ MSG_DESC_DUMP "Dump Section Headers" 62d29b2c44Sab 63d29b2c44Sab@ MSG_DESC_SH_ADDR "Section memory address" 64d29b2c44Sab@ MSG_DESC_SH_ADDRALIGN "Section address alignment" 65d29b2c44Sab@ MSG_DESC_SH_ENTSIZE "Section per-item size" 66d29b2c44Sab@ MSG_DESC_SH_FLAGS "Section flags" 67d29b2c44Sab@ MSG_DESC_SH_INFO "Section info" 68d29b2c44Sab@ MSG_DESC_SH_LINK "Section link" 69d29b2c44Sab@ MSG_DESC_SH_NAME "Section name" 70d29b2c44Sab@ MSG_DESC_SH_OFFSET "Section file offset" 71d29b2c44Sab@ MSG_DESC_SH_SIZE "Section size (bytes)" 72d29b2c44Sab@ MSG_DESC_SH_TYPE "Section type" 73d29b2c44Sab 74d29b2c44Sab 75d29b2c44Sab# Command option description strings 76d29b2c44Sab 77d29b2c44Sab@ MSG_OPTDESC_SHNDX "\ 78d29b2c44Sab Interpret the sec argument as a section index rather than\n\ 79d29b2c44Sab as a section name. section can be one of the well known SHN_\n\ 80d29b2c44Sab symbolic constants, or any integer.\n" 81d29b2c44Sab 82d29b2c44Sab@ MSG_OPTDESC_SHTYP "\ 83d29b2c44Sab Interpret the sec argument as a section type rather than\n\ 84d29b2c44Sab as a section name. section can be one of the well known SHT_\n\ 85d29b2c44Sab symbolic constants, or any integer.\n" 86d29b2c44Sab 87d29b2c44Sab@ MSG_OPTDESC_NAME_OFFSET "\ 88d29b2c44Sab Interpret the name argument as a string table offset rather\n\ 89d29b2c44Sab than as a string.\n" 90d29b2c44Sab 91*cce0e03bSab@ MSG_OPTDESC_VALUE_SHNAM "\ 92*cce0e03bSab Interpret the value argument as a section name rather than\n\ 93*cce0e03bSab as an integer. The index of the first section with the\n\ 94*cce0e03bSab specified name will be used as the value.\n" 95*cce0e03bSab 96*cce0e03bSab@ MSG_OPTDESC_VALUE_SHTYP "\ 97*cce0e03bSab Interpret the value argument as a section type rather than\n\ 98*cce0e03bSab as an integer. The index of the first section of the specified\n\ 99*cce0e03bSab type will be used as the value. value can be one of the well\n\ 100*cce0e03bSab known SHT_ symbolic constants, or any integer.\n" 101*cce0e03bSab 102d29b2c44Sab 103d29b2c44Sab# Command argument descriptions 104d29b2c44Sab 105d29b2c44Sab@ MSG_A1_SEC "\ 106d29b2c44Sab Section to examine or modify. By default, this argument is\n\ 107d29b2c44Sab interpreted as the name of the desired section. The section\n\ 108d29b2c44Sab index of the first section with the specified name is used.\n\ 109d29b2c44Sab \n\ 110d29b2c44Sab If -shndx is set, then sec is a section index, and is\n\ 111d29b2c44Sab interpreted as an integer, or one of the well known SHN_\n\ 112d29b2c44Sab symbolic constant names.\n\ 113d29b2c44Sab \n\ 114d29b2c44Sab If -shtyp is set, then sec is a section type, and is\n\ 115d29b2c44Sab interpreted as an integer, or one of the well known SHT_\n\ 116d29b2c44Sab symbolic constant names. The section index of the first\n\ 117d29b2c44Sab section with the specified type is used.\n" 118d29b2c44Sab 119d29b2c44Sab@ MSG_A2_DESC_SH_ADDR "Integer value to set for section address.\n" 120d29b2c44Sab 121d29b2c44Sab@ MSG_A2_DESC_SH_ADDRALIGN "\ 122d29b2c44Sab Integer value to set for section alignment.\n" 123d29b2c44Sab 124d29b2c44Sab@ MSG_A2_DESC_SH_ENTSIZE "\ 125d29b2c44Sab Integer value to set for size of an individual element in\n\ 126d29b2c44Sab a section of fixed-size entries.\n" 127d29b2c44Sab 128d29b2c44Sab@ MSG_A2_DESC_SH_FLAGS "\ 129d29b2c44Sab Section flags. SHF_ flag constants are accepted, as is\n\ 130d29b2c44Sab any integer.\n" 131d29b2c44Sab 132d29b2c44Sab@ MSG_A2_DESC_SH_INFO "\ 133d29b2c44Sab Integer value to set for symbol sh_info field. The meaning\n\ 134d29b2c44Sab of this value depends on the type of the section.\n" 135d29b2c44Sab 136d29b2c44Sab@ MSG_A2_DESC_SH_LINK "\ 137d29b2c44Sab Integer value to set for symbol sh_link field. The meaning\n\ 138d29b2c44Sab of this value depends on the type of the section.\n" 139d29b2c44Sab 140d29b2c44Sab@ MSG_A2_DESC_SH_NAME "\ 141d29b2c44Sab Name to set for section. If the -name_offset option is\n\ 142d29b2c44Sab used, this is an integer offset into the section header\n\ 143d29b2c44Sab string table. Otherwise, it is a string, which will be\n\ 144d29b2c44Sab looked up in the symbol table in order to obtain the needed\n\ 145d29b2c44Sab offset value.\n" 146d29b2c44Sab 147d29b2c44Sab@ MSG_A2_DESC_SH_OFFSET "\ 148d29b2c44Sab Integer value to set for symbol sh_offset field. The value\n\ 149d29b2c44Sab of sh_offset gives the byte offset from the beginning of\n\ 150d29b2c44Sab the file to the first byte in the section. For SHT_NOBITS\n\ 151d29b2c44Sab sections, this member indicates the conceptual offset in the\n\ 152d29b2c44Sab file, as the section occupies no space in the file.\n" 153d29b2c44Sab 154d29b2c44Sab@ MSG_A2_DESC_SH_SIZE "\ 155d29b2c44Sab Integer value to set for size of section, in bytes. Unless the\n\ 156d29b2c44Sab section type is SHT_NOBITS, the section occupies sh_size bytes\n\ 157d29b2c44Sab in the file. A section of type SHT_NOBITS can have a nonzero\n\ 158d29b2c44Sab size, but the section occupies no space in the file.\n" 159d29b2c44Sab 160d29b2c44Sab@ MSG_A2_DESC_SH_TYPE "\ 161d29b2c44Sab Value to set for section type. The value can be an integer,\n\ 162d29b2c44Sab or one of the well known SHT_ symbolic constant names.\n" 163d29b2c44Sab 164d29b2c44Sab 165d29b2c44Sab 166d29b2c44Sab# Help strings 167d29b2c44Sab 168d29b2c44Sab@ MSG_HELP_DUMP " \ 169d29b2c44Sab The shdr:dump command is used to display section header\n\ 170d29b2c44Sab information using the same style used by the elfdump program.\n\ 171d29b2c44Sab \n\ 172d29b2c44Sab If shdr:dump is called without arguments, information for every\n\ 173d29b2c44Sab section header in the object is shown. If called with the shndx\n\ 174d29b2c44Sab argument, the section header at that index is displayed.\n" 175d29b2c44Sab 176d29b2c44Sab@ MSG_HELP_SH_ADDR " \ 177d29b2c44Sab The shdr:sh_addr command is used to display or alter the\n\ 178d29b2c44Sab starting virtual memory address of the section.\n\ 179d29b2c44Sab \n\ 180d29b2c44Sab If the section appears in the memory image of a process,\n\ 181d29b2c44Sab this member gives the address at which the sections's\n\ 182d29b2c44Sab first byte should reside. Otherwise, the member is expected\n\ 183d29b2c44Sab to contain the value zero.\n\ 184d29b2c44Sab \n\ 185d29b2c44Sab If shdr:sh_addr is called without arguments, the value of\n\ 186d29b2c44Sab sh_addr for every section in the section header array is\n\ 187d29b2c44Sab shown. If called with the shndx argument, the value of the\n\ 188d29b2c44Sab section at that index is displayed. If both arguments are\n\ 189d29b2c44Sab present, the sh_addr field of the section at the specified\n\ 190d29b2c44Sab index is set to the given value.\n" 191d29b2c44Sab 192d29b2c44Sab@ MSG_HELP_SH_ADDRALIGN " \ 193d29b2c44Sab The shdr:sh_addralign command is used to display or alter the\n\ 194d29b2c44Sab alignment constraint for the section.\n\ 195d29b2c44Sab \n\ 196d29b2c44Sab Some sections have address alignment constraints. For example,\n\ 197d29b2c44Sab if a section holds a double-word, the system must ensure\n\ 198d29b2c44Sab double-word alignment for the entire section. In this case,\n\ 199d29b2c44Sab the value of sh_addr must be congruent to 0, modulo the value\n\ 200d29b2c44Sab of sh_addralign. Currently, only 0 and positive integral\n\ 201d29b2c44Sab powers of 2 are used in Solaris ELF files. Values 0 and 1\n\ 202d29b2c44Sab mean the section has no alignment constraints.\n\ 203d29b2c44Sab \n\ 204d29b2c44Sab If shdr:sh_addralign is called without arguments, the value\n\ 205d29b2c44Sab of sh_addralign for every section in the section header array\n\ 206d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 207d29b2c44Sab section at that index is displayed. If both arguments are\n\ 208d29b2c44Sab present, the sh_addralign field of the section at the specified\n\ 209d29b2c44Sab index is set to the given value.\n" 210d29b2c44Sab 211d29b2c44Sab@ MSG_HELP_SH_ENTSIZE " \ 212d29b2c44Sab The shdr:sh_entsize command is used to display or alter the\n\ 213d29b2c44Sab per-item entry size for the section.\n\ 214d29b2c44Sab \n\ 215d29b2c44Sab Some sections hold a table of fixed-size entries, such as a\n\ 216d29b2c44Sab symbol table. For such a section, this member gives the size\n\ 217d29b2c44Sab in bytes of each entry. By convention, the member is set to\n\ 218d29b2c44Sab the value zero if the section does not hold a table of\n\ 219d29b2c44Sab fixed-size entries.\n\ 220d29b2c44Sab \n\ 221d29b2c44Sab If shdr:sh_entsize is called without arguments, the value\n\ 222d29b2c44Sab of sh_entsize for every section in the section header array\n\ 223d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 224d29b2c44Sab section at that index is displayed. If both arguments are\n\ 225d29b2c44Sab present, the sh_entsize field of the section at the specified\n\ 226d29b2c44Sab index is set to the given value.\n" 227d29b2c44Sab 228d29b2c44Sab@ MSG_HELP_SH_FLAGS " \ 229d29b2c44Sab The shdr:sh_flags command is used to display or alter the\n\ 230d29b2c44Sab flags that are associated with the section.\n\ 231d29b2c44Sab \n\ 232d29b2c44Sab \n\ 233d29b2c44Sab If shdr:sh_flags is called without arguments, the value\n\ 234d29b2c44Sab of sh_flags for every section in the section header array\n\ 235d29b2c44Sab is shown. If called with the shndx argument, the value of\n\ 236d29b2c44Sab the section at that index is displayed. If one or more\n\ 237d29b2c44Sab value arguments are present, the following steps are taken:\n\ 238d29b2c44Sab \n \ 239d29b2c44Sab o\tAll the value arguments are OR'd together.\n\ 240d29b2c44Sab \n \ 241d29b2c44Sab o\tIf the -cmp option has been specified, the new value\n\ 242d29b2c44Sab \tis complemented.\n\ 243d29b2c44Sab \n \ 244d29b2c44Sab o\tThe sh_flags field of the section header is updated with\n\ 245d29b2c44Sab \tthe new value. If -and is specified, the new value is\n\ 246d29b2c44Sab \tAND'd against the existing value. If -or is specified,\n\ 247d29b2c44Sab \tthe new value is OR'd against the existing value. If\n\ 248d29b2c44Sab \tneither -and or -or are specified, the new value replaces\n\ 249d29b2c44Sab \tthe existing value.\n" 250d29b2c44Sab 251d29b2c44Sab@ MSG_HELP_SH_INFO " \ 252d29b2c44Sab The shdr:sh_info command is used to display or alter the\n\ 253d29b2c44Sab sh_info field of the specified section.\n\ 254d29b2c44Sab \n\ 255d29b2c44Sab sh_info contains extra information, the interpretation\n\ 256d29b2c44Sab of which depends on the section type.\n\ 257d29b2c44Sab \n\ 258d29b2c44Sab If shdr:sh_info is called without arguments, the value\n\ 259d29b2c44Sab of sh_info for every section in the section header array\n\ 260d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 261d29b2c44Sab section at that index is displayed. If both arguments are\n\ 262d29b2c44Sab present, the sh_info field of the section at the specified\n\ 263d29b2c44Sab index is set to the given value.\n" 264d29b2c44Sab 265d29b2c44Sab@ MSG_HELP_SH_LINK " \ 266d29b2c44Sab The shdr:sh_link command is used to display or alter the\n\ 267d29b2c44Sab sh_link field of the specified section.\n\ 268d29b2c44Sab \n\ 269d29b2c44Sab sh_link contains extra information, the interpretation\n\ 270d29b2c44Sab of which depends on the section type.\n\ 271d29b2c44Sab \n\ 272d29b2c44Sab If shdr:sh_link is called without arguments, the value\n\ 273d29b2c44Sab of sh_link for every section in the section header array\n\ 274d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 275d29b2c44Sab section at that index is displayed. If both arguments are\n\ 276d29b2c44Sab present, the sh_link field of the section at the specified\n\ 277d29b2c44Sab index is set to the given value.\n" 278d29b2c44Sab 279d29b2c44Sab@ MSG_HELP_SH_NAME " \ 280d29b2c44Sab The shdr:sh_name command is used to display or alter the\n\ 281d29b2c44Sab name associated with a specified section.\n\ 282d29b2c44Sab \n\ 283d29b2c44Sab The sh_name field of a section header is an index into\n\ 284d29b2c44Sab the section header string table section giving the location\n\ 285d29b2c44Sab of a null terminated string.\n\ 286d29b2c44Sab \n\ 287d29b2c44Sab If shdr:sh_name is called without arguments, the name of\n\ 288d29b2c44Sab every section in the section header array is shown. If called\n\ 289d29b2c44Sab with the shndx argument, the name of the section at that\n\ 290d29b2c44Sab index is displayed. If both arguments are present, the\n\ 291d29b2c44Sab sh_name field of the section at the specified index is set\n\ 292d29b2c44Sab to the given value.\n\ 293d29b2c44Sab \n\ 294d29b2c44Sab When changing the name of a section, you should be aware\n\ 295d29b2c44Sab that the name selected must exist within the section header\n\ 296d29b2c44Sab string table, as it is not possible to add new strings to\n\ 297d29b2c44Sab this string table.\n" 298d29b2c44Sab 299d29b2c44Sab@ MSG_HELP_SH_OFFSET " \ 300d29b2c44Sab The shdr:sh_offset command is used to display or alter the\n\ 301d29b2c44Sab sh_offset field of the specified section.\n\ 302d29b2c44Sab \n\ 303d29b2c44Sab sh_offset provides the byte offset from the beginning of\n\ 304d29b2c44Sab the file to the first byte in the section. For a SHT_NOBITS\n\ 305d29b2c44Sab section, this member indicates the conceptual offset in\n\ 306d29b2c44Sab the file, as the section occupies no space in the file.\n\ 307d29b2c44Sab \n\ 308d29b2c44Sab If shdr:sh_offset is called without arguments, the value\n\ 309d29b2c44Sab of sh_offset for every section in the section header array\n\ 310d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 311d29b2c44Sab section at that index is displayed. If both arguments are\n\ 312d29b2c44Sab present, the sh_offset field of the section at the specified\n\ 313d29b2c44Sab index is set to the given value.\n" 314d29b2c44Sab 315d29b2c44Sab@ MSG_HELP_SH_SIZE " \ 316d29b2c44Sab The shdr:sh_size command is used to display or alter the\n\ 317d29b2c44Sab sh_size field of the specified section.\n\ 318d29b2c44Sab \n\ 319d29b2c44Sab sh_size provides the section's size in bytes. Unless the\n\ 320d29b2c44Sab section type is SHT_NOBITS, the section occupies sh_size\n\ 321d29b2c44Sab bytes in the file. A section of type SHT_NOBITS can have\n\ 322d29b2c44Sab a non-zero size, but the section occupies no space in the file.\n\ 323d29b2c44Sab \n\ 324d29b2c44Sab If shdr:sh_size is called without arguments, the value\n\ 325d29b2c44Sab of sh_size for every section in the section header array\n\ 326d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 327d29b2c44Sab section at that index is displayed. If both arguments are\n\ 328d29b2c44Sab present, the sh_size field of the section at the specified\n\ 329d29b2c44Sab index is set to the given value.\n" 330d29b2c44Sab 331d29b2c44Sab@ MSG_HELP_SH_TYPE " \ 332d29b2c44Sab The shdr:sh_type command is used to display or alter the\n\ 333d29b2c44Sab sh_type field of the specified section.\n\ 334d29b2c44Sab \n\ 335d29b2c44Sab The type of a section categorizes the section's contents\n\ 336d29b2c44Sab and semantics.\n\ 337d29b2c44Sab \n\ 338d29b2c44Sab If shdr:sh_type is called without arguments, the value\n\ 339d29b2c44Sab of sh_type for every section in the section header array\n\ 340d29b2c44Sab is shown. If called with the shndx argument, the value of the\n\ 341d29b2c44Sab section at that index is displayed. If both arguments are\n\ 342d29b2c44Sab present, the sh_type field of the section at the specified\n\ 343d29b2c44Sab index is set to the given value.\n" 344d29b2c44Sab 345d29b2c44Sab 346d29b2c44Sab 347d29b2c44Sab@ _END_ 348d29b2c44Sab 349d29b2c44Sab 350d29b2c44Sab# The following strings represent reserved words, files, pathnames and symbols. 351d29b2c44Sab# Reference to this strings is via the MSG_ORIG() macro, and thus no message 352d29b2c44Sab# translation is required. 353d29b2c44Sab 354d29b2c44Sab 355d29b2c44Sab# Miscellaneous clutter 356d29b2c44Sab@ MSG_STR_EMPTY "" 357d29b2c44Sab@ MSG_STR_NL "\n" 358d29b2c44Sab@ MSG_STR_MINUS_SHNDX "-shndx" 359d29b2c44Sab@ MSG_STR_MINUS_SHTYP "-shtyp" 360d29b2c44Sab@ MSG_STR_MINUS_NAME_OFFSET "-name_offset" 361*cce0e03bSab@ MSG_STR_MINUS_VALUE_SHNAM "-value_shnam" 362*cce0e03bSab@ MSG_STR_MINUS_VALUE_SHTYP "-value_shtyp" 363d29b2c44Sab@ MSG_STR_NAME "name" 364d29b2c44Sab@ MSG_STR_SEC "sec" 365d29b2c44Sab@ MSG_STR_VALUE "value" 366d29b2c44Sab 367d29b2c44Sab 368d29b2c44Sab# Format strings 369d29b2c44Sab 370d29b2c44Sab@ MSG_FMT_WORDVALNL "%u\n" 371d29b2c44Sab@ MSG_FMT_WORDHEXNL "%#x\n" 372d29b2c44Sab@ MSG_FMT_XWORDHEXNL "%#llx\n" 373d29b2c44Sab@ MSG_FMT_STRNL "%s\n" 374d29b2c44Sab 375d29b2c44Sab 376d29b2c44Sab# Module name 377d29b2c44Sab 378d29b2c44Sab@ MSG_MOD_NAME "shdr" 379d29b2c44Sab 380d29b2c44Sab 381d29b2c44Sab# Command names 382d29b2c44Sab 383d29b2c44Sab@ MSG_CMD_DUMP "dump" 384d29b2c44Sab 385d29b2c44Sab@ MSG_CMD_SH_ADDR "sh_addr" 386d29b2c44Sab@ MSG_CMD_SH_ADDRALIGN "sh_addralign" 387d29b2c44Sab@ MSG_CMD_SH_ENTSIZE "sh_entsize" 388d29b2c44Sab@ MSG_CMD_SH_FLAGS "sh_flags" 389d29b2c44Sab@ MSG_CMD_SH_INFO "sh_info" 390d29b2c44Sab@ MSG_CMD_SH_LINK "sh_link" 391d29b2c44Sab@ MSG_CMD_SH_NAME "sh_name" 392d29b2c44Sab@ MSG_CMD_SH_OFFSET "sh_offset" 393d29b2c44Sab@ MSG_CMD_SH_SIZE "sh_size" 394d29b2c44Sab@ MSG_CMD_SH_TYPE "sh_type" 395