diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-10-10 19:32:05 +0200 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2012-10-14 17:49:40 +0200 |
commit | a4f5c2d03252164e4c40aa23e9452146787d0d8e (patch) | |
tree | b336d9cca92a786c26804f4cf00dd586f63f318a | |
parent | 0631d1fb4dfc3de5c1fb22d4030dffece350d724 (diff) | |
download | elfutils-a4f5c2d03252164e4c40aa23e9452146787d0d8e.tar.gz |
backends/
2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com>
Roland McGrath <roland@hack.frob.com>
* Makefile.am (s390_SRCS): Add s390_corenote.c and s390x_corenote.c.
* linux-core-note.c (ALIGN_PR_REG): New definitions.
(struct EBLHOOK(prstatus)): Change field pr_reg to anonymous union with
ALIGN_PR_REG.
(EXTRA_ITEMS): New macro.
* s390_corenote.c: New file.
* s390_init.c (s390x_core_note): New declaration.
(s390_init): Install s390x_core_note and s390_core_note.
* s390x_corenote.c: New file.
src/
2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com>
* readelf.c (handle_core_items): Limit special repeated items handling
to single-item formats '\n', 'b' and 'B', assert OFFSET 0 there.
tests/
2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com>
* run-readelf-mixed-corenote.sh: New testcase for readelf -n of s390
and s390x core notes.
* testfile67.bz2: New file.
* testfile68.bz2: New file.
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
-rw-r--r-- | backends/ChangeLog | 13 | ||||
-rw-r--r-- | backends/Makefile.am | 3 | ||||
-rw-r--r-- | backends/arm_corenote.c | 2 | ||||
-rw-r--r-- | backends/linux-core-note.c | 23 | ||||
-rw-r--r-- | backends/s390_corenote.c | 189 | ||||
-rw-r--r-- | backends/s390_init.c | 6 | ||||
-rw-r--r-- | backends/s390x_corenote.c | 2 | ||||
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/readelf.c | 34 | ||||
-rw-r--r-- | tests/ChangeLog | 7 | ||||
-rwxr-xr-x | tests/run-readelf-mixed-corenote.sh | 133 | ||||
-rw-r--r-- | tests/testfile67.bz2 | bin | 0 -> 424 bytes | |||
-rw-r--r-- | tests/testfile68.bz2 | bin | 0 -> 399 bytes |
13 files changed, 398 insertions, 19 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog index cca71130..388e22e1 100644 --- a/backends/ChangeLog +++ b/backends/ChangeLog @@ -1,3 +1,16 @@ +2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com> + Roland McGrath <roland@hack.frob.com> + + * Makefile.am (s390_SRCS): Add s390_corenote.c and s390x_corenote.c. + * linux-core-note.c (ALIGN_PR_REG): New definitions. + (struct EBLHOOK(prstatus)): Change field pr_reg to anonymous union with + ALIGN_PR_REG. + (EXTRA_ITEMS): New macro. + * s390_corenote.c: New file. + * s390_init.c (s390x_core_note): New declaration. + (s390_init): Install s390x_core_note and s390_core_note. + * s390x_corenote.c: New file. + 2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com> * linux-core-note.c (prstatus_items): Rename groups of sigpend and diff --git a/backends/Makefile.am b/backends/Makefile.am index 982ff2a7..283bbfc3 100644 --- a/backends/Makefile.am +++ b/backends/Makefile.am @@ -94,7 +94,8 @@ ppc64_SRCS = ppc64_init.c ppc64_symbol.c ppc64_retval.c \ libebl_ppc64_pic_a_SOURCES = $(ppc64_SRCS) am_libebl_ppc64_pic_a_OBJECTS = $(ppc64_SRCS:.c=.os) -s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c +s390_SRCS = s390_init.c s390_symbol.c s390_regs.c s390_retval.c \ + s390_corenote.c s390x_corenote.c libebl_s390_pic_a_SOURCES = $(s390_SRCS) am_libebl_s390_pic_a_OBJECTS = $(s390_SRCS:.c=.os) diff --git a/backends/arm_corenote.c b/backends/arm_corenote.c index d5279442..c5d8d887 100644 --- a/backends/arm_corenote.c +++ b/backends/arm_corenote.c @@ -84,7 +84,7 @@ static const Ebl_Core_Item vfp_items[] = { .name = "fpscr", .group = "register", .offset = 0, - .count = 0, .type = ELF_T_WORD, .format = 'x', + .type = ELF_T_WORD, .format = 'x', }, }; diff --git a/backends/linux-core-note.c b/backends/linux-core-note.c index b09154f2..4f1642df 100644 --- a/backends/linux-core-note.c +++ b/backends/linux-core-note.c @@ -42,6 +42,9 @@ #define INT int32_t #define ALIGN_INT 4 #define TYPE_INT ELF_T_SWORD +#ifndef ALIGN_PR_REG +# define ALIGN_PR_REG ALIGN_ULONG +#endif #define FIELD(type, name) type name __attribute__ ((aligned (ALIGN_##type))) @@ -81,7 +84,14 @@ struct EBLHOOK(prstatus) struct EBLHOOK(timeval) pr_stime; struct EBLHOOK(timeval) pr_cutime; struct EBLHOOK(timeval) pr_cstime; - FIELD (ULONG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (ULONG)]); + union + { + FIELD (ULONG, pr_reg[PRSTATUS_REGS_SIZE / sizeof (ULONG)]); + } +#ifdef ALIGN_PR_REG + __attribute__ ((aligned (ALIGN_PR_REG))) +#endif + ; FIELD (INT, pr_fpvalid); }; @@ -265,6 +275,17 @@ EBLHOOK(core_note) (nhdr, name, regs_offset, nregloc, reglocs, nitems, items) *items = extra_items; \ return 1; +#define EXTRA_ITEMS(type, size, extra_items) \ + case type: \ + if (nhdr->n_descsz != size) \ + return 0; \ + *regs_offset = 0; \ + *nregloc = 0; \ + *reglocs = NULL; \ + *nitems = sizeof extra_items / sizeof extra_items[0]; \ + *items = extra_items; \ + return 1; + #ifdef FPREGSET_SIZE EXTRA_REGSET (NT_FPREGSET, FPREGSET_SIZE, fpregset_regs) #endif diff --git a/backends/s390_corenote.c b/backends/s390_corenote.c new file mode 100644 index 00000000..17cf8192 --- /dev/null +++ b/backends/s390_corenote.c @@ -0,0 +1,189 @@ +/* S390 specific core note handling. + Copyright (C) 2012 Red Hat, Inc. + This file is part of elfutils. + + This file is free software; you can redistribute it and/or modify + it under the terms of either + + * the GNU Lesser General Public License as published by the Free + Software Foundation; either version 3 of the License, or (at + your option) any later version + + or + + * the GNU General Public License as published by the Free + Software Foundation; either version 2 of the License, or (at + your option) any later version + + or both in parallel, as here. + + elfutils is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received copies of the GNU General Public License and + the GNU Lesser General Public License along with this program. If + not, see <http://www.gnu.org/licenses/>. */ + +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#include <elf.h> +#include <inttypes.h> +#include <stddef.h> +#include <stdio.h> +#include <sys/time.h> + +#ifndef BITS +# define BITS 32 +# define BACKEND s390_ +#else +# define BITS 64 +# define BACKEND s390x_ +#endif +#include "libebl_CPU.h" + +static const Ebl_Register_Location prstatus_regs[] = + { +#define GR(at, n, dwreg, b) \ + { .offset = at * BITS/8, .regno = dwreg, .count = n, .bits = b } + + GR ( 0, 1, 64, BITS), /* pswm */ + GR ( 1, 1, 65, BITS), /* pswa */ + GR ( 2, 16, 0, BITS), /* r0-r15 */ + GR (18, 16, 48, 32), /* ar0-ar15 */ + +#undef GR + }; + + /* orig_r2 is at offset (BITS == 32 ? 34 * 4 : 26 * 8). */ +#define PRSTATUS_REGS_SIZE (BITS / 8 * (BITS == 32 ? 35 : 27)) + +static const Ebl_Register_Location fpregset_regs[] = + { +#define FPR(at, n, dwreg) \ + { .offset = at * 64/8, .regno = dwreg, .count = n, .bits = 64 } + + /* fpc is at offset 0, see fpregset_items, it has no assigned DWARF regno. + Bytes at offsets 4 to 7 are unused. */ + FPR (1 + 0, 1, 16), /* f0 */ + FPR (1 + 1, 1, 20), /* f1 */ + FPR (1 + 2, 1, 17), /* f2 */ + FPR (1 + 3, 1, 21), /* f3 */ + FPR (1 + 4, 1, 18), /* f4 */ + FPR (1 + 5, 1, 22), /* f5 */ + FPR (1 + 6, 1, 19), /* f6 */ + FPR (1 + 7, 1, 23), /* f7 */ + FPR (1 + 8, 1, 24), /* f8 */ + FPR (1 + 9, 1, 28), /* f9 */ + FPR (1 + 10, 1, 25), /* f10 */ + FPR (1 + 11, 1, 29), /* f11 */ + FPR (1 + 12, 1, 26), /* f12 */ + FPR (1 + 13, 1, 30), /* f13 */ + FPR (1 + 14, 1, 27), /* f14 */ + FPR (1 + 15, 1, 31), /* f15 */ + +#undef FPR + }; + +static const Ebl_Core_Item fpregset_items[] = + { + { + .name = "fpc", .group = "register", .offset = 0, .type = ELF_T_WORD, + .format = 'x', + }, + }; + +/* Do not set FPREGSET_SIZE so that we can supply fpregset_items. */ +#define EXTRA_NOTES_FPREGSET \ + EXTRA_REGSET_ITEMS (NT_FPREGSET, 17 * 8, fpregset_regs, fpregset_items) + +#if BITS == 32 +# define ULONG uint32_t +# define ALIGN_ULONG 4 +# define TYPE_ULONG ELF_T_WORD +# define TYPE_LONG ELF_T_SWORD +# define UID_T uint16_t +# define GID_T uint16_t +# define ALIGN_UID_T 2 +# define ALIGN_GID_T 2 +# define TYPE_UID_T ELF_T_HALF +# define TYPE_GID_T ELF_T_HALF +#else +# define ULONG uint64_t +# define ALIGN_ULONG 8 +# define TYPE_ULONG ELF_T_XWORD +# define TYPE_LONG ELF_T_SXWORD +# define UID_T uint32_t +# define GID_T uint32_t +# define ALIGN_UID_T 4 +# define ALIGN_GID_T 4 +# define TYPE_UID_T ELF_T_WORD +# define TYPE_GID_T ELF_T_WORD +#endif +#define PID_T int32_t +#define ALIGN_PID_T 4 +#define TYPE_PID_T ELF_T_SWORD +/* s390 psw_compat_t has alignment 8 bytes where it is inherited from. */ +#define ALIGN_PR_REG 8 + +#define PRSTATUS_REGSET_ITEMS \ + { \ + .name = "orig_r2", .type = TYPE_LONG, .format = 'd', \ + .offset = offsetof (struct EBLHOOK(prstatus), \ + pr_reg[BITS == 32 ? 34 : 26]), \ + .group = "register" \ + } + +#if BITS == 32 + +static const Ebl_Core_Item high_regs_items[] = + { +#define HR(n) \ + { \ + .name = "high_r" #n , .group = "register", .offset = (n) * 4, \ + .type = ELF_T_WORD, .format = 'x', \ + } + + /* Upper halves of r0-r15 are stored here. + FIXME: They are currently not combined with the r0-r15 lower halves. */ + HR (0), HR (1), HR (2), HR (3), HR (4), HR (5), HR (6), HR (7), + HR (8), HR (9), HR (10), HR (11), HR (12), HR (13), HR (14), HR (15) + +#undef HR + }; + +#define EXTRA_NOTES_HIGH_GPRS \ + EXTRA_ITEMS (NT_S390_HIGH_GPRS, 16 * 4, high_regs_items) + +#else /* BITS == 64 */ + +#define EXTRA_NOTES_HIGH_GPRS + +#endif /* BITS == 64 */ + +static const Ebl_Core_Item last_break_items[] = + { + { + .name = "last_break", .group = "system", .offset = BITS == 32 ? 4 : 0, + .type = BITS == 32 ? ELF_T_WORD : ELF_T_XWORD, .format = 'x', + }, + }; + +static const Ebl_Core_Item system_call_items[] = + { + { + .name = "system_call", .group = "system", .offset = 0, .type = ELF_T_WORD, + .format = 'd', + }, + }; + +#define EXTRA_NOTES \ + EXTRA_NOTES_FPREGSET \ + EXTRA_NOTES_HIGH_GPRS \ + EXTRA_ITEMS (NT_S390_LAST_BREAK, 8, last_break_items) \ + EXTRA_ITEMS (NT_S390_SYSTEM_CALL, 4, system_call_items) + +#include "linux-core-note.c" diff --git a/backends/s390_init.c b/backends/s390_init.c index 528e3576..91fe4b8d 100644 --- a/backends/s390_init.c +++ b/backends/s390_init.c @@ -37,6 +37,8 @@ /* This defines the common reloc hooks based on arm_reloc.def. */ #include "common-reloc.c" +extern __typeof (s390_core_note) s390x_core_note; + const char * s390_init (elf, machine, eh, ehlen) @@ -55,6 +57,10 @@ s390_init (elf, machine, eh, ehlen) HOOK (eh, reloc_simple_type); HOOK (eh, register_info); HOOK (eh, return_value_location); + if (eh->class == ELFCLASS64) + eh->core_note = s390x_core_note; + else + HOOK (eh, core_note); /* Only the 64-bit format uses the incorrect hash table entry size. */ if (eh->class == ELFCLASS64) diff --git a/backends/s390x_corenote.c b/backends/s390x_corenote.c new file mode 100644 index 00000000..427bf7de --- /dev/null +++ b/backends/s390x_corenote.c @@ -0,0 +1,2 @@ +#define BITS 64 +#include "s390_corenote.c" diff --git a/src/ChangeLog b/src/ChangeLog index 9d6fbe3c..362cb81f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com> + + * readelf.c (handle_core_items): Limit special repeated items handling + to single-item formats '\n', 'b' and 'B', assert OFFSET 0 there. + 2012-10-12 Jan Kratochvil <jan.kratochvil@redhat.com> * readelf.c (ITEM_WRAP_COLUMN, REGISTER_WRAP_COLUMN): Merge to ... diff --git a/src/readelf.c b/src/readelf.c index 1801c1c5..fa2d75cc 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -7680,6 +7680,24 @@ handle_core_items (Elf *core, const void *desc, size_t descsz, { if (nitems == 0) return 0; + unsigned int colno = 0; + + /* FORMAT '\n' makes sense to be present only as a single item as it + processes all the data of a note. FORMATs 'b' and 'B' have a special case + if present as a single item but they can be also processed with other + items below. */ + if (nitems == 1 && (items[0].format == '\n' || items[0].format == 'b' + || items[0].format == 'B')) + { + assert (items[0].offset == 0); + size_t size = descsz; + colno = handle_core_item (core, items, desc, colno, &size); + /* If SIZE is not zero here there is some remaining data. But we do not + know how to process it anyway. */ + return colno; + } + for (size_t i = 0; i < nitems; ++i) + assert (items[i].format != '\n'); /* Sort to collect the groups together. */ const Ebl_Core_Item *sorted_items[nitems]; @@ -7698,23 +7716,7 @@ handle_core_items (Elf *core, const void *desc, size_t descsz, qsort (groups, ngroups, sizeof groups[0], &compare_core_item_groups); /* Write out all the groups. */ - unsigned int colno = 0; - const void *last = desc; - if (nitems == 1) - { - size_t size = descsz; - /* If this note contains registers as well as items, don't pass - &size to express that we don't wish to repeat. */ - colno = handle_core_item (core, sorted_items[0], desc, colno, - size != 0 ? &size : NULL); - - if (size == 0) - return colno; - desc += descsz - size; - descsz = size; - } - do { for (size_t i = 0; i < ngroups; ++i) diff --git a/tests/ChangeLog b/tests/ChangeLog index 2495fb58..db160f74 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,10 @@ +2012-10-14 Jan Kratochvil <jan.kratochvil@redhat.com> + + * run-readelf-mixed-corenote.sh: New testcase for readelf -n of s390 + and s390x core notes. + * testfile67.bz2: New file. + * testfile68.bz2: New file. + 2012-10-10 Jan Kratochvil <jan.kratochvil@redhat.com> * run-addrname-test.sh: New test for core vDSO bias. diff --git a/tests/run-readelf-mixed-corenote.sh b/tests/run-readelf-mixed-corenote.sh index f9b96c83..3c4ec514 100755 --- a/tests/run-readelf-mixed-corenote.sh +++ b/tests/run-readelf-mixed-corenote.sh @@ -84,4 +84,137 @@ Note segment of 892 bytes at offset 0x274: d30: 0x0000000000000000 d31: 0x0000000000000000 EOF +testfiles testfile67 +testrun_compare ../src/readelf -n testfile67 <<\EOF + +Note segment of 1044 bytes at offset 0xe8: + Owner Data size Type + CORE 336 PRSTATUS + info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4 + sigpend: <> + sighold: <> + pid: 805, ppid: 804, pgrp: 804, sid: 699 + utime: 0.000042, stime: 0.000103, cutime: 0.000000, cstime: 0.000000 + orig_r2: 2571552016, fpvalid: 1 + pswm: 0x0705c00180000000 pswa: 0x00000000800000d6 + r0: 4393751543808 r1: 4398002544388 + r2: 11 r3: 2571578208 + r4: 2571702016 r5: 4398003235624 + r6: 2571580768 r7: 2571702016 + r8: 2571578208 r9: 2571552016 + r10: 2571552016 r11: 0 + r12: 4398003499008 r13: 2148274656 + r14: 0 r15: 4398040761216 + a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000 + a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000 + a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000 + a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000 + CORE 136 PRPSINFO + state: 0, sname: R, zomb: 0, nice: 0, flag: 0x0000000000400400 + uid: 0, gid: 0, pid: 805, ppid: 804, pgrp: 804, sid: 699 + fname: 1, psargs: ./1 + CORE 304 AUXV + SYSINFO_EHDR: 0 + HWCAP: 0x37f + PAGESZ: 4096 + CLKTCK: 100 + PHDR: 0x80000040 + PHENT: 56 + PHNUM: 2 + BASE: 0 + FLAGS: 0 + ENTRY: 0x800000d4 + UID: 0 + EUID: 0 + GID: 0 + EGID: 0 + SECURE: 0 + RANDOM: 0x3ffffa8463c + EXECFN: 0x3ffffa85ff4 + PLATFORM: 0x3ffffa8464c + NULL + CORE 136 FPREGSET + fpc: 0x00000000 + f0: 0x0000000000000040 f1: 0x4b00000000000000 + f2: 0x0000000000000041 f3: 0x3ad50b5555555600 + f4: 0x0000000000000000 f5: 0x0000000000000000 + f6: 0x0000000000000000 f7: 0x0000000000000000 + f8: 0x0000000000000000 f9: 0x0000000000000000 + f10: 0x0000000000000000 f11: 0x0000000000000000 + f12: 0x0000000000000000 f13: 0x0000000000000000 + f14: 0x0000000000000000 f15: 0x0000000000000000 + LINUX 8 S390_LAST_BREAK + last_break: 0x000003fffd75ccbe + LINUX 4 S390_SYSTEM_CALL + system_call: 0 +EOF + +testfiles testfile68 +testrun_compare ../src/readelf -n testfile68 <<\EOF + +Note segment of 852 bytes at offset 0x94: + Owner Data size Type + CORE 224 PRSTATUS + info.si_signo: 4, info.si_code: 0, info.si_errno: 0, cursig: 4 + sigpend: <> + sighold: <> + pid: 839, ppid: 838, pgrp: 838, sid: 699 + utime: 0.000043, stime: 0.000102, cutime: 0.000000, cstime: 0.000000 + orig_r2: -1723388288, fpvalid: 1 + pswm: 0x070dc000 pswa: 0x8040009a + r0: 0 r1: -43966716 r2: 11 r3: -1723238816 + r4: -1723265280 r5: -43275480 r6: -1723245280 r7: -1723265280 + r8: -1723238816 r9: -1723388288 r10: -1723388288 r11: 0 + r12: -43012096 r13: -2146692640 r14: 0 r15: 2139883440 + a0: 0x000003ff a1: 0xfd54a6f0 a2: 0x00000000 a3: 0x00000000 + a4: 0x00000000 a5: 0x00000000 a6: 0x00000000 a7: 0x00000000 + a8: 0x00000000 a9: 0x00000000 a10: 0x00000000 a11: 0x00000000 + a12: 0x00000000 a13: 0x00000000 a14: 0x00000000 a15: 0x00000000 + CORE 124 PRPSINFO + state: 0, sname: R, zomb: 0, nice: 0, flag: 0x00400400 + uid: 0, gid: 0, pid: 839, ppid: 838, pgrp: 838, sid: 699 + fname: 2, psargs: ./2 + CORE 152 AUXV + SYSINFO_EHDR: 0 + HWCAP: 0x37f + PAGESZ: 4096 + CLKTCK: 100 + PHDR: 0x400034 + PHENT: 32 + PHNUM: 2 + BASE: 0 + FLAGS: 0 + ENTRY: 0x400098 + UID: 0 + EUID: 0 + GID: 0 + EGID: 0 + SECURE: 0 + RANDOM: 0x7f8c090c + EXECFN: 0x7f8c1ff4 + PLATFORM: 0x7f8c091c + NULL + CORE 136 FPREGSET + fpc: 0x00000000 + f0: 0x0000000000000040 f1: 0x4b00000000000000 + f2: 0x0000000000000041 f3: 0x3ad50b5555555600 + f4: 0x0000000000000000 f5: 0x0000000000000000 + f6: 0x0000000000000000 f7: 0x0000000000000000 + f8: 0x0000000000000000 f9: 0x0000000000000000 + f10: 0x0000000000000000 f11: 0x0000000000000000 + f12: 0x0000000000000000 f13: 0x0000000000000000 + f14: 0x0000000000000000 f15: 0x0000000000000000 + LINUX 8 S390_LAST_BREAK + last_break: 0xfd75ccbe + LINUX 4 S390_SYSTEM_CALL + system_call: 0 + LINUX 64 S390_HIGH_GPRS + high_r0: 0x000003ff, high_r1: 0x000003ff, high_r2: 0x00000000 + high_r3: 0x00000000, high_r4: 0x00000000, high_r5: 0x000003ff + high_r6: 0x00000000, high_r7: 0x00000000, high_r8: 0x00000000 + high_r9: 0x00000000, high_r10: 0x00000000, high_r11: 0x00000000 + high_r12: 0x000003ff, high_r13: 0x00000000, high_r14: 0x00000000 + high_r15: 0x00000000 +EOF + exit 0 diff --git a/tests/testfile67.bz2 b/tests/testfile67.bz2 Binary files differnew file mode 100644 index 00000000..bb64745d --- /dev/null +++ b/tests/testfile67.bz2 diff --git a/tests/testfile68.bz2 b/tests/testfile68.bz2 Binary files differnew file mode 100644 index 00000000..3fe67921 --- /dev/null +++ b/tests/testfile68.bz2 |