-
Notifications
You must be signed in to change notification settings - Fork 36.9k
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
build: Avoid fcntl64@GLIBC_2.28 symbol when --enable-glibc-back-compat #22287
Conversation
Perhaps you want to make it print the value of |
src/compat/glibc_compat.cpp
Outdated
case F_SET_FILE_RW_HINT: goto takes_uint64_t_ptr; | ||
|
||
default: | ||
fprintf(stderr, "fcntl64 workaround got unknown F_XXX constant"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't remove the exit here. This is sort of an assert; if you continue it'll invoke fcntl with who knows what behavior.
ef22154
to
f0ca8bc
Compare
Updated 639bfc4 -> f0ca8bc (pr22287.01 -> pr22287.03, diff):
Here are some possible alternatives:
|
How did you fix the failures? |
|
Closing. Binaries are broken ( |
How are they broken? |
On x86_64 machine:
|
You should compile with the change that prints the cmd value, so the missing cmd can be added. This is entirely expected - the wrapper needs to know all the used cmd values, and the code you copied only has a few. |
Ok. I'll do. FWIW, it is not a missed
|
Oh, you're right. That's a bigger problem. |
Reverting #21036 isn't an option for guix, I assume. |
Btw, the offensive |
Yes, so we'll need to implement a wrapper for that. None of the call sites do anything complicated (and in particular, none pass file ranges, which could lead to actual imcompatibilities). |
Done. OP updated. |
I don't think that's correct. The old comment for the incompatible case explained that the flock data structure had changed in old glibc vs new one, so you'd need to convert between the two in the wrapper. |
Btw, if we stop release ARM-32bit binaries, the |
I've compared |
NACK on so suddenly stopping support for ARM 32 bit before the release. If there is a reason to phase it out we should at least announce it a release in advance. But not sure this is a good idea. For the record I'm still running a node on 32-bit ARM hardware myself, and remember that 64-bit RPi's used to ship with 32 bit software stack until very recently. |
So am I :) |
Having thought about it a bit I think for other platforms this is a good angle though. The only use of this function in our distributed binary is from sqlite, after all. Not using the symbol would be more comfortable to me than providing our own (potentially buggy) implementation. For ARM32 we could bump the minimum GLIBC version. |
Guix builds
|
#22305 is an alternative approach. |
Gitian builds
|
Closing in favor of #22365. |
This PR is a partial fix for #21454 (see #22281 for the complete fix for the
bitcoind
compatibility).Gitian builds:
I tested only:
bitcoin-530bc278b9fa-arm-linux-gnueabihf.tar.gz
bitcoin-530bc278b9fa-x86_64-linux-gnu.tar.gz