patches to objdump and link M$-compiled objects...

Juergen Lock nox@jelal.kn-bremen.de
Tue Mar 2 09:21:00 GMT 1999


Yes i promised to send them so here they are :)

 Beware, these are still not pretty, just hacked-enough-until-it-works...
But I'm open to suggestions of course.

 If your on {Free,Net}BSD you can build everything by unpacking
in an empty dir, mkdir /usr/ports/distfiles/gnu_win32-b20.1 and put
dev-src.tar.bz2 there, then say make.  (And to install everything, become
root then make install.)  Otherwise you can ignore everything but the
patches/*, and apply them by hand.  Btw I put in a few comments about
what they do so you might want to look at the shar file before unpacking.
Have fun!

What does not work:
. weak symbols (C_NT_WEAK) with characteristics 1 flag (meaning don't
search libraries), the libs are always searched ie it always works as
with characteristics 2.
. dll imports by ordinal as opposed to by name; objdump knows them but
if an (M$-generated) object imports by ordinal ld still produces a broken
import table.  workaround: link with dlltool-generated import libs.
. using ld to add a symbol table to a dll so that objdump -d produces
a more meaningful listing.  this used to work with b17 (with my patches),
now even --whole-archive doesn't help.  Well I guess i shouldn't expect
this to work but it was a useful `feature'...

 Oh and if you leave out patch-diff* and patch-man1dir1 and add this:

Index: ../ld/deffilep.y
@@ -91,7 +91,7 @@
 static void def_directive PARAMS ((char *));
 static int def_parse PARAMS ((void));
 static int def_error PARAMS ((const char *));
-static int def_debug;
+int def_debug;
 static int def_lex PARAMS ((void));
 
 static int lex_forced_token = 0;

then the patches also apply to DJ Delorie's binutils snapshot, gas+utils.tgz
(as of 990209), in fact that is what i'm using now.

 Regards,
	Juergen

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	patches/
#	patches/patch-bb
#	patches/patch-bc
#	patches/patch-coffcode3
#	patches/patch-coffgen7
#	patches/patch-cofflink-reloc2
#	patches/patch-cofflink4d
#	patches/patch-diff1
#	patches/patch-diff2
#	patches/patch-diff3
#	patches/patch-dlltool1
#	patches/patch-edata11
#	patches/patch-gas-sym
#	patches/patch-gas-sym2
#	patches/patch-gccp1
#	patches/patch-gccp2
#	patches/patch-gccp3c
#	patches/patch-man1dir1
#	patches/patch-peicode-idata5a
#	patches/patch-peicode2
#	patches/patch-peicode3
#	patches/patch-peicode3a
#	patches/patch-peicode4a
#	patches/patch-peicode77
#	patches/patch-readelf1
#	patches/patch-sectionsym1
#	patches/patch-sectionsym2
#	patches/patch-windres02
#	Makefile
#	files/
#	files/md5
#	pkg/
#	pkg/COMMENT
#	pkg/DESCR
#	pkg/PLIST
#
echo c - patches/
mkdir -p patches/ > /dev/null 2>&1
echo x - patches/patch-bb
sed 's/^X//' >patches/patch-bb << 'END-of-patches/patch-bb'
XHandle comdat sections, specifically IMAGE_COMDAT_SELECT_ASSOCIATIVE...
X
XIndex: ../bfd/bfd-in2.h
X@@ -1068,6 +1068,18 @@
X 
X    struct bfd_link_order *link_order_head;
X    struct bfd_link_order *link_order_tail;
X+#if 1 /* PE COFF specific.. */
X+   CONST char *pe_comdat_sym_name;
X+   struct
X+   {
X+    long x_scnlen;		/* section length */
X+    unsigned short x_nreloc;	/* # relocation entries */
X+    unsigned short x_nlinno;	/* # line numbers */
X+    unsigned long x_checksum;	/* section COMDAT checksum for PE */
X+    unsigned short x_associated; /* COMDAT associated section index for PE */
X+    unsigned char x_comdat;	/* COMDAT selection number for PE */
X+   }      pe_comdat_auxent;
X+#endif
X } asection ;
X 
X      /* These sections are global, and are managed by BFD.  The application
XIndex: ../bfd/coffcode.h
X@@ -430,10 +430,11 @@
X  *      in sec_to_styp_flags().
X  */
X static flagword
X-styp_to_sec_flags (abfd, hdr, name)
X+styp_to_sec_flags (abfd, hdr, name, sec)
X      bfd *abfd;
X      PTR hdr;
X      const char *name;
X+     asection *sec;
X {
X   struct internal_scnhdr *internal_s = (struct internal_scnhdr *) hdr;
X   long styp_flags = internal_s->s_flags;
X@@ -464,6 +465,77 @@
X     }
X   else if (styp_flags & STYP_BSS)
X     {
X+#if 1
X+      int idxsec = sec->index + 1;
X+
X+      /* Unfortunately, the PE format stores essential information in
X+         the symbol table, of all places.  We need to extract that
X+         information now, so that objdump and the linker will know how
X+         to handle the section without worrying about the symbols.  We
X+         can't call slurp_symtab, because the linker doesn't want the
X+         swapped symbols.  */
X+
X+      if (!internal_s->s_size && _bfd_coff_get_external_symbols (abfd))
X+	{
X+	  bfd_byte *esym, *esymend;
X+
X+	  esym = (bfd_byte *) obj_coff_external_syms (abfd);
X+	  esymend = esym + obj_raw_syment_count (abfd) * SYMESZ;
X+
X+	  while (esym < esymend)
X+	    {
X+	      struct internal_syment isym;
X+
X+	      bfd_coff_swap_sym_in (abfd, (PTR) esym, (PTR) &isym);
X+
X+	      if (sizeof (internal_s->s_name) > SYMNMLEN)
X+		{
X+		  /* This case implies that the matching symbol name
X+                     will be in the string table.  */
X+		  abort ();
X+		}
X+
X+#if 1
X+	      if (isym.n_scnum == idxsec
X+		  && isym.n_sclass == C_STAT
X+		  && isym.n_type == T_NULL
X+		  && isym.n_numaux == 1)
X+#else
X+	      if (isym.n_sclass == C_STAT
X+		  && isym.n_type == T_NULL
X+		  && isym.n_numaux == 1)
X+#endif
X+		{
X+		  char buf[SYMNMLEN + 1];
X+		  const char *symname;
X+		  int auxcpp = 0;
X+
X+		  symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
X+		  if (symname == NULL)
X+		    abort ();
X+
X+		  if (strcmp (name, symname) == 0)
X+		    {
X+		      union internal_auxent aux;
X+
X+		      /* This is the section symbol.  */
X+
X+		      bfd_coff_swap_aux_in (abfd, (PTR) (esym + SYMESZ),
X+					    isym.n_type, isym.n_sclass,
X+					    0, isym.n_numaux, (PTR) &aux);
X+
X+		      if (!internal_s->s_size) {
X+			internal_s->s_size = sec->_raw_size = aux.x_scn.x_scnlen;
X+		      }
X+
X+		      break;
X+		    }
X+		}
X+
X+	      esym += (isym.n_numaux + 1) * SYMESZ;
X+	    }
X+	}
X+#endif
X #ifdef BSS_NOLOAD_IS_SHARED_LIBRARY
X       if (sec_flags & SEC_NEVER_LOAD)
X 	sec_flags |= SEC_ALLOC | SEC_COFF_SHARED_LIBRARY;
X@@ -554,6 +626,8 @@
X 
X   if (styp_flags & IMAGE_SCN_LNK_COMDAT)
X     {
X+      int idxsec = sec->index + 1;
X+
X       sec_flags |= SEC_LINK_ONCE;
X 
X       /* Unfortunately, the PE format stores essential information in
X@@ -583,12 +657,20 @@
X 		  abort ();
X 		}
X 
X+#if 1
X+	      if (isym.n_scnum == idxsec
X+		  && isym.n_sclass == C_STAT
X+		  && isym.n_type == T_NULL
X+		  && isym.n_numaux == 1)
X+#else
X 	      if (isym.n_sclass == C_STAT
X 		  && isym.n_type == T_NULL
X 		  && isym.n_numaux == 1)
X+#endif
X 		{
X 		  char buf[SYMNMLEN + 1];
X 		  const char *symname;
X+		  int auxcpp = 0;
X 
X 		  symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
X 		  if (symname == NULL)
X@@ -608,30 +690,86 @@
X 			{
X 			case IMAGE_COMDAT_SELECT_NODUPLICATES:
X 			  sec_flags |= SEC_LINK_DUPLICATES_ONE_ONLY;
X+			  auxcpp = 1;
X 			  break;
X 
X 			default:
X 			case IMAGE_COMDAT_SELECT_ANY:
X 			  sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
X+			  auxcpp = 1;
X 			  break;
X 
X 			case IMAGE_COMDAT_SELECT_SAME_SIZE:
X 			  sec_flags |= SEC_LINK_DUPLICATES_SAME_SIZE;
X+			  auxcpp = 1;
X 			  break;
X 
X 			case IMAGE_COMDAT_SELECT_EXACT_MATCH:
X 			  sec_flags |= SEC_LINK_DUPLICATES_SAME_CONTENTS;
X+			  auxcpp = 1;
X 			  break;
X 
X 			case IMAGE_COMDAT_SELECT_ASSOCIATIVE:
X 			  /* FIXME: This is not currently implemented.  */
X+#if 1
X+			 {
X+			  asection *sect;
X+			  for (sect = sec->owner->sections; sect != NULL; sect = sect->next) {
X+			    if (sect->index + 1 == aux.x_scn.x_associated)
X+			      break;
X+			  }
X+			  if (sect) {
X+			    sec->pe_comdat_sym_name = sect->pe_comdat_sym_name;
X+			    sec_flags |= (sect->flags & SEC_LINK_DUPLICATES);
X+			  } else {
X+			    sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
X+			  }
X+			 }
X+#else
X 			  sec_flags |= SEC_LINK_DUPLICATES_DISCARD;
X+#endif
X+			  auxcpp = 1;
X 			  break;
X 			}
X 
X+		      if (auxcpp) {
X+			(sec)->pe_comdat_auxent.x_scnlen = aux.x_scn.x_scnlen;
X+			(sec)->pe_comdat_auxent.x_comdat = aux.x_scn.x_comdat;
X+			(sec)->pe_comdat_auxent.x_associated = aux.x_scn.x_associated;
X+			(sec)->pe_comdat_auxent.x_nreloc = aux.x_scn.x_nreloc;
X+			(sec)->pe_comdat_auxent.x_nlinno = aux.x_scn.x_nlinno;
X+			(sec)->pe_comdat_auxent.x_checksum = aux.x_scn.x_checksum;
X+		        esym += (isym.n_numaux + 1) * SYMESZ;
X+			continue;
X+		      } else
X 		      break;
X 		    }
X 		}
X+#if 1
X+	      if (isym.n_scnum == idxsec
X+		  && sec->pe_comdat_auxent.x_scnlen
X+		  && sec->pe_comdat_auxent.x_comdat != IMAGE_COMDAT_SELECT_ASSOCIATIVE
X+		  && (isym.n_sclass == C_EXT || isym.n_sclass == C_STAT)
X+		  /*&& isym.n_type == T_NULL*/ )
X+		{
X+		  char buf[SYMNMLEN + 1];
X+		  const char *symname;
X+		  char *csym;
X+
X+		  if (sec->pe_comdat_sym_name)
X+		    /* debug */
X+		    abort ();
X+		  symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
X+		  if (symname == NULL)
X+		    abort ();
X+
X+		  csym = bfd_alloc (abfd, strlen (symname) + 1);
X+		  if (!csym)
X+		    abort ();
X+		  strcpy (csym, symname);
X+		  sec->pe_comdat_sym_name = csym;
X+		}
X+#endif
X 
X 	      esym += (isym.n_numaux + 1) * SYMESZ;
X 	    }
XIndex: ../bfd/coffgen.c
X@@ -139,7 +139,8 @@
X   return_section->lineno_count = hdr->s_nlnno;
X   return_section->userdata = NULL;
X   return_section->next = (asection *) NULL;
X-  return_section->flags = bfd_coff_styp_to_sec_flags_hook (abfd, hdr, name);
X+  return_section->flags = bfd_coff_styp_to_sec_flags_hook (abfd, hdr, name,
X+	return_section);
X 
X   return_section->target_index = target_index;
X 
XIndex: ../bfd/libcoff.h
X@@ -659,7 +659,8 @@
X  flagword (*_bfd_styp_to_sec_flags_hook) PARAMS ((
X        bfd     *abfd,
X        PTR     internal_scnhdr,
X-       const char *name));
X+       const char *name,
X+       asection *sec));
X  void (*_bfd_set_alignment_hook) PARAMS ((
X        bfd     *abfd,
X        asection *sec,
X@@ -803,8 +804,8 @@
X #define bfd_coff_mkobject_hook(abfd, filehdr, aouthdr)\
X         ((coff_backend_info (abfd)->_bfd_coff_mkobject_hook) (abfd, filehdr, aouthdr))
X 
X-#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name)\
X-        ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name))
X+#define bfd_coff_styp_to_sec_flags_hook(abfd, scnhdr, name, sec)\
X+        ((coff_backend_info (abfd)->_bfd_styp_to_sec_flags_hook) (abfd, scnhdr, name, sec))
X 
X #define bfd_coff_set_alignment_hook(abfd, sec, scnhdr)\
X         ((coff_backend_info (abfd)->_bfd_set_alignment_hook) (abfd, sec, scnhdr))
END-of-patches/patch-bb
echo x - patches/patch-bc
sed 's/^X//' >patches/patch-bc << 'END-of-patches/patch-bc'
XIndex: ../bfd/coffcode.h
X@@ -758,7 +758,7 @@
X 
X 		  if (sec->pe_comdat_sym_name)
X 		    /* debug */
X-		    abort ();
X+		    break; /* abort (); */
X 		  symname = _bfd_coff_internal_syment_name (abfd, &isym, buf);
X 		  if (symname == NULL)
X 		    abort ();
XIndex: ../binutils/objdump.c
X@@ -455,6 +455,15 @@
X   if (! af && bf)
X     return -1;
X 
X+#if 1
X+  /* Symbols that start with '.' might be section names, so sort them
X+     after symbols that don't start with '.'.  */
X+  if (an[0] == '.' && bn[0] != '.')
X+    return 1;
X+  if (an[0] != '.' && bn[0] == '.')
X+    return -1;
X+#endif
X+
X   /* Try to sort global symbols before local symbols before function
X      symbols before debugging symbols.  */
X 
XIndex: ../opcodes/i386-dis.c
X@@ -1232,6 +1232,14 @@
X 	(*info->fprintf_func) (info->stream, ",");
X       if (op_index[2] != -1)
X 	(*info->print_address_func) ((bfd_vma) op_address[op_index[2]], info);
X+#if 1
X+      /* XXX foo */
X+      else if (!strncmp(third, "*0x", 3) && !strchr(third, '(')) {
X+	long add = strtoul(third + 1, (char **)0, 0);
X+	(*info->fprintf_func) (info->stream, "*0x");
X+	(*info->print_address_func) (add, info);
X+      }
X+#endif
X       else
X 	(*info->fprintf_func) (info->stream, "%s", third);
X     }
END-of-patches/patch-bc
echo x - patches/patch-coffcode3
sed 's/^X//' >patches/patch-coffcode3 << 'END-of-patches/patch-coffcode3'
XIndex: ../bfd/coffcode.h
X@@ -313,7 +313,7 @@
X #define STRING_SIZE_SIZE (4)
X 
X static long sec_to_styp_flags PARAMS ((const char *, flagword));
X-static flagword styp_to_sec_flags PARAMS ((bfd *, PTR, const char *));
X+static flagword styp_to_sec_flags PARAMS ((bfd *, PTR, const char *, asection *));
X static boolean coff_bad_format_hook PARAMS ((bfd *, PTR));
X static boolean coff_new_section_hook PARAMS ((bfd *, asection *));
X static boolean coff_set_arch_mach_hook PARAMS ((bfd *, PTR));
END-of-patches/patch-coffcode3
echo x - patches/patch-coffgen7
sed 's/^X//' >patches/patch-coffgen7 << 'END-of-patches/patch-coffgen7'
XIn objdump, show weak COFF symbols' AUX records:
X
XIndex: ../bfd/coffgen.c
X@@ -2050,6 +2050,13 @@
X 		case C_FILE:
X 		  fprintf (file, "File ");
X 		  break;
X+#if 1
X+		case C_NT_WEAK:
X+		  fprintf (file, "AUX tagndx %ld characteristics %ld",
X+			   tagndx,
X+			   auxp->u.auxent.x_sym.x_misc.x_fsize);
X+		  break;
X+#endif
X 
X 		case C_STAT:
X 		  if (combined->u.syment.n_type == T_NULL)
END-of-patches/patch-coffgen7
echo x - patches/patch-cofflink-reloc2
sed 's/^X//' >patches/patch-cofflink-reloc2 << 'END-of-patches/patch-cofflink-reloc2'
XIndex: ../bfd/cofflink.c
X@@ -2393,6 +2393,7 @@
X       bfd_vma val;
X       reloc_howto_type *howto;
X       bfd_reloc_status_type rstat;
X+      int r_abs_p = 0;
X 
X       symndx = rel->r_symndx;
X 
X@@ -2454,6 +2455,10 @@
X 	      val = (h->root.u.def.value
X 		     + sec->output_section->vma
X 		     + sec->output_offset);
X+#if 1
X+	      if (bfd_is_abs_section(sec))
X+		r_abs_p = 1;
X+#endif
X 	      }
X 
X 	  else if (! info->relocateable)
X@@ -2671,7 +2671,7 @@
X       if (info->base_file)
X 	{
X 	  /* Emit a reloc if the backend thinks it needs it. */
X-	  if (sym && pe_data (output_bfd)->in_reloc_p (output_bfd, howto))
X+	  if (sym && !r_abs_p && pe_data (output_bfd)->in_reloc_p (output_bfd, howto))
X 	    {
X 	      /* Relocation to a symbol in a section which isn't
X 		 absolute.  We output the address here to a file.
END-of-patches/patch-cofflink-reloc2
echo x - patches/patch-cofflink4d
sed 's/^X//' >patches/patch-cofflink4d << 'END-of-patches/patch-cofflink4d'
X(Partly) handle weak COFF symbols (C_NT_WEAK): `If a definition of sym1 is 
Xlinked, then an external reference to the symbol is resolved normally.
XIf a definition of sym1 is not linked, then all references to the 
Xweak external for sym1 refer to sym2 instead. The external symbol, sym2,
Xmust always be linked; typically it is defined in the module containing
Xthe weak reference to sym1.'  sym2 is referred to by the tagndx AUX
Xrecord entry; find it and copy the value...
X
XIndex: ../bfd/cofflink.c
X@@ -26,6 +26,7 @@
X #include "libbfd.h"
X #include "coff/internal.h"
X #include "libcoff.h"
X+#include "coff/i386.h"
X 
X static boolean coff_link_add_object_symbols
X   PARAMS ((bfd *, struct bfd_link_info *));
X@@ -2678,6 +2690,81 @@
X 
X 	  else if (! info->relocateable)
X 	    {
X+#if 1
X+	      if (h->root.type == bfd_link_hash_undefweak &&
X+		  h->class == C_NT_WEAK &&
X+		  h->numaux == 1 &&
X+		  _bfd_coff_get_external_symbols (h->root.u.undef.abfd)) {
X+		      
X+		struct internal_scnhdr *internal_s = (struct internal_scnhdr *) h->root.u.undef.abfd->sections;
X+		const char *name = h->root.root.string;
X+		bfd_byte *esym, *esymend;
X+		int ndx = 0;
X+
X+		esym = (bfd_byte *) obj_coff_external_syms (h->root.u.undef.abfd);
X+		esymend = esym + obj_raw_syment_count (h->root.u.undef.abfd) * SYMESZ;
X+
X+		while (esym < esymend)
X+		  {
X+		    struct internal_syment isym;
X+
X+		    bfd_coff_swap_sym_in (h->root.u.undef.abfd, (PTR) esym, (PTR) &isym);
X+
X+		    if (sizeof (internal_s->s_name) > SYMNMLEN)
X+		      {
X+			/* This case implies that the matching symbol name
X+			   will be in the string table.  */
X+			abort ();
X+		      }
X+
X+		    if (isym.n_sclass == C_NT_WEAK
X+			&& isym.n_numaux == 1)
X+		      {
X+			char buf[SYMNMLEN + 1];
X+			const char *symname;
X+
X+			symname = _bfd_coff_internal_syment_name (h->root.u.undef.abfd, &isym, buf);
X+			if (symname == NULL)
X+			  abort ();
X+
X+			if (strcmp (name, symname) == 0)
X+			  {
X+			    union internal_auxent aux;
X+
X+			    /* This is the weak symbol.  */
X+
X+			    bfd_coff_swap_aux_in (h->root.u.undef.abfd,
X+						  (PTR) (esym + SYMESZ),
X+						  isym.n_type, isym.n_sclass,
X+						  0, isym.n_numaux, (PTR) &aux);
X+
X+			    if (aux.x_sym.x_tagndx.l) {
X+			      struct internal_syment csym;
X+			      struct coff_link_hash_entry *hc;
X+			      bfd_byte *s = esym + (aux.x_sym.x_tagndx.l-ndx) * SYMESZ;
X+
X+			      bfd_coff_swap_sym_in (h->root.u.undef.abfd, (PTR) s, (PTR) &csym);
X+			      symname = _bfd_coff_internal_syment_name (h->root.u.undef.abfd, &csym, buf);
X+			      if (hc = (struct coff_link_hash_entry *)bfd_hash_lookup (&info->hash->table,
X+				   symname, false, false)) {
X+				h->root.u.def.value = hc->root.u.def.value;
X+				h->root.u.def.section = hc->root.u.def.section;
X+				h->root.type = bfd_link_hash_defined;
X+			      }
X+			    }
X+
X+			    break;
X+			  }
X+		      }
X+
X+		    esym += (isym.n_numaux + 1) * SYMESZ;
X+		    ndx += isym.n_numaux + 1;
X+		  }
X+	      }
X+		/* (h->aux)->x_sym.x_misc.x_fsize
X+		   (h->aux)->x_sym.x_tagndx.l */
X+	       else
X+#endif
X 	      if (! ((*info->callbacks->undefined_symbol)
X 		     (info, h->root.root.string, input_bfd, input_section,
X 		      rel->r_vaddr - input_section->vma)))
END-of-patches/patch-cofflink4d
echo x - patches/patch-diff1
sed 's/^X//' >patches/patch-diff1 << 'END-of-patches/patch-diff1'
XFreeBSD has setmode(3) but not O_BINARY...
X
XIndex: ../diff/cmp.c
X@@ -208,7 +208,9 @@
X 	    error (2, errno, "%s", file[i1]);
X 	}
X #if HAVE_SETMODE
X+#ifdef O_BINARY
X       setmode (file_desc[i1], O_BINARY);
X+#endif
X #endif
X     }
X 
END-of-patches/patch-diff1
echo x - patches/patch-diff2
sed 's/^X//' >patches/patch-diff2 << 'END-of-patches/patch-diff2'
XIndex: ../diff/diff.c
X@@ -556,8 +556,10 @@
X 	     On Posix hosts, this has no effect.  */
X #if HAVE_SETMODE
X 	  binary_I_O = 1;
X+#ifdef O_BINARY
X 	  setmode (STDOUT_FILENO, O_BINARY);
X #endif
X+#endif
X 	  break;
X 
X 	default:
X@@ -1060,10 +1062,12 @@
X 	  }
X 
X #if HAVE_SETMODE
X+#ifdef O_BINARY
X       if (binary_I_O)
X 	for (i = 0; i <= 1; i++)
X 	  if (0 <= inf[i].desc)
X 	    setmode (inf[i].desc, O_BINARY);
X+#endif
X #endif
X 
X       /* Compare the files, if no error was found.  */
END-of-patches/patch-diff2
echo x - patches/patch-diff3
sed 's/^X//' >patches/patch-diff3 << 'END-of-patches/patch-diff3'
XIndex: ../diff/io.c
X@@ -101,13 +101,16 @@
X 	{
X 	  /* Check first part of file to see if it's a binary file.  */
X #if HAVE_SETMODE
X+#ifdef O_BINARY
X 	  int oldmode = setmode (current->desc, O_BINARY);
X #endif
X+#endif
X 	  size_t n = read (current->desc, current->buffer, current->bufsize);
X 	  if (n == -1)
X 	    pfatal_with_name (current->name);
X 	  current->buffered_chars = n;
X #if HAVE_SETMODE
X+#ifdef O_BINARY
X 	  if (oldmode != O_BINARY)
X 	    {
X 	      if (lseek (current->desc, - (off_t) n, SEEK_CUR) == -1)
X@@ -116,6 +119,7 @@
X 	      current->buffered_chars = 0;
X 	    }
X #endif
X+#endif
X 	  return binary_file_p (current->buffer, n);
X 	}
X     }
X@@ -680,8 +684,10 @@
X   if (appears_binary)
X     {
X #if HAVE_SETMODE
X+#ifdef O_BINARY
X       setmode (filevec[0].desc, O_BINARY);
X       setmode (filevec[1].desc, O_BINARY);
X+#endif
X #endif
X       return 1;
X     }
END-of-patches/patch-diff3
echo x - patches/patch-dlltool1
sed 's/^X//' >patches/patch-dlltool1 << 'END-of-patches/patch-dlltool1'
Xdlltool: s/_\?/\?/g in names, M$ compatibility...
X
XIndex: ../binutils/dlltool.c
X@@ -1643,7 +1643,11 @@
X 		}
X 	    }
X 	  fprintf (f, "\t%s%s%s%s\t%s %d\n", ASM_RVA_BEFORE,
X+#if 1
X+		   (*exp->internal_name == '?' ? "" : ASM_PREFIX),
X+#else
X 		   ASM_PREFIX,
X+#endif
X 		   exp->internal_name, ASM_RVA_AFTER, ASM_C, exp->ordinal);
X 	  i++;
X 	}
X@@ -1725,10 +1729,17 @@
X 	    /* We use a single underscore for MS compatibility, and a
X                double underscore for backward compatibility with old
X                cygwin releases.  */
X+#if 1
X+	    fprintf (f, "\t%s\t__imp%s%s\n", ASM_GLOBAL, (*exp->name == '?' ? "" : "_"), exp->name);
X+	    fprintf (f, "\t%s\t_imp_%s%s\n", ASM_GLOBAL, (*exp->name == '?' ? "" : "_"), exp->name);
X+	    fprintf (f, "__imp%s%s:\n", (*exp->name == '?' ? "" : "_"), exp->name);
X+	    fprintf (f, "_imp_%s%s:\n", (*exp->name == '?' ? "" : "_"), exp->name);
X+#else
X 	    fprintf (f, "\t%s\t__imp_%s\n", ASM_GLOBAL, exp->name);
X 	    fprintf (f, "\t%s\t_imp__%s\n", ASM_GLOBAL, exp->name);
X 	    fprintf (f, "__imp_%s:\n", exp->name);
X 	    fprintf (f, "_imp__%s:\n", exp->name);
X+#endif
X 	    fprintf (f, "\t%s\t%s\n", ASM_LONG, exp->name);
X 	  }
X     }
X@@ -1971,6 +1982,10 @@
X   char *copy = xmalloc (len +1 );
X   strcpy (copy, ASM_PREFIX);
X   strcat (copy, prefix);
X+#if 1
X+  if (*copy && *name == '?' && copy[strlen(copy)-1] == '_')
X+    copy[strlen(copy)-1] = '\0';
X+#endif
X   strcat (copy, name);
X   return copy;
X }
END-of-patches/patch-dlltool1
echo x - patches/patch-edata11
sed 's/^X//' >patches/patch-edata11 << 'END-of-patches/patch-edata11'
XLocate a .edata section even if it is hidden inside .rdata...
X
XIndex: ../bfd/coffgen.c
X@@ -220,6 +221,27 @@
X 	  bfd_coff_swap_scnhdr_in (abfd,
X 				   (PTR) (external_sections + i * scnhsz),
X 				   (PTR) & tmp);
X+#if 1
X+	  if (!strcmp ((abfd->xvec)->name, "pei-i386") &&
X+	      !strcmp (tmp.s_name, ".rdata") &&
X+	      abfd->tdata.pe_obj_data->pe_opthdr.DataDirectory[0].VirtualAddress + (abfd->tdata.pe_obj_data)->pe_opthdr.ImageBase > tmp.s_vaddr &&
X+	      abfd->tdata.pe_obj_data->pe_opthdr.DataDirectory[0].VirtualAddress + (abfd->tdata.pe_obj_data)->pe_opthdr.ImageBase + abfd->tdata.pe_obj_data->pe_opthdr.DataDirectory[0].Size <= tmp.s_vaddr + tmp.s_size) {
X+	      /* msvc4(?) now hides .edata at the end of .rdata...
X+	       * fake it .
X+	       */
X+	      struct internal_scnhdr tmp2 = tmp;
X+
X+	      tmp2.s_vaddr = abfd->tdata.pe_obj_data->pe_opthdr.DataDirectory[0].VirtualAddress + (abfd->tdata.pe_obj_data)->pe_opthdr.ImageBase;
X+	      tmp.s_paddr = tmp.s_size = tmp2.s_vaddr - tmp.s_vaddr;
X+	      tmp2.s_size -= tmp2.s_vaddr - tmp.s_vaddr;
X+	      tmp2.s_paddr -= tmp2.s_vaddr - tmp.s_vaddr;
X+	      tmp2.s_scnptr += tmp2.s_vaddr - tmp.s_vaddr;
X+	      strcpy (tmp2.s_name, ".edata");
X+	      /* XX nscns + 1? */
X+	      if (! make_a_section_from_file (abfd, &tmp2, nscns + 1))
X+		goto fail;
X+	  }
X+#endif
X 	  if (! make_a_section_from_file (abfd, &tmp, i + 1))
X 	    goto fail;
X 	}
END-of-patches/patch-edata11
echo x - patches/patch-gas-sym
sed 's/^X//' >patches/patch-gas-sym << 'END-of-patches/patch-gas-sym'
XAllow '?' in symbols, M$ uses them a lot in C++ mangled names...
X
XIndex: ../gas/read.c
X@@ -232,6 +232,10 @@
X 
X   if (flag_mri)
X     lex_type['?'] = 3;
X+#if 1
X+  /* M$ too.. */
X+  lex_type['?'] = 3;
X+#endif
X }
X 
X /* set up pseudo-op tables */
END-of-patches/patch-gas-sym
echo x - patches/patch-gas-sym2
sed 's/^X//' >patches/patch-gas-sym2 << 'END-of-patches/patch-gas-sym2'
XIndex: ../gas/config/tc-i386.c
X@@ -630,6 +630,10 @@
X     digit_chars['-'] = '-';
X     identifier_chars['_'] = '_';
X     identifier_chars['.'] = '.';
X+#if 1
X+    /* M$ .. */
X+    operand_chars['?'] = '?';
X+#endif
X 
X     for (p = operand_special_chars; *p != '\0'; p++)
X       operand_chars[(unsigned char) *p] = *p;
END-of-patches/patch-gas-sym2
echo x - patches/patch-gccp1
sed 's/^X//' >patches/patch-gccp1 << 'END-of-patches/patch-gccp1'
XThis is my `solution' to the fhandler* duplicate symbol problem:
XM$ apparently uses comdat sections differently from gcc; only compare
Xthe comdat symbols if the object was not compiled by gcc...
X
XIndex: ../bfd/bfd-in2.h
X@@ -2484,6 +2484,9 @@
X      /* Used by the application to hold private data*/
X     PTR usrdata;
X 
X+#if 1
X+    boolean gcc_compiled;           
X+#endif
X    /* Where all the allocated stuff under this BFD goes.  This is a
X      struct objalloc *, but we use PTR to avoid requiring the inclusion of
X      objalloc.h.  */
END-of-patches/patch-gccp1
echo x - patches/patch-gccp2
sed 's/^X//' >patches/patch-gccp2 << 'END-of-patches/patch-gccp2'
XIndex: ../bfd/cofflink.c
X@@ -338,6 +339,17 @@
X 
X       bfd_coff_swap_sym_in (abfd, (PTR) esym, (PTR) &sym);
X 
X+#if 1
X+      if (sym.n_sclass == C_LABEL)
X+	{
X+	  const char *name;
X+	  char buf[SYMNMLEN + 1];
X+
X+	  name = _bfd_coff_internal_syment_name (abfd, &sym, buf);
X+	  if (!strncmp(name, "gcc", 3) && strstr(name+3, "_compiled."))
X+	    abfd->gcc_compiled = true;
X+	}
X+#endif
X       if (sym.n_sclass == C_EXT
X 	   || sym.n_sclass == C_WEAKEXT
X 	   || (obj_pe (abfd) && sym.n_sclass == C_NT_WEAK)
END-of-patches/patch-gccp2
echo x - patches/patch-gccp3c
sed 's/^X//' >patches/patch-gccp3c << 'END-of-patches/patch-gccp3c'
XIndex: ../ld/ldlang.c
X@@ -765,7 +765,14 @@
X 
X   for (l = sec_link_once_list; l != NULL; l = l->next)
X     {
X+#if 1
X+      if (strcmp (name, bfd_get_section_name (l->sec->owner, l->sec)) == 0
X+	 && (l->sec->owner->gcc_compiled || sec->owner->gcc_compiled
X+	     || (!(l->sec->pe_comdat_sym_name)) || (!(sec->pe_comdat_sym_name))
X+	     || (strcmp (l->sec->pe_comdat_sym_name, sec->pe_comdat_sym_name) == 0)))
X+#else
X       if (strcmp (name, bfd_get_section_name (l->sec->owner, l->sec)) == 0)
X+#endif
X 	{
X 	  /* The section has already been linked.  See if we should
X              issue a warning.  */
END-of-patches/patch-gccp3c
echo x - patches/patch-man1dir1
sed 's/^X//' >patches/patch-man1dir1 << 'END-of-patches/patch-man1dir1'
XMove a few *.1 from man to man/man1, there a still some left tho:
X
X-rw-r--r--  1 root  bin    9186 Feb 20 20:16 bison.1
X-rw-r--r--  1 root  bin  104809 Feb 20 20:18 flex.1
X-rw-r--r--  1 root  bin   18473 Feb 20 20:14 i586-cygwin32-g++.1
X-rw-r--r--  1 root  bin    7671 Feb 20 20:18 make.1
X
XIndex: ../gcc/Makefile.in
X@@ -290,7 +290,7 @@
X build_exeext = @build_exeext@
X 
X # Directory in which to put man pages.
X-mandir = @mandir@/man1
X+man1dir = @mandir@/man1
X # Directory in which to find other cross-compilation tools and headers.
X # Used in install-cross.
X tooldir = $(exec_prefix)/$(target_alias)
X@@ -2335,12 +2335,12 @@
X 	-if [ -d $(tooldir) ] ; then true ; else mkdir $(tooldir) ; chmod a+rx $(tooldir) ; fi
X 	-if [ -d $(assertdir) ] ; then true ; else mkdir $(assertdir) ; chmod a+rx $(assertdir) ; fi
X 	-if [ -d $(infodir) ] ; then true ; else mkdir $(infodir) ; chmod a+rx $(infodir) ; fi
X-# We don't use mkdir -p to create the parents of mandir,
X+# We don't use mkdir -p to create the parents of man1dir,
X # because some systems don't support it.
X-# Instead, we use this technique to create the immediate parent of mandir.
X-	-parent=`echo $(mandir)|sed -e 's@/[^/]*$$@@'`; \
X+# Instead, we use this technique to create the immediate parent of man1dir.
X+	-parent=`echo $(man1dir)|sed -e 's@/[^/]*$$@@'`; \
X 	if [ -d $$parent ] ; then true ; else mkdir $$parent ; chmod a+rx $$parent ; fi
X-	-if [ -d $(mandir) ] ; then true ; else mkdir $(mandir) ; chmod a+rx $(mandir) ; fi
X+	-if [ -d $(man1dir) ] ; then true ; else mkdir $(man1dir) ; chmod a+rx $(man1dir) ; fi
X 
X # Install the compiler executables built during cross compilation.
X install-common: native installdirs $(EXTRA_PARTS) lang.install-common
X@@ -2436,17 +2436,17 @@
X # Install the man pages.
X install-man: installdirs $(srcdir)/gcc.1 $(srcdir)/cccp.1 lang.install-man
X 	-if [ -f gcc-cross$(exeext) ] ; then \
X-	  rm -f $(mandir)/$(GCC_CROSS_NAME)$(manext); \
X-	  $(INSTALL_DATA) $(srcdir)/gcc.1 $(mandir)/$(GCC_CROSS_NAME)$(manext); \
X-	  chmod a-x $(mandir)/$(GCC_CROSS_NAME)$(manext); \
X+	  rm -f $(man1dir)/$(GCC_CROSS_NAME)$(manext); \
X+	  $(INSTALL_DATA) $(srcdir)/gcc.1 $(man1dir)/$(GCC_CROSS_NAME)$(manext); \
X+	  chmod a-x $(man1dir)/$(GCC_CROSS_NAME)$(manext); \
X 	else \
X-	  rm -f $(mandir)/$(GCC_INSTALL_NAME)$(manext); \
X-	  $(INSTALL_DATA) $(srcdir)/gcc.1 $(mandir)/$(GCC_INSTALL_NAME)$(manext); \
X-	  chmod a-x $(mandir)/$(GCC_INSTALL_NAME)$(manext); \
X-	fi
X-	-rm -f $(mandir)/cccp$(manext)
X-	-$(INSTALL_DATA) $(srcdir)/cccp.1 $(mandir)/cccp$(manext)
X-	-chmod a-x $(mandir)/cccp$(manext)
X+	  rm -f $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \
X+	  $(INSTALL_DATA) $(srcdir)/gcc.1 $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \
X+	  chmod a-x $(man1dir)/$(GCC_INSTALL_NAME)$(manext); \
X+	fi
X+	-rm -f $(man1dir)/cccp$(manext)
X+	-$(INSTALL_DATA) $(srcdir)/cccp.1 $(man1dir)/cccp$(manext)
X+	-chmod a-x $(man1dir)/cccp$(manext)
X 
X # Install the library.
X install-libgcc: libgcc.a installdirs
X@@ -2544,11 +2544,11 @@
X 	-rm -rf $(bindir)/protoize$(exeext)
X 	-rm -rf $(bindir)/unprotoize$(exeext)
X 	-rm -rf $(bindir)/gcov$(exeext)
X-	-rm -rf $(mandir)/$(GCC_INSTALL_NAME)$(manext)
X-	-rm -rf $(mandir)/$(GCC_CROSS_NAME)$(manext)
X-	-rm -rf $(mandir)/cccp$(manext)
X-	-rm -rf $(mandir)/protoize$(manext)
X-	-rm -rf $(mandir)/unprotoize$(manext)
X+	-rm -rf $(man1dir)/$(GCC_INSTALL_NAME)$(manext)
X+	-rm -rf $(man1dir)/$(GCC_CROSS_NAME)$(manext)
X+	-rm -rf $(man1dir)/cccp$(manext)
X+	-rm -rf $(man1dir)/protoize$(manext)
X+	-rm -rf $(man1dir)/unprotoize$(manext)
X 	-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
X #
X # These targets are for the dejagnu testsuites. The file site.exp 
END-of-patches/patch-man1dir1
echo x - patches/patch-peicode-idata5a
sed 's/^X//' >patches/patch-peicode-idata5a << 'END-of-patches/patch-peicode-idata5a'
XUse the position of the Import Directory stored in the Data Directory...
X
XIndex: ../bfd/peicode.h
X@@ -1292,11 +1292,25 @@
X 	  ;
X 	}
X       
X+#if 1
X+      if (extra->DataDirectory[1].VirtualAddress &&
X+	  extra->DataDirectory[1].Size) {
X+	bfd_byte *vdir = data+extra->DataDirectory[1].VirtualAddress+adj;
X+	hint_addr = bfd_get_32(abfd, vdir+i);
X+	time_stamp = bfd_get_32(abfd, vdir+i+4);
X+	forward_chain = bfd_get_32(abfd, vdir+i+8);
X+	dll_name = bfd_get_32(abfd, vdir+i+12);
X+	first_thunk = bfd_get_32(abfd, vdir+i+16);
X+      } else {
X+#endif
X       hint_addr = bfd_get_32(abfd, data+i);
X       time_stamp = bfd_get_32(abfd, data+i+4);
X       forward_chain = bfd_get_32(abfd, data+i+8);
X       dll_name = bfd_get_32(abfd, data+i+12);
X       first_thunk = bfd_get_32(abfd, data+i+16);
X+#if 1
X+      }
X+#endif
X       
X       fprintf(file, "%08lx %08lx %08lx %08lx %08lx\n",
X 	      hint_addr,
END-of-patches/patch-peicode-idata5a
echo x - patches/patch-peicode2
sed 's/^X//' >patches/patch-peicode2 << 'END-of-patches/patch-peicode2'
XIn objdump, skip bad pointer values instead of dumping core...
X
XIndex: ../bfd/peicode.h
X@@ -1410,7 +1410,16 @@
X 
X 	  for (j = 0; j < stop; j += 4)
X 	    {
X+#if 1
X+	      unsigned long member;
X+	      if (data + idx + j > data + datasize ||
X+		data + idx + j < data) {
X+		fprintf(file, "\t[Bogus offset %04lx, skipping]\n", idx);
X+		break;
X+	      }
X+#else
X 	      unsigned long member = bfd_get_32 (abfd, data + idx + j);
X+#endif
X 
X 	      if (member == 0)
X 		break;
X@@ -1454,6 +1463,18 @@
X 	      bfd_vma hint_member = 0;
X 	      bfd_vma iat_member;
X 
X+#if 1
X+	      if (data + idx + j > data + datasize ||
X+		data + idx + j < data) {
X+		fprintf(file, "\t[Bogus offset %04lx, skipping]\n", idx);
X+		break;
X+	      }
X+	      if (data + idx2 + j > data + datasize ||
X+		data + idx2 + j < data) {
X+		fprintf(file, "\t[Bogus offset %04lx, skipping]\n", idx2);
X+		break;
X+	      }
X+#endif
X 	      if (hint_addr != 0)
X 		hint_member = bfd_get_32 (abfd, data + idx + j);
X 	      iat_member = bfd_get_32 (abfd, data + idx2 + j);
X@@ -1884,8 +1905,18 @@
X       size = bfd_get_32(abfd, data+i+4);
X       number = (size - 8) / 2;
X 
X+#if 1
X+      if (size == 0 || i + size > stop)
X+#else
X       if (size == 0) 
X+#endif
X 	{
X+#if 1
X+	  if (i + size > stop)
X+	    fprintf (file,
X+		     "\n[Bogus size, ignoring:\n\tVirtual Address: %08lx Chunk size %ld (0x%lx) Number of fixups %ld]\n",
X+		     virtual_address, size, size, number);
X+#endif
X 	  break;
X 	}
X 
X@@ -1900,7 +1932,15 @@
X 	  int off = e & 0x0FFF;
X 
X 	  if (t > 5) 
X+#if 1
X+	    fprintf(file,
X+		   "\treloc %4d offset %4x [%4lx] [type %d]\n",
X+		   j, off, (long) (off + virtual_address), t);
X+	  else
X+#else
X+	  if (t > 5) 
X 	    abort();
X+#endif
X 
X 	  fprintf(file,
X 		  _("\treloc %4d offset %4x [%4lx] %s\n"), 
END-of-patches/patch-peicode2
echo x - patches/patch-peicode3
sed 's/^X//' >patches/patch-peicode3 << 'END-of-patches/patch-peicode3'
XIndex: ../bfd/peicode.h
X@@ -1462,6 +1462,13 @@
X 	      if (time_stamp != 0
X 		  && first_thunk != 0
X 		  && first_thunk != hint_addr)
X+#if 1
X+		if (data + first_thunk + adj + j > data + datasize ||
X+		  data + first_thunk + adj + j < data)
X+		    fprintf (file, "\t[Bogus offset %04lx, skipping]",
X+			 data + first_thunk + adj + j);
X+		else
X+#endif
X 		fprintf (file, "\t%04lx",
X 			 bfd_get_32 (abfd, data + first_thunk + adj + j));
X 
END-of-patches/patch-peicode3
echo x - patches/patch-peicode3a
sed 's/^X//' >patches/patch-peicode3a << 'END-of-patches/patch-peicode3a'
XIndex: ../bfd/peicode.h
X@@ -1414,6 +1414,12 @@
X 
X       /* the image base is present in the section->vma */
X       dll = (char *) data + dll_name + adj;
X+#if 1
X+      if (!dll || dll_name + adj > datasize ||
X+	dll_name + adj < 0)
X+	fprintf(file, _("\n\tDLL Name: (bogus offset %04lx, skipping)\n"), dll_name);
X+      else
X+#endif
X       fprintf(file, _("\n\tDLL Name: %s\n"), dll);
X 
X       if (hint_addr != 0)
END-of-patches/patch-peicode3a
echo x - patches/patch-peicode4a
sed 's/^X//' >patches/patch-peicode4a << 'END-of-patches/patch-peicode4a'
XIndex: ../bfd/peicode.h
X@@ -1437,6 +1437,7 @@
X 		fprintf(file, "\t[Bogus offset %04lx, skipping]\n", idx);
X 		break;
X 	      }
X+	      member = bfd_get_32 (abfd, data + idx + j);
X #else
X 	      unsigned long member = bfd_get_32 (abfd, data + idx + j);
X #endif
END-of-patches/patch-peicode4a
echo x - patches/patch-peicode77
sed 's/^X//' >patches/patch-peicode77 << 'END-of-patches/patch-peicode77'
XIndex: ../bfd/peicode.h
X@@ -1452,6 +1452,13 @@
X 		  int ordinal;
X 		  char *member_name;
X 
X+#if 1
X+		  if (data + member + adj > data + datasize ||
X+		    data + member + adj < data) {
X+		    fprintf(file, "\t[Bogus offset %04lx, skipping]\n", member + adj);
X+		    break;
X+		  }
X+#endif
X 		  ordinal = bfd_get_16 (abfd, data + member + adj);
X 		  member_name = (char *) data + member + adj + 2;
X 		  fprintf (file, "\t%04lx\t %4d  %s",
X@@ -1526,6 +1533,13 @@
X 		    }
X 		  else 
X 		    {
X+#if 1
X+		      if (data +  iat_member + adj > data + datasize ||
X+			data + iat_member + adj < data) {
X+			fprintf(file, "\t[Bogus offset %04lx, skipping]\n", iat_member + adj);
X+			break;
X+		      }
X+#endif
X 		      ordinal = bfd_get_16(abfd,
X 					   data + iat_member + adj);
X 		      member_name = (char *) data + iat_member + adj + 2;
END-of-patches/patch-peicode77
echo x - patches/patch-readelf1
sed 's/^X//' >patches/patch-readelf1 << 'END-of-patches/patch-readelf1'
XInclude <sys/stat.h> after <stdio.h>, avoiding missing definitions
Xon FreeBSD...
X
XIndex: ../binutils/readelf.c
X@@ -23,8 +23,8 @@
X 
X 
X #include <assert.h>
X-#include <sys/stat.h>
X #include <stdio.h>
X+#include <sys/stat.h>
X #include <time.h>
X 
X #include "bfd.h"
END-of-patches/patch-readelf1
echo x - patches/patch-sectionsym1
sed 's/^X//' >patches/patch-sectionsym1 << 'END-of-patches/patch-sectionsym1'
XIgnore multiple definitions of .idata$ section symbols...
X
XIndex: ../bfd/cofflink.c
X@@ -392,6 +392,17 @@
X 	      || (obj_pe (abfd) && sym.n_sclass == C_NT_WEAK))
X 	    flags = BSF_WEAK;
X 
X+#if 1
X+	  /* The section symbols for the .idata$ sections have class 0x68
X+	  (C_SECTION), which MS documentation indicates is a section
X+	  symbol.  Unfortunately, the value field in the symbol is simply a
X+	  copy of the .idata section's flags rather than something useful.
X+	  Pass down the flag BSF_SECTION_SYM so that we can ignore
X+	  multiple definitions of these symbols.  */
X+
X+	  if (sym.n_sclass == C_SECTION)
X+	    flags = BSF_SECTION_SYM;
X+#endif
X 	  if (! (bfd_coff_link_add_one_symbol
X 		 (info, abfd, name, flags, section, value,
X 		  (const char *) NULL, copy, false,
END-of-patches/patch-sectionsym1
echo x - patches/patch-sectionsym2
sed 's/^X//' >patches/patch-sectionsym2 << 'END-of-patches/patch-sectionsym2'
XIndex: ../bfd/linker.c
X@@ -1772,6 +1772,14 @@
X 		&& bfd_is_abs_section (section)
X 		&& value == mval)
X 	      break;
X+#if 1
X+	    /* Ignore a redefinition of a section symbol to the same
X+	       value; it's harmless.  */
X+	    if (h->type == bfd_link_hash_defined
X+		&& flags == BSF_SECTION_SYM
X+		&& value == mval)
X+	      break;
X+#endif
X 
X 	    if (! ((*info->callbacks->multiple_definition)
X 		   (info, h->root.string, msec->owner, msec, mval, abfd,
END-of-patches/patch-sectionsym2
echo x - patches/patch-windres02
sed 's/^X//' >patches/patch-windres02 << 'END-of-patches/patch-windres02'
XWindres fix posted to the list...
X
XIndex: ../binutils/resbin.c
X***************
X*** 2255,2265 ****
X  		length += 6;
X  		vilen += 6;
X  		vslen += 6;
X  		vsslen = 6;
X  
X- 		put_16 (big_endian, 0, vssd->data + 2);
X  		put_16 (big_endian, 1, vssd->data + 4);
X  
X  		*pp = vssd;
X  		pp = &vssd->next;
X  
X--- 2255,2264 ----
X***************
X*** 2279,2288 ****
X--- 2278,2290 ----
X  		*pp = unicode_to_bin (vs->value, big_endian);
X  		length += (*pp)->length;
X  		vilen += (*pp)->length;
X  		vslen += (*pp)->length;
X  		vsslen += (*pp)->length;
X+ 
X+ 		put_16 (big_endian, (*pp)->length, vssd->data + 2);
X+ 
X  		pp = &(*pp)->next;
X  
X  		put_16 (big_endian, vsslen, vssd->data);
X  	      }
X  
END-of-patches/patch-windres02
echo x - Makefile
sed 's/^X//' >Makefile << 'END-of-Makefile'
X# New ports collection makefile for: GNU-WIN32 cross compiler
X# Version required:	b20.1
X# Whom:			Juergen Lock <nox@jelal.kn-bremen.de>
X# Date created:		Sun Feb  7 02:25:44 MET 1999
X#
X# $Id: Makefile,v 1.1 1999/02/06 22:47:40 nox Exp $
X
XDISTNAME=	gnu-win32
XPKGNAME=	gnu_win32-b20.1
XCATEGORIES=	devel
XMASTER_SITES=	ftp://go.cygnus.com/pub/sourceware.cygnus.com/cygwin/cygwin-b20/
XDISTFILES=	dev-src.tar.bz2
X
XMAINTAINER=	Juergen Lock <nox@jelal.kn-bremen.de>
X
XBUILD_DEPENDS=  bzip2:${PORTSDIR}/archivers/bzip2
X
XDIST_SUBDIR=	${PKGNAME}
XWRKSRC=		${WRKDIR}/${DISTNAME}/src/CROSS
X
X#MAN1=		byacc.1 \
X#		i586-cygwin32-addr2line.1 \
X#		i586-cygwin32-ar.1 \
X#		i586-cygwin32-as.1 \
X#		i586-cygwin32-c++filt.1 \
X#		i586-cygwin32-ld.1 \
X#		i586-cygwin32-nlmconv.1 \
X#		i586-cygwin32-nm.1 \
X#		i586-cygwin32-objcopy.1 \
X#		i586-cygwin32-objdump.1 \
X#		i586-cygwin32-ranlib.1 \
X#		i586-cygwin32-size.1 \
X#		i586-cygwin32-strings.1 \
X#		i586-cygwin32-strip.1 \
X#		patch.1 \
X#		runtest.1 \
X#		send-pr.1
X#man/i586-cygwin32-g++.1
X#man/i586-cygwin32-gcc.1
X
Xdo-extract:
X.if !defined(NO_WRKDIR)
X	@${RM} -rf ${WRKSRC}
X	@${MKDIR} ${WRKSRC}
X.endif
X	bzip2 -dc ${DISTDIR}/${DIST_SUBDIR}/dev-src.tar.bz2 | tar -C ${WRKDIR}/${DISTNAME} -xf -
X
X# needs current /bin/sh later 12/14/96(?)
X# + 2.2 /usr/bin/make (bsd.port.mk)
Xdo-configure:
X#	(cd ${WRKSRC}; CC=gcc  ../configure --target=i386-unknown-cygwin32 --build=i386-unknown-freebsd2.1.7 )
X	(cd ${WRKSRC}; CC=gcc  ../configure --target=i586-cygwin32 --build=i386-unknown-freebsd2.1.7 --prefix=${PREFIX} )
XCC=gcc
X##HAS_CONFIGURE=yes
X##GNU_CONFIGURE=yes
X# bmake forget newlib/libm/libm.a rule??
XUSE_GMAKE=yes
X# writable for configure(?)
XPREFIX=${LOCALBASE}/gnu-win32
X
XAR=ar
XRANLIB=ranlib
X# ??
X#CONFIGURE_ARGS=--target=i386-unknown-cygwin32 --build=i386-unknown-freebsd
X##CONFIGURE_ARGS=--target=i386-unknown-cygwin32 --build=i386-unknown-freebsd2.1.7 -v
X
X# XXX missing -I.s ??
Xpre-configure:
X	-ln -s ../Makefile.in ${WRKSRC}
X#	-ln -s ../config.guess ${WRKSRC}
X#	-ln -s ../configure ${WRKSRC}
X#	-ln -s ../configure.in ${WRKSRC}
X#	-ln -s ../config.sub ${WRKSRC}
X#	-ln -s ../move-if-change ${WRKSRC}
X
X##post-configure:
X##	cd ${WRKSRC}/gcc; gmake installdirs
X#	-ln -s ../install-sh ${WRKSRC}/i386-unknown-cygwin32
X#	-ln -s ../config.sub ${WRKSRC}/i386-unknown-cygwin32
X#	-ln -s newlib/configure.host ${WRKSRC}/i386-unknown-cygwin32
X#	-ln -s ../libstdc++ ${WRKSRC}/i386-unknown-cygwin32/winsup
X##post-configure:
X##	cp -pi ${WRKSRC}/gcc/ginclude/stddef.h ${WRKSRC}/gcc
X##	cp -pi ${WRKSRC}/gcc/cp/inc/new ${WRKSRC}/gcc
X##	cp -pi ${WRKSRC}/gcc/cp/inc/typeinfo ${WRKSRC}/gcc
X##	cp -pi ${WRKSRC}/gcc/cp/inc/exception ${WRKSRC}/gcc
X
X# XXX restart?
X#	-ln -s ../../libstdc++/exception ${WRKSRC}/i386-unknown-cygwin32/libstdc++
X#	-ln -s ../../../libg++/src/new.h ${WRKSRC}/i386-unknown-cygwin32/libg++/src
X#	-ln -s ../../install.sh ${WRKSRC}/i386-unknown-cygwin32/winsup
X#	-ln -s ../../config.sub ${WRKSRC}/i386-unknown-cygwin32/winsup
X#	-ln -s ../../../../newlib/libc/include/getopt.h ${WRKSRC}/i386-unknown-cygwin32/newlib/libc/include
X#	-ln -s ../../../../newlib/libc/include/stdarg.h ${WRKSRC}/i386-unknown-cygwin32/newlib/libc/include
X
X.include <bsd.port.mk>
END-of-Makefile
echo c - files/
mkdir -p files/ > /dev/null 2>&1
echo x - files/md5
sed 's/^X//' >files/md5 << 'END-of-files/md5'
XMD5 (gnu_win32-b20.1/dev-src.tar.bz2) = c696bc4985a38fc824419a4ca9cd1405
END-of-files/md5
echo c - pkg/
mkdir -p pkg/ > /dev/null 2>&1
echo x - pkg/COMMENT
sed 's/^X//' >pkg/COMMENT << 'END-of-pkg/COMMENT'
XThe Cygnus GNU-WIN32 distribution built as cross-compiler
END-of-pkg/COMMENT
echo x - pkg/DESCR
sed 's/^X//' >pkg/DESCR << 'END-of-pkg/DESCR'
X[From winsup/doc/overview*:]
X
XThe Cygwin tools are ports of the popular GNU development
Xtools for Windows NT and 9x. They run thanks to the Cygwin library
Xwhich provides the UNIX system calls and environment these programs
Xexpect.
X
XWith these tools installed, it is possible to write Win32
Xconsole or GUI applications that make use of the standard Microsoft
XWin32 API and/or the Cygwin API. As a result, it is possible to
Xeasily port many significant Unix programs without the need for
Xextensive changes to the source code.  This includes configuring and
Xbuilding most of the available GNU software (including the development
Xtools included with the Cygwin distributions). Even if the
Xcompiler tools are of little to no use to you, you may have
Xinterest in the many standard Unix utilities. They can be used both
Xfrom the bash shell (provided) or from the command.com.
END-of-pkg/DESCR
echo x - pkg/PLIST
sed 's/^X//' >pkg/PLIST << 'END-of-pkg/PLIST'
X@cd /usr/local/gnu-win32
X@owner bin
X@mode 755
Xbin/bison
Xbin/byacc
Xbin/cmp
Xbin/cygcheck.exe
Xbin/cygpath.exe
Xbin/cygwin1.dll
Xbin/diff
Xbin/diff3
Xbin/flex
Xbin/flex++
Xbin/gcov
Xbin/i586-cygwin32-addr2line
Xbin/i586-cygwin32-ar
Xbin/i586-cygwin32-as
Xbin/i586-cygwin32-c++
Xbin/i586-cygwin32-c++filt
Xbin/i586-cygwin32-dlltool
Xbin/i586-cygwin32-dllwrap
Xbin/i586-cygwin32-g++
Xbin/i586-cygwin32-gasp
Xbin/i586-cygwin32-gcc
Xbin/i586-cygwin32-ld
Xbin/i586-cygwin32-nm
Xbin/i586-cygwin32-objcopy
Xbin/i586-cygwin32-objdump
Xbin/i586-cygwin32-protoize
Xbin/i586-cygwin32-ranlib
Xbin/i586-cygwin32-readelf
Xbin/i586-cygwin32-size
Xbin/i586-cygwin32-strings
Xbin/i586-cygwin32-strip
Xbin/i586-cygwin32-unprotoize
Xbin/i586-cygwin32-windres
Xbin/install-sid
Xbin/kill.exe
Xbin/make
Xbin/makeinfo
Xbin/mkgroup.exe
Xbin/mkpasswd.exe
Xbin/mount.exe
Xbin/patch
Xbin/ps.exe
Xbin/runtest
Xbin/sdiff
Xbin/send-pr
Xbin/umount.exe
Xi586-cygwin32/bin/ar
Xi586-cygwin32/bin/as
Xi586-cygwin32/bin/dlltool
Xi586-cygwin32/bin/ld
Xi586-cygwin32/bin/nm
Xi586-cygwin32/bin/ranlib
Xi586-cygwin32/bin/strip
Xi586-cygwin32/include/Windows32/ASCIIFunctions.h
Xi586-cygwin32/include/Windows32/Base.h
Xi586-cygwin32/include/Windows32/CommonFunctions.h
Xi586-cygwin32/include/Windows32/Defines.h
Xi586-cygwin32/include/Windows32/Errors.h
Xi586-cygwin32/include/Windows32/Functions.h
Xi586-cygwin32/include/Windows32/Messages.h
Xi586-cygwin32/include/Windows32/Sockets.h
Xi586-cygwin32/include/Windows32/Structures.h
Xi586-cygwin32/include/Windows32/UnicodeFunctions.h
Xi586-cygwin32/include/_G_config.h
Xi586-cygwin32/include/_ansi.h
Xi586-cygwin32/include/_syslist.h
Xi586-cygwin32/include/a.out.h
Xi586-cygwin32/include/ar.h
Xi586-cygwin32/include/arpa
Xi586-cygwin32/include/arpa/ftp.h
Xi586-cygwin32/include/arpa/inet.h
Xi586-cygwin32/include/arpa/telnet.h
Xi586-cygwin32/include/asm
Xi586-cygwin32/include/asm/byteorder.h
Xi586-cygwin32/include/asm/socket.h
Xi586-cygwin32/include/asm/types.h
Xi586-cygwin32/include/assert.h
Xi586-cygwin32/include/cderr.h
Xi586-cygwin32/include/commdlg.h
Xi586-cygwin32/include/ctype.h
Xi586-cygwin32/include/custcntl.h
Xi586-cygwin32/include/cygwin/cygwin_dll.h
Xi586-cygwin32/include/cygwin/icmp.h
Xi586-cygwin32/include/cygwin/if.h
Xi586-cygwin32/include/cygwin/in.h
Xi586-cygwin32/include/cygwin/ip.h
Xi586-cygwin32/include/cygwin/socket.h
Xi586-cygwin32/include/cygwin/sockios.h
Xi586-cygwin32/include/cygwin/types.h
Xi586-cygwin32/include/cygwin/uio.h
Xi586-cygwin32/include/cygwin/version.h
Xi586-cygwin32/include/ddeml.h
Xi586-cygwin32/include/direct.h
Xi586-cygwin32/include/dirent.h
Xi586-cygwin32/include/dlfcn.h
Xi586-cygwin32/include/dlgs.h
Xi586-cygwin32/include/errno.h
Xi586-cygwin32/include/exceptions.h
Xi586-cygwin32/include/fastmath.h
Xi586-cygwin32/include/fcntl.h
Xi586-cygwin32/include/features.h
Xi586-cygwin32/include/getopt.h
Xi586-cygwin32/include/grp.h
Xi586-cygwin32/include/icmp.h
Xi586-cygwin32/include/ieeefp.h
Xi586-cygwin32/include/io.h
Xi586-cygwin32/include/lastlog.h
Xi586-cygwin32/include/limits.h
Xi586-cygwin32/include/locale.h
Xi586-cygwin32/include/machine
Xi586-cygwin32/include/machine/fastmath.h
Xi586-cygwin32/include/machine/ieeefp.h
Xi586-cygwin32/include/machine/setjmp-dj.h
Xi586-cygwin32/include/machine/setjmp.h
Xi586-cygwin32/include/machine/time.h
Xi586-cygwin32/include/machine/types.h
Xi586-cygwin32/include/malloc.h
Xi586-cygwin32/include/mapi.h
Xi586-cygwin32/include/math.h
Xi586-cygwin32/include/memory.h
Xi586-cygwin32/include/mingw32/alloc.h
Xi586-cygwin32/include/mingw32/assert.h
Xi586-cygwin32/include/mingw32/conio.h
Xi586-cygwin32/include/mingw32/ctype.h
Xi586-cygwin32/include/mingw32/dir.h
Xi586-cygwin32/include/mingw32/direct.h
Xi586-cygwin32/include/mingw32/dirent.h
Xi586-cygwin32/include/mingw32/dos.h
Xi586-cygwin32/include/mingw32/errno.h
Xi586-cygwin32/include/mingw32/excpt.h
Xi586-cygwin32/include/mingw32/fcntl.h
Xi586-cygwin32/include/mingw32/float.h
Xi586-cygwin32/include/mingw32/io.h
Xi586-cygwin32/include/mingw32/limits.h
Xi586-cygwin32/include/mingw32/locale.h
Xi586-cygwin32/include/mingw32/malloc.h
Xi586-cygwin32/include/mingw32/math.h
Xi586-cygwin32/include/mingw32/mem.h
Xi586-cygwin32/include/mingw32/memory.h
Xi586-cygwin32/include/mingw32/process.h
Xi586-cygwin32/include/mingw32/setjmp.h
Xi586-cygwin32/include/mingw32/share.h
Xi586-cygwin32/include/mingw32/signal.h
Xi586-cygwin32/include/mingw32/stdarg.h
Xi586-cygwin32/include/mingw32/stddef.h
Xi586-cygwin32/include/mingw32/stdio.h
Xi586-cygwin32/include/mingw32/stdlib.h
Xi586-cygwin32/include/mingw32/string.h
Xi586-cygwin32/include/mingw32/sys
Xi586-cygwin32/include/mingw32/sys/fcntl.h
Xi586-cygwin32/include/mingw32/sys/file.h
Xi586-cygwin32/include/mingw32/sys/locking.h
Xi586-cygwin32/include/mingw32/sys/stat.h
Xi586-cygwin32/include/mingw32/sys/time.h
Xi586-cygwin32/include/mingw32/sys/timeb.h
Xi586-cygwin32/include/mingw32/sys/types.h
Xi586-cygwin32/include/mingw32/sys/unistd.h
Xi586-cygwin32/include/mingw32/sys/utime.h
Xi586-cygwin32/include/mingw32/tchar.h
Xi586-cygwin32/include/mingw32/time.h
Xi586-cygwin32/include/mingw32/unistd.h
Xi586-cygwin32/include/mingw32/values.h
Xi586-cygwin32/include/mingw32/varargs.h
Xi586-cygwin32/include/mingw32/wchar.h
Xi586-cygwin32/include/mntent.h
Xi586-cygwin32/include/net
Xi586-cygwin32/include/net/if.h
Xi586-cygwin32/include/netdb.h
Xi586-cygwin32/include/netinet
Xi586-cygwin32/include/netinet/in.h
Xi586-cygwin32/include/netinet/ip.h
Xi586-cygwin32/include/netinet/ip_icmp.h
Xi586-cygwin32/include/paths.h
Xi586-cygwin32/include/process.h
Xi586-cygwin32/include/pwd.h
Xi586-cygwin32/include/reent.h
Xi586-cygwin32/include/regdef.h
Xi586-cygwin32/include/regexp.h
Xi586-cygwin32/include/setjmp.h
Xi586-cygwin32/include/shellapi.h
Xi586-cygwin32/include/signal.h
Xi586-cygwin32/include/stdio.h
Xi586-cygwin32/include/stdlib.h
Xi586-cygwin32/include/string.h
Xi586-cygwin32/include/strings.h
Xi586-cygwin32/include/sys/_types.h
Xi586-cygwin32/include/sys/cdefs.h
Xi586-cygwin32/include/sys/config.h
Xi586-cygwin32/include/sys/cygwin.h
Xi586-cygwin32/include/sys/dirent.h
Xi586-cygwin32/include/sys/errno.h
Xi586-cygwin32/include/sys/fcntl.h
Xi586-cygwin32/include/sys/file.h
Xi586-cygwin32/include/sys/ioctl.h
Xi586-cygwin32/include/sys/mman.h
Xi586-cygwin32/include/sys/mount.h
Xi586-cygwin32/include/sys/param.h
Xi586-cygwin32/include/sys/reent.h
Xi586-cygwin32/include/sys/resource.h
Xi586-cygwin32/include/sys/select.h
Xi586-cygwin32/include/sys/signal.h
Xi586-cygwin32/include/sys/smallprint.h
Xi586-cygwin32/include/sys/socket.h
Xi586-cygwin32/include/sys/stat-dj.h
Xi586-cygwin32/include/sys/stat.h
Xi586-cygwin32/include/sys/strace.h
Xi586-cygwin32/include/sys/syslog.h
Xi586-cygwin32/include/sys/sysmacros.h
Xi586-cygwin32/include/sys/termio.h
Xi586-cygwin32/include/sys/termios.h
Xi586-cygwin32/include/sys/time.h
Xi586-cygwin32/include/sys/timeb.h
Xi586-cygwin32/include/sys/times.h
Xi586-cygwin32/include/sys/ttychars.h
Xi586-cygwin32/include/sys/types.h
Xi586-cygwin32/include/sys/uio.h
Xi586-cygwin32/include/sys/unistd.h
Xi586-cygwin32/include/sys/utime.h
Xi586-cygwin32/include/sys/utsname.h
Xi586-cygwin32/include/sys/vfs.h
Xi586-cygwin32/include/sys/wait.h
Xi586-cygwin32/include/syslog.h
Xi586-cygwin32/include/tchar.h
Xi586-cygwin32/include/termio.h
Xi586-cygwin32/include/termios.h
Xi586-cygwin32/include/time.h
Xi586-cygwin32/include/tzfile.h
Xi586-cygwin32/include/unctrl.h
Xi586-cygwin32/include/unistd.h
Xi586-cygwin32/include/utime.h
Xi586-cygwin32/include/utmp.h
Xi586-cygwin32/include/wchar.h
Xi586-cygwin32/include/winadvapi.h
Xi586-cygwin32/include/winbase.h
Xi586-cygwin32/include/wincon.h
Xi586-cygwin32/include/windef.h
Xi586-cygwin32/include/windows.h
Xi586-cygwin32/include/windowsx.h
Xi586-cygwin32/include/winerror.h
Xi586-cygwin32/include/wingdi.h
Xi586-cygwin32/include/winkernel.h
Xi586-cygwin32/include/winnt.h
Xi586-cygwin32/include/winreg.h
Xi586-cygwin32/include/winsock.h
Xi586-cygwin32/include/wintypes.h
Xi586-cygwin32/include/winuser.h
Xi586-cygwin32/include/winversion.h
Xi586-cygwin32/lib/CRT_noglob.o
Xi586-cygwin32/lib/crt0.o
Xi586-cygwin32/lib/crt1.o
Xi586-cygwin32/lib/crt2.o
Xi586-cygwin32/lib/dllcrt1.o
Xi586-cygwin32/lib/dllcrt2.o
Xi586-cygwin32/lib/gcrt0.o
Xi586-cygwin32/lib/ldscripts
Xi586-cygwin32/lib/ldscripts/i386pe.x
Xi586-cygwin32/lib/ldscripts/i386pe.xbn
Xi586-cygwin32/lib/ldscripts/i386pe.xn
Xi586-cygwin32/lib/ldscripts/i386pe.xr
Xi586-cygwin32/lib/ldscripts/i386pe.xu
Xi586-cygwin32/lib/libadvapi32.a
Xi586-cygwin32/lib/libc.a
Xi586-cygwin32/lib/libcap.a
Xi586-cygwin32/lib/libcomctl32.a
Xi586-cygwin32/lib/libcomdlg32.a
Xi586-cygwin32/lib/libcrtdll.a
Xi586-cygwin32/lib/libctl3d32.a
Xi586-cygwin32/lib/libcygwin.a
Xi586-cygwin32/lib/libdlcapi.a
Xi586-cygwin32/lib/libg.a
Xi586-cygwin32/lib/libgdi32.a
Xi586-cygwin32/lib/libglaux.a
Xi586-cygwin32/lib/libglu32.a
Xi586-cygwin32/lib/libgmon.a
Xi586-cygwin32/lib/libiberty.a
Xi586-cygwin32/lib/libicmp.a
Xi586-cygwin32/lib/libimm32.a
Xi586-cygwin32/lib/libkernel32.a
Xi586-cygwin32/lib/liblargeint.a
Xi586-cygwin32/lib/liblz32.a
Xi586-cygwin32/lib/libm.a
Xi586-cygwin32/lib/libmapi32.a
Xi586-cygwin32/lib/libmfcuia32.a
Xi586-cygwin32/lib/libmgmtapi.a
Xi586-cygwin32/lib/libmingw32.a
Xi586-cygwin32/lib/libmoldname.a
Xi586-cygwin32/lib/libmpr.a
Xi586-cygwin32/lib/libmsacm32.a
Xi586-cygwin32/lib/libmsvcrt.a
Xi586-cygwin32/lib/libmsvcrt20.a
Xi586-cygwin32/lib/libmsvcrt40.a
Xi586-cygwin32/lib/libnddeapi.a
Xi586-cygwin32/lib/libnetapi32.a
Xi586-cygwin32/lib/libodbc32.a
Xi586-cygwin32/lib/libodbccp32.a
Xi586-cygwin32/lib/liboldnames.a
Xi586-cygwin32/lib/libole32.a
Xi586-cygwin32/lib/liboleaut32.a
Xi586-cygwin32/lib/liboledlg.a
Xi586-cygwin32/lib/libolepro32.a
Xi586-cygwin32/lib/libopengl32.a
Xi586-cygwin32/lib/libpenwin32.a
Xi586-cygwin32/lib/libpkpd32.a
Xi586-cygwin32/lib/librasapi32.a
Xi586-cygwin32/lib/librpcdce4.a
Xi586-cygwin32/lib/librpcndr.a
Xi586-cygwin32/lib/librpcns4.a
Xi586-cygwin32/lib/librpcrt4.a
Xi586-cygwin32/lib/libscrnsave.a
Xi586-cygwin32/lib/libshell32.a
Xi586-cygwin32/lib/libsnmp.a
Xi586-cygwin32/lib/libstdc++.a
Xi586-cygwin32/lib/libsvrapi.a
Xi586-cygwin32/lib/libtapi32.a
Xi586-cygwin32/lib/libth32.a
Xi586-cygwin32/lib/libthunk32.a
Xi586-cygwin32/lib/liburl.a
Xi586-cygwin32/lib/libuser32.a
Xi586-cygwin32/lib/libuuid.a
Xi586-cygwin32/lib/libvdmdbg.a
Xi586-cygwin32/lib/libversion.a
Xi586-cygwin32/lib/libvfw32.a
Xi586-cygwin32/lib/libwin32spl.a
Xi586-cygwin32/lib/libwinmm.a
Xi586-cygwin32/lib/libwinspool.a
Xi586-cygwin32/lib/libwinstrm.a
Xi586-cygwin32/lib/libwow32.a
Xi586-cygwin32/lib/libwsock32.a
Xi586-cygwin32/lib/libwst.a
Xinclude/FlexLexer.h
Xinclude/ansidecl.h
Xinclude/bfd.h
Xinclude/bfdlink.h
Xinclude/g++/PlotFile.h
Xinclude/g++/SFile.h
Xinclude/g++/algo.h
Xinclude/g++/algobase.h
Xinclude/g++/algorithm
Xinclude/g++/alloc.h
Xinclude/g++/builtinbuf.h
Xinclude/g++/bvector.h
Xinclude/g++/cassert
Xinclude/g++/cctype
Xinclude/g++/cerrno
Xinclude/g++/cfloat
Xinclude/g++/ciso646
Xinclude/g++/climits
Xinclude/g++/clocale
Xinclude/g++/cmath
Xinclude/g++/complex
Xinclude/g++/complex.h
Xinclude/g++/csetjmp
Xinclude/g++/csignal
Xinclude/g++/cstdarg
Xinclude/g++/cstddef
Xinclude/g++/cstdio
Xinclude/g++/cstdlib
Xinclude/g++/cstring
Xinclude/g++/ctime
Xinclude/g++/cwchar
Xinclude/g++/cwctype
Xinclude/g++/defalloc.h
Xinclude/g++/deque
Xinclude/g++/deque.h
Xinclude/g++/editbuf.h
Xinclude/g++/floatio.h
Xinclude/g++/fstream
Xinclude/g++/fstream.h
Xinclude/g++/function.h
Xinclude/g++/functional
Xinclude/g++/hash_map
Xinclude/g++/hash_map.h
Xinclude/g++/hash_set
Xinclude/g++/hash_set.h
Xinclude/g++/hashtable.h
Xinclude/g++/heap.h
Xinclude/g++/indstream.h
Xinclude/g++/iolibio.h
Xinclude/g++/iomanip
Xinclude/g++/iomanip.h
Xinclude/g++/iosfwd
Xinclude/g++/iostdio.h
Xinclude/g++/iostream
Xinclude/g++/iostream.h
Xinclude/g++/iostreamP.h
Xinclude/g++/istream.h
Xinclude/g++/iterator
Xinclude/g++/iterator.h
Xinclude/g++/libio.h
Xinclude/g++/libioP.h
Xinclude/g++/list
Xinclude/g++/list.h
Xinclude/g++/map
Xinclude/g++/map.h
Xinclude/g++/memory
Xinclude/g++/multimap.h
Xinclude/g++/multiset.h
Xinclude/g++/numeric
Xinclude/g++/ostream.h
Xinclude/g++/pair.h
Xinclude/g++/parsestream.h
Xinclude/g++/pfstream.h
Xinclude/g++/procbuf.h
Xinclude/g++/pthread_alloc
Xinclude/g++/pthread_alloc.h
Xinclude/g++/queue
Xinclude/g++/rope
Xinclude/g++/rope.h
Xinclude/g++/ropeimpl.h
Xinclude/g++/set
Xinclude/g++/set.h
Xinclude/g++/slist
Xinclude/g++/slist.h
Xinclude/g++/stack
Xinclude/g++/stack.h
Xinclude/g++/std
Xinclude/g++/std/bastring.cc
Xinclude/g++/std/bastring.h
Xinclude/g++/std/complext.cc
Xinclude/g++/std/complext.h
Xinclude/g++/std/dcomplex.h
Xinclude/g++/std/fcomplex.h
Xinclude/g++/std/ldcomplex.h
Xinclude/g++/std/straits.h
Xinclude/g++/stdexcept
Xinclude/g++/stdiostream.h
Xinclude/g++/stl.h
Xinclude/g++/stl_algo.h
Xinclude/g++/stl_algobase.h
Xinclude/g++/stl_alloc.h
Xinclude/g++/stl_bvector.h
Xinclude/g++/stl_config.h
Xinclude/g++/stl_construct.h
Xinclude/g++/stl_deque.h
Xinclude/g++/stl_function.h
Xinclude/g++/stl_hash_fun.h
Xinclude/g++/stl_hash_map.h
Xinclude/g++/stl_hash_set.h
Xinclude/g++/stl_hashtable.h
Xinclude/g++/stl_heap.h
Xinclude/g++/stl_iterator.h
Xinclude/g++/stl_list.h
Xinclude/g++/stl_map.h
Xinclude/g++/stl_multimap.h
Xinclude/g++/stl_multiset.h
Xinclude/g++/stl_numeric.h
Xinclude/g++/stl_pair.h
Xinclude/g++/stl_queue.h
Xinclude/g++/stl_raw_storage_iter.h
Xinclude/g++/stl_relops.h
Xinclude/g++/stl_rope.h
Xinclude/g++/stl_set.h
Xinclude/g++/stl_slist.h
Xinclude/g++/stl_stack.h
Xinclude/g++/stl_tempbuf.h
Xinclude/g++/stl_tree.h
Xinclude/g++/stl_uninitialized.h
Xinclude/g++/stl_vector.h
Xinclude/g++/stream.h
Xinclude/g++/streambuf.h
Xinclude/g++/strfile.h
Xinclude/g++/string
Xinclude/g++/strstream
Xinclude/g++/strstream.h
Xinclude/g++/tempbuf.h
Xinclude/g++/tree.h
Xinclude/g++/type_traits.h
Xinclude/g++/utility
Xinclude/g++/vector
Xinclude/g++/vector.h
Xinclude/readline
Xinclude/readline/chardefs.h
Xinclude/readline/keymaps.h
Xinclude/readline/readline.h
Xinfo/cpp.info
Xinfo/cpp.info-1
Xinfo/cpp.info-2
Xinfo/cpp.info-3
Xinfo/gcc.info
Xinfo/gcc.info-1
Xinfo/gcc.info-10
Xinfo/gcc.info-11
Xinfo/gcc.info-12
Xinfo/gcc.info-13
Xinfo/gcc.info-14
Xinfo/gcc.info-15
Xinfo/gcc.info-16
Xinfo/gcc.info-17
Xinfo/gcc.info-18
Xinfo/gcc.info-19
Xinfo/gcc.info-2
Xinfo/gcc.info-20
Xinfo/gcc.info-21
Xinfo/gcc.info-22
Xinfo/gcc.info-23
Xinfo/gcc.info-24
Xinfo/gcc.info-25
Xinfo/gcc.info-26
Xinfo/gcc.info-27
Xinfo/gcc.info-28
Xinfo/gcc.info-29
Xinfo/gcc.info-3
Xinfo/gcc.info-4
Xinfo/gcc.info-5
Xinfo/gcc.info-6
Xinfo/gcc.info-7
Xinfo/gcc.info-8
Xinfo/gcc.info-9
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/SYSCALLS.c.X
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/cc1
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/cc1plus
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/collect2
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/cpp
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/README
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/exception
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/fixed
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/float.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/iso646.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/limits.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/new
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/new.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/proto.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/stdarg.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/stdbool.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/stddef.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/syslimits.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/typeinfo
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-alpha.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-arc.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-clipper.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-h8300.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-i860.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-i960.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-m32r.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-m88k.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-mips.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-mn10200.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-mn10300.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-pa.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-ppc.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-pyr.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-sh.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-sparc.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-spur.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/va-v850.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/include/varargs.h
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/libgcc.a
Xlib/gcc-lib/i586-cygwin32/egcs-2.91.57/specs
Xlib/libbfd.a
Xlib/libbfd.la
Xlib/libfl.a
Xlib/libiberty.a
Xlib/libmmalloc.a
Xlib/libopcodes.a
Xlib/libopcodes.la
Xlib/libreadline.a
Xman/bison.1
Xman/flex.1
Xman/i586-cygwin32-g++.1
Xman/make.1
Xman/man1/byacc.1
Xman/man1/cccp.1
Xman/man1/i586-cygwin32-addr2line.1
Xman/man1/i586-cygwin32-ar.1
Xman/man1/i586-cygwin32-as.1
Xman/man1/i586-cygwin32-c++filt.1
Xman/man1/i586-cygwin32-gcc.1
Xman/man1/i586-cygwin32-ld.1
Xman/man1/i586-cygwin32-nlmconv.1
Xman/man1/i586-cygwin32-nm.1
Xman/man1/i586-cygwin32-objcopy.1
Xman/man1/i586-cygwin32-objdump.1
Xman/man1/i586-cygwin32-ranlib.1
Xman/man1/i586-cygwin32-size.1
Xman/man1/i586-cygwin32-strings.1
Xman/man1/i586-cygwin32-strip.1
Xman/man1/patch.1
Xman/man1/runtest.1
Xman/man1/send-pr.1
Xshare/bison.hairy
Xshare/bison.simple
Xshare/dejagnu/baseboards/README
Xshare/dejagnu/baseboards/a29k-udi.exp
Xshare/dejagnu/baseboards/arc-sim.exp
Xshare/dejagnu/baseboards/arm-ice.exp
Xshare/dejagnu/baseboards/arm-sim.exp
Xshare/dejagnu/baseboards/basic-sim.exp
Xshare/dejagnu/baseboards/cygmon.exp
Xshare/dejagnu/baseboards/cygwin.exp
Xshare/dejagnu/baseboards/d10v-sim.exp
Xshare/dejagnu/baseboards/d10v.exp
Xshare/dejagnu/baseboards/d30v-sim.exp
Xshare/dejagnu/baseboards/danlite-elf.exp
Xshare/dejagnu/baseboards/dos.exp
Xshare/dejagnu/baseboards/h8300-sim.exp
Xshare/dejagnu/baseboards/h8300.exp
Xshare/dejagnu/baseboards/i386-bozo.exp
Xshare/dejagnu/baseboards/i960-cyclone.exp
Xshare/dejagnu/baseboards/m32r-elf.exp
Xshare/dejagnu/baseboards/m32r-sim.exp
Xshare/dejagnu/baseboards/m68k-emc.exp
Xshare/dejagnu/baseboards/mips-idt.exp
Xshare/dejagnu/baseboards/mips-lnews-sim.exp
Xshare/dejagnu/baseboards/mips-lsi-sim.exp
Xshare/dejagnu/baseboards/mips-sim.exp
Xshare/dejagnu/baseboards/mips64-sim.exp
Xshare/dejagnu/baseboards/mips64vr4100-sim.exp
Xshare/dejagnu/baseboards/mn10200-cygmon.exp
Xshare/dejagnu/baseboards/mn10200-sim.exp
Xshare/dejagnu/baseboards/mn10300-cygmon.exp
Xshare/dejagnu/baseboards/mn10300-sim.exp
Xshare/dejagnu/baseboards/msparc-cygmon.exp
Xshare/dejagnu/baseboards/op50n.exp
Xshare/dejagnu/baseboards/powerpc-bug.exp
Xshare/dejagnu/baseboards/powerpc-bug1.exp
Xshare/dejagnu/baseboards/powerpc-sim.exp
Xshare/dejagnu/baseboards/powerpcle-sim.exp
Xshare/dejagnu/baseboards/rom68k-idp.exp
Xshare/dejagnu/baseboards/sh-hms-sim.exp
Xshare/dejagnu/baseboards/sh-hms.exp
Xshare/dejagnu/baseboards/sparc64-sim.exp
Xshare/dejagnu/baseboards/sparclet-aout.exp
Xshare/dejagnu/baseboards/sparclite-coff.exp
Xshare/dejagnu/baseboards/sparclite-cygmon.exp
Xshare/dejagnu/baseboards/sparclite-sim-le.exp
Xshare/dejagnu/baseboards/sparclite-sim.exp
Xshare/dejagnu/baseboards/tx39-dve.exp
Xshare/dejagnu/baseboards/tx39-sim.exp
Xshare/dejagnu/baseboards/unix.exp
Xshare/dejagnu/baseboards/usparc-cygmon.exp
Xshare/dejagnu/baseboards/v850-sim.exp
Xshare/dejagnu/baseboards/vr4100-ddb.exp
Xshare/dejagnu/baseboards/vr4100-sim.exp
Xshare/dejagnu/baseboards/vr4300-ddb.exp
Xshare/dejagnu/baseboards/vr4300-sim.exp
Xshare/dejagnu/baseboards/vr4300.exp
Xshare/dejagnu/baseboards/vr5000-ddb.exp
Xshare/dejagnu/baseboards/vx4300.exp
Xshare/dejagnu/baseboards/vx68k.exp
Xshare/dejagnu/baseboards/vx960.exp
Xshare/dejagnu/baseboards/vxsparc.exp
Xshare/dejagnu/config.guess
Xshare/dejagnu/config/README
Xshare/dejagnu/config/arc.exp
Xshare/dejagnu/config/arm-ice.exp
Xshare/dejagnu/config/base-config.exp
Xshare/dejagnu/config/base68k.exp
Xshare/dejagnu/config/bug.exp
Xshare/dejagnu/config/cygmon.exp
Xshare/dejagnu/config/d10v.exp
Xshare/dejagnu/config/ddb-ether.exp
Xshare/dejagnu/config/ddb.exp
Xshare/dejagnu/config/dos.exp
Xshare/dejagnu/config/dve.exp
Xshare/dejagnu/config/gdb-comm.exp
Xshare/dejagnu/config/gdb_stub.exp
Xshare/dejagnu/config/h8300.exp
Xshare/dejagnu/config/i386-bozo.exp
Xshare/dejagnu/config/i960.exp
Xshare/dejagnu/config/m32r-stub.exp
Xshare/dejagnu/config/m32r.exp
Xshare/dejagnu/config/m68k-emc.exp
Xshare/dejagnu/config/mips-idt.exp
Xshare/dejagnu/config/mn10200-eval.exp
Xshare/dejagnu/config/mn10300-eval.exp
Xshare/dejagnu/config/netware.exp
Xshare/dejagnu/config/powerpc-bug.exp
Xshare/dejagnu/config/proelf.exp
Xshare/dejagnu/config/rom68k.exp
Xshare/dejagnu/config/sh.exp
Xshare/dejagnu/config/sim.exp
Xshare/dejagnu/config/slite.exp
Xshare/dejagnu/config/sparclet.exp
Xshare/dejagnu/config/udi.exp
Xshare/dejagnu/config/unix.exp
Xshare/dejagnu/config/vr4100.exp
Xshare/dejagnu/config/vr4300.exp
Xshare/dejagnu/config/vr5000.exp
Xshare/dejagnu/config/vrtx.exp
Xshare/dejagnu/config/vxworks.exp
Xshare/dejagnu/debugger.exp
Xshare/dejagnu/dg.exp
Xshare/dejagnu/framework.exp
Xshare/dejagnu/ftp.exp
Xshare/dejagnu/i960glue.c
Xshare/dejagnu/kermit.exp
Xshare/dejagnu/libgloss.exp
Xshare/dejagnu/mondfe.exp
Xshare/dejagnu/remote.exp
Xshare/dejagnu/rlogin.exp
Xshare/dejagnu/rsh.exp
Xshare/dejagnu/runtest.exp
Xshare/dejagnu/standard.exp
Xshare/dejagnu/stub-loader.c
Xshare/dejagnu/target.exp
Xshare/dejagnu/targetdb.exp
Xshare/dejagnu/telnet.exp
Xshare/dejagnu/testglue.c
Xshare/dejagnu/tip.exp
Xshare/dejagnu/util-defs.exp
Xshare/dejagnu/utils.exp
Xshare/dejagnu/xsh.exp
Xshare/prms/cygnus
END-of-pkg/PLIST
exit

-- 

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com



More information about the Cygwin mailing list