<p>Denis 'GNUtoo' Carikli has uploaded this change for <strong>review</strong>.</p><p><a href="https://review.coreboot.org/27810">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">util/bincfg: don't use sym_table shared variable<br><br>Change-Id: I652a8da75498f871a53eb7509f6145c4842e3373<br>Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org><br>---<br>M util/bincfg/bincfg.h<br>M util/bincfg/bincfg.y<br>2 files changed, 82 insertions(+), 60 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://review.coreboot.org:29418/coreboot refs/changes/10/27810/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/util/bincfg/bincfg.h b/util/bincfg/bincfg.h</span><br><span>index b8c6688..8e2038a 100644</span><br><span>--- a/util/bincfg/bincfg.h</span><br><span>+++ b/util/bincfg/bincfg.h</span><br><span>@@ -27,6 +27,8 @@</span><br><span>       unsigned int value;</span><br><span>  struct field *next;</span><br><span> };</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct field* field_t;</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct field** field_ptr_t;</span><br><span> </span><br><span> /* Bit array intermediary representation */</span><br><span> struct blob {</span><br><span>@@ -37,13 +39,12 @@</span><br><span>     unsigned int lenactualblob;</span><br><span> };</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *putsym (char const *, unsigned int);</span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *getsym (char const *);</span><br><span style="color: hsl(0, 100%, 40%);">-static void yyerror (FILE* fp, char const *);</span><br><span style="color: hsl(0, 100%, 40%);">-int yylex (void);</span><br><span style="color: hsl(120, 100%, 40%);">+static field_t putsym(field_ptr_t sym_table_ptr, char const *, unsigned int);</span><br><span style="color: hsl(120, 100%, 40%);">+static field_t getsym(field_ptr_t sym_table_ptr, char const *);</span><br><span style="color: hsl(120, 100%, 40%);">+static void yyerror(FILE* fp, field_ptr_t, char const *);</span><br><span style="color: hsl(120, 100%, 40%);">+int yylex(void);</span><br><span> </span><br><span> static struct blob *binary;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *sym_table;</span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *sym_table_tail;</span><br><span style="color: hsl(120, 100%, 40%);">+static field_t sym_table_tail;</span><br><span> </span><br><span> #endif /* __BINCFG_H */</span><br><span>diff --git a/util/bincfg/bincfg.y b/util/bincfg/bincfg.y</span><br><span>index 8be11e9..851d9f5 100644</span><br><span>--- a/util/bincfg/bincfg.y</span><br><span>+++ b/util/bincfg/bincfg.y</span><br><span>@@ -59,10 +59,12 @@</span><br><span>         binary->bloblen += w;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void set_bitfield(char *name, unsigned int value)</span><br><span style="color: hsl(120, 100%, 40%);">+static void set_bitfield(field_ptr_t sym_table_ptr, char *name,</span><br><span style="color: hsl(120, 100%, 40%);">+                     unsigned int value)</span><br><span> {</span><br><span>    unsigned long long i;</span><br><span style="color: hsl(0, 100%, 40%);">-   struct field *bf = getsym (name);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+   struct field *bf = getsym(sym_table_ptr, name);</span><br><span>      if (bf) {</span><br><span>            bf->value = value & 0xffffffff;</span><br><span>               i = (1 << bf->width) - 1;</span><br><span>@@ -78,28 +80,30 @@</span><br><span>     }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void set_bitfield_array(char *name, unsigned int n, unsigned int value)</span><br><span style="color: hsl(120, 100%, 40%);">+static void set_bitfield_array(field_ptr_t sym_table_ptr, char *name,</span><br><span style="color: hsl(120, 100%, 40%);">+                              unsigned int n, unsigned int value)</span><br><span> {</span><br><span>      unsigned int i;</span><br><span>      unsigned long len = strlen (name);</span><br><span>   char *namen = (char *) malloc ((len + 9) * sizeof (char));</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>         check_pointer(namen);</span><br><span>        for (i = 0; i < n; i++) {</span><br><span>                 snprintf (namen, len + 8, "%s%x", name, i);</span><br><span style="color: hsl(0, 100%, 40%);">-           set_bitfield (namen, value);</span><br><span style="color: hsl(120, 100%, 40%);">+          set_bitfield (sym_table_ptr, namen, value);</span><br><span>  }</span><br><span>    free(namen);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void create_new_bitfield(char *name, unsigned int width)</span><br><span style="color: hsl(120, 100%, 40%);">+static void create_new_bitfield(field_ptr_t sym_table_ptr, char *name, unsigned int width)</span><br><span> {</span><br><span>        struct field *bf;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (!(bf = putsym (name, width))) return;</span><br><span style="color: hsl(120, 100%, 40%);">+     if (!(bf = putsym (sym_table_ptr, name, width))) return;</span><br><span>     //fprintf(stderr, "Added bitfield `%s` : %d\n", bf->name, width);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void create_new_bitfields(char *name, unsigned int n, unsigned int width)</span><br><span style="color: hsl(120, 100%, 40%);">+static void create_new_bitfields(field_ptr_t sym_table_ptr, char *name, unsigned int n, unsigned int width)</span><br><span> {</span><br><span>    unsigned int i;</span><br><span>      unsigned long len = strlen (name);</span><br><span>@@ -107,51 +111,56 @@</span><br><span>   check_pointer(namen);</span><br><span>        for (i = 0; i < n; i++) {</span><br><span>                 snprintf (namen, len + 8, "%s%x", name, i);</span><br><span style="color: hsl(0, 100%, 40%);">-           create_new_bitfield (namen, width);</span><br><span style="color: hsl(120, 100%, 40%);">+           create_new_bitfield (sym_table_ptr, namen, width);</span><br><span>   }</span><br><span>    free(namen);</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *putsym (char const *sym_name, unsigned int w)</span><br><span style="color: hsl(120, 100%, 40%);">+static field_t putsym (field_ptr_t sym_table_ptr,  char const *sym_name,</span><br><span style="color: hsl(120, 100%, 40%);">+                    unsigned int w)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-     if (getsym(sym_name)) {</span><br><span style="color: hsl(120, 100%, 40%);">+       if (getsym(sym_table_ptr, sym_name)) {</span><br><span>               fprintf(stderr, "Cannot add duplicate named bitfield `%s`\n",</span><br><span>                      sym_name);</span><br><span>           return 0;</span><br><span>    }</span><br><span style="color: hsl(0, 100%, 40%);">-       struct field *ptr = (struct field *) malloc (sizeof (struct field));</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t ptr = (field_t ) malloc (sizeof (struct field));</span><br><span>     check_pointer(ptr);</span><br><span>  ptr->name = (char *) malloc (strlen (sym_name) + 1);</span><br><span>      check_pointer(ptr->name);</span><br><span>         strcpy (ptr->name, sym_name);</span><br><span>     ptr->width = w;</span><br><span>   ptr->value = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-      ptr->next = (struct field *)0;</span><br><span style="color: hsl(120, 100%, 40%);">+     ptr->next = (field_t)0;</span><br><span>   if (sym_table_tail) {</span><br><span>                sym_table_tail->next = ptr;</span><br><span>       } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                sym_table = ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+              *sym_table_ptr = ptr;</span><br><span>        }</span><br><span>    sym_table_tail = ptr;</span><br><span>        return ptr;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static struct field *getsym (char const *sym_name)</span><br><span style="color: hsl(120, 100%, 40%);">+static field_t getsym (field_ptr_t sym_table_ptr, char const *sym_name)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct field *ptr;</span><br><span style="color: hsl(0, 100%, 40%);">-      for (ptr = sym_table; ptr != (struct field *) 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                        ptr = (struct field *)ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+ field_t ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t sym_table = *sym_table_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for (ptr = sym_table; ptr != (field_t ) 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                    ptr = (field_t )ptr->next) {</span><br><span>              if (strcmp (ptr->name, sym_name) == 0)</span><br><span>                    return ptr;</span><br><span>  }</span><br><span>    return 0;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void dump_all_values (void)</span><br><span style="color: hsl(120, 100%, 40%);">+static void dump_all_values (field_ptr_t sym_table_ptr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-      struct field *ptr;</span><br><span style="color: hsl(0, 100%, 40%);">-      for (ptr = sym_table; ptr != (struct field *) 0;</span><br><span style="color: hsl(0, 100%, 40%);">-                        ptr = (struct field *)ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+ field_t ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t sym_table = *sym_table_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for (ptr = sym_table; ptr != (field_t ) 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                    ptr = (field_t )ptr->next) {</span><br><span>              fprintf(stderr, "%s = %d (%d bits)\n",</span><br><span>                             ptr->name,</span><br><span>                                ptr->value,</span><br><span>@@ -159,17 +168,19 @@</span><br><span>       }</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void empty_field_table(void)</span><br><span style="color: hsl(120, 100%, 40%);">+static void empty_field_table(field_ptr_t sym_table_ptr)</span><br><span> {</span><br><span style="color: hsl(0, 100%, 40%);">-    struct field *ptr;</span><br><span style="color: hsl(0, 100%, 40%);">-      struct field *ptrnext;</span><br><span style="color: hsl(120, 100%, 40%);">+        field_t ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t ptrnext;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-    for (ptr = sym_table; ptr != (struct field *) 0; ptr = ptrnext) {</span><br><span style="color: hsl(120, 100%, 40%);">+     field_t sym_table = *sym_table_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+ for (ptr = sym_table; ptr != (field_t ) 0; ptr = ptrnext) {</span><br><span>          if (ptr) {</span><br><span>                   ptrnext = ptr->next;</span><br><span>                      free(ptr);</span><br><span>           } else {</span><br><span style="color: hsl(0, 100%, 40%);">-                        ptrnext = (struct field *) 0;</span><br><span style="color: hsl(120, 100%, 40%);">+                 ptrnext = (field_t ) 0;</span><br><span>              }</span><br><span>    }</span><br><span>    sym_table = 0;</span><br><span>@@ -190,7 +201,7 @@</span><br><span>         binary->blb[0] = VALID_BIT;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void interpret_next_blob_value (struct field *f)</span><br><span style="color: hsl(120, 100%, 40%);">+static void interpret_next_blob_value (field_t f)</span><br><span> {</span><br><span>       unsigned int i;</span><br><span>      unsigned int v = 0;</span><br><span>@@ -208,10 +219,12 @@</span><br><span> }</span><br><span> </span><br><span> /* {}%BIN -> {} */</span><br><span style="color: hsl(0, 100%, 40%);">-static void generate_setter_bitfields(FILE* fp, unsigned char *bin)</span><br><span style="color: hsl(120, 100%, 40%);">+static void generate_setter_bitfields(FILE* fp, field_ptr_t sym_table_ptr,</span><br><span style="color: hsl(120, 100%, 40%);">+                                unsigned char *bin)</span><br><span> {</span><br><span>       unsigned int i;</span><br><span style="color: hsl(0, 100%, 40%);">- struct field *ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+    field_t ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t sym_table = *sym_table_ptr;</span><br><span> </span><br><span>      /* Convert bytes to bit array */</span><br><span>     for (i = 0; i < binary->lenactualblob; i++) {</span><br><span>@@ -224,7 +237,7 @@</span><br><span>    fprintf (fp, "# AUTOGENERATED SETTER BY BINCFG\n{\n");</span><br><span> </span><br><span>         /* Traverse spec and output bitfield setters based on blob values */</span><br><span style="color: hsl(0, 100%, 40%);">-    for (ptr = sym_table; ptr != (struct field *) 0; ptr = ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+        for (ptr = sym_table; ptr != (field_t ) 0; ptr = ptr->next) {</span><br><span> </span><br><span>                 interpret_next_blob_value(ptr);</span><br><span>              fprintf (fp, "\t\"%s\" = 0x%x,\n", ptr->name, ptr->value);</span><br><span>@@ -233,15 +246,18 @@</span><br><span>         fprintf (fp, "\n}\n");</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-static void generate_binary_with_gbe_checksum(FILE* fp)</span><br><span style="color: hsl(120, 100%, 40%);">+static void generate_binary_with_gbe_checksum(FILE* fp,</span><br><span style="color: hsl(120, 100%, 40%);">+                                           field_ptr_t sym_table_ptr)</span><br><span> {</span><br><span>        int i;</span><br><span>       unsigned short checksum;</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+  field_t sym_table = *sym_table_ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>        /* traverse spec, push to blob and add up for checksum */</span><br><span style="color: hsl(0, 100%, 40%);">-       struct field *ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+    field_t ptr;</span><br><span>         unsigned int uptochksum = 0;</span><br><span style="color: hsl(0, 100%, 40%);">-    for (ptr = sym_table; ptr != (struct field *) 0; ptr = ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+        for (ptr = sym_table; ptr != (field_t ) 0; ptr = ptr->next) {</span><br><span>             if (strcmp (ptr->name, "checksum_gbe") == 0) {</span><br><span>                  /* Stop traversing because we hit checksum */</span><br><span>                        ptr = ptr->next;</span><br><span>@@ -277,14 +293,14 @@</span><br><span>  checksum = (0xbaba - binary->checksum) & 0xffff;</span><br><span> </span><br><span>  /* Now write checksum */</span><br><span style="color: hsl(0, 100%, 40%);">-        set_bitfield ("checksum_gbe", checksum);</span><br><span style="color: hsl(120, 100%, 40%);">+    set_bitfield (sym_table_ptr, "checksum_gbe", checksum);</span><br><span> </span><br><span>        fprintf(fp, "%c", checksum & 0xff);</span><br><span>    fprintf(fp, "%c", (checksum & 0xff00) >> 8);</span><br><span> </span><br><span>         append_field_to_blob (value_to_bits(checksum, 16), 16);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-     for (; ptr != (struct field *) 0; ptr = ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+       for (; ptr != (field_t ) 0; ptr = ptr->next) {</span><br><span>            append_field_to_blob (</span><br><span>                       value_to_bits(ptr->value, ptr->width), ptr->width);</span><br><span>         }</span><br><span>@@ -305,10 +321,11 @@</span><br><span> }</span><br><span> </span><br><span> /* {}{} -> BIN */</span><br><span style="color: hsl(0, 100%, 40%);">-static void generate_binary(FILE* fp)</span><br><span style="color: hsl(120, 100%, 40%);">+static void generate_binary(FILE* fp, field_ptr_t sym_table_ptr)</span><br><span> {</span><br><span>       unsigned int i;</span><br><span style="color: hsl(0, 100%, 40%);">- struct field *ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+    field_t ptr;</span><br><span style="color: hsl(120, 100%, 40%);">+  field_t sym_table = *sym_table_ptr;</span><br><span> </span><br><span>      if (binary->bloblen % 8) {</span><br><span>                fprintf (stderr,</span><br><span>@@ -316,13 +333,13 @@</span><br><span>             exit (1);</span><br><span>    }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-   if (getsym ("checksum_gbe")) {</span><br><span style="color: hsl(0, 100%, 40%);">-                generate_binary_with_gbe_checksum(fp);</span><br><span style="color: hsl(120, 100%, 40%);">+        if (getsym (sym_table_ptr, "checksum_gbe")) {</span><br><span style="color: hsl(120, 100%, 40%);">+               generate_binary_with_gbe_checksum(fp, sym_table_ptr);</span><br><span>                return;</span><br><span>      }</span><br><span> </span><br><span>        /* traverse spec, push to blob */</span><br><span style="color: hsl(0, 100%, 40%);">-       for (ptr = sym_table; ptr != (struct field *) 0; ptr = ptr->next) {</span><br><span style="color: hsl(120, 100%, 40%);">+        for (ptr = sym_table; ptr != (field_t ) 0; ptr = ptr->next) {</span><br><span>             append_field_to_blob (</span><br><span>                       value_to_bits(ptr->value, ptr->width),</span><br><span>                         ptr->width);</span><br><span>@@ -353,7 +370,7 @@</span><br><span>        unsigned char u8;</span><br><span>    unsigned char *u8array;</span><br><span> }</span><br><span style="color: hsl(0, 100%, 40%);">-%parse-param {FILE* fp}</span><br><span style="color: hsl(120, 100%, 40%);">+%parse-param {FILE* fp} {struct field** sym_table_ptr}</span><br><span> </span><br><span> %token <str> name</span><br><span> %token <u32> val</span><br><span>@@ -372,13 +389,13 @@</span><br><span> </span><br><span> input:</span><br><span>   /* empty */</span><br><span style="color: hsl(0, 100%, 40%);">-| input spec setter eof              { empty_field_table(); YYACCEPT;}</span><br><span style="color: hsl(120, 100%, 40%);">+| input spec setter eof              { empty_field_table(sym_table_ptr); YYACCEPT;}</span><br><span> | input spec blob             { fprintf (stderr, "Parsed all bytes\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                               empty_field_table(); YYACCEPT;}</span><br><span style="color: hsl(120, 100%, 40%);">+                               empty_field_table(sym_table_ptr); YYACCEPT;}</span><br><span> ;</span><br><span> </span><br><span> blob:</span><br><span style="color: hsl(0, 100%, 40%);">-  '%' eof                       { generate_setter_bitfields(fp,</span><br><span style="color: hsl(120, 100%, 40%);">+  '%' eof                      { generate_setter_bitfields(fp, sym_table_ptr,</span><br><span>                                 binary->actualblob); }</span><br><span> ;</span><br><span> </span><br><span>@@ -394,14 +411,15 @@</span><br><span> ;</span><br><span> </span><br><span> specpair:</span><br><span style="color: hsl(0, 100%, 40%);">-  name ':' val                {       create_new_bitfield($1, $3); }</span><br><span style="color: hsl(0, 100%, 40%);">-| name '[' val ']' ':' val        { create_new_bitfields($1, $3, $6); }</span><br><span style="color: hsl(120, 100%, 40%);">+  name ':' val           {       create_new_bitfield(sym_table_ptr, $1, $3); }</span><br><span style="color: hsl(120, 100%, 40%);">+| name '[' val ']' ':' val       { create_new_bitfields(sym_table_ptr, $1, $3,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                $6); }</span><br><span> ;</span><br><span> </span><br><span> setter:</span><br><span>   '{' '}'          {       fprintf (stderr, "No values\n"); }</span><br><span> | '{' valuemembers '}'  {       fprintf (stderr, "Parsed all values\n");</span><br><span style="color: hsl(0, 100%, 40%);">-                              generate_binary(fp); }</span><br><span style="color: hsl(120, 100%, 40%);">+                                generate_binary(fp, sym_table_ptr); }</span><br><span> ;</span><br><span> </span><br><span> valuemembers:</span><br><span>@@ -410,14 +428,15 @@</span><br><span> ;</span><br><span> </span><br><span> setpair:</span><br><span style="color: hsl(0, 100%, 40%);">-  name '=' val              {       set_bitfield($1, $3); }</span><br><span style="color: hsl(0, 100%, 40%);">-| name '[' val ']' '=' val       { set_bitfield_array($1, $3, $6); }</span><br><span style="color: hsl(120, 100%, 40%);">+name '=' val               {       set_bitfield(sym_table_ptr, $1, $3); }</span><br><span style="color: hsl(120, 100%, 40%);">+| name '[' val ']' '=' val      { set_bitfield_array(sym_table_ptr, $1, $3,</span><br><span style="color: hsl(120, 100%, 40%);">+                                                $6); }</span><br><span> ;</span><br><span> </span><br><span> %%</span><br><span> </span><br><span> /* Called by yyparse on error.  */</span><br><span style="color: hsl(0, 100%, 40%);">-static void yyerror (FILE* fp, char const *s)</span><br><span style="color: hsl(120, 100%, 40%);">+static void yyerror (FILE* fp, field_ptr_t sym_table_ptr, char const *s)</span><br><span> {</span><br><span>     fprintf (stderr, "yyerror: %s\n", s);</span><br><span> }</span><br><span>@@ -426,9 +445,10 @@</span><br><span> void set_input_string(char* in);</span><br><span> </span><br><span> /* This function parses a string */</span><br><span style="color: hsl(0, 100%, 40%);">-static int parse_string(FILE* fp, unsigned char* in) {</span><br><span style="color: hsl(120, 100%, 40%);">+static int parse_string(FILE* fp, field_ptr_t sym_table_ptr, unsigned char* in)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span>         set_input_string ((char *)in);</span><br><span style="color: hsl(0, 100%, 40%);">-  return yyparse (fp);</span><br><span style="color: hsl(120, 100%, 40%);">+  return yyparse (fp, sym_table_ptr);</span><br><span> }</span><br><span> </span><br><span> static unsigned int loadfile (FILE* fp, char *file, char *filetype,</span><br><span>@@ -464,6 +484,7 @@</span><br><span>    unsigned int pos = 0;</span><br><span>        int ret = 0;</span><br><span>         FILE* fp;</span><br><span style="color: hsl(120, 100%, 40%);">+     field_t sym_table;</span><br><span> </span><br><span> #if YYDEBUG == 1</span><br><span>   yydebug = 1;</span><br><span>@@ -484,7 +505,7 @@</span><br><span>                          argv[3]);</span><br><span>                     exit(1);</span><br><span>             }</span><br><span style="color: hsl(0, 100%, 40%);">-               ret = parse_string(fp, parsestring);</span><br><span style="color: hsl(120, 100%, 40%);">+          ret = parse_string(fp, &sym_table, parsestring);</span><br><span>                 free(parsestring);</span><br><span>   } else if (argc == 5 && strcmp (argv[1], "-d") == 0) {</span><br><span>             /* Decompile mode */</span><br><span>@@ -516,7 +537,7 @@</span><br><span>                          argv[4]);</span><br><span>                     exit(1);</span><br><span>             }</span><br><span style="color: hsl(0, 100%, 40%);">-               ret = parse_string(fp, parsestring);</span><br><span style="color: hsl(120, 100%, 40%);">+          ret = parse_string(fp, &sym_table, parsestring);</span><br><span>                 free(parsestring);</span><br><span>           free(binary->actualblob);</span><br><span>                 fclose(fp);</span><br><span></span><br></pre><p>To view, visit <a href="https://review.coreboot.org/27810">change 27810</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://review.coreboot.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://review.coreboot.org/27810"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: coreboot </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: I652a8da75498f871a53eb7509f6145c4842e3373 </div>
<div style="display:none"> Gerrit-Change-Number: 27810 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Denis 'GNUtoo' Carikli <GNUtoo@no-log.org> </div>