Lines Matching refs:cap
51 CAP_CMD_T_DUMP = 0, /* cap:dump */
54 CAP_CMD_T_TAG = 1, /* cap:tag */
55 CAP_CMD_T_VALUE = 2, /* cap:value */
56 CAP_CMD_T_DELETE = 3, /* cap:delete */
57 CAP_CMD_T_MOVE = 4, /* cap:shift */
60 CAP_CMD_T_HW1 = 5, /* cap:hw1 */
61 CAP_CMD_T_SF1 = 6, /* cap:sf1 */
62 CAP_CMD_T_HW2 = 7, /* cap:hw2 */
127 Boolean grp_set; /* TRUE when cap group is set */
130 } cap;
167 if (argstate->cap.sec->sec_shdr->sh_info == 0) {
171 EC_WORD(argstate->cap.sec->sec_shndx),
172 argstate->cap.sec->sec_name);
177 argstate->cap.sec->sec_shdr->sh_info, 0);
195 while ((ndx > 0) && (argstate->cap.data[ndx].c_tag == CA_SUNW_NULL))
197 while ((ndx > 0) && (argstate->cap.data[ndx - 1].c_tag != CA_SUNW_NULL))
206 while (((ndx + 1) < argstate->cap.num) &&
207 (argstate->cap.data[ndx].c_tag != CA_SUNW_NULL))
209 while (((ndx + 1) < argstate->cap.num) &&
210 (argstate->cap.data[ndx + 1].c_tag == CA_SUNW_NULL))
223 Word ndx = argstate->cap.grp_start_ndx;
224 Cap *cap = argstate->cap.data + ndx;
226 for (; ndx <= argstate->cap.grp_end_ndx; ndx++, cap++) {
227 if (cap->c_tag == CA_SUNW_ID) {
230 cap->c_un.c_val, ELFEDIT_MSG_ERR, 0));
233 if (cap->c_tag == CA_SUNW_NULL)
237 return ((argstate->cap.grp_start_ndx == 0) ?
243 * Given an index into the capabilities array, set the argstate cap.grp_*
253 if (argstate->cap.grp_set == TRUE)
256 cap_group_extents(argstate, ndx, &argstate->cap.grp_start_ndx,
257 &argstate->cap.grp_end_ndx);
259 argstate->cap.grp_set = TRUE;
261 EC_WORD(argstate->cap.sec->sec_shndx), argstate->cap.sec->sec_name,
262 EC_WORD(argstate->cap.grp_start_ndx),
263 EC_WORD(argstate->cap.grp_end_ndx), cap_group_id(argstate));
276 cap_group_extents(argstate, ndx, &loc_argstate.cap.grp_start_ndx,
277 &loc_argstate.cap.grp_end_ndx);
279 EC_WORD(loc_argstate.cap.grp_start_ndx),
280 EC_WORD(loc_argstate.cap.grp_end_ndx), cap_group_id(&loc_argstate));
284 * Standard argument processing for cap module
324 argstate->cap.sec = elfedit_sec_getcap(obj_state, &argstate->cap.data,
325 &argstate->cap.num);
334 Cap *cap = argstate->cap.data;
342 for (i = 0; i < argstate->cap.num; i++, cap++)
343 if ((cap->c_tag == CA_SUNW_ID) &&
345 argstate->str.sec, cap->c_un.c_val,
349 if (i == argstate->cap.num)
351 EC_WORD(argstate->cap.sec->sec_shndx),
352 argstate->cap.sec->sec_name, capid);
355 argstate->cap.grp_start_ndx = 0;
356 argstate->cap.grp_end_ndx = argstate->cap.num - 1;
388 Cap *cap;
397 * Pick an output style. cap:dump is required to use the default
405 if (arg >= argstate->cap.num)
410 ndx = argstate->cap.grp_start_ndx;
411 cnt = argstate->cap.grp_end_ndx - ndx + 1;
424 cap = &argstate->cap.data[ndx];
425 for (; cnt--; cap++, ndx++) {
430 if ((print_type == PRINT_CAP_T_TAG) && (cap->c_tag != arg)) {
431 if (cap->c_tag == CA_SUNW_NULL)
440 switch (cap->c_tag) {
450 if (null_seen && (cap->c_tag != CA_SUNW_NULL)) {
464 Elf_cap_entry(NULL, cap, ndx, str, str_size,
476 conv_cap_tag(cap->c_tag, 0,
481 EC_WORD(cap->c_tag));
493 conv_cap_val_hw1(cap->c_un.c_val,
501 switch (cap->c_tag) {
504 conv_cap_val_hw1(cap->c_un.c_val,
512 conv_cap_val_sf1(cap->c_un.c_val,
520 conv_cap_val_hw2(cap->c_un.c_val,
531 argstate->str.sec, cap->c_un.c_val,
538 EC_XWORD(cap->c_un.c_val));
541 if (cap->c_tag == CA_SUNW_NULL)
553 EC_WORD(argstate->cap.sec->sec_shndx),
554 argstate->cap.sec->sec_name, argstate->cap.grp_start_ndx,
555 argstate->cap.grp_end_ndx, cap_group_id(argstate),
605 argstate->cap.num - 1, NULL);
627 if (!argstate->cap.grp_set)
634 for (ndx = argstate->cap.grp_start_ndx;
635 ndx <= argstate->cap.grp_end_ndx; ndx++) {
636 if (argstate->cap.data[ndx].c_tag == ca_value) {
639 EC_WORD(argstate->cap.sec->sec_shndx),
640 argstate->cap.sec->sec_name, EC_WORD(ndx), arg);
650 if (argstate->cap.data[ndx].c_tag == CA_SUNW_NULL) {
651 if (ndx < argstate->cap.grp_end_ndx) {
656 EC_WORD(argstate->cap.sec->sec_shndx),
657 argstate->cap.sec->sec_name, EC_WORD(ndx),
659 argstate->cap.data[ndx].c_tag = ca_value;
660 bzero(&argstate->cap.data[ndx].c_un,
661 sizeof (argstate->cap.data[ndx].c_un));
670 EC_WORD(argstate->cap.sec->sec_shndx),
671 argstate->cap.sec->sec_name, argstate->cap.grp_start_ndx,
672 argstate->cap.grp_end_ndx, cap_group_id(argstate), arg);
717 * cap - capabilities data pointer
725 cap_set(ARGSTATE *argstate, Cap *cap, Word ndx, Word cap_ndx,
732 ncap = flag_bitop(argstate, cap[ndx].c_un.c_val,
736 if ((ocap = cap[ndx].c_un.c_val) == ncap) {
748 cap[ndx].c_un.c_val = ncap;
754 * Common body for the cap: module commands. These commands
769 Cap *cap;
781 cap = argstate.cap.data;
782 cap_name = argstate.cap.sec->sec_name;
783 cap_ndx = argstate.cap.sec->sec_shndx;
788 /* cap:dump can accept an optional index argument */
872 if (cap[ndx].c_tag == c_tag) {
881 conv_cap_tag(cap[ndx].c_tag, 0, &inv_buf1),
883 cap[ndx].c_tag = c_tag;
902 if (cap[ndx].c_un.c_val == c_val) {
905 argstate.cap.sec->sec_shndx,
906 argstate.cap.sec->sec_name,
911 argstate.cap.sec->sec_shndx,
912 argstate.cap.sec->sec_name,
913 EC_WORD(ndx), EC_XWORD(cap[ndx].c_un.c_val),
915 cap[ndx].c_un.c_val = c_val;
926 argstate.cap.grp_end_ndx - ndx + 1, NULL);
928 elfedit_sec_msgprefix(argstate.cap.sec);
945 if ((ndx + cnt - 1) > argstate.cap.grp_end_ndx)
948 argstate.cap.grp_start_ndx,
949 argstate.cap.grp_end_ndx,
951 elfedit_array_elts_delete(msg_prefix, cap, sizeof (Cap),
952 argstate.cap.grp_end_ndx + 1, ndx, cnt);
963 elfedit_sec_msgprefix(argstate.cap.sec);
968 argstate.cap.grp_start_ndx,
969 argstate.cap.grp_end_ndx, NULL);
975 max = argstate.cap.grp_end_ndx -
990 if ((ndx < argstate.cap.grp_start_ndx) ||
991 ((ndx + cnt) > argstate.cap.grp_end_ndx) ||
992 (dstndx < argstate.cap.grp_start_ndx) ||
993 ((dstndx + cnt) > argstate.cap.grp_end_ndx))
996 argstate.cap.grp_start_ndx,
997 argstate.cap.grp_end_ndx,
999 elfedit_array_elts_move(msg_prefix, cap, sizeof (save),
1000 argstate.cap.grp_end_ndx + 1, ndx, dstndx,
1009 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name,
1016 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name,
1023 ret = cap_set(&argstate, cap, ndx, cap_ndx, cap_name,
1033 elfedit_modified_data(argstate.cap.sec);
1056 Cap *cap;
1066 cap_sec = elfedit_sec_getcap(obj_state, &cap, &num);
1074 for (; num--; cap++)
1075 if (cap->c_tag == CA_SUNW_ID)
1077 str_sec, cap->c_un.c_val, ELFEDIT_MSG_ERR, 0), 0);
1271 /* cap:dump */
1286 /* cap:tag */
1315 /* cap:value */
1347 /* cap:delete */
1361 /* cap:move */
1379 /* cap:hw1 */
1389 /* cap:sf1 */
1399 /* cap:hw2 */
1411 /* cap:dump */
1419 /* cap:tag */
1427 /* cap:value */
1435 /* cap:delete */
1443 /* cap:move */
1451 /* cap:hw1 */
1459 /* cap:sf1 */
1467 /* cap:hw2 */