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

Fail to build over 32-bit systems #16

Open
eribertomota opened this issue Jun 13, 2023 · 5 comments
Open

Fail to build over 32-bit systems #16

eribertomota opened this issue Jun 13, 2023 · 5 comments

Comments

@eribertomota
Copy link
Contributor

Hi @exeldro,

When trying to build from source the version 0.1.4 over Intel x86 (Debian i386), I got the following error:

/usr/lib/ccache/cc -DHAVE_OBSCONFIG_H -Dsource_clone_EXPORTS -isystem /usr/include/obs -g -O2 -ffile-prefix-map=/builds/debian/obs-source-clone/debian/output/source_dir=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Werror -Wextra -Wvla -Wformat -Wformat-security -Wswitch -Wunused-parameter -Wno-unused-function -Wno-missing-field-initializers -fno-strict-aliasing -Werror-implicit-function-declaration -Wno-missing-braces -DSIMDE_ENABLE_OPENMP -fopenmp-simd -MD -MT CMakeFiles/source-clone.dir/audio-wrapper.c.o -MF CMakeFiles/source-clone.dir/audio-wrapper.c.o.d -o CMakeFiles/source-clone.dir/audio-wrapper.c.o -c /builds/debian/obs-source-clone/debian/output/source_dir/audio-wrapper.c
/builds/debian/obs-source-clone/debian/output/source_dir/source-clone.c: In function 'simde_mm_setzero_ps':
/builds/debian/obs-source-clone/debian/output/source_dir/source-clone.c:648:1: error: SSE vector return without SSE enabled changes the ABI [-Werror=psabi]
  648 | }
      | ^
cc1: all warnings being treated as errors
make[3]: *** [CMakeFiles/source-clone.dir/build.make:79: CMakeFiles/source-clone.dir/source-clone.c.o] Error 1

You can see the full building process here[1]. Maybe this is the same issue discussed here[2].

[1] https://salsa.debian.org/debian/obs-source-clone/-/jobs/4307052
[2] kcat/openal-soft#541

Thanks in advance.

@exeldro
Copy link
Owner

exeldro commented Jun 14, 2023

I have no idea what is causing that build error

@eribertomota
Copy link
Contributor Author

After a little test in a jail, I found the problem. This is a new procedure started in GCC-12. The explanation is here[1].

[1] https://gcc.gnu.org/gcc-12/changes.html

See:

An ABI incompatibility between C and C++ when passing or returning by value certain aggregates containing zero width bit-fields has been discovered on various targets. As mentioned in PR102024, since the PR42217 fix in GCC 4.5 the C++ front-end has been removing zero width bit-fields from the internal representation of the aggregates after the layout of those aggregates, but the C front-end kept them, so passing e.g. struct S { float a; int : 0; float b; } or struct T { float c; int : 0; } by value could differ between C and C++. Starting with GCC 12 the C++ front-end no longer removes those bit-fields from the internal representation and per clarified psABI some targets have been changed, so that they either ignore those bit-fields in the argument passing by value decisions in both C and C++, or they always take them into account. x86-64, ARM and AArch64 will always ignore them (so there is a C ABI incompatibility between GCC 11 and earlier with GCC 12 or later), PowerPC64 ELFv2 and S/390 always take them into account (so there is a C++ ABI incompatibility, GCC 4.4 and earlier compatible with GCC 12 or later, incompatible with GCC 4.5 through GCC 11). RISC-V has changed the handling of these already starting with GCC 10. As the ABI requires, MIPS takes them into account handling function return values so there is a C++ ABI incompatibility with GCC 4.5 through 11. For function arguments on MIPS, refer to the MIPS specific entry. GCC 12 on the above targets will report such incompatibilities as warnings or other diagnostics unless -Wno-psabi is used.

Using -Wno-psabi in CFLAGS solved the problem for me (on Debian, in debian/rules files, export DEB_CFLAGS_MAINT_APPEND = -Wno-psabi). However, IMHO, this issue should be fixed in the source code.

Thanks for your attention.

@eribertomota
Copy link
Contributor Author

eribertomota commented May 11, 2024

From this issue[1], WarmUpTill solved the problem using the following line for CMake:

add_compile_options(-Wno-error=psabi)

I found errors when building move-transition, 3d-effect and source-clone over x86.

[1] WarmUpTill/SceneSwitcher#1091

@exeldro
Copy link
Owner

exeldro commented May 11, 2024

That solution looks good to me, I will look at it more later. If you want to speed up the process you can create pull requests with the changes.

@eribertomota
Copy link
Contributor Author

Sorry, I tried something, but was not able to implement this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants