/* * BPF asm code lexer * * This program is free software; you can distribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * Syntax kept close to: * * Steven McCanne and Van Jacobson. 1993. The BSD packet filter: a new * architecture for user-level packet capture. In Proceedings of the * USENIX Winter 1993 Conference Proceedings on USENIX Winter 1993 * Conference Proceedings (USENIX'93). USENIX Association, Berkeley, * CA, USA, 2-2. * * Copyright 2013 Daniel Borkmann * Licensed under the GNU General Public License, version 2.0 (GPLv2) */ %{ #include #include #include #include #include #include "bpf_exp.yacc.h" extern void yyerror(const char *str); %} %option align %option ecs %option nounput %option noreject %option noinput %option noyywrap %option 8bit %option caseless %option yylineno %% "ldb" { return OP_LDB; } "ldh" { return OP_LDH; } "ld" { return OP_LD; } "ldi" { return OP_LDI; } "ldx" { return OP_LDX; } "ldxi" { return OP_LDXI; } "ldxb" { return OP_LDXB; } "st" { return OP_ST; } "stx" { return OP_STX; } "jmp" { return OP_JMP; } "ja" { return OP_JMP; } "jeq" { return OP_JEQ; } "jneq" { return OP_JNEQ; } "jne" { return OP_JNEQ; } "jlt" { return OP_JLT; } "jle" { return OP_JLE; } "jgt" { return OP_JGT; } "jge" { return OP_JGE; } "jset" { return OP_JSET; } "add" { return OP_ADD; } "sub" { return OP_SUB; } "mul" { return OP_MUL; } "div" { return OP_DIV; } "mod" { return OP_MOD; } "neg" { return OP_NEG; } "and" { return OP_AND; } "xor" { return OP_XOR; } "or" { return OP_OR; } "lsh" { return OP_LSH; } "rsh" { return OP_RSH; } "ret" { return OP_RET; } "tax" { return OP_TAX; } "txa" { return OP_TXA; } "#"?("len") { return K_PKT_LEN; } "#"?("proto") { yylval.number = SKF_AD_PROTOCOL; return extension; } "#"?("type") { yylval.number = SKF_AD_PKTTYPE; return extension; } "#"?("poff") { yylval.number = SKF_AD_PAY_OFFSET; return extension; } "#"?("ifidx") { yylval.number = SKF_AD_IFINDEX; return extension; } "#"?("nla") { yylval.number = SKF_AD_NLATTR; return extension; } "#"?("nlan") { yylval.number = SKF_AD_NLATTR_NEST; return extension; } "#"?("mark") { yylval.number = SKF_AD_MARK; return extension; } "#"?("queue") { yylval.number = SKF_AD_QUEUE; return extension; } "#"?("hatype") { yylval.number = SKF_AD_HATYPE; return extension; } "#"?("rxhash") { yylval.number = SKF_AD_RXHASH; return extension; } "#"?("cpu") { yylval.number = SKF_AD_CPU; return extension; } "#"?("vlan_tci") { yylval.number = SKF_AD_VLAN_TAG; return extension; } "#"?("vlan_pr") { yylval.number = SKF_AD_VLAN_TAG_PRESENT; return extension; } "#"?("vlan_avail") { yylval.number = SKF_AD_VLAN_TAG_PRESENT; return extension; } "#"?("vlan_tpid") { yylval.number = SKF_AD_VLAN_TPID; return extension; } "#"?("rand") { yylval.number = SKF_AD_RANDOM; return extension; } ":" { return ':'; } "," { return ','; } "#" { return '#'; } "%" { return '%'; } "[" { return '['; } "]" { return ']'; } "(" { return '('; } ")" { return ')'; } "x" { return 'x'; } "a" { return 'a'; } "+" { return '+'; } "M" { return 'M'; } "*" { return '*'; } "&" { return '&'; } ([0][x][a-fA-F0-9]+) { yylval.number = strtoul(yytext, NULL, 16); return number; } ([0][b][0-1]+) { yylval.number = strtol(yytext + 2, NULL, 2); return number; } (([0])|([-+]?[1-9][0-9]*)) { yylval.number = strtol(yytext, NULL, 10); return number; } ([0][0-9]+) { yylval.number = strtol(yytext + 1, NULL, 8); return number; } [a-zA-Z_][a-zA-Z0-9_]+ { yylval.label = strdup(yytext); return label; } "/*"([^\*]|\*[^/])*"*/" { /* NOP */ } ";"[^\n]* { /* NOP */ } ^#.* { /* NOP */ } [ \t]+ { /* NOP */ } [ \n]+ { /* NOP */ } . { printf("unknown character \'%s\'", yytext); yyerror("lex unknown character"); } %% value='3' selected='selected'>3space:mode:
authorPeter Zijlstra <peterz@infradead.org>2017-01-26 23:15:08 +0100
committerIngo Molnar <mingo@kernel.org>2017-01-30 11:41:26 +0100
commit0b3589be9b98994ce3d5aeca52445d1f5627c4ba (patch)
tree85d0d9b3ac902af2c938b19a566884caf8d00323 /tools/build/feature/test-hello.c
parenta76a82a3e38c8d3fb6499e3dfaeb0949241ab588 (diff)
perf/core: Fix PERF_RECORD_MMAP2 prot/flags for anonymous memory
Andres reported that MMAP2 records for anonymous memory always have their protection field 0. Turns out, someone daft put the prot/flags generation code in the file branch, leaving them unset for anonymous memory. Reported-by: Andres Freund <andres@anarazel.de> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Don Zickus <dzickus@redhat.com Cc: Jiri Olsa <jolsa@redhat.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@gmail.com> Cc: Stephane Eranian <eranian@google.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: acme@kernel.org Cc: anton@ozlabs.org Cc: namhyung@kernel.org Cc: stable@vger.kernel.org # v3.16+ Fixes: f972eb63b100 ("perf: Pass protection and flags bits through mmap2 interface") Link: http://lkml.kernel.org/r/20170126221508.GF6536@twins.programming.kicks-ass.net Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/build/feature/test-hello.c')