diff --git a/gdb/config.in b/gdb/config.in
index b853412..54152cd 100644
--- a/gdb/config.in
+++ b/gdb/config.in
@@ -183,6 +183,9 @@
 /* Define if you have the babeltrace library. */
 #undef HAVE_LIBBABELTRACE
 
+/* Define to 1 if you have libbabeltrace 1.1.0 */
+#undef HAVE_LIBBABELTRACE1_1_0
+
 /* Define to 1 if you have the `dl' library (-ldl). */
 #undef HAVE_LIBDL
 
diff --git a/gdb/configure b/gdb/configure
index 9253e28..d4e2c6e 100755
--- a/gdb/configure
+++ b/gdb/configure
@@ -14817,6 +14817,11 @@ $as_echo "$with_babeltrace" >&6; }
 if test "x$with_babeltrace" = "xno"; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&5
 $as_echo "$as_me: WARNING: babletrace support disabled; GDB is unable to read CTF data." >&2;}
+elif test "${pkg_config_prog_path}" = "missing"; then
+  # pkg-config is used to check the version of libbabeltrace.  If pkg-config
+  # is missing, we have to disable babeltrace support.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: pkg-config not found, babletrace support disabled" >&5
+$as_echo "$as_me: WARNING: pkg-config not found, babletrace support disabled" >&2;}
 else
   # Append -Werror to CFLAGS so that configure can catch the warning
   # "assignment from incompatible pointer type", which is related to
@@ -15307,6 +15312,26 @@ $as_echo "$LIBBABELTRACE" >&6; }
        { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&5
 $as_echo "$as_me: WARNING: babeltrace is missing or unusable; GDB is unable to read CTF data." >&2;}
      fi
+  else
+     # Need to know whether libbabeltrace is 1.1.0.
+     pkg_config_path=
+     for x in $LTLIBBABELTRACE; do
+       case "$x" in
+         -L*)
+	   dir=`echo "X$x" | sed -e 's/^X-L//'`
+	   if test -d "$dir/pkgconfig"; then
+	     pkg_config_path="${pkg_config_path}${pkg_config_path:+:}$dir/pkgconfig"
+	   fi
+	   ;;
+       esac
+     done
+
+     `PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$pkg_config_path ${pkg_config_prog_path} babeltrace = 1.1.0`
+     if test "$?" -eq 0 ; then
+
+$as_echo "#define HAVE_LIBBABELTRACE1_1_0 1" >>confdefs.h
+
+     fi
   fi
 fi
 
diff --git a/gdb/configure.ac b/gdb/configure.ac
index 61919b4..1d8d400 100644
--- a/gdb/configure.ac
+++ b/gdb/configure.ac
@@ -2420,6 +2420,10 @@ AC_MSG_RESULT([$with_babeltrace])
 
 if test "x$with_babeltrace" = "xno"; then
   AC_MSG_WARN([babletrace support disabled; GDB is unable to read CTF data.])
+elif test "${pkg_config_prog_path}" = "missing"; then
+  # pkg-config is used to check the version of libbabeltrace.  If pkg-config
+  # is missing, we have to disable babeltrace support.
+  AC_MSG_WARN([pkg-config not found, babletrace support disabled])
 else
   # Append -Werror to CFLAGS so that configure can catch the warning
   # "assignment from incompatible pointer type", which is related to
@@ -2450,6 +2454,24 @@ else
      else
        AC_MSG_WARN([babeltrace is missing or unusable; GDB is unable to read CTF data.])
      fi
+  else
+     # Need to know whether libbabeltrace is 1.1.0.
+     pkg_config_path=
+     for x in $LTLIBBABELTRACE; do
+       case "$x" in
+         -L*)
+	   dir=`echo "X$x" | sed -e 's/^X-L//'`
+	   if test -d "$dir/pkgconfig"; then
+	     pkg_config_path="${pkg_config_path}${pkg_config_path:+:}$dir/pkgconfig"
+	   fi
+	   ;;
+       esac
+     done
+
+     `PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$pkg_config_path ${pkg_config_prog_path} babeltrace = 1.1.0`
+     if test "$?" -eq 0 ; then
+       AC_DEFINE([HAVE_LIBBABELTRACE1_1_0], [1], [Define to 1 if you have libbabeltrace 1.1.0])
+     fi
   fi
 fi
 
diff --git a/gdb/ctf.c b/gdb/ctf.c
index df645c0..684da50 100644
--- a/gdb/ctf.c
+++ b/gdb/ctf.c
@@ -623,11 +623,6 @@ ctf_write_definition_end (struct trace_file_writer *self)
   self->ops->frame_ops->end (self);
 }
 
-/* The minimal file size of data stream.  It is required by
-   babeltrace.  */
-
-#define CTF_FILE_MIN_SIZE		4096
-
 /* This is the implementation of trace_file_write_ops method
    end.  */
 
@@ -637,10 +632,21 @@ ctf_end (struct trace_file_writer *self)
   struct ctf_trace_file_writer *writer = (struct ctf_trace_file_writer *) self;
 
   gdb_assert (writer->tcs.content_size == 0);
-  /* The babeltrace requires or assumes that the size of datastream
-     file is greater than 4096 bytes.  If we don't generate enough
-     packets and events, create a fake packet which has zero event,
-      to use up the space.  */
+
+#if HAVE_LIBBABELTRACE1_1_0
+  /* The babeltrace-1.1.0 requires or assumes that the size of datastream
+     file is greater than 4096 bytes.  This was fixed after 1.1.0 release.
+     See https://bugs.lttng.org/issues/450
+     If we don't generate enough packets and events, create a fake packet
+     which has zero event, to use up the space.  However, babeltrace
+     release (since 1.1.2) starts to complain about such faked packet,
+     we include this workaround only for babeltrace 1.1.0.  */
+
+  /* The minimal file size of data stream.  It is required by
+     babeltrace.  */
+
+#define CTF_FILE_MIN_SIZE		4096
+
   if (writer->tcs.packet_start < CTF_FILE_MIN_SIZE)
     {
       uint32_t u32;
@@ -681,6 +687,7 @@ ctf_end (struct trace_file_writer *self)
 	  ctf_save_write (&writer->tcs, &b, 1);
 	}
     }
+#endif /* HAVE_LIBBABELTRACE1_1_0 */
 }
 
 /* This is the implementation of trace_frame_write_ops method
