sync code with last improvements from OpenBSD
This commit is contained in:
parent
454dab66ed
commit
27298272ec
237 changed files with 4666 additions and 2149 deletions
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: bt_parse.y,v 1.49 2022/12/28 21:30:16 jmc Exp $ */
|
||||
/* $OpenBSD: bt_parse.y,v 1.50 2023/08/13 13:19:23 dv Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019-2021 Martin Pieuchot <mpi@openbsd.org>
|
||||
|
@ -115,7 +115,7 @@ static int pflag;
|
|||
%token <v.i> ERROR ENDFILT
|
||||
%token <v.i> OP_EQ OP_NE OP_LE OP_LT OP_GE OP_GT OP_LAND OP_LOR
|
||||
/* Builtins */
|
||||
%token <v.i> BUILTIN BEGIN END HZ IF
|
||||
%token <v.i> BUILTIN BEGIN END HZ IF STR
|
||||
/* Functions and Map operators */
|
||||
%token <v.i> F_DELETE F_PRINT
|
||||
%token <v.i> MFUNC FUNC0 FUNC1 FUNCN OP1 OP2 OP4 MOP0 MOP1
|
||||
|
@ -127,7 +127,7 @@ static int pflag;
|
|||
%type <v.probe> plist probe pname
|
||||
%type <v.filter> filter
|
||||
%type <v.stmt> action stmt stmtblck stmtlist block
|
||||
%type <v.arg> pat vargs mentry mpat pargs staticv
|
||||
%type <v.arg> vargs mentry mpat pargs staticv
|
||||
%type <v.arg> expr term fterm variable factor func
|
||||
%%
|
||||
|
||||
|
@ -169,11 +169,7 @@ mentry : gvar '[' vargs ']' { $$ = bm_find($1, $3); }
|
|||
;
|
||||
|
||||
mpat : MOP0 '(' ')' { $$ = ba_new(NULL, $1); }
|
||||
| MOP1 '(' pat ')' { $$ = ba_new($3, $1); }
|
||||
| pat
|
||||
;
|
||||
|
||||
pat : CSTRING { $$ = ba_new($1, B_AT_STR); }
|
||||
| MOP1 '(' expr ')' { $$ = ba_new($3, $1); }
|
||||
| expr
|
||||
;
|
||||
|
||||
|
@ -226,15 +222,15 @@ factor : '(' expr ')' { $$ = $2; }
|
|||
;
|
||||
|
||||
func : STR '(' staticv ')' { $$ = ba_new($3, B_AT_FN_STR); }
|
||||
| STR '(' staticv ',' pat ')' { $$ = ba_op(B_AT_FN_STR, $3, $5); }
|
||||
| STR '(' staticv ',' expr ')' { $$ = ba_op(B_AT_FN_STR, $3, $5); }
|
||||
;
|
||||
|
||||
vargs : pat
|
||||
| vargs ',' pat { $$ = ba_append($1, $3); }
|
||||
vargs : expr
|
||||
| vargs ',' expr { $$ = ba_append($1, $3); }
|
||||
;
|
||||
|
||||
pargs : expr
|
||||
| gvar ',' pat { $$ = ba_append(bg_find($1), $3); }
|
||||
| gvar ',' expr { $$ = ba_append(bg_find($1), $3); }
|
||||
;
|
||||
|
||||
NL : /* empty */
|
||||
|
@ -242,17 +238,17 @@ NL : /* empty */
|
|||
;
|
||||
|
||||
stmt : ';' NL { $$ = NULL; }
|
||||
| gvar '=' pat { $$ = bg_store($1, $3); }
|
||||
| lvar '=' pat { $$ = bl_store($1, $3); }
|
||||
| gvar '=' expr { $$ = bg_store($1, $3); }
|
||||
| lvar '=' expr { $$ = bl_store($1, $3); }
|
||||
| gvar '[' vargs ']' '=' mpat { $$ = bm_insert($1, $3, $6); }
|
||||
| FUNCN '(' vargs ')' { $$ = bs_new($1, $3, NULL); }
|
||||
| FUNC1 '(' pat ')' { $$ = bs_new($1, $3, NULL); }
|
||||
| FUNC1 '(' expr ')' { $$ = bs_new($1, $3, NULL); }
|
||||
| MFUNC '(' variable ')' { $$ = bs_new($1, $3, NULL); }
|
||||
| FUNC0 '(' ')' { $$ = bs_new($1, NULL, NULL); }
|
||||
| F_DELETE '(' mentry ')' { $$ = bm_op($1, $3, NULL); }
|
||||
| F_PRINT '(' pargs ')' { $$ = bs_new($1, $3, NULL); }
|
||||
| gvar '=' OP1 '(' pat ')' { $$ = bh_inc($1, $5, NULL); }
|
||||
| gvar '=' OP4 '(' pat ',' vargs ')' { $$ = bh_inc($1, $5, $7); }
|
||||
| gvar '=' OP1 '(' expr ')' { $$ = bh_inc($1, $5, NULL); }
|
||||
| gvar '=' OP4 '(' expr ',' vargs ')' { $$ = bh_inc($1, $5, $7); }
|
||||
;
|
||||
|
||||
stmtblck: IF '(' expr ')' block { $$ = bt_new($3, $5); }
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: btrace.c,v 1.71 2023/06/27 14:17:00 claudio Exp $ */
|
||||
/* $OpenBSD: btrace.c,v 1.74 2023/08/16 13:07:11 dv Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2019 - 2021 Martin Pieuchot <mpi@openbsd.org>
|
||||
|
@ -1028,6 +1028,14 @@ stmt_store(struct bt_stmt *bs, struct dt_evt *dtev)
|
|||
bv->bv_value = ba;
|
||||
bv->bv_type = B_VT_LONG;
|
||||
break;
|
||||
case B_AT_BI_PID:
|
||||
bv->bv_value = ba_new((long)dtev->dtev_pid, B_AT_LONG);
|
||||
bv->bv_type = B_VT_LONG;
|
||||
break;
|
||||
case B_AT_BI_TID:
|
||||
bv->bv_value = ba_new((long)dtev->dtev_tid, B_AT_LONG);
|
||||
bv->bv_type = B_VT_LONG;
|
||||
break;
|
||||
case B_AT_BI_NSECS:
|
||||
bv->bv_value = ba_new(builtin_nsecs(dtev), B_AT_LONG);
|
||||
bv->bv_type = B_VT_LONG;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $OpenBSD: map.c,v 1.21 2023/06/27 14:17:00 claudio Exp $ */
|
||||
/* $OpenBSD: map.c,v 1.22 2023/08/13 09:48:27 mpi Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2020 Martin Pieuchot <mpi@openbsd.org>
|
||||
|
@ -134,10 +134,10 @@ map_insert(struct map *map, const char *key, struct bt_arg *bval,
|
|||
mep = mget(map, key);
|
||||
switch (bval->ba_type) {
|
||||
case B_AT_STR:
|
||||
case B_AT_LONG:
|
||||
free(mep->mval);
|
||||
mep->mval = bval;
|
||||
mep->mval = ba_new(ba2str(bval, dtev), B_AT_LONG);
|
||||
break;
|
||||
case B_AT_LONG:
|
||||
case B_AT_BI_PID:
|
||||
case B_AT_BI_TID:
|
||||
case B_AT_BI_CPU:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue