Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix misc. warnings found by clang-16 #521

Merged
merged 3 commits into from
Nov 20, 2024

Conversation

hhoffstaette
Copy link
Contributor

@hhoffstaette hhoffstaette commented Sep 4, 2023

These warnings may seem benign but will soon turn into compilation errors, starting with clang-17 and gcc-14. I tried hard to find a use for the duplicated (and incorrect) lseek prototypes, but could not find any.
The alignment issue was also flagged by clang. I'm not a SIMD expert but explicit 1-byte aligment for a vector seems wrong.

With these fixes rsync itself is now 100% warning-free :)

Building with clang-16 complains with:
./simd-checksum-x86_64.cpp:204:25: warning: passing 1-byte aligned argument to
  16-byte aligned parameter 1 of '_mm_store_si128' may result in an unaligned pointer
  access [-Walign-mismatch]

Signed-off-by: Holger Hoffstätte <[email protected]>
Clang rightfully complains about invoking bomb(..) without a proper prototype:
  lib/pool_alloc.c:171:16: warning: passing arguments to a function without a prototype
  is deprecated in all versions of C and is not supported in C2x [-Wdeprecated-non-prototype]
                (*pool->bomb)(bomb_msg, __FILE__, __LINE__);
                             ^
1 warning generated.

Signed-off-by: Holger Hoffstätte <[email protected]>
Clang rightfully complains about conflicting prototypes, as both lseek() variants
are redefined:

  syscall.c:394:10: warning: a function declaration without a prototype is deprecated
  in all versions of C and is treated as a zero-parameter prototype in C2x, conflicting
  with a previous declaration [-Wdeprecated-non-prototype]
        off64_t lseek64();
                ^
/usr/include/unistd.h:350:18: note: conflicting prototype is here
extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)
                 ^
1 warning generated.

The point of the #ifdef is to build for the configured OFF_T; there is
no reason to redefine lseek/lseek64, which should have been found
via configure.

Signed-off-by: Holger Hoffstätte <[email protected]>
@tridge
Copy link
Member

tridge commented Apr 6, 2024

looks good, assigning to @WayneD for merge

@WayneD WayneD merged commit 0706988 into RsyncProject:master Nov 20, 2024
3 checks passed
@hhoffstaette hhoffstaette deleted the clang-warnings branch November 24, 2024 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants