[PATCH 08/16] libcpu: Change calls for tsearch/tfind to eu_tsearch/eu_tfind.

Mark Wielaard mark@klomp.org
Tue Oct 10 13:42:52 GMT 2023


From: Heather McIntyre <hsm2@rice.edu>

	* libcpu/Makefile.am: Add USE_LOCKS condition for -pthread.
	* libcpu/i386_parse.y: Add eu-search.h and remove search.h.
	Change calls for tsearch/tfind to eu_tsearch/eu_tfind.

Signed-off-by: Heather S. McIntyre <hsm2@rice.edu>
Signed-off-by: Mark Wielaard <mark@klomp.org>
---
 libcpu/Makefile.am  |  3 +++
 libcpu/i386_parse.y | 48 ++++++++++++++++++++++-----------------------
 2 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/libcpu/Makefile.am b/libcpu/Makefile.am
index 4ba1be56..a51334b5 100644
--- a/libcpu/Makefile.am
+++ b/libcpu/Makefile.am
@@ -33,6 +33,9 @@ AM_CPPFLAGS += -I$(srcdir)/../libelf -I$(srcdir)/../libebl \
 if BUILD_STATIC
 AM_CFLAGS += $(fpic_CFLAGS)
 endif
+if USE_LOCKS
+  AM_CFLAGS += -pthread
+endif
 AM_CFLAGS += -fdollars-in-identifiers
 LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) -P$(<F:lex.l=)
 LEX_OUTPUT_ROOT = lex.$(<F:lex.l=)
diff --git a/libcpu/i386_parse.y b/libcpu/i386_parse.y
index 459684c6..3d7cb89e 100644
--- a/libcpu/i386_parse.y
+++ b/libcpu/i386_parse.y
@@ -37,7 +37,7 @@
 #include <inttypes.h>
 #include <math.h>
 #include <obstack.h>
-#include <search.h>
+#include <eu-search.h>
 #include <stdbool.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -269,12 +269,12 @@ mask:		  kMASK kBITFIELD kNUMBER
 		      struct synonym *newp = xmalloc (sizeof (*newp));
 		      newp->from = $2;
 		      newp->to = $3;
-		      if (tfind (newp, &synonyms, compare_syn) != NULL)
+		      if (eu_tfind (newp, &synonyms, compare_syn) != NULL)
 			error (0, 0,
 			       "%d: duplicate definition for synonym '%s'",
 			       i386_lineno, $2);
-		      else if (tsearch ( newp, &synonyms, compare_syn) == NULL)
-			error (EXIT_FAILURE, 0, "tsearch");
+		      else if (eu_tsearch ( newp, &synonyms, compare_syn) == NULL)
+			error (EXIT_FAILURE, 0, "eu_tsearch");
 		    }
 		|
 		;
@@ -308,12 +308,12 @@ instr:		  bytes ':' bitfieldopt kID bitfieldopt optargs
 			  newp->bytes = $1;
 			  newp->mnemonic = $4;
 			  if (newp->mnemonic != (void *) -1l
-			      && tfind ($4, &mnemonics,
+			      && eu_tfind ($4, &mnemonics,
 					(int (*)(const void *, const void *)) strcmp) == NULL)
 			    {
-			      if (tsearch ($4, &mnemonics,
+			      if (eu_tsearch ($4, &mnemonics,
 					   (int (*)(const void *, const void *)) strcmp) == NULL)
-				error (EXIT_FAILURE, errno, "tsearch");
+				error (EXIT_FAILURE, errno, "eu_tsearch");
 			      ++nmnemonics;
 			    }
 
@@ -339,15 +339,15 @@ instr:		  bytes ':' bitfieldopt kID bitfieldopt optargs
 				       infname, i386_lineno - 1, $5->name);
 
 			      struct suffix search = { .name = $5->name };
-			      if (tfind (&search, &suffixes, compare_suf)
+			      if (eu_tfind (&search, &suffixes, compare_suf)
 				  == NULL)
 				{
 				  struct suffix *ns = xmalloc (sizeof (*ns));
 				  ns->name = $5->name;
 				  ns->idx = ++nsuffixes;
-				  if (tsearch (ns, &suffixes, compare_suf)
+				  if (eu_tsearch (ns, &suffixes, compare_suf)
 				      == NULL)
-				    error (EXIT_FAILURE, errno, "tsearch");
+				    error (EXIT_FAILURE, errno, "eu_tsearch");
 				}
 			    }
 
@@ -374,7 +374,7 @@ bitfieldopt:	  kBITFIELD
 		      struct known_bitfield search;
 		      search.name = $1;
 		      struct known_bitfield **res;
-		      res = tfind (&search, &bitfields, bitfield_compare);
+		      res = eu_tfind (&search, &bitfields, bitfield_compare);
 		      if (res == NULL)
 			{
 			  error (0, 0, "%d: unknown bitfield '%s'",
@@ -437,7 +437,7 @@ bit:		  '0'
 		      struct known_bitfield search;
 		      search.name = $1;
 		      struct known_bitfield **res;
-		      res = tfind (&search, &bitfields, bitfield_compare);
+		      res = eu_tfind (&search, &bitfields, bitfield_compare);
 		      if (res == NULL)
 			{
 			  error (0, 0, "%d: unknown bitfield '%s'",
@@ -497,7 +497,7 @@ argcomp:	  kBITFIELD
 		      struct known_bitfield search;
 		      search.name = $1;
 		      struct known_bitfield **res;
-		      res = tfind (&search, &bitfields, bitfield_compare);
+		      res = eu_tfind (&search, &bitfields, bitfield_compare);
 		      if (res == NULL)
 			{
 			  if (strcmp ($1, "ax") == 0)
@@ -575,7 +575,7 @@ new_bitfield (char *name, unsigned long int num)
   newp->bits = num;
   newp->tmp = 0;
 
-  if (tfind (newp, &bitfields, bitfield_compare) != NULL)
+  if (eu_tfind (newp, &bitfields, bitfield_compare) != NULL)
     {
       error (0, 0, "%d: duplicated definition of bitfield '%s'",
 	     i386_lineno, name);
@@ -584,7 +584,7 @@ new_bitfield (char *name, unsigned long int num)
       return;
     }
 
-  if (tsearch (newp, &bitfields, bitfield_compare) == NULL)
+  if (eu_tsearch (newp, &bitfields, bitfield_compare) == NULL)
     error (EXIT_FAILURE, errno, "%d: cannot insert new bitfield '%s'",
 	   i386_lineno, name);
 }
@@ -813,7 +813,7 @@ fillin_arg (struct bitvalue *bytes, struct argname *name,
 
 	      struct synonym search = { .from = fieldname };
 
-	      struct synonym **res = tfind (&search, &synonyms, compare_syn);
+	      struct synonym **res = eu_tfind (&search, &synonyms, compare_syn);
 	      if (res != NULL)
 		fieldname = (*res)->to;
 
@@ -914,26 +914,26 @@ find_numbers (void)
 	if (runp->operands[i].fct != NULL)
 	  {
 	    struct argstring search = { .str = runp->operands[i].fct };
-	    if (tfind (&search, &fct_names[i], compare_argstring) == NULL)
+	    if (eu_tfind (&search, &fct_names[i], compare_argstring) == NULL)
 	      {
 		struct argstring *newp = xmalloc (sizeof (*newp));
 		newp->str = runp->operands[i].fct;
 		newp->idx = 0;
-		if (tsearch (newp, &fct_names[i], compare_argstring) == NULL)
-		  error (EXIT_FAILURE, errno, "tsearch");
+		if (eu_tsearch (newp, &fct_names[i], compare_argstring) == NULL)
+		  error (EXIT_FAILURE, errno, "eu_tsearch");
 		++nfct_names[i];
 	      }
 
 	    if (runp->operands[i].str != NULL)
 	      {
 		search.str = runp->operands[i].str;
-		if (tfind (&search, &strs[i], compare_argstring) == NULL)
+		if (eu_tfind (&search, &strs[i], compare_argstring) == NULL)
 		  {
 		    struct argstring *newp = xmalloc (sizeof (*newp));
 		    newp->str = runp->operands[i].str;
 		    newp->idx = 0;
-		    if (tsearch (newp, &strs[i], compare_argstring) == NULL)
-		      error (EXIT_FAILURE, errno, "tsearch");
+		    if (eu_tsearch (newp, &strs[i], compare_argstring) == NULL)
+		      error (EXIT_FAILURE, errno, "eu_tsearch");
 		    ++nstrs[i];
 		  }
 	      }
@@ -1206,7 +1206,7 @@ instrtable_out (void)
 	  if (instr->operands[i].fct != NULL)
 	    {
 	      struct argstring search = { .str = instr->operands[i].fct };
-	      struct argstring **res = tfind (&search, &fct_names[i],
+	      struct argstring **res = eu_tfind (&search, &fct_names[i],
 					      compare_argstring);
 	      assert (res != NULL);
 	      idx = (*res)->idx;
@@ -1217,7 +1217,7 @@ instrtable_out (void)
 	  if (instr->operands[i].str != NULL)
 	    {
 	      struct argstring search = { .str = instr->operands[i].str };
-	      struct argstring **res = tfind (&search, &strs[i],
+	      struct argstring **res = eu_tfind (&search, &strs[i],
 					      compare_argstring);
 	      assert (res != NULL);
 	      idx = (*res)->idx;
-- 
2.41.0



More information about the Elfutils-devel mailing list