Messages in this thread | | | Date | Wed, 14 Aug 2019 22:54:25 +0300 | From | Ivan Khoronzhuk <> | Subject | Re: [PATCH bpf-next 1/3] libbpf: add asm/unistd.h to xsk to get __NR_mmap2 |
| |
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@linaro.org> 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@linaro.org> wrote: >> >>> >> >>>That's needed to get __NR_mmap2 when mmap2 syscall is used. >> >>> >> >>>Signed-off-by: Ivan Khoronzhuk <ivan.khoronzhuk@linaro.org> >> >>>--- >> >>> 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=64 >> > >Hmm, 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@google.com> Implement _FILE_OFFSET_BITS (mostly)
MUSL ==== I took here: git@github.com: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
| |