The branch stable/13 has been updated by dim:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=814cfa6ad43c73de9b8030f241f516dad3f669ef

commit 814cfa6ad43c73de9b8030f241f516dad3f669ef
Author:     Dimitry Andric <[email protected]>
AuthorDate: 2023-04-17 16:20:56 +0000
Commit:     Dimitry Andric <[email protected]>
CommitDate: 2023-07-23 17:38:06 +0000

    libarchive: make single bit bitfields unsigned to avoid clang 16 warning
    
    Clang 16 introduced a warning about single bit bitfields in structs,
    which is triggered by various declarations in libarchive:
    
        contrib/libarchive/libarchive/archive_write_set_format_7zip.c:1541:13: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                        file->dir = 1;
                                  ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:5127:15: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                        isoent->dir = 1;
                                    ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:5213:14: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                isoent->dir = 1;
                            ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:5214:18: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                isoent->virtual = 1;
                                ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7149:18: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                isoent->virtual = 1;
                                ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7435:32: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                        iso9660->zisofs.detect_magic = 1;
                                                     ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7495:25: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                iso9660->zisofs.making = 1;
                                       ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7496:26: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                iso9660->zisofs.allzero = 1;
                                        ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7702:28: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                                iso9660->zisofs.allzero = 1;
                                                        ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7871:25: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                        zisofs->header_passed = 1;
                                              ^ ~
        
contrib/libarchive/libarchive/archive_write_set_format_iso9660.c:7894:24: 
error: implicit truncation from 'int' to a one-bit wide bit-field changes value 
from 1 to -1 [-Werror,-Wsingle-bit-bitfield-constant-conversion]
                                zisofs->initialized = 1;
                                                    ^ ~
    
    Signed one-bit bitfields can only have values -1 and 0, but the intent
    here is to use the fields as booleans, so make them unsigned.
    
    This has also been sent upstream.
    
    MFC after:      3 days
    
    (cherry picked from commit 67ecab6f50ff29e9bda340be1e9d2acc963c9a2b)
---
 .../libarchive/libarchive/archive_write_set_format_7zip.c  |  2 +-
 .../libarchive/archive_write_set_format_iso9660.c          | 14 +++++++-------
 .../libarchive/libarchive/archive_write_set_format_xar.c   |  4 ++--
 3 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/contrib/libarchive/libarchive/archive_write_set_format_7zip.c 
b/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
index d5ca9a665654..f4b34685d3d0 100644
--- a/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
+++ b/contrib/libarchive/libarchive/archive_write_set_format_7zip.c
@@ -165,7 +165,7 @@ struct file {
        mode_t                   mode;
        uint32_t                 crc32;
 
-       signed int               dir:1;
+       unsigned int             dir:1;
 };
 
 struct _7zip {
diff --git a/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c 
b/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c
index 58b7216a8071..b3e41d4ab997 100644
--- a/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c
+++ b/contrib/libarchive/libarchive/archive_write_set_format_iso9660.c
@@ -289,12 +289,12 @@ struct isoent {
                struct extr_rec *current;
        }                        extr_rec_list;
 
-       signed int               virtual:1;
+       unsigned int             virtual:1;
        /* If set to one, this file type is a directory.
         * A convenience flag to be used as
         * "archive_entry_filetype(isoent->file->entry) == AE_IFDIR".
         */
-       signed int               dir:1;
+       unsigned int             dir:1;
 };
 
 struct hardlink {
@@ -755,9 +755,9 @@ struct iso9660 {
 
        /* Used for making zisofs. */
        struct {
-               signed int       detect_magic:1;
-               signed int       making:1;
-               signed int       allzero:1;
+               unsigned int     detect_magic:1;
+               unsigned int     making:1;
+               unsigned int     allzero:1;
                unsigned char    magic_buffer[64];
                int              magic_cnt;
 
@@ -7802,8 +7802,8 @@ struct zisofs_extract {
        uint64_t         pz_uncompressed_size;
        size_t           uncompressed_buffer_size;
 
-       signed int       initialized:1;
-       signed int       header_passed:1;
+       unsigned int     initialized:1;
+       unsigned int     header_passed:1;
 
        uint32_t         pz_offset;
        unsigned char   *block_pointers;
diff --git a/contrib/libarchive/libarchive/archive_write_set_format_xar.c 
b/contrib/libarchive/libarchive/archive_write_set_format_xar.c
index d885f5c256d3..9d5e5dd41cbb 100644
--- a/contrib/libarchive/libarchive/archive_write_set_format_xar.c
+++ b/contrib/libarchive/libarchive/archive_write_set_format_xar.c
@@ -212,8 +212,8 @@ struct file {
        struct heap_data         data;
         struct archive_string    script;
 
-       signed int               virtual:1;
-       signed int               dir:1;
+       unsigned int             virtual:1;
+       unsigned int             dir:1;
 };
 
 struct hardlink {

Reply via email to