diff options
| author | Elliott Hughes <enh@google.com> | 2020-01-29 19:20:45 -0800 |
|---|---|---|
| committer | Elliott Hughes <enh@google.com> | 2020-01-29 19:36:14 -0800 |
| commit | 09e77f35ab8d291bf88302bb9673aaa518c6bcb0 (patch) | |
| tree | 8cd94a94db1ab872266022a3ad2b746d0b215e36 /libc/stdio/stdio_ext.cpp | |
| parent | 945001da54637082fb30ea2a8bc50beb24442ffa (diff) | |
_FILE_OFFSET_BITS=64 support for fcntl.
On Android, fcntl is always implemented by fcntl64(2). This means that
an LP32 binary can `fcntl(F_SETLK, struct flock)` (because fcntl64(2)
passes through to the 32-bit fcntl(2) to handle F_SETLK), and it can
also `fcntl(F_SETLK64, struct flock64)`. What it can't do before this
patch is set _FILE_OFFSET_BITS=64 and then `fcntl(F_SETLK, struct
flock)` where that `struct flock` is actually implicitly `struct
flock64`.
Move the kernel uapi structs out of the way, define them ourselves based
on __LP64__ and _FILE_OFFSET_BITS, and fix up the relevant F_ constants.
(Also add a .clang-format to turn off clang-format in libc/include/.)
Bug: N/A
Test: treehugger (and strace!)
Change-Id: Iccd6c83d9133e1efcf93a7b49a6ae0f1bbd3d58b
Diffstat (limited to 'libc/stdio/stdio_ext.cpp')
0 files changed, 0 insertions, 0 deletions
