Ticket #4595 (closed defect: fixed)

Opened 11 days ago

Last modified 5 hours ago

Midnight Commander Git Regression in Compiling #2

Reported by: Axanar Owned by: andrew_b
Priority: major Milestone: 4.8.33
Component: compilation Version: master
Keywords: Cc:
Blocked By: #4593 Blocking:
Branch state: no branch Votes for changeset:

Description (last modified by zaytsev) (diff)

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -pthread -I../../.. -I/usr/include/ext2fs -I/usr/include/et -I/usr/include/e2p -fdiagnostics-show-option -Wbad-function-cast -Wcomment -Wdeclaration-after-statement -Wfloat-conversion -Wfloat-equal -Wformat -Wformat-security -Wformat-signedness -Wimplicit -Wimplicit-fallthrough -Wignored-qualifiers -Wlogical-not-parentheses -Wmaybe-uninitialized -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-parameter-type -Wmissing-prototypes -Wmissing-variable-declarations -Wnested-externs -Wno-long-long -Wno-unreachable-code -Wparentheses -Wpointer-arith -Wpointer-sign -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstrict-prototypes -Wswitch -Wswitch-default -Wtype-limits -Wundef -Wuninitialized -Wunreachable-code -Wunused-but-set-variable -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wwrite-strings -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -fpermissive -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -c tar-internal.c  -fPIC -DPIC -o .libs/tar-internal.o
tar-internal.c: In function 'tar_flush_read':
tar-internal.c:131:16: warning: comparison of integer expressions of different signedness: 'size_t' {aka 'long unsigned int'} and 'idx_t' {aka 'long int'} [-Wsign-compare]
  131 |     if (status == record_size)
      |                ^~
tar-internal.c: In function 'stoint':
tar-internal.c:289:25: warning: comparison of integer expressions of different signedness: 'uintmax_t' {aka 'long unsigned int'} and 'intmax_t' {aka 'long int'} [-Wsign-compare]
  289 |             v |= maxval < i ? 1 : 0;
      |                         ^
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../.. -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -pthread -I../../.. -I/usr/include/ext2fs -I/usr/include/et -I/usr/include/e2p -fdiagnostics-show-option -Wbad-function-cast -Wcomment -Wdeclaration-after-statement -Wfloat-conversion -Wfloat-equal -Wformat -Wformat-security -Wformat-signedness -Wimplicit -Wimplicit-fallthrough -Wignored-qualifiers -Wlogical-not-parentheses -Wmaybe-uninitialized -Wmissing-braces -Wmissing-declarations -Wmissing-field-initializers -Wmissing-format-attribute -Wmissing-parameter-type -Wmissing-prototypes -Wmissing-variable-declarations -Wnested-externs -Wno-long-long -Wno-unreachable-code -Wparentheses -Wpointer-arith -Wpointer-sign -Wredundant-decls -Wreturn-type -Wsequence-point -Wshadow -Wsign-compare -Wstrict-prototypes -Wswitch -Wswitch-default -Wtype-limits -Wundef -Wuninitialized -Wunreachable-code -Wunused-but-set-variable -Wunused-function -Wunused-label -Wunused-parameter -Wunused-result -Wunused-value -Wunused-variable -Wwrite-strings -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -fpermissive -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -c tar-internal.c -o tar-internal.o >/dev/null 2>&1
make[4]: Leaving directory '/root/rpmbuild/BUILD/mc-4.8.33-build/mc-4.8.33/src/vfs/tar'
make[3]: *** [Makefile:603: all-recursive] Error 1
make[2]: *** [Makefile:716: all-recursive] Error 1
make[1]: *** [Makefile:599: all-recursive] Error 1
make: *** [Makefile:529: all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.HldT5d (%build)

This also after recent Changes... Using Fedora 41 here... This can be easily solved by casting...

Change History

comment:1 Changed 11 days ago by andrew_b

  • Owner set to andrew_b
  • Status changed from new to accepted
  • Component changed from mc-core to compilation
  • Blocked By 4593 added
  • Milestone changed from Future Releases to 4.8.33

comment:2 Changed 11 days ago by zaytsev

  • Description modified (diff)

comment:3 follow-up: ↓ 4 Changed 11 days ago by zaytsev

Ubuntu 24.04:

make[4]: Entering directory '/home/zaytsev/src/mc/build/src/vfs/tar'
  CC       tar-internal.lo
../../../../src/vfs/tar/tar-internal.c: In function ‘tar_flush_read’:
../../../../src/vfs/tar/tar-internal.c:131:16: warning: comparison of integer expressions of different signedness: ‘size_t’ {aka ‘long unsigned int’} and ‘idx_t’ {aka ‘long int’} [-Wsign-compare]
  131 |     if (status == record_size)
      |                ^~
../../../../src/vfs/tar/tar-internal.c: In function ‘stoint’:
../../../../src/vfs/tar/tar-internal.c:289:25: warning: comparison of integer expressions of different signedness: ‘uintmax_t’ {aka ‘long unsigned int’} and ‘intmax_t’ {aka ‘long int’} [-Wsign-compare]
  289 |             v |= maxval < i ? 1 : 0;
      |                         ^
  CC       tar-sparse.lo
  CC       tar-xheader.lo
In function ‘decode_timespec’,
    inlined from ‘decode_time.isra’ at ../../../../src/vfs/tar/tar-xheader.c:322:9:
../../../../src/vfs/tar/tar-xheader.c:260:17: warning: ‘arg_lim’ is used uninitialized [-Wuninitialized]
  260 |     char const *p = *arg_lim;
      |                 ^
../../../../src/vfs/tar/tar-xheader.c: In function ‘decode_time.isra’:
../../../../src/vfs/tar/tar-xheader.c:317:11: note: ‘arg_lim’ declared here
  317 |     char *arg_lim;
      |           ^~~~~~~
  CC       tar.lo
../../../../src/vfs/tar/tar.c: In function ‘tar_checksum’:
../../../../src/vfs/tar/tar.c:335:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
  335 |     for (i = 0; i < sizeof (*header); i++)
      |                   ^
../../../../src/vfs/tar/tar.c:348:19: warning: comparison of integer expressions of different signedness: ‘int’ and ‘long unsigned int’ [-Wsign-compare]
  348 |     for (i = 0; i < sizeof (header->header.chksum); i++)
      |                   ^
  CCLD     libvfs-tar.la

... but build succeeds.

comment:4 in reply to: ↑ 3 Changed 11 days ago by Axanar

Replying to zaytsev:

Ubuntu 24.04:

[..]

... but build succeeds.

Fedora increases hardening flags during compile time. If you compile normally, then you might end up with warnings and the compile succeeds... But if you compile for release RPMs using e.g. rpmbuild, mock or pungi, then you may end up in warnings being treated as errors. build fails.

/usr/lib/rpm/redhat/macros

comment:5 Changed 11 days ago by zaytsev

I don't think so. I think it has to do with stdckdint.h. On Fedora, build fails even without mock & co.

comment:6 Changed 11 days ago by Axanar

Now compiles on Fedora 41. Thank you!

Branch: 4593_tar_compilation

Passes RPM Hardening rules and compiles with rpmbuild!

comment:7 Changed 10 days ago by andrew_b

  • Status changed from accepted to testing
  • Resolution set to fixed
Version 0, edited 10 days ago by andrew_b (next)

comment:8 Changed 10 days ago by andrew_b

  • Status changed from testing to closed
Note: See TracTickets for help on using tickets.