On Wed, Aug 14, 2019 at 03:32:24PM +0200, Björn Töpel wrote:
On Wed, 14 Aug 2019 at 13:57, Ivan Khoronzhuk <ivan.khoronzhuk@xxxxxxxxxx> wrote:On Wed, Aug 14, 2019 at 12:24:05PM +0300, Ivan Khoronzhuk wrote: >On Tue, Aug 13, 2019 at 04:38:13PM -0700, Andrii Nakryiko wrote: > >Hi, Andrii > >>On Tue, Aug 13, 2019 at 3:24 AM Ivan Khoronzhuk >><ivan.khoronzhuk@xxxxxxxxxx> wrote: >>> >>>That's needed to get __NR_mmap2 when mmap2 syscall is used. >>> >>>Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@xxxxxxxxxx> >>>--- >>> tools/lib/bpf/xsk.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>>diff --git a/tools/lib/bpf/xsk.c b/tools/lib/bpf/xsk.c >>>index 5007b5d4fd2c..f2fc40f9804c 100644 >>>--- a/tools/lib/bpf/xsk.c >>>+++ b/tools/lib/bpf/xsk.c >>>@@ -12,6 +12,7 @@ >>> #include <stdlib.h> >>> #include <string.h> >>> #include <unistd.h> >>>+#include <asm/unistd.h> >> >>asm/unistd.h is not present in Github libbpf projection. Is there any > >Look on includes from >tools/lib/bpf/libpf.c >tools/lib/bpf/bpf.c > >That's how it's done... Copping headers to arch/arm will not >solve this, it includes both of them anyway, and anyway it needs >asm/unistd.h inclusion here, only because xsk.c needs __NR_* > > There is one more radical solution for this I can send, but I'm not sure how it can impact on other syscals/arches... Looks like: diff --git a/tools/lib/bpf/Makefile b/tools/lib/bpf/Makefile index 9312066a1ae3..8b2f8ff7ce44 100644 --- a/tools/lib/bpf/Makefile +++ b/tools/lib/bpf/Makefile @@ -113,6 +113,7 @@ override CFLAGS += -Werror -Wall override CFLAGS += -fPIC override CFLAGS += $(INCLUDES) override CFLAGS += -fvisibility=hidden +override CFLAGS += -D_FILE_OFFSET_BITS=64Hmm, isn't this glibc-ism? Does is it work for, say, musl or bionic? If this is portable, and works on 32-, and 64-bit archs, I'm happy with the patch. :-)
https://users.suse.com/~aj/linux_lfs.html BIONIС ====== https://android.googlesource.com/platform/bionic So, LFS is in bionic since Fri Feb 6 22:28:49 2015 68dc20d41193831a94df04b994ff2f601dd38d10 Author: Elliott Hughes <enh@xxxxxxxxxx> Implement _FILE_OFFSET_BITS (mostly) MUSL ==== I took here: git@xxxxxxxxxx:kraj/musl.git With musl situation is a little different, seems like, it provides 64bit off_t by default #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE) #define lseek64 lseek #define pread64 pread #define pwrite64 pwrite #define truncate64 truncate #define ftruncate64 ftruncate #define lockf64 lockf #define off64_t off_t #endif and /* If _GNU_SOURCE was defined by the user, turn on all the other features. */ #ifdef _GNU_SOURCE # undef _ISOC95_SOURCE # define _ISOC95_SOURCE 1 # undef _ISOC99_SOURCE # define _ISOC99_SOURCE 1 # undef _ISOC11_SOURCE # define _ISOC11_SOURCE 1 # undef _POSIX_SOURCE # define _POSIX_SOURCE 1 # undef _POSIX_C_SOURCE # define _POSIX_C_SOURCE 200809L # undef _XOPEN_SOURCE # define _XOPEN_SOURCE 700 # undef _XOPEN_SOURCE_EXTENDED # define _XOPEN_SOURCE_EXTENDED 1 # undef _LARGEFILE64_SOURCE # define _LARGEFILE64_SOURCE 1 # undef _DEFAULT_SOURCE # define _DEFAULT_SOURCE 1 # undef _ATFILE_SOURCE # define _ATFILE_SOURCE 1 #endif So shouldn't be issuse. 64 ARCHES ========= Should also work, if grep on _FILE_OFFSET_BITS tool: ./lib/api/Makefile:CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 ./lib/subcmd/Makefile:CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE So, it's used already and no problems.But here one moment, _LARGEFILE64_SOURCE is also defined, probably for MUSL (despite it's defined anyway) just to be sure.
So, in Makefile, for sure, will be: override CFLAGS += -D_FILE_OFFSET_BITS=64 verride CFLAGS += -D_LARGEFILE64_SOURCE -- Regards, Ivan Khoronzhuk