Blame SOURCES/binutils-2.27-cve-bugs.patch

be6651
diff -rup binutils.orig/bfd/aoutx.h binutils-2.27/bfd/aoutx.h
be6651
--- binutils.orig/bfd/aoutx.h	2017-03-24 13:50:55.358188013 +0000
be6651
+++ binutils-2.27/bfd/aoutx.h	2017-03-24 14:26:38.438542134 +0000
be6651
@@ -2807,9 +2807,17 @@ NAME (aout, find_nearest_line) (bfd *abf
be6651
 	*filename_ptr = main_file_name;
be6651
       else
be6651
 	{
be6651
-	  sprintf (buf, "%s%s", directory_name, main_file_name);
be6651
-	  *filename_ptr = buf;
be6651
-	  buf += filelen + 1;
be6651
+	  if (buf == NULL)
be6651
+	    /* PR binutils/20891: In a corrupt input file both
be6651
+	       main_file_name and directory_name can be empty...  */
be6651
+	    * filename_ptr = NULL;
be6651
+	  else
be6651
+	    {
be6651
+	      snprintf (buf, filelen + 1, "%s%s", directory_name,
be6651
+			main_file_name);
be6651
+	      *filename_ptr = buf;
be6651
+	      buf += filelen + 1;
be6651
+	    }
be6651
 	}
be6651
     }
be6651
 
be6651
@@ -2818,6 +2826,13 @@ NAME (aout, find_nearest_line) (bfd *abf
be6651
       const char *function = func->name;
be6651
       char *colon;
be6651
 
be6651
+      if (buf == NULL)
be6651
+	{
be6651
+	  /* PR binutils/20892: In a corrupt input file func can be empty.  */
be6651
+	  * functionname_ptr = NULL;
be6651
+	  return TRUE;
be6651
+	}
be6651
+
be6651
       /* The caller expects a symbol name.  We actually have a
be6651
 	 function name, without the leading underscore.  Put the
be6651
 	 underscore back in, so that the caller gets a symbol name.  */
be6651
diff -rup binutils.orig/bfd/compress.c binutils-2.27/bfd/compress.c
be6651
--- binutils.orig/bfd/compress.c	2017-03-24 13:50:55.362187961 +0000
be6651
+++ binutils-2.27/bfd/compress.c	2017-03-24 14:17:49.075366778 +0000
be6651
@@ -292,7 +292,7 @@ bfd_get_full_section_contents (bfd *abfd
be6651
 	   SHF_COMPRESSED section.  */
be6651
 	compression_header_size = 12;
be6651
       if (!decompress_contents (compressed_buffer + compression_header_size,
be6651
-				sec->compressed_size, p, sz))
be6651
+				sec->compressed_size - compression_header_size, p, sz))
be6651
 	{
be6651
 	  bfd_set_error (bfd_error_bad_value);
be6651
 	  if (p != *ptr)
be6651
diff -rup binutils.orig/bfd/peicode.h binutils-2.27/bfd/peicode.h
be6651
--- binutils.orig/bfd/peicode.h	2017-03-24 13:50:55.374187806 +0000
be6651
+++ binutils-2.27/bfd/peicode.h	2017-03-24 14:22:36.326663483 +0000
be6651
@@ -1264,7 +1264,8 @@ pe_ILF_object_p (bfd * abfd)
be6651
     }
be6651
 
be6651
   symbol_name = (char *) ptr;
be6651
-  source_dll  = symbol_name + strlen (symbol_name) + 1;
be6651
+  /* See PR 20905 for an example of where the strnlen is necessary.  */
be6651
+  source_dll  = symbol_name + strnlen (symbol_name, size - 1) + 1;
be6651
 
be6651
   /* Verify that the strings are null terminated.  */
be6651
   if (ptr[size - 1] != 0
be6651
diff -rup binutils.orig/binutils/dwarf.c binutils-2.27/binutils/dwarf.c
be6651
--- binutils.orig/binutils/dwarf.c	2017-03-24 13:50:55.381187716 +0000
be6651
+++ binutils-2.27/binutils/dwarf.c	2017-03-24 13:58:05.061648769 +0000
be6651
@@ -76,7 +76,6 @@ int dwarf_check = 0;
be6651
    as a zero-terminated list of section indexes comprising one set of debug
be6651
    sections from a .dwo file.  */
be6651
 
be6651
-static int cu_tu_indexes_read = 0;
be6651
 static unsigned int *shndx_pool = NULL;
be6651
 static unsigned int shndx_pool_size = 0;
be6651
 static unsigned int shndx_pool_used = 0;
be6651
@@ -99,7 +98,7 @@ static int tu_count = 0;
be6651
 static struct cu_tu_set *cu_sets = NULL;
be6651
 static struct cu_tu_set *tu_sets = NULL;
be6651
 
be6651
-static void load_cu_tu_indexes (void *file);
be6651
+static bfd_boolean load_cu_tu_indexes (void *);
be6651
 
be6651
 /* Values for do_debug_lines.  */
be6651
 #define FLAG_DEBUG_LINES_RAW	 1
be6651
@@ -2713,7 +2712,7 @@ load_debug_info (void * file)
be6651
     return num_debug_info_entries;
be6651
 
be6651
   /* If this is a DWARF package file, load the CU and TU indexes.  */
be6651
-  load_cu_tu_indexes (file);
be6651
+  (void) load_cu_tu_indexes (file);
be6651
 
be6651
   if (load_debug_section (info, file)
be6651
       && process_debug_info (&debug_displays [info].section, file, abbrev, 1, 0))
be6651
@@ -7302,21 +7301,27 @@ process_cu_tu_index (struct dwarf_sectio
be6651
    section sets that we can use to associate a .debug_info.dwo section
be6651
    with its associated .debug_abbrev.dwo section in a .dwp file.  */
be6651
 
be6651
-static void
be6651
+static bfd_boolean
be6651
 load_cu_tu_indexes (void *file)
be6651
 {
be6651
+  static int cu_tu_indexes_read = -1; /* Tri-state variable.  */
be6651
+
be6651
   /* If we have already loaded (or tried to load) the CU and TU indexes
be6651
      then do not bother to repeat the task.  */
be6651
-  if (cu_tu_indexes_read)
be6651
-    return;
be6651
-
be6651
-  if (load_debug_section (dwp_cu_index, file))
be6651
-    process_cu_tu_index (&debug_displays [dwp_cu_index].section, 0);
be6651
+  if (cu_tu_indexes_read == -1)
be6651
+    {
be6651
+      cu_tu_indexes_read = TRUE;
be6651
+  
be6651
+      if (load_debug_section (dwp_cu_index, file))
be6651
+       if (! process_cu_tu_index (&debug_displays [dwp_cu_index].section, 0))
be6651
+         cu_tu_indexes_read = FALSE;
be6651
 
be6651
-  if (load_debug_section (dwp_tu_index, file))
be6651
-    process_cu_tu_index (&debug_displays [dwp_tu_index].section, 0);
be6651
+      if (load_debug_section (dwp_tu_index, file))
be6651
+       if (! process_cu_tu_index (&debug_displays [dwp_tu_index].section, 0))
be6651
+         cu_tu_indexes_read = FALSE;
be6651
+    }
be6651
 
be6651
-  cu_tu_indexes_read = 1;
be6651
+  return (bfd_boolean) cu_tu_indexes_read;
be6651
 }
be6651
 
be6651
 /* Find the set of sections that includes section SHNDX.  */
be6651
@@ -7326,7 +7331,8 @@ find_cu_tu_set (void *file, unsigned int
be6651
 {
be6651
   unsigned int i;
be6651
 
be6651
-  load_cu_tu_indexes (file);
be6651
+  if (! load_cu_tu_indexes (file))
be6651
+    return NULL;
be6651
 
be6651
   /* Find SHNDX in the shndx pool.  */
be6651
   for (i = 0; i < shndx_pool_used; i++)
be6651
diff -rup binutils.orig/binutils/readelf.c binutils-2.27/binutils/readelf.c
be6651
--- binutils.orig/binutils/readelf.c	2017-03-24 13:50:55.390187599 +0000
be6651
+++ binutils-2.27/binutils/readelf.c	2017-03-24 14:16:39.008271196 +0000
be6651
@@ -674,8 +674,14 @@ find_section_in_set (const char * name,
be6651
   if (set != NULL)
be6651
     {
be6651
       while ((i = *set++) > 0)
be6651
-	if (streq (SECTION_NAME (section_headers + i), name))
be6651
-	  return section_headers + i;
be6651
+       {
be6651
+         /* See PR 21156 for a reproducer.  */
be6651
+         if (i >= elf_header.e_shnum)
be6651
+           continue; /* FIXME: Should we issue an error message ?  */
be6651
+
be6651
+         if (streq (SECTION_NAME (section_headers + i), name))
be6651
+           return section_headers + i;
be6651
+       }
be6651
     }
be6651
 
be6651
   return find_section (name);
be6651
@@ -11342,16 +11348,32 @@ process_syminfo (FILE * file ATTRIBUTE_U
be6651
   return 1;
be6651
 }
be6651
 
be6651
+#define IN_RANGE(START,END,ADDR,OFF)		\
be6651
+  (((ADDR) >= (START)) && ((ADDR) + (OFF) < (END)))
be6651
+
be6651
 /* Check to see if the given reloc needs to be handled in a target specific
be6651
    manner.  If so then process the reloc and return TRUE otherwise return
be6651
-   FALSE.  */
be6651
+   FALSE.
be6651
+
be6651
+   If called with reloc == NULL, then this is a signal that reloc processing
be6651
+   for the current section has finished, and any saved state should be
be6651
+   discarded.  */
be6651
 
be6651
 static bfd_boolean
be6651
 target_specific_reloc_handling (Elf_Internal_Rela * reloc,
be6651
 				unsigned char *     start,
be6651
-				Elf_Internal_Sym *  symtab)
be6651
+				unsigned char *     end,
be6651
+				Elf_Internal_Sym *  symtab,
be6651
+				unsigned long       num_syms)
be6651
 {
be6651
-  unsigned int reloc_type = get_reloc_type (reloc->r_info);
be6651
+  unsigned int reloc_type = 0;
be6651
+  unsigned long sym_index = 0;
be6651
+
be6651
+  if (reloc)
be6651
+    {
be6651
+      reloc_type = get_reloc_type (reloc->r_info);
be6651
+      sym_index = get_reloc_symindex (reloc->r_info);
be6651
+    }
be6651
 
be6651
   switch (elf_header.e_machine)
be6651
     {
be6651
@@ -11360,13 +11382,25 @@ target_specific_reloc_handling (Elf_Inte
be6651
       {
be6651
 	static Elf_Internal_Sym * saved_sym = NULL;
be6651
 
be6651
+	if (reloc == NULL)
be6651
+	  {
be6651
+	    saved_sym = NULL;
be6651
+	    return TRUE;
be6651
+	  }
be6651
+
be6651
 	switch (reloc_type)
be6651
 	  {
be6651
 	  case 10: /* R_MSP430_SYM_DIFF */
be6651
 	    if (uses_msp430x_relocs ())
be6651
 	      break;
be6651
+	    /* Fall through.  */
be6651
 	  case 21: /* R_MSP430X_SYM_DIFF */
be6651
-	    saved_sym = symtab + get_reloc_symindex (reloc->r_info);
be6651
+	    /* PR 21139.  */
be6651
+	    if (sym_index >= num_syms)
be6651
+	      error (_("MSP430 SYM_DIFF reloc contains invalid symbol index %lu\n"),
be6651
+		     sym_index);
be6651
+	    else
be6651
+	      saved_sym = symtab + sym_index;
be6651
 	    return TRUE;
be6651
 
be6651
 	  case 1: /* R_MSP430_32 or R_MSP430_ABS32 */
be6651
@@ -11388,13 +11422,24 @@ target_specific_reloc_handling (Elf_Inte
be6651
 	  handle_sym_diff:
be6651
 	    if (saved_sym != NULL)
be6651
 	      {
be6651
+		int reloc_size = reloc_type == 1 ? 4 : 2;
be6651
 		bfd_vma value;
be6651
 
be6651
-		value = reloc->r_addend
be6651
-		  + (symtab[get_reloc_symindex (reloc->r_info)].st_value
be6651
-		     - saved_sym->st_value);
be6651
+		if (sym_index >= num_syms)
be6651
+		  error (_("MSP430 reloc contains invalid symbol index %lu\n"),
be6651
+			 sym_index);
be6651
+		else
be6651
+		  {
be6651
+		    value = reloc->r_addend + (symtab[sym_index].st_value
be6651
+					       - saved_sym->st_value);
be6651
 
be6651
-		byte_put (start + reloc->r_offset, value, reloc_type == 1 ? 4 : 2);
be6651
+		    if (IN_RANGE (start, end, start + reloc->r_offset, reloc_size))
be6651
+		      byte_put (start + reloc->r_offset, value, reloc_size);
be6651
+		    else
be6651
+		      /* PR 21137 */
be6651
+		      error (_("MSP430 sym diff reloc contains invalid offset: 0x%lx\n"),
be6651
+			     (long) reloc->r_offset);
be6651
+		  }
be6651
 
be6651
 		saved_sym = NULL;
be6651
 		return TRUE;
be6651
@@ -11414,24 +11459,46 @@ target_specific_reloc_handling (Elf_Inte
be6651
       {
be6651
 	static Elf_Internal_Sym * saved_sym = NULL;
be6651
 
be6651
+	if (reloc == NULL)
be6651
+	  {
be6651
+	    saved_sym = NULL;
be6651
+	    return TRUE;
be6651
+	  }
be6651
+
be6651
 	switch (reloc_type)
be6651
 	  {
be6651
 	  case 34: /* R_MN10300_ALIGN */
be6651
 	    return TRUE;
be6651
+
be6651
 	  case 33: /* R_MN10300_SYM_DIFF */
be6651
-	    saved_sym = symtab + get_reloc_symindex (reloc->r_info);
be6651
+	    if (sym_index >= num_syms)
be6651
+	      error (_("MN10300_SYM_DIFF reloc contains invalid symbol index %lu\n"),
be6651
+		     sym_index);
be6651
+	    else
be6651
+	      saved_sym = symtab + sym_index;
be6651
 	    return TRUE;
be6651
+
be6651
 	  case 1: /* R_MN10300_32 */
be6651
 	  case 2: /* R_MN10300_16 */
be6651
 	    if (saved_sym != NULL)
be6651
 	      {
be6651
+		int reloc_size = reloc_type == 1 ? 4 : 2;
be6651
 		bfd_vma value;
be6651
 
be6651
-		value = reloc->r_addend
be6651
-		  + (symtab[get_reloc_symindex (reloc->r_info)].st_value
be6651
-		     - saved_sym->st_value);
be6651
+		if (sym_index >= num_syms)
be6651
+		  error (_("MN10300 reloc contains invalid symbol index %lu\n"),
be6651
+			 sym_index);
be6651
+		else
be6651
+		  {
be6651
+		    value = reloc->r_addend + (symtab[sym_index].st_value
be6651
+					       - saved_sym->st_value);
be6651
 
be6651
-		byte_put (start + reloc->r_offset, value, reloc_type == 1 ? 4 : 2);
be6651
+		    if (IN_RANGE (start, end, start + reloc->r_offset, reloc_size))
be6651
+		      byte_put (start + reloc->r_offset, value, reloc_size);
be6651
+		    else
be6651
+		      error (_("MN10300 sym diff reloc contains invalid offset: 0x%lx\n"),
be6651
+			     (long) reloc->r_offset);
be6651
+		  }
be6651
 
be6651
 		saved_sym = NULL;
be6651
 		return TRUE;
be6651
@@ -11451,12 +11518,24 @@ target_specific_reloc_handling (Elf_Inte
be6651
 	static bfd_vma saved_sym2 = 0;
be6651
 	static bfd_vma value;
be6651
 
be6651
+	if (reloc == NULL)
be6651
+	  {
be6651
+	    saved_sym1 = saved_sym2 = 0;
be6651
+	    return TRUE;
be6651
+	  }
be6651
+
be6651
 	switch (reloc_type)
be6651
 	  {
be6651
 	  case 0x80: /* R_RL78_SYM.  */
be6651
 	    saved_sym1 = saved_sym2;
be6651
-	    saved_sym2 = symtab[get_reloc_symindex (reloc->r_info)].st_value;
be6651
-	    saved_sym2 += reloc->r_addend;
be6651
+	    if (sym_index >= num_syms)
be6651
+	      error (_("RL78_SYM reloc contains invalid symbol index %lu\n"),
be6651
+		     sym_index);
be6651
+	    else
be6651
+	      {
be6651
+		saved_sym2 = symtab[sym_index].st_value;
be6651
+		saved_sym2 += reloc->r_addend;
be6651
+	      }
be6651
 	    return TRUE;
be6651
 
be6651
 	  case 0x83: /* R_RL78_OPsub.  */
be6651
@@ -11466,12 +11545,20 @@ target_specific_reloc_handling (Elf_Inte
be6651
 	    break;
be6651
 
be6651
 	  case 0x41: /* R_RL78_ABS32.  */
be6651
-	    byte_put (start + reloc->r_offset, value, 4);
be6651
+	    if (IN_RANGE (start, end, start + reloc->r_offset, 4))
be6651
+	      byte_put (start + reloc->r_offset, value, 4);
be6651
+	    else
be6651
+	      error (_("RL78 sym diff reloc contains invalid offset: 0x%lx\n"),
be6651
+		     (long) reloc->r_offset);
be6651
 	    value = 0;
be6651
 	    return TRUE;
be6651
 
be6651
 	  case 0x43: /* R_RL78_ABS16.  */
be6651
-	    byte_put (start + reloc->r_offset, value, 2);
be6651
+	    if (IN_RANGE (start, end, start + reloc->r_offset, 2))
be6651
+	      byte_put (start + reloc->r_offset, value, 2);
be6651
+	    else
be6651
+	      error (_("RL78 sym diff reloc contains invalid offset: 0x%lx\n"),
be6651
+		     (long) reloc->r_offset);
be6651
 	    value = 0;
be6651
 	    return TRUE;
be6651
 
be6651
@@ -12078,7 +12165,7 @@ apply_relocations (void *
be6651
 
be6651
 	  reloc_type = get_reloc_type (rp->r_info);
be6651
 
be6651
-	  if (target_specific_reloc_handling (rp, start, symtab))
be6651
+	  if (target_specific_reloc_handling (rp, start, end, symtab, num_syms))
be6651
 	    continue;
be6651
 	  else if (is_none_reloc (reloc_type))
be6651
 	    continue;
be6651
@@ -12174,6 +12261,9 @@ apply_relocations (void *
be6651
 	}
be6651
 
be6651
       free (symtab);
be6651
+      /* Let the target specific reloc processing code know that
be6651
+        we have finished with these relocs.  */
be6651
+      target_specific_reloc_handling (NULL, NULL, NULL, NULL, 0);
be6651
 
be6651
       if (relocs_return)
be6651
 	{
be6651
@@ -12471,10 +12561,18 @@ dump_section_as_bytes (Elf_Internal_Shdr
be6651
 	  new_size -= 12;
be6651
 	}
be6651
 
be6651
-      if (uncompressed_size
be6651
-	  && uncompress_section_contents (& start, uncompressed_size,
be6651
-					  & new_size))
be6651
-	section_size = new_size;
be6651
+      if (uncompressed_size)
be6651
+	{
be6651
+	  if (uncompress_section_contents (& start, uncompressed_size,
be6651
+					   & new_size))
be6651
+	    section_size = new_size;
be6651
+	  else
be6651
+	    {
be6651
+	      error (_("Unable to decompress section %s\n"),
be6651
+		     printable_section_name (section));
be6651
+	      return;
be6651
+	    }
be6651
+	}
be6651
     }
be6651
 
be6651
   if (relocate)
be6651
diff -rup binutils.orig/binutils/stabs.c binutils-2.27/binutils/stabs.c
be6651
--- binutils.orig/binutils/stabs.c	2017-03-24 13:50:55.386187651 +0000
be6651
+++ binutils-2.27/binutils/stabs.c	2017-03-24 14:14:20.823055085 +0000
be6651
@@ -232,6 +232,10 @@ parse_number (const char **pp, bfd_boole
be6651
 
be6651
   orig = *pp;
be6651
 
be6651
+  /* Stop early if we are passed an empty string.  */
be6651
+  if (*orig == 0)
be6651
+    return (bfd_vma) 0;
be6651
+
be6651
   errno = 0;
be6651
   ul = strtoul (*pp, (char **) pp, 0);
be6651
   if (ul + 1 != 0 || errno == 0)
be6651
@@ -1975,9 +1979,17 @@ parse_stab_enum_type (void *dhandle, con
be6651
       bfd_signed_vma val;
be6651
 
be6651
       p = *pp;
be6651
-      while (*p != ':')
be6651
+      while (*p != ':' && *p != 0)
be6651
 	++p;
be6651
 
be6651
+      if (*p == 0)
be6651
+       {
be6651
+         bad_stab (orig);
be6651
+         free (names);
be6651
+         free (values);
be6651
+         return DEBUG_TYPE_NULL;
be6651
+       }
be6651
+
be6651
       name = savestring (*pp, p - *pp);
be6651
 
be6651
       *pp = p + 1;
be6651
diff -rup binutils.orig/gas/app.c binutils-2.27/gas/app.c
be6651
--- binutils.orig/gas/app.c	2017-03-24 13:50:55.395187534 +0000
be6651
+++ binutils-2.27/gas/app.c	2017-03-24 13:52:02.141327121 +0000
be6651
@@ -1187,7 +1187,7 @@ do_scrub_chars (size_t (*get) (char *, s
be6651
 		  state = -2;
be6651
 		  break;
be6651
 		}
be6651
-	      else
be6651
+	      else if (ch2 != EOF)
be6651
 		{
be6651
 		  UNGET (ch2);
be6651
 		}
be6651
diff -rup binutils.orig/ld/ldlex.c binutils-2.27/ld/ldlex.c
be6651
--- binutils.orig/ld/ldlex.c	2017-03-24 13:50:55.613184724 +0000
be6651
+++ binutils-2.27/ld/ldlex.c	2017-03-24 14:20:47.319068827 +0000
be6651
@@ -1,5 +1,5 @@
be6651
 
be6651
-#line 3 "ldlex.c"
be6651
+#line 3 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.c"
be6651
 
be6651
 #define  YY_INT_ALIGNED short int
be6651
 
be6651
@@ -7,8 +7,8 @@
be6651
 
be6651
 #define FLEX_SCANNER
be6651
 #define YY_FLEX_MAJOR_VERSION 2
be6651
-#define YY_FLEX_MINOR_VERSION 5
be6651
-#define YY_FLEX_SUBMINOR_VERSION 35
be6651
+#define YY_FLEX_MINOR_VERSION 6
be6651
+#define YY_FLEX_SUBMINOR_VERSION 0
be6651
 #if YY_FLEX_SUBMINOR_VERSION > 0
be6651
 #define FLEX_BETA
be6651
 #endif
be6651
@@ -46,7 +46,6 @@ typedef int16_t flex_int16_t;
be6651
 typedef uint16_t flex_uint16_t;
be6651
 typedef int32_t flex_int32_t;
be6651
 typedef uint32_t flex_uint32_t;
be6651
-typedef uint64_t flex_uint64_t;
be6651
 #else
be6651
 typedef signed char flex_int8_t;
be6651
 typedef short int flex_int16_t;
be6651
@@ -54,7 +53,6 @@ typedef int flex_int32_t;
be6651
 typedef unsigned char flex_uint8_t; 
be6651
 typedef unsigned short int flex_uint16_t;
be6651
 typedef unsigned int flex_uint32_t;
be6651
-#endif /* ! C99 */
be6651
 
be6651
 /* Limits of integral types. */
be6651
 #ifndef INT8_MIN
be6651
@@ -85,6 +83,8 @@ typedef unsigned int flex_uint32_t;
be6651
 #define UINT32_MAX             (4294967295U)
be6651
 #endif
be6651
 
be6651
+#endif /* ! C99 */
be6651
+
be6651
 #endif /* ! FLEXINT_H */
be6651
 
be6651
 #ifdef __cplusplus
be6651
@@ -141,7 +141,15 @@ typedef unsigned int flex_uint32_t;
be6651
 
be6651
 /* Size of default input buffer. */
be6651
 #ifndef YY_BUF_SIZE
be6651
+#ifdef __ia64__
be6651
+/* On IA-64, the buffer size is 16k, not 8k.
be6651
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
be6651
+ * Ditto for the __ia64__ case accordingly.
be6651
+ */
be6651
+#define YY_BUF_SIZE 32768
be6651
+#else
be6651
 #define YY_BUF_SIZE 16384
be6651
+#endif /* __ia64__ */
be6651
 #endif
be6651
 
be6651
 /* The state buf must be large enough to hold one state per character in the main buffer.
be6651
@@ -167,13 +175,14 @@ extern FILE *yyin, *yyout;
be6651
 #define EOB_ACT_LAST_MATCH 2
be6651
 
be6651
     #define YY_LESS_LINENO(n)
be6651
+    #define YY_LINENO_REWIND_TO(ptr)
be6651
     
be6651
 /* Return all but the first "n" matched characters back to the input stream. */
be6651
 #define yyless(n) \
be6651
 	do \
be6651
 		{ \
be6651
 		/* Undo effects of setting up yytext. */ \
be6651
-        int yyless_macro_arg = (n); \
be6651
+        yy_size_t yyless_macro_arg = (n); \
be6651
         YY_LESS_LINENO(yyless_macro_arg);\
be6651
 		*yy_cp = (yy_hold_char); \
be6651
 		YY_RESTORE_YY_MORE_OFFSET \
be6651
@@ -343,11 +352,17 @@ extern int yylineno;
be6651
 int yylineno = 1;
be6651
 
be6651
 extern char *yytext;
be6651
+#ifdef yytext_ptr
be6651
+#undef yytext_ptr
be6651
+#endif
be6651
 #define yytext_ptr yytext
be6651
 
be6651
 static yy_state_type yy_get_previous_state (void );
be6651
 static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
be6651
 static int yy_get_next_buffer (void );
be6651
+#if defined(__GNUC__) && __GNUC__ >= 3
be6651
+__attribute__((__noreturn__))
be6651
+#endif
be6651
 static void yy_fatal_error (yyconst char msg[]  );
be6651
 
be6651
 /* Done after the current pattern has been matched and before the
be6651
@@ -355,7 +370,7 @@ static void yy_fatal_error (yyconst char
be6651
  */
be6651
 #define YY_DO_BEFORE_ACTION \
be6651
 	(yytext_ptr) = yy_bp; \
be6651
-	yyleng = (yy_size_t) (yy_cp - yy_bp); \
be6651
+	yyleng = (size_t) (yy_cp - yy_bp); \
be6651
 	(yy_hold_char) = *yy_cp; \
be6651
 	*yy_cp = '\0'; \
be6651
 	(yy_c_buf_p) = yy_cp;
be6651
@@ -568,7 +583,7 @@ static yyconst flex_int16_t yy_accept[17
be6651
       174,   84,   84,    0
be6651
     } ;
be6651
 
be6651
-static yyconst flex_int32_t yy_ec[256] =
be6651
+static yyconst YY_CHAR yy_ec[256] =
be6651
     {   0,
be6651
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
be6651
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
be6651
@@ -600,7 +615,7 @@ static yyconst flex_int32_t yy_ec[256] =
be6651
         1,    1,    1,    1,    1
be6651
     } ;
be6651
 
be6651
-static yyconst flex_int32_t yy_meta[83] =
be6651
+static yyconst YY_CHAR yy_meta[83] =
be6651
     {   0,
be6651
         1,    1,    2,    3,    1,    1,    4,    1,    1,    1,
be6651
         1,    3,    5,    6,    7,    8,    9,   10,   10,   10,
be6651
@@ -613,7 +628,7 @@ static yyconst flex_int32_t yy_meta[83]
be6651
         1,    9
be6651
     } ;
be6651
 
be6651
-static yyconst flex_int16_t yy_base[1807] =
be6651
+static yyconst flex_uint16_t yy_base[1807] =
be6651
     {   0,
be6651
         0,    0,    0,    0,   82,  163,  244,    0,  326,    0,
be6651
       408,  489,  570,    0,  112,  114,  652,  734,  816,  898,
be6651
@@ -1019,7 +1034,7 @@ static yyconst flex_int16_t yy_def[1807]
be6651
      1774, 1774, 1774, 1774, 1774, 1774
be6651
     } ;
be6651
 
be6651
-static yyconst flex_int16_t yy_nxt[2940] =
be6651
+static yyconst flex_uint16_t yy_nxt[2940] =
be6651
     {   0,
be6651
        23,   24,   25,   26,   27,   23,   28,   29,   30,   31,
be6651
        32,   33,   34,   35,   36,   37,   38,   39,   40,   40,
be6651
@@ -1687,8 +1702,8 @@ int yy_flex_debug = 0;
be6651
 #define YY_MORE_ADJ 0
be6651
 #define YY_RESTORE_YY_MORE_OFFSET
be6651
 char *yytext;
be6651
-#line 1 "ldlex.l"
be6651
-#line 4 "ldlex.l"
be6651
+#line 1 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
+#line 4 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 
be6651
 /* Copyright (C) 1991-2016 Free Software Foundation, Inc.
be6651
    Written by Steve Chamberlain of Cygnus Support.
be6651
@@ -1788,7 +1803,7 @@ int yywrap (void) { return 1; }
be6651
 
be6651
 
be6651
 
be6651
-#line 1792 "ldlex.c"
be6651
+#line 1807 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.c"
be6651
 
be6651
 #define INITIAL 0
be6651
 #define SCRIPT 1
be6651
@@ -1830,11 +1845,11 @@ void yyset_extra (YY_EXTRA_TYPE user_def
be6651
 
be6651
 FILE *yyget_in (void );
be6651
 
be6651
-void yyset_in  (FILE * in_str  );
be6651
+void yyset_in  (FILE * _in_str  );
be6651
 
be6651
 FILE *yyget_out (void );
be6651
 
be6651
-void yyset_out  (FILE * out_str  );
be6651
+void yyset_out  (FILE * _out_str  );
be6651
 
be6651
 yy_size_t yyget_leng (void );
be6651
 
be6651
@@ -1842,7 +1857,7 @@ char *yyget_text (void );
be6651
 
be6651
 int yyget_lineno (void );
be6651
 
be6651
-void yyset_lineno (int line_number  );
be6651
+void yyset_lineno (int _line_number  );
be6651
 
be6651
 /* Macros after this point can all be overridden by user definitions in
be6651
  * section 1.
be6651
@@ -1856,6 +1871,10 @@ extern int yywrap (void );
be6651
 #endif
be6651
 #endif
be6651
 
be6651
+#ifndef YY_NO_UNPUT
be6651
+    
be6651
+#endif
be6651
+
be6651
 #ifndef yytext_ptr
be6651
 static void yy_flex_strncpy (char *,yyconst char *,int );
be6651
 #endif
be6651
@@ -1876,7 +1895,12 @@ static int input (void );
be6651
 
be6651
 /* Amount of stuff to slurp up with each read. */
be6651
 #ifndef YY_READ_BUF_SIZE
be6651
+#ifdef __ia64__
be6651
+/* On IA-64, the buffer size is 16k, not 8k */
be6651
+#define YY_READ_BUF_SIZE 16384
be6651
+#else
be6651
 #define YY_READ_BUF_SIZE 8192
be6651
+#endif /* __ia64__ */
be6651
 #endif
be6651
 
be6651
 /* Copy whatever the last rule matched to the standard output. */
be6651
@@ -1884,7 +1908,7 @@ static int input (void );
be6651
 /* This used to be an fputs(), but since the string might contain NUL's,
be6651
  * we now use fwrite().
be6651
  */
be6651
-#define ECHO fwrite( yytext, yyleng, 1, yyout )
be6651
+#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
be6651
 #endif
be6651
 
be6651
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
be6651
@@ -1895,7 +1919,7 @@ static int input (void );
be6651
 	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
be6651
 		{ \
be6651
 		int c = '*'; \
be6651
-		yy_size_t n; \
be6651
+		size_t n; \
be6651
 		for ( n = 0; n < max_size && \
be6651
 			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
be6651
 			buf[n] = (char) c; \
be6651
@@ -1963,7 +1987,7 @@ extern int yylex (void);
be6651
 
be6651
 /* Code executed at the end of each rule. */
be6651
 #ifndef YY_BREAK
be6651
-#define YY_BREAK break;
be6651
+#define YY_BREAK /*LINTED*/break;
be6651
 #endif
be6651
 
be6651
 #define YY_RULE_SETUP \
be6651
@@ -1973,31 +1997,10 @@ extern int yylex (void);
be6651
  */
be6651
 YY_DECL
be6651
 {
be6651
-	register yy_state_type yy_current_state;
be6651
-	register char *yy_cp, *yy_bp;
be6651
-	register int yy_act;
be6651
+	yy_state_type yy_current_state;
be6651
+	char *yy_cp, *yy_bp;
be6651
+	int yy_act;
be6651
     
be6651
-#line 121 "ldlex.l"
be6651
-
be6651
-
be6651
-  if (parser_input != input_selected)
be6651
-    {
be6651
-      /* The first token of the input determines the initial parser state.  */
be6651
-      input_type t = parser_input;
be6651
-      parser_input = input_selected;
be6651
-      switch (t)
be6651
-	{
be6651
-	case input_script: return INPUT_SCRIPT; break;
be6651
-	case input_mri_script: return INPUT_MRI_SCRIPT; break;
be6651
-	case input_version_script: return INPUT_VERSION_SCRIPT; break;
be6651
-	case input_dynamic_list: return INPUT_DYNAMIC_LIST; break;
be6651
-	case input_defsym: return INPUT_DEFSYM; break;
be6651
-	default: abort ();
be6651
-	}
be6651
-    }
be6651
-
be6651
-#line 2000 "ldlex.c"
be6651
-
be6651
 	if ( !(yy_init) )
be6651
 		{
be6651
 		(yy_init) = 1;
be6651
@@ -2024,7 +2027,29 @@ YY_DECL
be6651
 		yy_load_buffer_state( );
be6651
 		}
be6651
 
be6651
-	while ( 1 )		/* loops until end-of-file is reached */
be6651
+	{
be6651
+#line 121 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
+
be6651
+
be6651
+  if (parser_input != input_selected)
be6651
+    {
be6651
+      /* The first token of the input determines the initial parser state.  */
be6651
+      input_type t = parser_input;
be6651
+      parser_input = input_selected;
be6651
+      switch (t)
be6651
+	{
be6651
+	case input_script: return INPUT_SCRIPT; break;
be6651
+	case input_mri_script: return INPUT_MRI_SCRIPT; break;
be6651
+	case input_version_script: return INPUT_VERSION_SCRIPT; break;
be6651
+	case input_dynamic_list: return INPUT_DYNAMIC_LIST; break;
be6651
+	case input_defsym: return INPUT_DEFSYM; break;
be6651
+	default: abort ();
be6651
+	}
be6651
+    }
be6651
+
be6651
+#line 2051 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.c"
be6651
+
be6651
+	while ( /*CONSTCOND*/1 )		/* loops until end-of-file is reached */
be6651
 		{
be6651
 		yy_cp = (yy_c_buf_p);
be6651
 
be6651
@@ -2040,7 +2065,7 @@ YY_DECL
be6651
 yy_match:
be6651
 		do
be6651
 			{
be6651
-			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
be6651
+			YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
be6651
 			if ( yy_accept[yy_current_state] )
be6651
 				{
be6651
 				(yy_last_accepting_state) = yy_current_state;
be6651
@@ -2081,32 +2106,32 @@ do_action:	/* This label is used only to
be6651
 
be6651
 case 1:
be6651
 YY_RULE_SETUP
be6651
-#line 139 "ldlex.l"
be6651
+#line 139 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { comment (); }
be6651
 	YY_BREAK
be6651
 case 2:
be6651
 YY_RULE_SETUP
be6651
-#line 142 "ldlex.l"
be6651
+#line 142 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('-');}
be6651
 	YY_BREAK
be6651
 case 3:
be6651
 YY_RULE_SETUP
be6651
-#line 143 "ldlex.l"
be6651
+#line 143 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('+');}
be6651
 	YY_BREAK
be6651
 case 4:
be6651
 YY_RULE_SETUP
be6651
-#line 144 "ldlex.l"
be6651
+#line 144 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { yylval.name = xstrdup (yytext); return NAME; }
be6651
 	YY_BREAK
be6651
 case 5:
be6651
 YY_RULE_SETUP
be6651
-#line 145 "ldlex.l"
be6651
+#line 145 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('='); }
be6651
 	YY_BREAK
be6651
 case 6:
be6651
 YY_RULE_SETUP
be6651
-#line 147 "ldlex.l"
be6651
+#line 147 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
   				yylval.integer = bfd_scan_vma (yytext + 1, 0, 16);
be6651
 				yylval.bigint.str = NULL;
be6651
@@ -2115,7 +2140,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 7:
be6651
 YY_RULE_SETUP
be6651
-#line 153 "ldlex.l"
be6651
+#line 153 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				   int ibase ;
be6651
 				   switch (yytext[yyleng - 1]) {
be6651
@@ -2144,7 +2169,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 8:
be6651
 YY_RULE_SETUP
be6651
-#line 178 "ldlex.l"
be6651
+#line 178 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				  char *s = yytext;
be6651
 				  int ibase = 0;
be6651
@@ -2177,829 +2202,829 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 9:
be6651
 YY_RULE_SETUP
be6651
-#line 207 "ldlex.l"
be6651
+#line 207 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(']');}
be6651
 	YY_BREAK
be6651
 case 10:
be6651
 YY_RULE_SETUP
be6651
-#line 208 "ldlex.l"
be6651
+#line 208 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('[');}
be6651
 	YY_BREAK
be6651
 case 11:
be6651
 YY_RULE_SETUP
be6651
-#line 209 "ldlex.l"
be6651
+#line 209 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LSHIFTEQ);}
be6651
 	YY_BREAK
be6651
 case 12:
be6651
 YY_RULE_SETUP
be6651
-#line 210 "ldlex.l"
be6651
+#line 210 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(RSHIFTEQ);}
be6651
 	YY_BREAK
be6651
 case 13:
be6651
 YY_RULE_SETUP
be6651
-#line 211 "ldlex.l"
be6651
+#line 211 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OROR);}
be6651
 	YY_BREAK
be6651
 case 14:
be6651
 YY_RULE_SETUP
be6651
-#line 212 "ldlex.l"
be6651
+#line 212 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(EQ);}
be6651
 	YY_BREAK
be6651
 case 15:
be6651
 YY_RULE_SETUP
be6651
-#line 213 "ldlex.l"
be6651
+#line 213 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NE);}
be6651
 	YY_BREAK
be6651
 case 16:
be6651
 YY_RULE_SETUP
be6651
-#line 214 "ldlex.l"
be6651
+#line 214 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(GE);}
be6651
 	YY_BREAK
be6651
 case 17:
be6651
 YY_RULE_SETUP
be6651
-#line 215 "ldlex.l"
be6651
+#line 215 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LE);}
be6651
 	YY_BREAK
be6651
 case 18:
be6651
 YY_RULE_SETUP
be6651
-#line 216 "ldlex.l"
be6651
+#line 216 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LSHIFT);}
be6651
 	YY_BREAK
be6651
 case 19:
be6651
 YY_RULE_SETUP
be6651
-#line 217 "ldlex.l"
be6651
+#line 217 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(RSHIFT);}
be6651
 	YY_BREAK
be6651
 case 20:
be6651
 YY_RULE_SETUP
be6651
-#line 218 "ldlex.l"
be6651
+#line 218 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(PLUSEQ);}
be6651
 	YY_BREAK
be6651
 case 21:
be6651
 YY_RULE_SETUP
be6651
-#line 219 "ldlex.l"
be6651
+#line 219 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MINUSEQ);}
be6651
 	YY_BREAK
be6651
 case 22:
be6651
 YY_RULE_SETUP
be6651
-#line 220 "ldlex.l"
be6651
+#line 220 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MULTEQ);}
be6651
 	YY_BREAK
be6651
 case 23:
be6651
 YY_RULE_SETUP
be6651
-#line 221 "ldlex.l"
be6651
+#line 221 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DIVEQ);}
be6651
 	YY_BREAK
be6651
 case 24:
be6651
 YY_RULE_SETUP
be6651
-#line 222 "ldlex.l"
be6651
+#line 222 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ANDEQ);}
be6651
 	YY_BREAK
be6651
 case 25:
be6651
 YY_RULE_SETUP
be6651
-#line 223 "ldlex.l"
be6651
+#line 223 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OREQ);}
be6651
 	YY_BREAK
be6651
 case 26:
be6651
 YY_RULE_SETUP
be6651
-#line 224 "ldlex.l"
be6651
+#line 224 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ANDAND);}
be6651
 	YY_BREAK
be6651
 case 27:
be6651
 YY_RULE_SETUP
be6651
-#line 225 "ldlex.l"
be6651
+#line 225 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('>');}
be6651
 	YY_BREAK
be6651
 case 28:
be6651
 YY_RULE_SETUP
be6651
-#line 226 "ldlex.l"
be6651
+#line 226 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(',');}
be6651
 	YY_BREAK
be6651
 case 29:
be6651
 YY_RULE_SETUP
be6651
-#line 227 "ldlex.l"
be6651
+#line 227 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('&';;}
be6651
 	YY_BREAK
be6651
 case 30:
be6651
 YY_RULE_SETUP
be6651
-#line 228 "ldlex.l"
be6651
+#line 228 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('|');}
be6651
 	YY_BREAK
be6651
 case 31:
be6651
 YY_RULE_SETUP
be6651
-#line 229 "ldlex.l"
be6651
+#line 229 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('~');}
be6651
 	YY_BREAK
be6651
 case 32:
be6651
 YY_RULE_SETUP
be6651
-#line 230 "ldlex.l"
be6651
+#line 230 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('!');}
be6651
 	YY_BREAK
be6651
 case 33:
be6651
 YY_RULE_SETUP
be6651
-#line 231 "ldlex.l"
be6651
+#line 231 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('?');}
be6651
 	YY_BREAK
be6651
 case 34:
be6651
 YY_RULE_SETUP
be6651
-#line 232 "ldlex.l"
be6651
+#line 232 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('*');}
be6651
 	YY_BREAK
be6651
 case 35:
be6651
 YY_RULE_SETUP
be6651
-#line 233 "ldlex.l"
be6651
+#line 233 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('+');}
be6651
 	YY_BREAK
be6651
 case 36:
be6651
 YY_RULE_SETUP
be6651
-#line 234 "ldlex.l"
be6651
+#line 234 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('-');}
be6651
 	YY_BREAK
be6651
 case 37:
be6651
 YY_RULE_SETUP
be6651
-#line 235 "ldlex.l"
be6651
+#line 235 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('/');}
be6651
 	YY_BREAK
be6651
 case 38:
be6651
 YY_RULE_SETUP
be6651
-#line 236 "ldlex.l"
be6651
+#line 236 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('%');}
be6651
 	YY_BREAK
be6651
 case 39:
be6651
 YY_RULE_SETUP
be6651
-#line 237 "ldlex.l"
be6651
+#line 237 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('<');}
be6651
 	YY_BREAK
be6651
 case 40:
be6651
 YY_RULE_SETUP
be6651
-#line 238 "ldlex.l"
be6651
+#line 238 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('=');}
be6651
 	YY_BREAK
be6651
 case 41:
be6651
 YY_RULE_SETUP
be6651
-#line 239 "ldlex.l"
be6651
+#line 239 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('}') ; }
be6651
 	YY_BREAK
be6651
 case 42:
be6651
 YY_RULE_SETUP
be6651
-#line 240 "ldlex.l"
be6651
+#line 240 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('{'); }
be6651
 	YY_BREAK
be6651
 case 43:
be6651
 YY_RULE_SETUP
be6651
-#line 241 "ldlex.l"
be6651
+#line 241 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(')');}
be6651
 	YY_BREAK
be6651
 case 44:
be6651
 YY_RULE_SETUP
be6651
-#line 242 "ldlex.l"
be6651
+#line 242 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN('(');}
be6651
 	YY_BREAK
be6651
 case 45:
be6651
 YY_RULE_SETUP
be6651
-#line 243 "ldlex.l"
be6651
+#line 243 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(':'); }
be6651
 	YY_BREAK
be6651
 case 46:
be6651
 YY_RULE_SETUP
be6651
-#line 244 "ldlex.l"
be6651
+#line 244 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(';');}
be6651
 	YY_BREAK
be6651
 case 47:
be6651
 YY_RULE_SETUP
be6651
-#line 245 "ldlex.l"
be6651
+#line 245 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MEMORY);}
be6651
 	YY_BREAK
be6651
 case 48:
be6651
 YY_RULE_SETUP
be6651
-#line 246 "ldlex.l"
be6651
+#line 246 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(REGION_ALIAS);}
be6651
 	YY_BREAK
be6651
 case 49:
be6651
 YY_RULE_SETUP
be6651
-#line 247 "ldlex.l"
be6651
+#line 247 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LD_FEATURE);}
be6651
 	YY_BREAK
be6651
 case 50:
be6651
 YY_RULE_SETUP
be6651
-#line 248 "ldlex.l"
be6651
+#line 248 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ORIGIN);}
be6651
 	YY_BREAK
be6651
 case 51:
be6651
 YY_RULE_SETUP
be6651
-#line 249 "ldlex.l"
be6651
+#line 249 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(VERSIONK);}
be6651
 	YY_BREAK
be6651
 case 52:
be6651
 YY_RULE_SETUP
be6651
-#line 250 "ldlex.l"
be6651
+#line 250 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(BLOCK);}
be6651
 	YY_BREAK
be6651
 case 53:
be6651
 YY_RULE_SETUP
be6651
-#line 251 "ldlex.l"
be6651
+#line 251 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(BIND);}
be6651
 	YY_BREAK
be6651
 case 54:
be6651
 YY_RULE_SETUP
be6651
-#line 252 "ldlex.l"
be6651
+#line 252 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LENGTH);}
be6651
 	YY_BREAK
be6651
 case 55:
be6651
 YY_RULE_SETUP
be6651
-#line 253 "ldlex.l"
be6651
+#line 253 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGN_K);}
be6651
 	YY_BREAK
be6651
 case 56:
be6651
 YY_RULE_SETUP
be6651
-#line 254 "ldlex.l"
be6651
+#line 254 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DATA_SEGMENT_ALIGN);}
be6651
 	YY_BREAK
be6651
 case 57:
be6651
 YY_RULE_SETUP
be6651
-#line 255 "ldlex.l"
be6651
+#line 255 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DATA_SEGMENT_RELRO_END);}
be6651
 	YY_BREAK
be6651
 case 58:
be6651
 YY_RULE_SETUP
be6651
-#line 256 "ldlex.l"
be6651
+#line 256 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DATA_SEGMENT_END);}
be6651
 	YY_BREAK
be6651
 case 59:
be6651
 YY_RULE_SETUP
be6651
-#line 257 "ldlex.l"
be6651
+#line 257 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ADDR);}
be6651
 	YY_BREAK
be6651
 case 60:
be6651
 YY_RULE_SETUP
be6651
-#line 258 "ldlex.l"
be6651
+#line 258 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LOADADDR);}
be6651
 	YY_BREAK
be6651
 case 61:
be6651
 YY_RULE_SETUP
be6651
-#line 259 "ldlex.l"
be6651
+#line 259 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGNOF); }
be6651
 	YY_BREAK
be6651
 case 62:
be6651
 YY_RULE_SETUP
be6651
-#line 260 "ldlex.l"
be6651
+#line 260 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MAX_K); }
be6651
 	YY_BREAK
be6651
 case 63:
be6651
 YY_RULE_SETUP
be6651
-#line 261 "ldlex.l"
be6651
+#line 261 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MIN_K); }
be6651
 	YY_BREAK
be6651
 case 64:
be6651
 YY_RULE_SETUP
be6651
-#line 262 "ldlex.l"
be6651
+#line 262 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LOG2CEIL); }
be6651
 	YY_BREAK
be6651
 case 65:
be6651
 YY_RULE_SETUP
be6651
-#line 263 "ldlex.l"
be6651
+#line 263 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ASSERT_K); }
be6651
 	YY_BREAK
be6651
 case 66:
be6651
 YY_RULE_SETUP
be6651
-#line 264 "ldlex.l"
be6651
+#line 264 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ENTRY);}
be6651
 	YY_BREAK
be6651
 case 67:
be6651
 YY_RULE_SETUP
be6651
-#line 265 "ldlex.l"
be6651
+#line 265 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(EXTERN);}
be6651
 	YY_BREAK
be6651
 case 68:
be6651
 YY_RULE_SETUP
be6651
-#line 266 "ldlex.l"
be6651
+#line 266 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NEXT);}
be6651
 	YY_BREAK
be6651
 case 69:
be6651
 YY_RULE_SETUP
be6651
-#line 267 "ldlex.l"
be6651
+#line 267 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SIZEOF_HEADERS);}
be6651
 	YY_BREAK
be6651
 case 70:
be6651
 YY_RULE_SETUP
be6651
-#line 268 "ldlex.l"
be6651
+#line 268 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SIZEOF_HEADERS);}
be6651
 	YY_BREAK
be6651
 case 71:
be6651
 YY_RULE_SETUP
be6651
-#line 269 "ldlex.l"
be6651
+#line 269 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SEGMENT_START);}
be6651
 	YY_BREAK
be6651
 case 72:
be6651
 YY_RULE_SETUP
be6651
-#line 270 "ldlex.l"
be6651
+#line 270 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(MAP);}
be6651
 	YY_BREAK
be6651
 case 73:
be6651
 YY_RULE_SETUP
be6651
-#line 271 "ldlex.l"
be6651
+#line 271 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SIZEOF);}
be6651
 	YY_BREAK
be6651
 case 74:
be6651
 YY_RULE_SETUP
be6651
-#line 272 "ldlex.l"
be6651
+#line 272 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(TARGET_K);}
be6651
 	YY_BREAK
be6651
 case 75:
be6651
 YY_RULE_SETUP
be6651
-#line 273 "ldlex.l"
be6651
+#line 273 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SEARCH_DIR);}
be6651
 	YY_BREAK
be6651
 case 76:
be6651
 YY_RULE_SETUP
be6651
-#line 274 "ldlex.l"
be6651
+#line 274 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OUTPUT);}
be6651
 	YY_BREAK
be6651
 case 77:
be6651
 YY_RULE_SETUP
be6651
-#line 275 "ldlex.l"
be6651
+#line 275 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INPUT);}
be6651
 	YY_BREAK
be6651
 case 78:
be6651
 YY_RULE_SETUP
be6651
-#line 276 "ldlex.l"
be6651
+#line 276 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(GROUP);}
be6651
 	YY_BREAK
be6651
 case 79:
be6651
 YY_RULE_SETUP
be6651
-#line 277 "ldlex.l"
be6651
+#line 277 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(AS_NEEDED);}
be6651
 	YY_BREAK
be6651
 case 80:
be6651
 YY_RULE_SETUP
be6651
-#line 278 "ldlex.l"
be6651
+#line 278 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DEFINED);}
be6651
 	YY_BREAK
be6651
 case 81:
be6651
 YY_RULE_SETUP
be6651
-#line 279 "ldlex.l"
be6651
+#line 279 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CREATE_OBJECT_SYMBOLS);}
be6651
 	YY_BREAK
be6651
 case 82:
be6651
 YY_RULE_SETUP
be6651
-#line 280 "ldlex.l"
be6651
+#line 280 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( CONSTRUCTORS);}
be6651
 	YY_BREAK
be6651
 case 83:
be6651
 YY_RULE_SETUP
be6651
-#line 281 "ldlex.l"
be6651
+#line 281 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(FORCE_COMMON_ALLOCATION);}
be6651
 	YY_BREAK
be6651
 case 84:
be6651
 YY_RULE_SETUP
be6651
-#line 282 "ldlex.l"
be6651
+#line 282 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INHIBIT_COMMON_ALLOCATION);}
be6651
 	YY_BREAK
be6651
 case 85:
be6651
 YY_RULE_SETUP
be6651
-#line 283 "ldlex.l"
be6651
+#line 283 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SECTIONS);}
be6651
 	YY_BREAK
be6651
 case 86:
be6651
 YY_RULE_SETUP
be6651
-#line 284 "ldlex.l"
be6651
+#line 284 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INSERT_K);}
be6651
 	YY_BREAK
be6651
 case 87:
be6651
 YY_RULE_SETUP
be6651
-#line 285 "ldlex.l"
be6651
+#line 285 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(AFTER);}
be6651
 	YY_BREAK
be6651
 case 88:
be6651
 YY_RULE_SETUP
be6651
-#line 286 "ldlex.l"
be6651
+#line 286 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(BEFORE);}
be6651
 	YY_BREAK
be6651
 case 89:
be6651
 YY_RULE_SETUP
be6651
-#line 287 "ldlex.l"
be6651
+#line 287 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(FILL);}
be6651
 	YY_BREAK
be6651
 case 90:
be6651
 YY_RULE_SETUP
be6651
-#line 288 "ldlex.l"
be6651
+#line 288 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(STARTUP);}
be6651
 	YY_BREAK
be6651
 case 91:
be6651
 YY_RULE_SETUP
be6651
-#line 289 "ldlex.l"
be6651
+#line 289 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OUTPUT_FORMAT);}
be6651
 	YY_BREAK
be6651
 case 92:
be6651
 YY_RULE_SETUP
be6651
-#line 290 "ldlex.l"
be6651
+#line 290 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( OUTPUT_ARCH);}
be6651
 	YY_BREAK
be6651
 case 93:
be6651
 YY_RULE_SETUP
be6651
-#line 291 "ldlex.l"
be6651
+#line 291 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(HLL);}
be6651
 	YY_BREAK
be6651
 case 94:
be6651
 YY_RULE_SETUP
be6651
-#line 292 "ldlex.l"
be6651
+#line 292 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SYSLIB);}
be6651
 	YY_BREAK
be6651
 case 95:
be6651
 YY_RULE_SETUP
be6651
-#line 293 "ldlex.l"
be6651
+#line 293 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(FLOAT);}
be6651
 	YY_BREAK
be6651
 case 96:
be6651
 YY_RULE_SETUP
be6651
-#line 294 "ldlex.l"
be6651
+#line 294 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( QUAD);}
be6651
 	YY_BREAK
be6651
 case 97:
be6651
 YY_RULE_SETUP
be6651
-#line 295 "ldlex.l"
be6651
+#line 295 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( SQUAD);}
be6651
 	YY_BREAK
be6651
 case 98:
be6651
 YY_RULE_SETUP
be6651
-#line 296 "ldlex.l"
be6651
+#line 296 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( LONG);}
be6651
 	YY_BREAK
be6651
 case 99:
be6651
 YY_RULE_SETUP
be6651
-#line 297 "ldlex.l"
be6651
+#line 297 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( SHORT);}
be6651
 	YY_BREAK
be6651
 case 100:
be6651
 YY_RULE_SETUP
be6651
-#line 298 "ldlex.l"
be6651
+#line 298 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( BYTE);}
be6651
 	YY_BREAK
be6651
 case 101:
be6651
 YY_RULE_SETUP
be6651
-#line 299 "ldlex.l"
be6651
+#line 299 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NOFLOAT);}
be6651
 	YY_BREAK
be6651
 case 102:
be6651
 YY_RULE_SETUP
be6651
-#line 300 "ldlex.l"
be6651
+#line 300 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NOCROSSREFS);}
be6651
 	YY_BREAK
be6651
 case 103:
be6651
 YY_RULE_SETUP
be6651
-#line 301 "ldlex.l"
be6651
+#line 301 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NOCROSSREFS_TO);}
be6651
 	YY_BREAK
be6651
 case 104:
be6651
 YY_RULE_SETUP
be6651
-#line 302 "ldlex.l"
be6651
+#line 302 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OVERLAY); }
be6651
 	YY_BREAK
be6651
 case 105:
be6651
 YY_RULE_SETUP
be6651
-#line 303 "ldlex.l"
be6651
+#line 303 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SORT_BY_NAME); }
be6651
 	YY_BREAK
be6651
 case 106:
be6651
 YY_RULE_SETUP
be6651
-#line 304 "ldlex.l"
be6651
+#line 304 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SORT_BY_ALIGNMENT); }
be6651
 	YY_BREAK
be6651
 case 107:
be6651
 YY_RULE_SETUP
be6651
-#line 305 "ldlex.l"
be6651
+#line 305 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SORT_BY_NAME); }
be6651
 	YY_BREAK
be6651
 case 108:
be6651
 YY_RULE_SETUP
be6651
-#line 306 "ldlex.l"
be6651
+#line 306 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SORT_BY_INIT_PRIORITY); }
be6651
 	YY_BREAK
be6651
 case 109:
be6651
 YY_RULE_SETUP
be6651
-#line 307 "ldlex.l"
be6651
+#line 307 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SORT_NONE); }
be6651
 	YY_BREAK
be6651
 case 110:
be6651
 YY_RULE_SETUP
be6651
-#line 308 "ldlex.l"
be6651
+#line 308 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NOLOAD);}
be6651
 	YY_BREAK
be6651
 case 111:
be6651
 YY_RULE_SETUP
be6651
-#line 309 "ldlex.l"
be6651
+#line 309 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(DSECT);}
be6651
 	YY_BREAK
be6651
 case 112:
be6651
 YY_RULE_SETUP
be6651
-#line 310 "ldlex.l"
be6651
+#line 310 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(COPY);}
be6651
 	YY_BREAK
be6651
 case 113:
be6651
 YY_RULE_SETUP
be6651
-#line 311 "ldlex.l"
be6651
+#line 311 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INFO);}
be6651
 	YY_BREAK
be6651
 case 114:
be6651
 YY_RULE_SETUP
be6651
-#line 312 "ldlex.l"
be6651
+#line 312 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(OVERLAY);}
be6651
 	YY_BREAK
be6651
 case 115:
be6651
 YY_RULE_SETUP
be6651
-#line 313 "ldlex.l"
be6651
+#line 313 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ONLY_IF_RO); }
be6651
 	YY_BREAK
be6651
 case 116:
be6651
 YY_RULE_SETUP
be6651
-#line 314 "ldlex.l"
be6651
+#line 314 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ONLY_IF_RW); }
be6651
 	YY_BREAK
be6651
 case 117:
be6651
 YY_RULE_SETUP
be6651
-#line 315 "ldlex.l"
be6651
+#line 315 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SPECIAL); }
be6651
 	YY_BREAK
be6651
 case 118:
be6651
 YY_RULE_SETUP
be6651
-#line 316 "ldlex.l"
be6651
+#line 316 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ORIGIN);}
be6651
 	YY_BREAK
be6651
 case 119:
be6651
 YY_RULE_SETUP
be6651
-#line 317 "ldlex.l"
be6651
+#line 317 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ORIGIN);}
be6651
 	YY_BREAK
be6651
 case 120:
be6651
 YY_RULE_SETUP
be6651
-#line 318 "ldlex.l"
be6651
+#line 318 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( LENGTH);}
be6651
 	YY_BREAK
be6651
 case 121:
be6651
 YY_RULE_SETUP
be6651
-#line 319 "ldlex.l"
be6651
+#line 319 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN( LENGTH);}
be6651
 	YY_BREAK
be6651
 case 122:
be6651
 YY_RULE_SETUP
be6651
-#line 320 "ldlex.l"
be6651
+#line 320 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INPUT_SECTION_FLAGS); }
be6651
 	YY_BREAK
be6651
 case 123:
be6651
 YY_RULE_SETUP
be6651
-#line 321 "ldlex.l"
be6651
+#line 321 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(INCLUDE);}
be6651
 	YY_BREAK
be6651
 case 124:
be6651
 YY_RULE_SETUP
be6651
-#line 322 "ldlex.l"
be6651
+#line 322 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN (PHDRS); }
be6651
 	YY_BREAK
be6651
 case 125:
be6651
 YY_RULE_SETUP
be6651
-#line 323 "ldlex.l"
be6651
+#line 323 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(AT);}
be6651
 	YY_BREAK
be6651
 case 126:
be6651
 YY_RULE_SETUP
be6651
-#line 324 "ldlex.l"
be6651
+#line 324 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGN_WITH_INPUT);}
be6651
 	YY_BREAK
be6651
 case 127:
be6651
 YY_RULE_SETUP
be6651
-#line 325 "ldlex.l"
be6651
+#line 325 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SUBALIGN);}
be6651
 	YY_BREAK
be6651
 case 128:
be6651
 YY_RULE_SETUP
be6651
-#line 326 "ldlex.l"
be6651
+#line 326 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(HIDDEN); }
be6651
 	YY_BREAK
be6651
 case 129:
be6651
 YY_RULE_SETUP
be6651
-#line 327 "ldlex.l"
be6651
+#line 327 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(PROVIDE); }
be6651
 	YY_BREAK
be6651
 case 130:
be6651
 YY_RULE_SETUP
be6651
-#line 328 "ldlex.l"
be6651
+#line 328 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(PROVIDE_HIDDEN); }
be6651
 	YY_BREAK
be6651
 case 131:
be6651
 YY_RULE_SETUP
be6651
-#line 329 "ldlex.l"
be6651
+#line 329 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(KEEP); }
be6651
 	YY_BREAK
be6651
 case 132:
be6651
 YY_RULE_SETUP
be6651
-#line 330 "ldlex.l"
be6651
+#line 330 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(EXCLUDE_FILE); }
be6651
 	YY_BREAK
be6651
 case 133:
be6651
 YY_RULE_SETUP
be6651
-#line 331 "ldlex.l"
be6651
+#line 331 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CONSTANT);}
be6651
 	YY_BREAK
be6651
 case 134:
be6651
 /* rule 134 can match eol */
be6651
 YY_RULE_SETUP
be6651
-#line 332 "ldlex.l"
be6651
+#line 332 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { ++ lineno; }
be6651
 	YY_BREAK
be6651
 case 135:
be6651
 /* rule 135 can match eol */
be6651
 YY_RULE_SETUP
be6651
-#line 333 "ldlex.l"
be6651
+#line 333 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { ++ lineno;  RTOKEN(NEWLINE); }
be6651
 	YY_BREAK
be6651
 case 136:
be6651
 YY_RULE_SETUP
be6651
-#line 334 "ldlex.l"
be6651
+#line 334 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { /* Mri comment line */ }
be6651
 	YY_BREAK
be6651
 case 137:
be6651
 YY_RULE_SETUP
be6651
-#line 335 "ldlex.l"
be6651
+#line 335 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { /* Mri comment line */ }
be6651
 	YY_BREAK
be6651
 case 138:
be6651
 YY_RULE_SETUP
be6651
-#line 336 "ldlex.l"
be6651
+#line 336 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ENDWORD); }
be6651
 	YY_BREAK
be6651
 case 139:
be6651
 YY_RULE_SETUP
be6651
-#line 337 "ldlex.l"
be6651
+#line 337 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGNMOD);}
be6651
 	YY_BREAK
be6651
 case 140:
be6651
 YY_RULE_SETUP
be6651
-#line 338 "ldlex.l"
be6651
+#line 338 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGN_K);}
be6651
 	YY_BREAK
be6651
 case 141:
be6651
 YY_RULE_SETUP
be6651
-#line 339 "ldlex.l"
be6651
+#line 339 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CHIP); }
be6651
 	YY_BREAK
be6651
 case 142:
be6651
 YY_RULE_SETUP
be6651
-#line 340 "ldlex.l"
be6651
+#line 340 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(BASE); }
be6651
 	YY_BREAK
be6651
 case 143:
be6651
 YY_RULE_SETUP
be6651
-#line 341 "ldlex.l"
be6651
+#line 341 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIAS); }
be6651
 	YY_BREAK
be6651
 case 144:
be6651
 YY_RULE_SETUP
be6651
-#line 342 "ldlex.l"
be6651
+#line 342 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(TRUNCATE); }
be6651
 	YY_BREAK
be6651
 case 145:
be6651
 YY_RULE_SETUP
be6651
-#line 343 "ldlex.l"
be6651
+#line 343 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LOAD); }
be6651
 	YY_BREAK
be6651
 case 146:
be6651
 YY_RULE_SETUP
be6651
-#line 344 "ldlex.l"
be6651
+#line 344 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(PUBLIC); }
be6651
 	YY_BREAK
be6651
 case 147:
be6651
 YY_RULE_SETUP
be6651
-#line 345 "ldlex.l"
be6651
+#line 345 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ORDER); }
be6651
 	YY_BREAK
be6651
 case 148:
be6651
 YY_RULE_SETUP
be6651
-#line 346 "ldlex.l"
be6651
+#line 346 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NAMEWORD); }
be6651
 	YY_BREAK
be6651
 case 149:
be6651
 YY_RULE_SETUP
be6651
-#line 347 "ldlex.l"
be6651
+#line 347 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(FORMAT); }
be6651
 	YY_BREAK
be6651
 case 150:
be6651
 YY_RULE_SETUP
be6651
-#line 348 "ldlex.l"
be6651
+#line 348 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CASE); }
be6651
 	YY_BREAK
be6651
 case 151:
be6651
 YY_RULE_SETUP
be6651
-#line 349 "ldlex.l"
be6651
+#line 349 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(START); }
be6651
 	YY_BREAK
be6651
 case 152:
be6651
 YY_RULE_SETUP
be6651
-#line 350 "ldlex.l"
be6651
+#line 350 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LIST); /* LIST and ignore to end of line */ }
be6651
 	YY_BREAK
be6651
 case 153:
be6651
 YY_RULE_SETUP
be6651
-#line 351 "ldlex.l"
be6651
+#line 351 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SECT); }
be6651
 	YY_BREAK
be6651
 case 154:
be6651
 YY_RULE_SETUP
be6651
-#line 352 "ldlex.l"
be6651
+#line 352 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ABSOLUTE); }
be6651
 	YY_BREAK
be6651
 case 155:
be6651
 YY_RULE_SETUP
be6651
-#line 353 "ldlex.l"
be6651
+#line 353 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ENDWORD); }
be6651
 	YY_BREAK
be6651
 case 156:
be6651
 YY_RULE_SETUP
be6651
-#line 354 "ldlex.l"
be6651
+#line 354 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGNMOD);}
be6651
 	YY_BREAK
be6651
 case 157:
be6651
 YY_RULE_SETUP
be6651
-#line 355 "ldlex.l"
be6651
+#line 355 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIGN_K);}
be6651
 	YY_BREAK
be6651
 case 158:
be6651
 YY_RULE_SETUP
be6651
-#line 356 "ldlex.l"
be6651
+#line 356 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CHIP); }
be6651
 	YY_BREAK
be6651
 case 159:
be6651
 YY_RULE_SETUP
be6651
-#line 357 "ldlex.l"
be6651
+#line 357 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(BASE); }
be6651
 	YY_BREAK
be6651
 case 160:
be6651
 YY_RULE_SETUP
be6651
-#line 358 "ldlex.l"
be6651
+#line 358 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ALIAS); }
be6651
 	YY_BREAK
be6651
 case 161:
be6651
 YY_RULE_SETUP
be6651
-#line 359 "ldlex.l"
be6651
+#line 359 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(TRUNCATE); }
be6651
 	YY_BREAK
be6651
 case 162:
be6651
 YY_RULE_SETUP
be6651
-#line 360 "ldlex.l"
be6651
+#line 360 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LOAD); }
be6651
 	YY_BREAK
be6651
 case 163:
be6651
 YY_RULE_SETUP
be6651
-#line 361 "ldlex.l"
be6651
+#line 361 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(PUBLIC); }
be6651
 	YY_BREAK
be6651
 case 164:
be6651
 YY_RULE_SETUP
be6651
-#line 362 "ldlex.l"
be6651
+#line 362 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ORDER); }
be6651
 	YY_BREAK
be6651
 case 165:
be6651
 YY_RULE_SETUP
be6651
-#line 363 "ldlex.l"
be6651
+#line 363 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(NAMEWORD); }
be6651
 	YY_BREAK
be6651
 case 166:
be6651
 YY_RULE_SETUP
be6651
-#line 364 "ldlex.l"
be6651
+#line 364 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(FORMAT); }
be6651
 	YY_BREAK
be6651
 case 167:
be6651
 YY_RULE_SETUP
be6651
-#line 365 "ldlex.l"
be6651
+#line 365 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(CASE); }
be6651
 	YY_BREAK
be6651
 case 168:
be6651
 YY_RULE_SETUP
be6651
-#line 366 "ldlex.l"
be6651
+#line 366 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(EXTERN); }
be6651
 	YY_BREAK
be6651
 case 169:
be6651
 YY_RULE_SETUP
be6651
-#line 367 "ldlex.l"
be6651
+#line 367 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(START); }
be6651
 	YY_BREAK
be6651
 case 170:
be6651
 YY_RULE_SETUP
be6651
-#line 368 "ldlex.l"
be6651
+#line 368 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LIST); /* LIST and ignore to end of line */ }
be6651
 	YY_BREAK
be6651
 case 171:
be6651
 YY_RULE_SETUP
be6651
-#line 369 "ldlex.l"
be6651
+#line 369 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(SECT); }
be6651
 	YY_BREAK
be6651
 case 172:
be6651
 YY_RULE_SETUP
be6651
-#line 370 "ldlex.l"
be6651
+#line 370 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(ABSOLUTE); }
be6651
 	YY_BREAK
be6651
 case 173:
be6651
 YY_RULE_SETUP
be6651
-#line 372 "ldlex.l"
be6651
+#line 372 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 /* Filename without commas, needed to parse mri stuff */
be6651
 				 yylval.name = xstrdup (yytext);
be6651
@@ -3008,7 +3033,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 174:
be6651
 YY_RULE_SETUP
be6651
-#line 379 "ldlex.l"
be6651
+#line 379 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				 yylval.name = xstrdup (yytext);
be6651
 				  return NAME;
be6651
@@ -3016,7 +3041,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 175:
be6651
 YY_RULE_SETUP
be6651
-#line 383 "ldlex.l"
be6651
+#line 383 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 /* Filename to be prefixed by --sysroot or when non-sysrooted, nothing.  */
be6651
 				 yylval.name = xstrdup (yytext);
be6651
@@ -3025,7 +3050,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 176:
be6651
 YY_RULE_SETUP
be6651
-#line 388 "ldlex.l"
be6651
+#line 388 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				  yylval.name = xstrdup (yytext + 2);
be6651
 				  return LNAME;
be6651
@@ -3033,7 +3058,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 177:
be6651
 YY_RULE_SETUP
be6651
-#line 392 "ldlex.l"
be6651
+#line 392 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				 yylval.name = xstrdup (yytext);
be6651
 				  return NAME;
be6651
@@ -3041,7 +3066,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 178:
be6651
 YY_RULE_SETUP
be6651
-#line 396 "ldlex.l"
be6651
+#line 396 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 				  yylval.name = xstrdup (yytext + 2);
be6651
 				  return LNAME;
be6651
@@ -3049,7 +3074,7 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 179:
be6651
 YY_RULE_SETUP
be6651
-#line 400 "ldlex.l"
be6651
+#line 400 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 		/* Annoyingly, this pattern can match comments, and we have
be6651
 		   longest match issues to consider.  So if the first two
be6651
@@ -3070,66 +3095,72 @@ YY_RULE_SETUP
be6651
 case 180:
be6651
 /* rule 180 can match eol */
be6651
 YY_RULE_SETUP
be6651
-#line 417 "ldlex.l"
be6651
+#line 417 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
 					/* No matter the state, quotes
be6651
-					   give what's inside */
be6651
+                                           give what's inside.  */
be6651
+					bfd_size_type len;
be6651
 					yylval.name = xstrdup (yytext + 1);
be6651
-					yylval.name[yyleng - 2] = 0;
be6651
+					/* PR ld/20906.  A corrupt input file
be6651
+                                        can contain bogus strings.  */
be6651
+					len = strlen (yylval.name);
be6651
+					if (len > yyleng - 2)
be6651
+					  len = yyleng - 2;
be6651
+					yylval.name[len] = 0;
be6651
 					return NAME;
be6651
 				}
be6651
 	YY_BREAK
be6651
 case 181:
be6651
 /* rule 181 can match eol */
be6651
 YY_RULE_SETUP
be6651
-#line 424 "ldlex.l"
be6651
+#line 430 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { lineno++;}
be6651
 	YY_BREAK
be6651
 case 182:
be6651
 YY_RULE_SETUP
be6651
-#line 425 "ldlex.l"
be6651
+#line 431 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { }
be6651
 	YY_BREAK
be6651
 case 183:
be6651
 YY_RULE_SETUP
be6651
-#line 427 "ldlex.l"
be6651
+#line 433 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { return *yytext; }
be6651
 	YY_BREAK
be6651
 case 184:
be6651
 YY_RULE_SETUP
be6651
-#line 429 "ldlex.l"
be6651
+#line 435 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(GLOBAL); }
be6651
 	YY_BREAK
be6651
 case 185:
be6651
 YY_RULE_SETUP
be6651
-#line 431 "ldlex.l"
be6651
+#line 437 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(LOCAL); }
be6651
 	YY_BREAK
be6651
 case 186:
be6651
 YY_RULE_SETUP
be6651
-#line 433 "ldlex.l"
be6651
+#line 439 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { RTOKEN(EXTERN); }
be6651
 	YY_BREAK
be6651
 case 187:
be6651
 YY_RULE_SETUP
be6651
-#line 435 "ldlex.l"
be6651
+#line 441 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { yylval.name = xstrdup (yytext);
be6651
 				  return VERS_IDENTIFIER; }
be6651
 	YY_BREAK
be6651
 case 188:
be6651
 YY_RULE_SETUP
be6651
-#line 438 "ldlex.l"
be6651
+#line 444 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { yylval.name = xstrdup (yytext);
be6651
 				  return VERS_TAG; }
be6651
 	YY_BREAK
be6651
 case 189:
be6651
 YY_RULE_SETUP
be6651
-#line 441 "ldlex.l"
be6651
+#line 447 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { BEGIN(VERS_SCRIPT); return *yytext; }
be6651
 	YY_BREAK
be6651
 case 190:
be6651
 YY_RULE_SETUP
be6651
-#line 443 "ldlex.l"
be6651
+#line 449 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { BEGIN(VERS_NODE);
be6651
 				  vers_node_nesting = 0;
be6651
 				  return *yytext;
be6651
@@ -3137,17 +3168,17 @@ YY_RULE_SETUP
be6651
 	YY_BREAK
be6651
 case 191:
be6651
 YY_RULE_SETUP
be6651
-#line 447 "ldlex.l"
be6651
+#line 453 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { return *yytext; }
be6651
 	YY_BREAK
be6651
 case 192:
be6651
 YY_RULE_SETUP
be6651
-#line 448 "ldlex.l"
be6651
+#line 454 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { vers_node_nesting++; return *yytext; }
be6651
 	YY_BREAK
be6651
 case 193:
be6651
 YY_RULE_SETUP
be6651
-#line 449 "ldlex.l"
be6651
+#line 455 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { if (--vers_node_nesting < 0)
be6651
 				    BEGIN(VERS_SCRIPT);
be6651
 				  return *yytext;
be6651
@@ -3156,17 +3187,17 @@ YY_RULE_SETUP
be6651
 case 194:
be6651
 /* rule 194 can match eol */
be6651
 YY_RULE_SETUP
be6651
-#line 454 "ldlex.l"
be6651
+#line 460 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { lineno++; }
be6651
 	YY_BREAK
be6651
 case 195:
be6651
 YY_RULE_SETUP
be6651
-#line 456 "ldlex.l"
be6651
+#line 462 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { /* Eat up comments */ }
be6651
 	YY_BREAK
be6651
 case 196:
be6651
 YY_RULE_SETUP
be6651
-#line 458 "ldlex.l"
be6651
+#line 464 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 { /* Eat up whitespace */ }
be6651
 	YY_BREAK
be6651
 case YY_STATE_EOF(INITIAL):
be6651
@@ -3179,7 +3210,7 @@ case YY_STATE_EOF(MRI):
be6651
 case YY_STATE_EOF(VERS_START):
be6651
 case YY_STATE_EOF(VERS_SCRIPT):
be6651
 case YY_STATE_EOF(VERS_NODE):
be6651
-#line 460 "ldlex.l"
be6651
+#line 466 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 {
be6651
   include_stack_ptr--;
be6651
   if (include_stack_ptr == 0)
be6651
@@ -3195,20 +3226,20 @@ case YY_STATE_EOF(VERS_NODE):
be6651
 	YY_BREAK
be6651
 case 197:
be6651
 YY_RULE_SETUP
be6651
-#line 473 "ldlex.l"
be6651
+#line 479 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 lex_warn_invalid (" in script", yytext);
be6651
 	YY_BREAK
be6651
 case 198:
be6651
 YY_RULE_SETUP
be6651
-#line 474 "ldlex.l"
be6651
+#line 480 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 lex_warn_invalid (" in expression", yytext);
be6651
 	YY_BREAK
be6651
 case 199:
be6651
 YY_RULE_SETUP
be6651
-#line 476 "ldlex.l"
be6651
+#line 482 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 ECHO;
be6651
 	YY_BREAK
be6651
-#line 3212 "ldlex.c"
be6651
+#line 3243 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.c"
be6651
 
be6651
 	case YY_END_OF_BUFFER:
be6651
 		{
be6651
@@ -3337,6 +3368,7 @@ ECHO;
be6651
 			"fatal flex scanner internal error--no action found" );
be6651
 	} /* end of action switch */
be6651
 		} /* end of scanning one token */
be6651
+	} /* end of user's declarations */
be6651
 } /* end of yylex */
be6651
 
be6651
 /* yy_get_next_buffer - try to read in a new buffer
be6651
@@ -3348,9 +3380,9 @@ ECHO;
be6651
  */
be6651
 static int yy_get_next_buffer (void)
be6651
 {
be6651
-    	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
be6651
-	register char *source = (yytext_ptr);
be6651
-	register int number_to_move, i;
be6651
+    	char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
be6651
+	char *source = (yytext_ptr);
be6651
+	yy_size_t number_to_move, i;
be6651
 	int ret_val;
be6651
 
be6651
 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
be6651
@@ -3379,7 +3411,7 @@ static int yy_get_next_buffer (void)
be6651
 	/* Try to read more data. */
be6651
 
be6651
 	/* First move last chars to start of buffer. */
be6651
-	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
be6651
+	number_to_move = (yy_size_t) ((yy_c_buf_p) - (yytext_ptr)) - 1;
be6651
 
be6651
 	for ( i = 0; i < number_to_move; ++i )
be6651
 		*(dest++) = *(source++);
be6651
@@ -3392,14 +3424,14 @@ static int yy_get_next_buffer (void)
be6651
 
be6651
 	else
be6651
 		{
be6651
-			yy_size_t num_to_read =
be6651
+			int num_to_read =
be6651
 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
be6651
 
be6651
 		while ( num_to_read <= 0 )
be6651
 			{ /* Not enough room in the buffer - grow it. */
be6651
 
be6651
 			/* just a shorter name for the current buffer */
be6651
-			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
be6651
+			YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
be6651
 
be6651
 			int yy_c_buf_p_offset =
be6651
 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
be6651
@@ -3482,14 +3514,14 @@ static int yy_get_next_buffer (void)
be6651
 
be6651
     static yy_state_type yy_get_previous_state (void)
be6651
 {
be6651
-	register yy_state_type yy_current_state;
be6651
-	register char *yy_cp;
be6651
+	yy_state_type yy_current_state;
be6651
+	char *yy_cp;
be6651
     
be6651
 	yy_current_state = (yy_start);
be6651
 
be6651
 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
be6651
 		{
be6651
-		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
be6651
+		YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
be6651
 		if ( yy_accept[yy_current_state] )
be6651
 			{
be6651
 			(yy_last_accepting_state) = yy_current_state;
be6651
@@ -3514,10 +3546,10 @@ static int yy_get_next_buffer (void)
be6651
  */
be6651
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
be6651
 {
be6651
-	register int yy_is_jam;
be6651
-    	register char *yy_cp = (yy_c_buf_p);
be6651
+	int yy_is_jam;
be6651
+    	char *yy_cp = (yy_c_buf_p);
be6651
 
be6651
-	register YY_CHAR yy_c = 1;
be6651
+	YY_CHAR yy_c = 1;
be6651
 	if ( yy_accept[yy_current_state] )
be6651
 		{
be6651
 		(yy_last_accepting_state) = yy_current_state;
be6651
@@ -3532,9 +3564,13 @@ static int yy_get_next_buffer (void)
be6651
 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
be6651
 	yy_is_jam = (yy_current_state == 1774);
be6651
 
be6651
-	return yy_is_jam ? 0 : yy_current_state;
be6651
+		return yy_is_jam ? 0 : yy_current_state;
be6651
 }
be6651
 
be6651
+#ifndef YY_NO_UNPUT
be6651
+
be6651
+#endif
be6651
+
be6651
 #ifndef YY_NO_INPUT
be6651
 #ifdef __cplusplus
be6651
     static int yyinput (void)
be6651
@@ -3583,7 +3619,7 @@ static int yy_get_next_buffer (void)
be6651
 				case EOB_ACT_END_OF_FILE:
be6651
 					{
be6651
 					if ( yywrap( ) )
be6651
-						return 0;
be6651
+						return EOF;
be6651
 
be6651
 					if ( ! (yy_did_buffer_switch_on_eof) )
be6651
 						YY_NEW_FILE;
be6651
@@ -3684,7 +3720,7 @@ static void yy_load_buffer_state  (void)
be6651
 	if ( ! b )
be6651
 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
be6651
 
be6651
-	b->yy_buf_size = size;
be6651
+	b->yy_buf_size = (yy_size_t)size;
be6651
 
be6651
 	/* yy_ch_buf has to be 2 characters longer than the size given because
be6651
 	 * we need to put in 2 end-of-buffer characters.
be6651
@@ -3719,10 +3755,6 @@ static void yy_load_buffer_state  (void)
be6651
 	yyfree((void *) b  );
be6651
 }
be6651
 
be6651
-#ifndef __cplusplus
be6651
-extern int isatty (int );
be6651
-#endif /* __cplusplus */
be6651
-    
be6651
 /* Initializes or reinitializes a buffer.
be6651
  * This function is sometimes called more than once on the same buffer,
be6651
  * such as during a yyrestart() or at EOF.
be6651
@@ -3843,7 +3875,7 @@ static void yyensure_buffer_stack (void)
be6651
 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
be6651
 		 * immediate realloc on the next call.
be6651
          */
be6651
-		num_to_alloc = 1;
be6651
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
be6651
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
be6651
 								(num_to_alloc * sizeof(struct yy_buffer_state*)
be6651
 								);
be6651
@@ -3860,7 +3892,7 @@ static void yyensure_buffer_stack (void)
be6651
 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
be6651
 
be6651
 		/* Increase the buffer to prepare for a possible push. */
be6651
-		int grow_size = 8 /* arbitrary grow size */;
be6651
+		yy_size_t grow_size = 8 /* arbitrary grow size */;
be6651
 
be6651
 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
be6651
 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
be6651
@@ -3927,8 +3959,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst
be6651
 
be6651
 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
be6651
  * scan from a @e copy of @a bytes.
be6651
- * @param bytes the byte buffer to scan
be6651
- * @param len the number of bytes in the buffer pointed to by @a bytes.
be6651
+ * @param yybytes the byte buffer to scan
be6651
+ * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
be6651
  * 
be6651
  * @return the newly allocated buffer state object.
be6651
  */
be6651
@@ -3936,7 +3968,8 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst
be6651
 {
be6651
 	YY_BUFFER_STATE b;
be6651
 	char *buf;
be6651
-	yy_size_t n, i;
be6651
+	yy_size_t n;
be6651
+	yy_size_t i;
be6651
     
be6651
 	/* Get memory for full buffer, including space for trailing EOB's. */
be6651
 	n = _yybytes_len + 2;
be6651
@@ -3967,7 +4000,7 @@ YY_BUFFER_STATE yy_scan_bytes  (yyconst
be6651
 
be6651
 static void yy_fatal_error (yyconst char* msg )
be6651
 {
be6651
-    	(void) fprintf( stderr, "%s\n", msg );
be6651
+			(void) fprintf( stderr, "%s\n", msg );
be6651
 	exit( YY_EXIT_FAILURE );
be6651
 }
be6651
 
be6651
@@ -3978,7 +4011,7 @@ static void yy_fatal_error (yyconst char
be6651
 	do \
be6651
 		{ \
be6651
 		/* Undo effects of setting up yytext. */ \
be6651
-        int yyless_macro_arg = (n); \
be6651
+        yy_size_t yyless_macro_arg = (n); \
be6651
         YY_LESS_LINENO(yyless_macro_arg);\
be6651
 		yytext[yyleng] = (yy_hold_char); \
be6651
 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
be6651
@@ -4033,29 +4066,29 @@ char *yyget_text  (void)
be6651
 }
be6651
 
be6651
 /** Set the current line number.
be6651
- * @param line_number
be6651
+ * @param _line_number line number
be6651
  * 
be6651
  */
be6651
-void yyset_lineno (int  line_number )
be6651
+void yyset_lineno (int  _line_number )
be6651
 {
be6651
     
be6651
-    yylineno = line_number;
be6651
+    yylineno = _line_number;
be6651
 }
be6651
 
be6651
 /** Set the input stream. This does not discard the current
be6651
  * input buffer.
be6651
- * @param in_str A readable stream.
be6651
+ * @param _in_str A readable stream.
be6651
  * 
be6651
  * @see yy_switch_to_buffer
be6651
  */
be6651
-void yyset_in (FILE *  in_str )
be6651
+void yyset_in (FILE *  _in_str )
be6651
 {
be6651
-        yyin = in_str ;
be6651
+        yyin = _in_str ;
be6651
 }
be6651
 
be6651
-void yyset_out (FILE *  out_str )
be6651
+void yyset_out (FILE *  _out_str )
be6651
 {
be6651
-        yyout = out_str ;
be6651
+        yyout = _out_str ;
be6651
 }
be6651
 
be6651
 int yyget_debug  (void)
be6651
@@ -4063,9 +4096,9 @@ int yyget_debug  (void)
be6651
         return yy_flex_debug;
be6651
 }
be6651
 
be6651
-void yyset_debug (int  bdebug )
be6651
+void yyset_debug (int  _bdebug )
be6651
 {
be6651
-        yy_flex_debug = bdebug ;
be6651
+        yy_flex_debug = _bdebug ;
be6651
 }
be6651
 
be6651
 static int yy_init_globals (void)
be6651
@@ -4125,7 +4158,8 @@ int yylex_destroy  (void)
be6651
 #ifndef yytext_ptr
be6651
 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
be6651
 {
be6651
-	register int i;
be6651
+		
be6651
+	int i;
be6651
 	for ( i = 0; i < n; ++i )
be6651
 		s1[i] = s2[i];
be6651
 }
be6651
@@ -4134,7 +4168,7 @@ static void yy_flex_strncpy (char* s1, y
be6651
 #ifdef YY_NEED_STRLEN
be6651
 static int yy_flex_strlen (yyconst char * s )
be6651
 {
be6651
-	register int n;
be6651
+	int n;
be6651
 	for ( n = 0; s[n]; ++n )
be6651
 		;
be6651
 
be6651
@@ -4144,11 +4178,12 @@ static int yy_flex_strlen (yyconst char
be6651
 
be6651
 void *yyalloc (yy_size_t  size )
be6651
 {
be6651
-	return (void *) malloc( size );
be6651
+			return (void *) malloc( size );
be6651
 }
be6651
 
be6651
 void *yyrealloc  (void * ptr, yy_size_t  size )
be6651
 {
be6651
+		
be6651
 	/* The cast to (char *) in the following accommodates both
be6651
 	 * implementations that use char* generic pointers, and those
be6651
 	 * that use void* generic pointers.  It works with the latter
be6651
@@ -4161,12 +4196,12 @@ void *yyrealloc  (void * ptr, yy_size_t
be6651
 
be6651
 void yyfree (void * ptr )
be6651
 {
be6651
-	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
be6651
+			free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
be6651
 }
be6651
 
be6651
 #define YYTABLES_NAME "yytables"
be6651
 
be6651
-#line 476 "ldlex.l"
be6651
+#line 482 "/work/sources/rhel/binutils/rhel-7.4/binutils-2.27/ld/ldlex.l"
be6651
 
be6651
 
be6651
 
be6651
diff -rup binutils.orig/ld/ldlex.l binutils-2.27/ld/ldlex.l
be6651
--- binutils.orig/ld/ldlex.l	2017-03-24 13:50:55.613184724 +0000
be6651
+++ binutils-2.27/ld/ldlex.l	2017-03-24 14:20:35.039227142 +0000
be6651
@@ -416,9 +416,15 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^\\]([
be6651
 
be6651
 <EXPRESSION,BOTH,SCRIPT,VERS_NODE,INPUTLIST>"\""[^\"]*"\"" {
be6651
 					/* No matter the state, quotes
be6651
-					   give what's inside */
be6651
+                                           give what's inside.  */
be6651
+					bfd_size_type len;
be6651
 					yylval.name = xstrdup (yytext + 1);
be6651
-					yylval.name[yyleng - 2] = 0;
be6651
+					/* PR ld/20906.  A corrupt input file
be6651
+                                        can contain bogus strings.  */
be6651
+					len = strlen (yylval.name);
be6651
+					if (len > yyleng - 2)
be6651
+					  len = yyleng - 2;
be6651
+					yylval.name[len] = 0;
be6651
 					return NAME;
be6651
 				}
be6651
 <BOTH,SCRIPT,EXPRESSION>"\n"		{ lineno++;}