From 69b88bf1276d2cb0309e2fc96df9d33a893138e3 Mon Sep 17 00:00:00 2001 From: Sol Boucher Date: Thu, 26 Feb 2015 11:47:19 -0800 Subject: fmaptool: Introduce the fmd ("flashmap descriptor") language and compiler This adds a compiler for a language whose textual representation of flashmap regions will be used to describe the layout of flash chips that contain more than just a single CBFS. Direct integration with cbfstool (via a new command-line switch for the create action) is forthcoming but will be added separately. BUG=chromium:461875 TEST=Use Chromium OS's cros_bundle_firmware script on the fmap.dts file for panther. Using the latter file as a reference, write a corresponding fmap.fmd file and feed it through fmaptool. Run both binary output files though the flashmap project's own flashmap_decode utility. Observe only the expected differences. BRANCH=None Change-Id: I06b32d138dbef0a4e5ed43c81bd31c796fd5d669 Signed-off-by: Sol Boucher Original-Commit-Id: 005ab67eb594e21489cf31036aedaea87e0c7142 Original-Change-Id: Ia08f28688efdbbfc70c255916b8eb7eb0eb07fb2 Original-Signed-off-by: Sol Boucher Original-Reviewed-on: https://chromium-review.googlesource.com/255031 Original-Reviewed-by: Julius Werner Original-Reviewed-by: Stefan Reinauer Reviewed-on: http://review.coreboot.org/9942 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi --- util/cbfstool/fmd_parser.h | 109 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 util/cbfstool/fmd_parser.h (limited to 'util/cbfstool/fmd_parser.h') diff --git a/util/cbfstool/fmd_parser.h b/util/cbfstool/fmd_parser.h new file mode 100644 index 0000000000..393a8fff4c --- /dev/null +++ b/util/cbfstool/fmd_parser.h @@ -0,0 +1,109 @@ +/* A Bison parser, made by GNU Bison 3.0.2. */ + +/* Bison interface for Yacc-like parsers in C + + Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +#ifndef YY_YY_Y_TAB_H_INCLUDED +# define YY_YY_Y_TAB_H_INCLUDED +/* Debug traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif +#if YYDEBUG +extern int yydebug; +#endif +/* "%code requires" blocks. */ +#line 36 "fmd_parser.y" /* yacc.c:1909 */ + +#include "fmd.h" +#include "option.h" + +#include + +struct descriptor_node { + struct flashmap_descriptor *val; + struct descriptor_node *next; +}; + +struct descriptor_list { + size_t len; + struct descriptor_node *head; + struct descriptor_node *tail; +}; + +extern struct flashmap_descriptor *res; + +struct flashmap_descriptor *parse_descriptor(char *name, + struct unsigned_option offset, struct unsigned_option size, + struct descriptor_list children); +void yyerror(const char *s); + +#line 69 "y.tab.h" /* yacc.c:1909 */ + +/* Token type. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + enum yytokentype + { + INTEGER = 258, + OCTAL = 259, + STRING = 260 + }; +#endif +/* Tokens. */ +#define INTEGER 258 +#define OCTAL 259 +#define STRING 260 + +/* Value type. */ +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE YYSTYPE; +union YYSTYPE +{ +#line 28 "fmd_parser.y" /* yacc.c:1909 */ + + unsigned intval; + char *strval; + struct unsigned_option maybe_intval; + struct flashmap_descriptor *region_ptr; + struct descriptor_list region_listhdr; + +#line 99 "y.tab.h" /* yacc.c:1909 */ +}; +# define YYSTYPE_IS_TRIVIAL 1 +# define YYSTYPE_IS_DECLARED 1 +#endif + + +extern YYSTYPE yylval; + +int yyparse (void); + +#endif /* !YY_YY_Y_TAB_H_INCLUDED */ -- cgit v1.2.3