Lines Matching refs:argstate

240  *	argstate - Address of ARGSTATE block to be initialized
243 * On success, *argstate is initialized. On error,
248 STR_CMD_T cmd, ARGSTATE *argstate, int *print_only)
255 bzero(argstate, sizeof (*argstate));
256 argstate->obj_state = obj_state;
268 argstate->optmask |= getopt_ret->gor_idmask;
310 !((argc == 2) && (argstate->optmask & STR_OPT_F_END));
325 argstate->argc = argc;
326 argstate->argv = argv;
328 if (argstate->optmask & STR_OPT_F_ANY) {
330 argstate->str.sec = elfedit_sec_get(obj_state, ndx);
345 argstate->str.sec = elfedit_sec_getstr(obj_state, ndx, 1);
355 argstate->dyn.sec = NULL;
356 elfedit_dyn_elt_init(&argstate->dyn.strpad);
362 (argstate->str.sec->sec_shndx ==
364 argstate->dyn.sec = elfedit_sec_getdyn(obj_state,
365 &argstate->dyn.data, &argstate->dyn.n);
367 &argstate->dyn.strpad);
373 if ((argstate->dyn.strpad.dn_seen != 0) &&
374 (argstate->dyn.strpad.dn_dyn.d_un.d_val >
375 argstate->str.sec->sec_data->d_size)) {
376 argstate->dyn.strpad.dn_seen = 0;
379 EC_WORD(argstate->str.sec->sec_shndx),
380 argstate->str.sec->sec_name,
381 EC_XWORD(argstate->dyn.strpad.dn_dyn.
383 EC_XWORD(argstate->str.sec->
397 if (argstate->optmask & STR_OPT_F_STRNDX) {
398 argstate->str.ndx = (elfedit_atoui_range(argv[0],
400 argstate->str.sec->sec_data->d_size - 1, NULL));
402 if (elfedit_sec_findstr(argstate->str.sec, 0, argv[0],
403 &argstate->str.ndx) == 0)
406 EC_WORD(argstate->str.sec->sec_shndx),
407 argstate->str.sec->sec_name, argv[0]);
410 argstate->str.ndx = 0;
422 * argstate - State block for current symbol table.
425 print_strtab(int autoprint, ARGSTATE *argstate)
439 argstate->str.sec->sec_name);
440 if (argstate->dyn.strpad.dn_seen)
442 EC_WORD(argstate->str.sec->sec_data->d_size -
443 argstate->dyn.strpad.dn_dyn.d_un.d_val),
444 EC_WORD(argstate->str.sec->sec_data->d_size - 1),
445 EC_WORD(argstate->dyn.strpad.dn_dyn.d_un.d_val));
449 str = argstate->str.sec->sec_data->d_buf;
450 tbl_limit = str + argstate->str.sec->sec_data->d_size;
451 ndx = argstate->str.ndx;
452 if (argstate->argc > 0) {
517 cmd_body_set(ARGSTATE *argstate)
519 elfedit_section_t *strsec = argstate->str.sec;
520 const char *newstr = argstate->argv[1];
521 Word ndx = argstate->str.ndx;
527 if (!(argstate->optmask & STR_OPT_F_NOTERM))
542 (argstate->optmask & STR_OPT_F_NOTERM))
584 if (argstate->dyn.strpad.dn_seen) {
585 elfedit_dyn_elt_t *strpad = &argstate->dyn.strpad;
587 Word pad_ndx = argstate->str.sec->sec_data->d_size -
599 argstate->dyn.data[strpad->dn_ndx].d_un.d_val =
600 (argstate->str.sec->sec_data->d_size - new_pad_ndx);
601 elfedit_modified_data(argstate->dyn.sec);
619 cmd_body_zero(ARGSTATE *argstate)
621 elfedit_section_t *strsec = argstate->str.sec;
623 Word ndx = argstate->str.ndx;
628 if (argstate->optmask & STR_OPT_F_END)
629 count = strsec->sec_data->d_size - argstate->str.ndx;
630 else if (argstate->argc == 2)
631 count = elfedit_atoui_range(argstate->argv[1],
633 argstate->str.sec->sec_data->d_size - argstate->str.ndx,
668 ARGSTATE argstate;
672 process_args(obj_state, argc, argv, cmd, &argstate, &print_only);
679 print_strtab(0, &argstate);
687 ret = cmd_body_set(&argstate);
691 argstate.str.ndx = elfedit_strtab_insert(obj_state,
692 argstate.str.sec, argstate.dyn.sec, argstate.argv[0]);
696 ret = cmd_body_zero(&argstate);
704 elfedit_modified_data(argstate.str.sec);
707 print_strtab(1, &argstate);