Community Packages

Please read this before reporting a bug:
https://wiki.archlinux.org/title/Bug_reporting_guidelines

Do NOT report bugs when a package is just outdated, or it is in the AUR. Use the 'flag out of date' link on the package page, or the Mailing List.

REPEAT: Do NOT report bugs for outdated packages!
Tasklist

FS#61234 - [cpuburn] Requires 32bit libs that are not in its dependencies

Attached to Project: Community Packages
Opened by Denis Carikli (GNUtoo) - Tuesday, 01 January 2019, 16:24 GMT
Last edited by Kyle Keen (keenerd) - Sunday, 06 January 2019, 02:56 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Kyle Keen (keenerd)
Architecture x86_64
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

cpuburn fails to run without some 32bit libraries, however the package doesn't have anything in optional or mandatory dependencies:
# pacman -Q -i cpuburn
[...]
Depends On : None
[...]
Optional Deps : None

Additional info:

Package version: community/cpuburn 1.4a-5 [installed]

According to the git repository, cpuburn is built with 'gcc -m32 -s -nostdlib':
https://git.archlinux.org/svntogit/community.git/tree/cpuburn/repos/community-x86_64/cpuburn.patch#n27

However I was told on the #archlinux IRC channel on Freenode that

Steps to reproduce:
# pacman -S cpuburn
# pacman -R lib32-glibc lib32-gcc-libs # Theses are not dependencies
# burnK7 # run it
-bash: /usr/bin/burnK7: No such file or directory

If I install lib32-gcc-libs and lib32-glibc (installing one also automatically installs the other one), then I can run cpuburn:
# burnK7
This task depends upon

Closed by  Kyle Keen (keenerd)
Sunday, 06 January 2019, 02:56 GMT
Reason for closing:  Fixed
Additional comments about closing:  cpuburn-1.4a-6
Comment by Denis Carikli (GNUtoo) - Tuesday, 01 January 2019, 16:28 GMT
* However I was told on the #archlinux IRC channel on Freenode that -nostdlib should make sure that there is no dependency on the libc.

I'm not very familiar with the setup code (_start) that gcc includes, but maybe something else than the libc is required (like some gcc libs? or other things?).
Comment by Doug Newgard (Scimmia) - Tuesday, 01 January 2019, 16:57 GMT
Should also be in multilib instead of community.
Comment by Eli Schwartz (eschwartz) - Tuesday, 01 January 2019, 17:39 GMT
The binary tries to be fully static by using nostdlib, but that doesn't help when the ELF header still specifies the interpreter /lib/ld-linux.so.2 (which comes from lib32-glibc).

It works fine if I copy the interpreter on its lonesome into my testing chroot. The interpreter is the only thing which is needed. If you want to be able to run without lib32-glibc, then the binary needs to be built statically, it's as simple as adding -static.

The program is written in pure asm, the only compiler it needs is one that recognizes -m32 (because the asm it uses depends on 32-bit registers and things) to translate asm instructions to 32-bit objects and turn it into an executable artifact. It does not need the actual lib32-gcc/lib32-glibc link-time support libs and is completely standalone either way, so there seems very little point specifying an external interpreter. Unfortunately it's also totally unmaintained software these past 20 years... more patches!

Loading...