Re: [OE-core] [PATCH] quashfs-tools: make it be able to be compiled by gcc5 with "-O0"

2015-09-14 Thread Mike Looijmans

Typo: "(s)quashfs"



Kind regards,

Mike Looijmans
System Expert

TOPIC Embedded Products
Eindhovenseweg 32-C, NL-5683 KH Best
Postbus 440, NL-5680 AK Best
Telefoon: +31 (0) 499 33 69 79
Telefax: +31 (0) 499 33 69 70
E-mail: mike.looijm...@topicproducts.com
Website: www.topicproducts.com

Please consider the environment before printing this e-mail





--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core


[OE-core] [PATCH] quashfs-tools: make it be able to be compiled by gcc5 with "-O0"

2015-09-14 Thread rongqing.li
From: Roy Li 

Signed-off-by: Roy Li 
---
 ...shfs.c-get-inline-functions-work-with-C99.patch | 154 +
 .../squashfs-tools/squashfs-tools_git.bb   |   1 +
 2 files changed, 155 insertions(+)
 create mode 100644 
meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch

diff --git 
a/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
 
b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
new file mode 100644
index 000..fefe9f6
--- /dev/null
+++ 
b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
@@ -0,0 +1,154 @@
+From ac6268e843c43286eebff2a1052182c2393cdb2e Mon Sep 17 00:00:00 2001
+From: Roy Li 
+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__"]
+"static __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 
+---
+ 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 

Re: [OE-core] [PATCH] quashfs-tools: make it be able to be compiled by gcc5 with "-O0"

2015-09-14 Thread Khem Raj

> On Sep 14, 2015, at 12:33 AM,  
>  wrote:
> 
> From: Roy Li 
> 
> Signed-off-by: Roy Li 
> ---
> ...shfs.c-get-inline-functions-work-with-C99.patch | 154 +
> .../squashfs-tools/squashfs-tools_git.bb   |   1 +
> 2 files changed, 155 insertions(+)
> create mode 100644 
> meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
> 
> diff --git 
> a/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
>  
> b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
> new file mode 100644
> index 000..fefe9f6
> --- /dev/null
> +++ 
> b/meta/recipes-devtools/squashfs-tools/squashfs-tools/0001-mksquashfs.c-get-inline-functions-work-with-C99.patch
> @@ -0,0 +1,154 @@
> +From ac6268e843c43286eebff2a1052182c2393cdb2e Mon Sep 17 00:00:00 2001
> +From: Roy Li 
> +Date: Mon, 14 Sep 2015 12:31:42 +0800
> +Subject: [PATCH] mksquashfs.c:  get inline functions work with both gnu11 
> and gnu89
> +

this looks ok.

> +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__"]
> +"static __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 
> +---
> + 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 

Re: [OE-core] [PATCH] quashfs-tools: make it be able to be compiled by gcc5 with "-O0"

2015-09-14 Thread Rongqing Li



On 2015年09月14日 17:07, Mike Looijmans wrote:

Typo: "(s)quashfs"




thanks

-Roy



Kind regards,

Mike Looijmans
System Expert

TOPIC Embedded Products
Eindhovenseweg 32-C, NL-5683 KH Best
Postbus 440, NL-5680 AK Best
Telefoon: +31 (0) 499 33 69 79
Telefax: +31 (0) 499 33 69 70
E-mail: mike.looijm...@topicproducts.com
Website: www.topicproducts.com

Please consider the environment before printing this e-mail









--
Best Reagrds,
Roy | RongQing Li
--
___
Openembedded-core mailing list
Openembedded-core@lists.openembedded.org
http://lists.openembedded.org/mailman/listinfo/openembedded-core