assertEqualInt(ARCHIVE_OK, archive_read_free(a));
}
+#ifdef LZMA_FILTER_RISCV
+static void
+test_riscv_filter(const char *refname)
+{
+ struct archive *a;
+ struct archive_entry *ae;
+ char buff[8488];
+ uint32_t computed_crc = 0;
+ uint32_t expected_crc = 0xf7ed24e7;
+
+ assert((a = archive_read_new()) != NULL);
+
+ extract_reference_file(refname);
+
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+ assert((a = archive_read_new()) != NULL);
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_filter_all(a));
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_support_format_all(a));
+
+ assertEqualIntA(a, ARCHIVE_OK,
+ archive_read_open_filename(a, refname, 10240));
+
+ assertEqualIntA(a, ARCHIVE_OK, archive_read_next_header(a, &ae));
+ assertEqualInt((AE_IFREG | 0775), archive_entry_mode(ae));
+ assertEqualString("hw-riscv64", archive_entry_pathname(ae));
+ assertEqualInt(sizeof(buff), archive_entry_size(ae));
+ assertEqualInt(sizeof(buff), archive_read_data(a, buff, sizeof(buff)));
+
+ computed_crc = crc32(computed_crc, buff, sizeof(buff));
+ assertEqualInt(computed_crc, expected_crc);
+
+ assertEqualInt(1, archive_file_count(a));
+
+ assertEqualIntA(a, ARCHIVE_EOF, archive_read_next_header(a, &ae));
+
+ assertEqualInt(ARCHIVE_OK, archive_read_close(a));
+ assertEqualInt(ARCHIVE_OK, archive_read_free(a));
+}
+#endif
+
+DEFINE_TEST(test_read_format_7zip_lzma2_riscv)
+{
+#ifdef LZMA_FILTER_RISCV
+ struct archive *a;
+
+ assert((a = archive_read_new()) != NULL);
+
+ if (ARCHIVE_OK != archive_read_support_filter_lzma(a)) {
+ skipping("7zip:lzma decoding is not supported on this platform");
+ } else {
+ test_riscv_filter("test_read_format_7zip_lzma2_riscv.7z");
+ }
+#else
+ skipping("This version of liblzma does not support LZMA_FILTER_RISCV");
+#endif
+}
+
static void
test_sparc_filter(const char *refname)
{
--- /dev/null
+begin 664 test_read_format_7zip_lzma2_riscv.7z
+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
+4`0!P^KPPPBC;`14&`0`@@/V!````
+`
+end