Re: [PATCH v2 2/5] xen/decompress: make helper symbols static

2021-01-21 Thread Wei Liu
On Tue, Jan 19, 2021 at 04:15:53PM +0100, Jan Beulich wrote:
> The individual decompression CUs need to only surface their top level
> functions to other code. Arrange for everything else to be static, to
> make sure no undue uses of that code exist or will appear without
> explicitly noticing. (In some cases this also results in code size
> reduction, but since this is all init-only code this probably doesn't
> matter very much.)
> 
> In the LZO case also take the opportunity and convert u8 where lines
> get touched anyway.
> 
> The downside is that the top level functions will now be non-static
> in stubdom builds of libxenguest, but I think that's acceptable. This
> does require declaring them first, though, as the compiler warns about
> the lack of declarations.
> 
> Signed-off-by: Jan Beulich 
> Acked-by: Andrew Cooper 

Acked-by: Wei Liu 



[PATCH v2 2/5] xen/decompress: make helper symbols static

2021-01-19 Thread Jan Beulich
The individual decompression CUs need to only surface their top level
functions to other code. Arrange for everything else to be static, to
make sure no undue uses of that code exist or will appear without
explicitly noticing. (In some cases this also results in code size
reduction, but since this is all init-only code this probably doesn't
matter very much.)

In the LZO case also take the opportunity and convert u8 where lines
get touched anyway.

The downside is that the top level functions will now be non-static
in stubdom builds of libxenguest, but I think that's acceptable. This
does require declaring them first, though, as the compiler warns about
the lack of declarations.

Signed-off-by: Jan Beulich 
Acked-by: Andrew Cooper 
---
v2: Fix stubdom build.

--- a/tools/libs/guest/xg_dom_decompress_unsafe.h
+++ b/tools/libs/guest/xg_dom_decompress_unsafe.h
@@ -1,8 +1,12 @@
+#ifdef __MINIOS__
+# include "../../xen/include/xen/decompress.h"
+#else
 typedef int decompress_fn(unsigned char *inbuf, unsigned int len,
   int (*fill)(void*, unsigned int),
   int (*flush)(void*, unsigned int),
   unsigned char *outbuf, unsigned int *posp,
   void (*error)(const char *x));
+#endif
 
 int xc_dom_decompress_unsafe(
 decompress_fn fn, struct xc_dom_image *dom, void **blob, size_t *size)
--- a/xen/common/bunzip2.c
+++ b/xen/common/bunzip2.c
@@ -665,12 +665,11 @@ static int INIT start_bunzip(struct bunz
 
 /* Example usage: decompress src_fd to dst_fd.  (Stops at end of bzip2 data,
not end of file.) */
-STATIC int INIT bunzip2(unsigned char *buf, unsigned int len,
-   int(*fill)(void*, unsigned int),
-   int(*flush)(void*, unsigned int),
-   unsigned char *outbuf,
-   unsigned int *pos,
-   void(*error)(const char *x))
+int INIT bunzip2(unsigned char *buf, unsigned int len,
+int(*fill)(void*, unsigned int),
+int(*flush)(void*, unsigned int),
+unsigned char *outbuf, unsigned int *pos,
+void(*error)(const char *x))
 {
struct bunzip_data *bd;
int i = -1;
--- a/xen/common/decompress.h
+++ b/xen/common/decompress.h
@@ -7,7 +7,7 @@
 #include 
 #include 
 
-#define STATIC
+#define STATIC static
 #define INIT __init
 #define INITDATA __initdata
 
--- a/xen/common/unlz4.c
+++ b/xen/common/unlz4.c
@@ -22,12 +22,11 @@
 #define LZ4_DEFAULT_UNCOMPRESSED_CHUNK_SIZE (8 << 20)
 #define ARCHIVE_MAGICNUMBER 0x184C2102
 
-STATIC int INIT unlz4(unsigned char *input, unsigned int in_len,
- int (*fill)(void *, unsigned int),
- int (*flush)(void *, unsigned int),
- unsigned char *output,
- unsigned int *posp,
- void (*error)(const char *x))
+int INIT unlz4(unsigned char *input, unsigned int in_len,
+  int (*fill)(void *, unsigned int),
+  int (*flush)(void *, unsigned int),
+  unsigned char *output, unsigned int *posp,
+  void (*error)(const char *x))
 {
int ret = -1;
size_t chunksize = 0;
--- a/xen/common/unlzma.c
+++ b/xen/common/unlzma.c
@@ -528,13 +528,11 @@ static inline int INIT process_bit1(stru
 
 
 
-STATIC int INIT unlzma(unsigned char *buf, unsigned int in_len,
-  int(*fill)(void*, unsigned int),
-  int(*flush)(void*, unsigned int),
-  unsigned char *output,
-  unsigned int *posp,
-  void(*error)(const char *x)
-   )
+int INIT unlzma(unsigned char *buf, unsigned int in_len,
+   int(*fill)(void*, unsigned int),
+   int(*flush)(void*, unsigned int),
+   unsigned char *output, unsigned int *posp,
+   void(*error)(const char *x))
 {
struct lzma_header header;
int lc, pb, lp;
--- a/xen/common/unlzo.c
+++ b/xen/common/unlzo.c
@@ -114,11 +114,11 @@ static int INIT parse_header(u8 *input,
return 1;
 }
 
-STATIC int INIT unlzo(u8 *input, unsigned int in_len,
- int (*fill) (void *, unsigned int),
- int (*flush) (void *, unsigned int),
- u8 *output, unsigned int *posp,
- void (*error) (const char *x))
+int INIT unlzo(unsigned char *input, unsigned int in_len,
+  int (*fill) (void *, unsigned int),
+  int (*flush) (void *, unsigned int),
+  unsigned char *output, unsigned int *posp,
+  void (*error) (const char *x))
 {
u8 r = 0;
int skip = 0;
--- a/xen/common/unxz.c
+++ b/xen/common/unxz.c
@@ -157,11 +157,11 @@
  * both input and output buffers are available as a single chunk, i.e. when
  * fill() and flush() won't be used.
  */
-STATIC int INIT unxz(unsigned char *in, unsigned int