sync code with last improvements from OpenBSD

This commit is contained in:
purplerain 2023-08-17 07:36:55 +00:00
parent 454dab66ed
commit 27298272ec
Signed by: purplerain
GPG key ID: F42C07F07E2E35B7
237 changed files with 4666 additions and 2149 deletions

View file

@ -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); }

View file

@ -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;

View file

@ -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: