diff --git a/gcc/cobol/.gitignore b/gcc/cobol/.gitignore
index 4c805d51bb19943e856904329ed2d078d304c0ce..514f368b30a94778a18659e0ab9bbbc981741298 100644
--- a/gcc/cobol/.gitignore
+++ b/gcc/cobol/.gitignore
@@ -10,3 +10,5 @@ nist/obj
 dump.txt
 .gawk_history
 .gawkrc
+charmaps-copy.cc
+valconv-copy.cc
diff --git a/gcc/cobol/Make-lang.in b/gcc/cobol/Make-lang.in
index 6a57585a729a5bbd1fda4528f749b9c5d7bbae2e..57ef7a460db2ae937f61891a614c3aab5317b139 100644
--- a/gcc/cobol/Make-lang.in
+++ b/gcc/cobol/Make-lang.in
@@ -91,11 +91,27 @@ cobol_one_OBJS =    \
  cobol/symbols.o    \
  cobol/symfind.o    \
  cobol/util.o       \
- cobol/valconv.o    \
- cobol/charmaps.o   \
+ cobol/charmaps-copy.o   \
+ cobol/valconv-copy.o    \
  $(END)
 
-# cobol/charutf8.o   \
+cobol_OBJS_FROM_LIBGCOBOL = \
+ cobol/charmaps-copy.o           \
+ cobol/valconv-copy.o            \
+ $(END)
+
+#
+# There is source code in libgcobol/charmaps.cc and libgcobol/valconv.cc
+# that needs to be compiled, as well, into cobol1.  The following recipes
+# make copies of those two source code files into the gcc/cobol tree:
+#
+../../gcc/cobol/charmaps-copy.cc: ../libgcobol/charmaps.cc
+	echo "// DO NOT EDIT THIS FILE.  It was copied from the libgcobol directory." > $@
+	cat $< >> $@
+    
+../../gcc/cobol/valconv-copy.cc: ../libgcobol/valconv.cc
+	echo "// DO NOT EDIT THIS FILE.  It was copied from the libgcobol directory." > $@
+	cat $< >> $@
 
 #
 # These are the object files for creating the gcobol.exe "driver"
@@ -110,6 +126,7 @@ GCOBOL_D_OBJS = $(GCC_OBJS) cobol/gcobolspec.o
 #
 
 cobol_OBJS = \
+   $(cobol_OBJS_FROM_LIBGCOBOL) \
    $(cobol_one_OBJS) \
    cobol/gcobolspec.o \
    $(END)
@@ -127,6 +144,7 @@ CFLAGS-cobol/gcobolspec.o += $(DRIVER_DEFINES)
 gcobol$(exeext): \
 	 $(GCOBOL_D_OBJS) \
 	 $(EXTRA_GCC_OBJS) \
+     $(cobol_OBJS_FROM_LIBGCOBOL) \
      libcommon-target.a \
      $(LIBDEPS)
 	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@		\
@@ -155,7 +173,8 @@ cobol/scan.o: cobol/parse.c # cobol/parse.h # parse.h gets built along with pars
 
 # And the cobol1.exe front end
 
-cobol1$(exeext): $(cobol_one_OBJS) $(BACKEND) $(LIBDEPS) attribs.o
+cobol1$(exeext): $(cobol_one_OBJS) $(cobol_OBJS_FROM_LIBGCOBOL) \
+	$(BACKEND) $(LIBDEPS) attribs.o
 	+$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) attribs.o -o $@	\
 	      $(cobol_one_OBJS) $(BACKEND) $(LIBS) $(BACKENDLIBS)
 
@@ -209,7 +228,10 @@ cobol.man:
 cobol.mostlyclean:
 
 cobol.clean:
-	rm -fr cobol1 cobol/* ../*/libgcobol/*
+	rm -fr cobol1 cobol/*              \
+	../*/libgcobol/*                   \
+	../../gcc/cobol/charmaps-copy.cc   \
+	../../gcc/cobol/valconv-copy.cc    \
 
 cobol.distclean:
 
diff --git a/libgcobol/Makefile.in b/libgcobol/Makefile.in
index 22d7479b9427f6374ab3d1e37425ba2bfee5c1cb..270fac24c188b237b8e8f3c0ab2d40febacf08ef 100644
--- a/libgcobol/Makefile.in
+++ b/libgcobol/Makefile.in
@@ -129,8 +129,8 @@ C_SOURCE_FILES = \
   io.cc          \
   libgcobol.cc   \
   constants.cc   \
-  ../gcc/cobol/charmaps.cc    \
-  ../gcc/cobol/valconv.cc     \
+  charmaps.cc    \
+  valconv.cc     \
   $(END)
 
 # Object files to link (when the library is linked with no GC (Garbage
diff --git a/gcc/cobol/charmaps.cc b/libgcobol/charmaps.cc
similarity index 100%
rename from gcc/cobol/charmaps.cc
rename to libgcobol/charmaps.cc
diff --git a/gcc/cobol/valconv.cc b/libgcobol/valconv.cc
similarity index 100%
rename from gcc/cobol/valconv.cc
rename to libgcobol/valconv.cc