aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYao Qi <yao@codesourcery.com>2014-08-21 10:48:33 +0800
committerYao Qi <yao@codesourcery.com>2014-08-22 10:29:53 +0800
commit510db0520b763ca7cc9bf59e1f201ab2001d4217 (patch)
tree41aa444a4d2b92572b9739e972f160ce86e1b2c2
parent4564fb94daa76c3b339507f0f985dc139f2db8ba (diff)
downloadgdb-510db0520b763ca7cc9bf59e1f201ab2001d4217.zip
gdb-510db0520b763ca7cc9bf59e1f201ab2001d4217.tar.gz
gdb-510db0520b763ca7cc9bf59e1f201ab2001d4217.tar.bz2
Remove workaround to libbabeltrace 1.1.0 issue
When GDB uses recent version of babeltrace, such as 1.2.x, we'll see such error emitted from babeltrace library, (gdb) target ctf .../gdb/testsuite/gdb.trace/actions.ctf [error] Invalid CTF stream: content size is smaller than packet headers. [error] Stream index creation error. [error] Open file stream error. The problem can be reproduce out of GDB too, using babeltrace, $ babeltrace ./fake-packet.ctf/ [error] Invalid CTF stream: content size is smaller than packet headers. [error] Stream index creation error. [error] Open file stream error. Recent babeltrace library becomes more strict on CTF, and complains about one "faked packet" GDB adds, when saving trace data in ctf format from GDB. babeltrace 1.1.0 has a bug that it can't read trace data smaller than a certain size (see https://bugs.lttng.org/issues/450). We workaround it in GDB to append some meaningless data in a faked packet to make sure trace file is large enough (see ctf.c:ctf_end). The babeltrace issue was fixed in 1.1.1 release. However, babeltrace recent release (since 1.1.2) starts to complain about such faked packet. Here is a table shows that whether faked packet or no faked packet is "supported" by various babeltrace releases, faked packet no faked packet 1.1.0 Yes No 1.1.1 Yes Yes 1.1.2 No Yes 1.2.0 No Yes We decide to get rid of this workaround in GDB, and people can build GDB with libbabeltrace >= 1.1.1. In this way, both configure and ctf.c is simpler. Run gdb.trace/* tests in the following combinations: wo/ this pattch 1.1.0 w/ this patch 1.1.1 w/ this patch 1.1.2 w/ this patch 1.2.0 No test results change. gdb: 2014-08-22 Yao Qi <yao@codesourcery.com> * ctf.c (CTF_FILE_MIN_SIZE): Remove. (ctf_end): Remove code.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/ctf.c49
2 files changed, 5 insertions, 49 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index e8f652f..a34ad78 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2014-08-22 Yao Qi <yao@codesourcery.com>
+
+ * ctf.c (CTF_FILE_MIN_SIZE): Remove.
+ (ctf_end): Remove code.
+
2014-08-21 Jan Kratochvil <jan.kratochvil@redhat.com>
* linux-tdep.c (linux_corefile_thread_callback): Ignore THREAD_EXITED.
diff --git a/gdb/ctf.c b/gdb/ctf.c
index df645c0..9fd8c04 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,50 +632,6 @@ 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 (writer->tcs.packet_start < CTF_FILE_MIN_SIZE)
- {
- uint32_t u32;
-
- /* magic. */
- u32 = CTF_MAGIC;
- ctf_save_write_uint32 (&writer->tcs, u32);
-
- /* content_size. */
- u32 = 0;
- ctf_save_write_uint32 (&writer->tcs, u32);
-
- /* packet_size. */
- u32 = 12;
- if (writer->tcs.packet_start + u32 < CTF_FILE_MIN_SIZE)
- u32 = CTF_FILE_MIN_SIZE - writer->tcs.packet_start;
-
- u32 *= TARGET_CHAR_BIT;
- ctf_save_write_uint32 (&writer->tcs, u32);
-
- /* tpnum. */
- u32 = 0;
- ctf_save_write (&writer->tcs, (gdb_byte *) &u32, 2);
-
- /* Enlarge the file to CTF_FILE_MIN_SIZE is it is still less
- than that. */
- if (CTF_FILE_MIN_SIZE
- > (writer->tcs.packet_start + writer->tcs.content_size))
- {
- gdb_byte b = 0;
-
- /* Fake the content size to avoid assertion failure in
- ctf_save_fseek. */
- writer->tcs.content_size = (CTF_FILE_MIN_SIZE
- - 1 - writer->tcs.packet_start);
- ctf_save_fseek (&writer->tcs, CTF_FILE_MIN_SIZE - 1,
- SEEK_SET);
- ctf_save_write (&writer->tcs, &b, 1);
- }
- }
}
/* This is the implementation of trace_frame_write_ops method