diff options
author | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
---|---|---|
committer | takeshi_hoshina <takeshi_hoshina@mail.toyota.co.jp> | 2020-11-02 11:07:33 +0900 |
commit | 1c7d6584a7811b7785ae5c1e378f14b5ba0971cf (patch) | |
tree | cd70a267a5ef105ba32f200aa088e281fbd85747 /external/poky/meta/recipes-devtools/squashfs-tools | |
parent | 4204309872da5cb401cbb2729d9e2d4869a87f42 (diff) |
basesystem-jjsandbox/ToshikazuOhiwa/master-jj
recipes
Diffstat (limited to 'external/poky/meta/recipes-devtools/squashfs-tools')
6 files changed, 67 insertions, 320 deletions
diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch b/external/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch new file mode 100644 index 00000000..fc881862 --- /dev/null +++ b/external/poky/meta/recipes-devtools/squashfs-tools/files/0001-squashfs-tools-fix-build-failure-against-gcc-10.patch @@ -0,0 +1,45 @@ +From 94e1911ca24726b7cb3efe2f8b9eb7a784757e18 Mon Sep 17 00:00:00 2001 +From: Sergei Trofimovich <slyfox@gentoo.org> +Date: Sun, 26 Jan 2020 18:35:13 +0000 +Subject: [PATCH] squashfs-tools: fix build failure against gcc-10 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On gcc-10 (and gcc-9 -fno-common) build fails as: + +``` +cc ... -o mksquashfs +ld: read_fs.o:(.bss+0x0): + multiple definition of `fwriter_buffer'; mksquashfs.o:(.bss+0x400c90): first defined here +ld: read_fs.o:(.bss+0x8): + multiple definition of `bwriter_buffer'; mksquashfs.o:(.bss+0x400c98): first defined here +``` + +gcc-10 will change the default from -fcommon to fno-common: +https://gcc.gnu.org/PR85678. + +The error also happens if CFLAGS=-fno-common passed explicitly. + +Reported-by: Toralf Förster +Bug: https://bugs.gentoo.org/706456 +Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org> +Signed-off-by: Jacob Kroon <jacob.kroon@gmail.com> +Upstream-Status: Backport [https://github.com/plougher/squashfs-tools/commit/fe2f5da4b0f8994169c53e84b7cb8a0feefc97b5] +--- + squashfs-tools/mksquashfs.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/squashfs-tools/mksquashfs.h b/squashfs-tools/mksquashfs.h +index 1beefef..b650306 100644 +--- a/squashfs-tools/mksquashfs.h ++++ b/squashfs-tools/mksquashfs.h +@@ -143,7 +143,7 @@ struct append_file { + #endif + + extern struct cache *reader_buffer, *fragment_buffer, *reserve_cache; +-struct cache *bwriter_buffer, *fwriter_buffer; ++extern struct cache *bwriter_buffer, *fwriter_buffer; + extern struct queue *to_reader, *to_deflate, *to_writer, *from_writer, + *to_frag, *locked_fragment, *to_process_frag; + extern struct append_file **file_mapping; diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch deleted file mode 100644 index a5bab054..00000000 --- a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch +++ /dev/null @@ -1,154 +0,0 @@ -From ac6268e843c43286eebff2a1052182c2393cdb2e Mon Sep 17 00:00:00 2001 -From: Roy Li <rongqing.li@windriver.com> -Date: Mon, 14 Sep 2015 12:31:42 +0800 -Subject: [PATCH] mksquashfs.c: get inline functions work with both gnu11 and gnu89 - -Upstream-Status: Pending - -After gcc upgraded to gcc5, and if the codes is compiled without optimization(-O0), -and the below error will happen: - -| mksquashfs.o: In function `create_inode': -| git/squashfs-tools/mksquashfs.c:897: undefined reference to `get_inode_no' -| git/squashfs-tools/mksquashfs.c:960: undefined reference to `get_parent_no' -| git/squashfs-tools/mksquashfs.c:983: undefined reference to `get_parent_no' -| mksquashfs.o: In function `reader_read_process': -| git/squashfs-tools/mksquashfs.c:2132: undefined reference to `is_fragment' -| mksquashfs.o: In function `reader_read_file': -| git/squashfs-tools/mksquashfs.c:2228: undefined reference to `is_fragment' -| mksquashfs.o: In function `dir_scan': -| git/squashfs-tools/mksquashfs.c:3101: undefined reference to `create_dir_entry' - -gcc5 defaults to -std=gnu11 instead of -std=gnu89, and it requires that exactly one C -source file has the callable copy of the inline function. Consider the following -program: - - inline int - foo (void) - { - return 42; - } - - int - main (void) - { - return foo (); - } - -The program above will not link with the C99 inline semantics, because no out-of-line -function foo is generated. To fix this, either mark the function foo as static, or -add the following declaration: - static inline int foo (void); - -more information refer to: https://gcc.gnu.org/gcc-5/porting_to.html; - -but the use of "extern inline" will lead to the compilation issue if gcc is not -gcc5, as the commit in oe-core d0af30c92fde [alsa-lib: Change function type to -"static __inline__"] - "extern __inline__ function()" is the inlined version that - can be used in this compilation unit, but there will be another - definition of this function somewhere, so compiler will not emit - any code for the function body. This causes problem in -O0, - where functions are never inlined, the function call is preserved, - but linker can't find the symbol, thus the error happens. - -so replace "inline" with "static inline" to make it work with both gnu11 and gnu89 - -Signed-off-by: Roy Li <rongqing.li@windriver.com> ---- - squashfs-tools/mksquashfs.c | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) - -diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c -index d221c35..6bba1d2 100644 ---- a/squashfs-tools/mksquashfs.c -+++ b/squashfs-tools/mksquashfs.c -@@ -828,13 +828,13 @@ char *subpathname(struct dir_ent *dir_ent) - } - - --inline unsigned int get_inode_no(struct inode_info *inode) -+static inline unsigned int get_inode_no(struct inode_info *inode) - { - return inode->inode_number; - } - - --inline unsigned int get_parent_no(struct dir_info *dir) -+static inline unsigned int get_parent_no(struct dir_info *dir) - { - return dir->depth ? get_inode_no(dir->dir_ent->inode) : inode_no; - } -@@ -2027,7 +2027,7 @@ struct file_info *duplicate(long long file_size, long long bytes, - } - - --inline int is_fragment(struct inode_info *inode) -+static inline int is_fragment(struct inode_info *inode) - { - off_t file_size = inode->buf.st_size; - -@@ -2996,13 +2996,13 @@ struct inode_info *lookup_inode2(struct stat *buf, int pseudo, int id) - } - - --inline struct inode_info *lookup_inode(struct stat *buf) -+static inline struct inode_info *lookup_inode(struct stat *buf) - { - return lookup_inode2(buf, 0, 0); - } - - --inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) -+static inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) - { - if (inode->inode_number == 0) { - inode->inode_number = use_this ? : inode_no ++; -@@ -3013,7 +3013,7 @@ inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this) - } - - --inline struct dir_ent *create_dir_entry(char *name, char *source_name, -+static inline struct dir_ent *create_dir_entry(char *name, char *source_name, - char *nonstandard_pathname, struct dir_info *dir) - { - struct dir_ent *dir_ent = malloc(sizeof(struct dir_ent)); -@@ -3031,7 +3031,7 @@ inline struct dir_ent *create_dir_entry(char *name, char *source_name, - } - - --inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, -+static inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, - struct inode_info *inode_info) - { - struct dir_info *dir = dir_ent->our_dir; -@@ -3047,7 +3047,7 @@ inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir, - } - - --inline void add_dir_entry2(char *name, char *source_name, -+static inline void add_dir_entry2(char *name, char *source_name, - char *nonstandard_pathname, struct dir_info *sub_dir, - struct inode_info *inode_info, struct dir_info *dir) - { -@@ -3059,7 +3059,7 @@ inline void add_dir_entry2(char *name, char *source_name, - } - - --inline void free_dir_entry(struct dir_ent *dir_ent) -+static inline void free_dir_entry(struct dir_ent *dir_ent) - { - if(dir_ent->name) - free(dir_ent->name); -@@ -3080,7 +3080,7 @@ inline void free_dir_entry(struct dir_ent *dir_ent) - } - - --inline void add_excluded(struct dir_info *dir) -+static inline void add_excluded(struct dir_info *dir) - { - dir->excluded ++; - } --- -1.9.1 - diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch deleted file mode 100644 index 2261ea94..00000000 --- a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 3c0d67184d6edb63f3b7d6d5eb81531daa6388f3 Mon Sep 17 00:00:00 2001 -From: Changqing Li <changqing.li@windriver.com> -Date: Tue, 28 Aug 2018 16:25:36 +0800 -Subject: [PATCH] squashfs-tools: patch for CVE-2015-4645(6) - -Upstream-Status: Backport[https://github.com/devttys0/sasquatch/pull/ - 5/commits/6777e08cc38bc780d27c69c1d8c272867b74524f] - -CVE: CVE-2015-4645 CVE-2015-4646 - -Signed-off-by: Changqing Li <changqing.li@windriver.com> ---- - squashfs-tools/unsquash-4.c | 11 ++++++++--- - 1 file changed, 8 insertions(+), 3 deletions(-) - -diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c -index ecdaac7..692ae25 100644 ---- a/squashfs-tools/unsquash-4.c -+++ b/squashfs-tools/unsquash-4.c -@@ -31,9 +31,9 @@ static unsigned int *id_table; - int read_fragment_table_4(long long *directory_table_end) - { - int res, i; -- int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); -- int indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); -- long long fragment_table_index[indexes]; -+ size_t bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments); -+ size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments); -+ long long *fragment_table_index; - - TRACE("read_fragment_table: %d fragments, reading %d fragment indexes " - "from 0x%llx\n", sBlk.s.fragments, indexes, -@@ -43,6 +43,11 @@ int read_fragment_table_4(long long *directory_table_end) - *directory_table_end = sBlk.s.fragment_table_start; - return TRUE; - } -+ -+ fragment_table_index = malloc(indexes*sizeof(long long)); -+ if(fragment_table_index == NULL) -+ EXIT_UNSQUASH("read_fragment_table: failed to allocate " -+ "fragment table index\n"); - - fragment_table = malloc(bytes); - if(fragment_table == NULL) --- -2.7.4 - diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch deleted file mode 100644 index 0ce7b4e8..00000000 --- a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/fix-compat.patch +++ /dev/null @@ -1,63 +0,0 @@ -Define FNM_EXTMATCH if not defined its glibc specific define -include missing sys/stat.h for stat* function declarations - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Index: squashfs-tools/action.c -=================================================================== ---- squashfs-tools.orig/action.c -+++ squashfs-tools/action.c -@@ -44,6 +44,10 @@ - #include "action.h" - #include "error.h" - -+#if !defined(FNM_EXTMATCH) -+#define FNM_EXTMATCH 0 -+#endif -+ - /* - * code to parse actions - */ -Index: squashfs-tools/mksquashfs.c -=================================================================== ---- squashfs-tools.orig/mksquashfs.c -+++ squashfs-tools/mksquashfs.c -@@ -1261,6 +1261,10 @@ void write_dir(squashfs_inode *inode, st - dir_size + 3, directory_block, directory_offset, NULL, NULL, - dir, 0); - -+#if !defined(FNM_EXTMATCH) -+#define FNM_EXTMATCH 0 -+#endif -+ - #ifdef SQUASHFS_TRACE - { - unsigned char *dirp; -Index: squashfs-tools/pseudo.c -=================================================================== ---- squashfs-tools.orig/pseudo.c -+++ squashfs-tools/pseudo.c -@@ -32,6 +32,7 @@ - #include <stdlib.h> - #include <sys/types.h> - #include <sys/wait.h> -+#include <sys/stat.h> - #include <ctype.h> - - #include "pseudo.h" -Index: squashfs-tools/unsquashfs.c -=================================================================== ---- squashfs-tools.orig/unsquashfs.c -+++ squashfs-tools/unsquashfs.c -@@ -42,6 +42,10 @@ - #include <sys/sysmacros.h> - #endif - -+#ifndef FNM_EXTMATCH -+#define FNM_EXTMATCH 0 -+#endif -+ - struct cache *fragment_cache, *data_cache; - struct queue *to_reader, *to_inflate, *to_writer, *from_writer; - pthread_t *thread, *inflator_thread; diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch deleted file mode 100644 index 39521a7d..00000000 --- a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools/squashfs-tools-4.3-sysmacros.patch +++ /dev/null @@ -1,32 +0,0 @@ -From https://gitweb.gentoo.org/repo/gentoo.git/tree/sys-fs/squashfs-tools/files/squashfs-tools-4.3-sysmacros.patch - -Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> - -Upstream-Status: Pending - - -sys/types.h might not always include sys/sysmacros.h for major/minor/makedev - ---- a/squashfs-tools/mksquashfs.c -+++ b/squashfs-tools/mksquashfs.c -@@ -59,6 +59,7 @@ - #else - #include <endian.h> - #include <sys/sysinfo.h> -+#include <sys/sysmacros.h> - #endif - - #include "squashfs_fs.h" ---- a/squashfs-tools/unsquashfs.c -+++ b/squashfs-tools/unsquashfs.c -@@ -38,6 +38,10 @@ - #include <limits.h> - #include <ctype.h> - -+#ifdef linux -+#include <sys/sysmacros.h> -+#endif -+ - struct cache *fragment_cache, *data_cache; - struct queue *to_reader, *to_inflate, *to_writer, *from_writer; - pthread_t *thread, *inflator_thread; diff --git a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb index 2f412634..b06951df 100644 --- a/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb +++ b/external/poky/meta/recipes-devtools/squashfs-tools/squashfs-tools_git.bb @@ -2,39 +2,35 @@ # and I don't think the kernel supports it any more. SUMMARY = "Tools for manipulating SquashFS filesystems" SECTION = "base" -LICENSE = "GPL-2 & PD" -LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \ - file://../../7zC.txt;beginline=12;endline=16;md5=2056cd6d919ebc3807602143c7449a7c \ -" -DEPENDS = "attr zlib xz lzo lz4" +LICENSE = "GPL-2" +LIC_FILES_CHKSUM = "file://../COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263" -PV = "4.3+gitr${SRCPV}" -SRCREV = "9c1db6d13a51a2e009f0027ef336ce03624eac0d" +PV = "4.4" +SRCREV = "52eb4c279cd283ed9802dd1ceb686560b22ffb67" SRC_URI = "git://github.com/plougher/squashfs-tools.git;protocol=https \ - http://downloads.sourceforge.net/sevenzip/lzma465.tar.bz2;name=lzma \ - file://0001-mksquashfs.c-get-inline-functions-work-with-C99.patch;striplevel=2 \ - file://squashfs-tools-4.3-sysmacros.patch;striplevel=2 \ - file://fix-compat.patch \ - file://0001-squashfs-tools-patch-for-CVE-2015-4645-6.patch;striplevel=2 \ + file://0001-squashfs-tools-fix-build-failure-against-gcc-10.patch;striplevel=2 \ " -UPSTREAM_CHECK_COMMITS = "1" -SRC_URI[lzma.md5sum] = "29d5ffd03a5a3e51aef6a74e9eafb759" -SRC_URI[lzma.sha256sum] = "c935fd04dd8e0e8c688a3078f3675d699679a90be81c12686837e0880aa0fa1e" S = "${WORKDIR}/git/squashfs-tools" -# EXTRA_OEMAKE is typically: -e MAKEFLAGS= -# the -e causes problems as CFLAGS is modified in the Makefile, so -# we redefine EXTRA_OEMAKE here -EXTRA_OEMAKE = "MAKEFLAGS= LZMA_SUPPORT=1 LZMA_DIR=../.. XZ_SUPPORT=1 LZO_SUPPORT=1 LZ4_SUPPORT=1" +EXTRA_OEMAKE = "${PACKAGECONFIG_CONFARGS}" + +PACKAGECONFIG ??= "gzip xz lzo lz4 lzma xattr reproducible" +PACKAGECONFIG[gzip] = "GZIP_SUPPORT=1,GZIP_SUPPORT=0,zlib" +PACKAGECONFIG[xz] = "XZ_SUPPORT=1,XZ_SUPPORT=0,xz" +PACKAGECONFIG[lzo] = "LZO_SUPPORT=1,LZO_SUPPORT=0,lzo" +PACKAGECONFIG[lz4] = "LZ4_SUPPORT=1,LZ4_SUPPORT=0,lz4" +PACKAGECONFIG[lzma] = "LZMA_XZ_SUPPORT=1,LZMA_XZ_SUPPORT=0,xz" +PACKAGECONFIG[xattr] = "XATTR_SUPPORT=1,XATTR_SUPPORT=0,attr" +PACKAGECONFIG[zstd] = "ZSTD_SUPPORT=1,ZSTD_SUPPORT=0,zstd" +PACKAGECONFIG[reproducible] = "REPRODUCIBLE_DEFAULT=1,REPRODUCIBLE_DEFAULT=0," do_compile() { - oe_runmake mksquashfs unsquashfs + oe_runmake all } -do_install () { - install -d ${D}${sbindir} - install -m 0755 mksquashfs ${D}${sbindir}/ - install -m 0755 unsquashfs ${D}${sbindir}/ + +do_install() { + oe_runmake install INSTALL_DIR=${D}${sbindir} } ARM_INSTRUCTION_SET_armv4 = "arm" @@ -42,3 +38,5 @@ ARM_INSTRUCTION_SET_armv5 = "arm" ARM_INSTRUCTION_SET_armv6 = "arm" BBCLASSEXTEND = "native nativesdk" + +CVE_PRODUCT = "squashfs" |