Lines Matching refs:argstate

159 argstate_add_str(ARGSTATE *argstate, Boolean required)  in argstate_add_str()  argument
162 if (argstate->str.sec != NULL) in argstate_add_str()
169 if (argstate->cap.sec->sec_shdr->sh_info == 0) { in argstate_add_str()
173 EC_WORD(argstate->cap.sec->sec_shndx), in argstate_add_str()
174 argstate->cap.sec->sec_name); in argstate_add_str()
178 argstate->str.sec = elfedit_sec_getstr(argstate->obj_state, in argstate_add_str()
179 argstate->cap.sec->sec_shdr->sh_info, 0); in argstate_add_str()
188 cap_group_extents(ARGSTATE *argstate, Word ndx, Word *ret_start_ndx, in cap_group_extents() argument
197 while ((ndx > 0) && (argstate->cap.data[ndx].c_tag == CA_SUNW_NULL)) in cap_group_extents()
199 while ((ndx > 0) && (argstate->cap.data[ndx - 1].c_tag != CA_SUNW_NULL)) in cap_group_extents()
208 while (((ndx + 1) < argstate->cap.num) && in cap_group_extents()
209 (argstate->cap.data[ndx].c_tag != CA_SUNW_NULL)) in cap_group_extents()
211 while (((ndx + 1) < argstate->cap.num) && in cap_group_extents()
212 (argstate->cap.data[ndx + 1].c_tag == CA_SUNW_NULL)) in cap_group_extents()
223 cap_group_id(ARGSTATE *argstate) in cap_group_id() argument
225 Word ndx = argstate->cap.grp_start_ndx; in cap_group_id()
226 Cap *cap = argstate->cap.data + ndx; in cap_group_id()
228 for (; ndx <= argstate->cap.grp_end_ndx; ndx++, cap++) { in cap_group_id()
230 argstate_add_str(argstate, TRUE); in cap_group_id()
231 return (elfedit_offset_to_str(argstate->str.sec, in cap_group_id()
239 return ((argstate->cap.grp_start_ndx == 0) ? in cap_group_id()
253 argstate_cap_group(ARGSTATE *argstate, Word ndx) in argstate_cap_group() argument
255 if (argstate->cap.grp_set == TRUE) in argstate_cap_group()
258 cap_group_extents(argstate, ndx, &argstate->cap.grp_start_ndx, in argstate_cap_group()
259 &argstate->cap.grp_end_ndx); in argstate_cap_group()
261 argstate->cap.grp_set = TRUE; in argstate_cap_group()
263 EC_WORD(argstate->cap.sec->sec_shndx), argstate->cap.sec->sec_name, in argstate_cap_group()
264 EC_WORD(argstate->cap.grp_start_ndx), in argstate_cap_group()
265 EC_WORD(argstate->cap.grp_end_ndx), cap_group_id(argstate)); in argstate_cap_group()
273 group_title(ARGSTATE *argstate, Word ndx) in group_title() argument
277 loc_argstate = *argstate; in group_title()
278 cap_group_extents(argstate, ndx, &loc_argstate.cap.grp_start_ndx, in group_title()
298 ARGSTATE *argstate) in process_args() argument
304 bzero(argstate, sizeof (*argstate)); in process_args()
305 argstate->obj_state = obj_state; in process_args()
311 argstate->optmask |= getopt_ret->gor_idmask; in process_args()
322 argstate->argc = argc; in process_args()
323 argstate->argv = argv; in process_args()
326 argstate->cap.sec = elfedit_sec_getcap(obj_state, &argstate->cap.data, in process_args()
327 &argstate->cap.num); in process_args()
336 Cap *cap = argstate->cap.data; in process_args()
342 argstate_add_str(argstate, TRUE); in process_args()
344 for (i = 0; i < argstate->cap.num; i++, cap++) in process_args()
347 argstate->str.sec, cap->c_un.c_val, in process_args()
351 if (i == argstate->cap.num) in process_args()
353 EC_WORD(argstate->cap.sec->sec_shndx), in process_args()
354 argstate->cap.sec->sec_name, capid); in process_args()
355 argstate_cap_group(argstate, i); in process_args()
357 argstate->cap.grp_start_ndx = 0; in process_args()
358 argstate->cap.grp_end_ndx = argstate->cap.num - 1; in process_args()
385 print_cap(CAP_CMD_T cmd, int autoprint, ARGSTATE *argstate, in print_cap() argument
407 if (arg >= argstate->cap.num) in print_cap()
412 ndx = argstate->cap.grp_start_ndx; in print_cap()
413 cnt = argstate->cap.grp_end_ndx - ndx + 1; in print_cap()
417 argstate_add_str(argstate, FALSE); in print_cap()
418 if (argstate->str.sec == NULL) { in print_cap()
422 str = (const char *)argstate->str.sec->sec_data->d_buf; in print_cap()
423 str_size = argstate->str.sec->sec_data->d_size; in print_cap()
426 cap = &argstate->cap.data[ndx]; in print_cap()
446 if (argstate->str.sec == NULL) in print_cap()
447 argstate_add_str(argstate, TRUE); in print_cap()
463 group_title(argstate, ndx); in print_cap()
467 argstate->obj_state->os_ehdr->e_machine); in print_cap()
496 argstate->obj_state->os_ehdr-> in print_cap()
507 argstate->obj_state->os_ehdr-> in print_cap()
515 argstate->obj_state->os_ehdr-> in print_cap()
523 argstate->obj_state->os_ehdr-> in print_cap()
533 argstate->str.sec, cap->c_un.c_val, in print_cap()
540 argstate->obj_state->os_ehdr-> in print_cap()
563 EC_WORD(argstate->cap.sec->sec_shndx), in print_cap()
564 argstate->cap.sec->sec_name, argstate->cap.grp_start_ndx, in print_cap()
565 argstate->cap.grp_end_ndx, cap_group_id(argstate), in print_cap()
599 arg_to_index(ARGSTATE *argstate, const char *arg, const char *argname, in arg_to_index() argument
613 if ((argstate->optmask & CAP_OPT_F_CAPNDX) != 0) { in arg_to_index()
615 argstate->cap.num - 1, NULL); in arg_to_index()
616 argstate_cap_group(argstate, ndx); in arg_to_index()
637 if (!argstate->cap.grp_set) in arg_to_index()
638 argstate_cap_group(argstate, 0); in arg_to_index()
644 for (ndx = argstate->cap.grp_start_ndx; in arg_to_index()
645 ndx <= argstate->cap.grp_end_ndx; ndx++) { in arg_to_index()
646 if (argstate->cap.data[ndx].c_tag == ca_value) { in arg_to_index()
649 EC_WORD(argstate->cap.sec->sec_shndx), in arg_to_index()
650 argstate->cap.sec->sec_name, EC_WORD(ndx), arg); in arg_to_index()
660 if (argstate->cap.data[ndx].c_tag == CA_SUNW_NULL) { in arg_to_index()
661 if (ndx < argstate->cap.grp_end_ndx) { in arg_to_index()
666 EC_WORD(argstate->cap.sec->sec_shndx), in arg_to_index()
667 argstate->cap.sec->sec_name, EC_WORD(ndx), in arg_to_index()
669 argstate->cap.data[ndx].c_tag = ca_value; in arg_to_index()
670 bzero(&argstate->cap.data[ndx].c_un, in arg_to_index()
671 sizeof (argstate->cap.data[ndx].c_un)); in arg_to_index()
680 EC_WORD(argstate->cap.sec->sec_shndx), in arg_to_index()
681 argstate->cap.sec->sec_name, argstate->cap.grp_start_ndx, in arg_to_index()
682 argstate->cap.grp_end_ndx, cap_group_id(argstate), arg); in arg_to_index()
700 flag_bitop(ARGSTATE *argstate, Word orig, const elfedit_atoui_sym_t *const_sym) in flag_bitop() argument
706 for (i = 0; i < argstate->argc; i++) in flag_bitop()
707 flags |= (Word) elfedit_atoui(argstate->argv[i], const_sym); in flag_bitop()
710 if (argstate->optmask & CAP_OPT_F_CMP) in flag_bitop()
714 if (argstate->optmask & CAP_OPT_F_AND) in flag_bitop()
716 else if (argstate->optmask & CAP_OPT_F_OR) in flag_bitop()
735 cap_set(ARGSTATE *argstate, Cap *cap, Word ndx, Word cap_ndx, in cap_set() argument
739 Half mach = argstate->obj_state->os_ehdr->e_machine; in cap_set()
742 ncap = flag_bitop(argstate, cap[ndx].c_un.c_val, in cap_set()
778 ARGSTATE argstate; in cmd_body() local
789 process_args(obj_state, argc, argv, &argstate); in cmd_body()
791 cap = argstate.cap.data; in cmd_body()
792 cap_name = argstate.cap.sec->sec_name; in cmd_body()
793 cap_ndx = argstate.cap.sec->sec_shndx; in cmd_body()
799 if (argstate.argc > 1) in cmd_body()
802 if (argstate.argc == 1) in cmd_body()
803 ndx = arg_to_index(&argstate, argstate.argv[0], in cmd_body()
809 print_only = (argstate.argc != 2); in cmd_body()
810 if (argstate.argc > 0) { in cmd_body()
811 if (argstate.argc > 2) in cmd_body()
813 ndx = arg_to_index(&argstate, argstate.argv[0], in cmd_body()
819 if ((argstate.argc < 1) || (argstate.argc > 2)) in cmd_body()
821 ndx = arg_to_index(&argstate, argstate.argv[0], in cmd_body()
828 if ((argstate.argc < 2) || (argstate.argc > 3)) in cmd_body()
830 ndx = arg_to_index(&argstate, argstate.argv[0], in cmd_body()
836 print_only = (argstate.argc == 0); in cmd_body()
837 ndx = arg_to_index(&argstate, elfedit_atoconst_value_to_str( in cmd_body()
843 print_only = (argstate.argc == 0); in cmd_body()
844 ndx = arg_to_index(&argstate, elfedit_atoconst_value_to_str( in cmd_body()
850 print_only = (argstate.argc == 0); in cmd_body()
851 ndx = arg_to_index(&argstate, elfedit_atoconst_value_to_str( in cmd_body()
857 print_only = (argstate.argc == 0); in cmd_body()
858 ndx = arg_to_index(&argstate, elfedit_atoconst_value_to_str( in cmd_body()
872 print_cap(cmd, 0, &argstate, print_type, ndx); in cmd_body()
886 Word c_tag = (Word) elfedit_atoconst(argstate.argv[1], in cmd_body()
910 if (argstate.optmask & CAP_OPT_F_STRVAL) { in cmd_body()
911 argstate_add_str(&argstate, TRUE); in cmd_body()
913 argstate.str.sec, NULL, argstate.argv[1]); in cmd_body()
916 elfedit_atoui(argstate.argv[1], NULL); in cmd_body()
922 argstate.cap.sec->sec_shndx, in cmd_body()
923 argstate.cap.sec->sec_name, in cmd_body()
928 argstate.cap.sec->sec_shndx, in cmd_body()
929 argstate.cap.sec->sec_name, in cmd_body()
940 Word cnt = (argstate.argc == 1) ? 1 : in cmd_body()
941 (Word) elfedit_atoui_range(argstate.argv[1], in cmd_body()
943 argstate.cap.grp_end_ndx - ndx + 1, NULL); in cmd_body()
945 elfedit_sec_msgprefix(argstate.cap.sec); in cmd_body()
962 if ((ndx + cnt - 1) > argstate.cap.grp_end_ndx) in cmd_body()
965 argstate.cap.grp_start_ndx, in cmd_body()
966 argstate.cap.grp_end_ndx, in cmd_body()
967 cap_group_id(&argstate)); in cmd_body()
969 argstate.cap.grp_end_ndx + 1, ndx, cnt); in cmd_body()
980 elfedit_sec_msgprefix(argstate.cap.sec); in cmd_body()
983 elfedit_atoui_range(argstate.argv[1], in cmd_body()
985 argstate.cap.grp_start_ndx, in cmd_body()
986 argstate.cap.grp_end_ndx, NULL); in cmd_body()
987 if (argstate.argc == 2) { in cmd_body()
992 max = argstate.cap.grp_end_ndx - in cmd_body()
995 argstate.argv[2], MSG_ORIG(MSG_STR_COUNT), in cmd_body()
1007 if ((ndx < argstate.cap.grp_start_ndx) || in cmd_body()
1008 ((ndx + cnt) > argstate.cap.grp_end_ndx) || in cmd_body()
1009 (dstndx < argstate.cap.grp_start_ndx) || in cmd_body()
1010 ((dstndx + cnt) > argstate.cap.grp_end_ndx)) in cmd_body()
1013 argstate.cap.grp_start_ndx, in cmd_body()
1014 argstate.cap.grp_end_ndx, in cmd_body()
1015 cap_group_id(&argstate)); in cmd_body()
1017 argstate.cap.grp_end_ndx + 1, ndx, dstndx, in cmd_body()
1026 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name, in cmd_body()
1033 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name, in cmd_body()
1040 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name, in cmd_body()
1047 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name, in cmd_body()
1058 elfedit_modified_data(argstate.cap.sec); in cmd_body()
1062 print_cap(cmd, 1, &argstate, print_type, ndx); in cmd_body()