This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[committed, PATCH] x86: Simplify bad return in get_synthetic_symtab


	* elf32-i386.c (elf_i386_get_synthetic_symtab): Simplify bad
	return.
	* elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Likewise.
---
 bfd/ChangeLog      |  6 ++++++
 bfd/elf32-i386.c   | 18 +++++++-----------
 bfd/elf64-x86-64.c | 18 +++++++-----------
 3 files changed, 20 insertions(+), 22 deletions(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 21b01b7f39..71b96dddbd 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,5 +1,11 @@
 2017-08-29  H.J. Lu  <hongjiu.lu@intel.com>
 
+	* elf32-i386.c (elf_i386_get_synthetic_symtab): Simplify bad
+	return.
+	* elf64-x86-64.c (elf_x86_64_get_synthetic_symtab): Likewise.
+
+2017-08-29  H.J. Lu  <hongjiu.lu@intel.com>
+
 	* elf32-i386.c (elf_i386_get_synthetic_symtab): Check valid PLT
 	sections before checking dynamic relocations and free invalid
 	PLT section contents.
diff --git a/bfd/elf32-i386.c b/bfd/elf32-i386.c
index 31ef02a568..2826272e06 100644
--- a/bfd/elf32-i386.c
+++ b/bfd/elf32-i386.c
@@ -6504,14 +6504,7 @@ elf_i386_get_synthetic_symtab (bfd *abfd,
 
   s = *ret = (asymbol *) bfd_zmalloc (size);
   if (s == NULL)
-    {
-bad_return:
-      for (j = 0; plts[j].name != NULL; j++)
-	if (plts[j].contents != NULL)
-	  free (plts[j].contents);
-      free (dynrelbuf);
-      return -1;
-    }
+    goto bad_return;
 
   if (got_addr)
     {
@@ -6639,9 +6632,12 @@ bad_return:
 
   /* PLT entries with R_386_TLS_DESC relocations are skipped.  */
   if (n == 0)
-    goto bad_return;
-
-  count = n;
+    {
+bad_return:
+      count = -1;
+    }
+  else
+    count = n;
 
   for (j = 0; plts[j].name != NULL; j++)
     if (plts[j].contents != NULL)
diff --git a/bfd/elf64-x86-64.c b/bfd/elf64-x86-64.c
index ba7c5953c3..847a182802 100644
--- a/bfd/elf64-x86-64.c
+++ b/bfd/elf64-x86-64.c
@@ -6896,14 +6896,7 @@ elf_x86_64_get_synthetic_symtab (bfd *abfd,
 
   s = *ret = (asymbol *) bfd_zmalloc (size);
   if (s == NULL)
-    {
-bad_return:
-      for (j = 0; plts[j].name != NULL; j++)
-	if (plts[j].contents != NULL)
-	  free (plts[j].contents);
-      free (dynrelbuf);
-      return -1;
-    }
+    goto bad_return;
 
   /* Check for each PLT section.  */
   names = (char *) (s + count);
@@ -7014,9 +7007,12 @@ bad_return:
 
   /* PLT entries with R_X86_64_TLSDESC relocations are skipped.  */
   if (n == 0)
-    goto bad_return;
-
-  count = n;
+    {
+bad_return:
+      count = -1;
+    }
+  else
+    count = n;
 
   for (j = 0; plts[j].name != NULL; j++)
     if (plts[j].contents != NULL)
-- 
2.13.5


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]