So after a little chat we had, Maxim suggested I remove the ioctl code that needs struct ifreq. There is a USE_MAC_ADDR_HACK define in odp_ipsec that is now set to 1, removing all that code should fix the problem.
The problem was described here: https://bugs.linaro.org/show_bug.cgi?id=627 Robbie and Bala, can you confirm that we can go ahead with this? Is there any reason to keep that workaround? Thanks, /Ciprian On Wed, Mar 11, 2015 at 2:45 PM, Ciprian Barbu <[email protected]> wrote: > On Wed, Mar 11, 2015 at 2:12 PM, Ola Liljedahl <[email protected]> > wrote: >> On 11 March 2015 at 10:58, Ciprian Barbu <[email protected]> wrote: >>> >>> On Tue, Mar 10, 2015 at 7:19 PM, Ola Liljedahl <[email protected]> >>> wrote: >>> > On 10 March 2015 at 17:11, Ciprian Barbu <[email protected]> >>> > wrote: >>> >> On Tue, Mar 10, 2015 at 6:06 PM, Ciprian Barbu >>> >> <[email protected]> wrote: >>> >>> On Tue, Mar 10, 2015 at 4:31 PM, Maxim Uvarov >>> >>> <[email protected]> wrote: >>> >>>> On 03/10/15 17:16, Ciprian Barbu wrote: >>> >>>>> >>> >>>>> On Tue, Mar 10, 2015 at 1:33 PM, Maxim Uvarov >>> >>>>> <[email protected]> >>> >>>>> wrote: >>> >>>>>> >>> >>>>>> Please also specify your env. I can not reproduce it with >>> >>>>>> ./cross-compile-test.sh >>> >>>>> >>> >>>>> I added some info in the bug entry. Were you able to reproduce like >>> >>>>> that? >>> >>>> >>> >>>> >>> >>>> I see that in one includes in net/if.h that structure is under ifdef >>> >>>> __USE_MISC, in other includes there is no such ifdef. >>> >>>> Looks like you have different version of headers. For linux/if.h >>> >>>> there is no >>> >>>> ifdef for both cases. I think you patch is good to go, >>> >>>> tested it on my toolchains (compilation only). >>> >>> >>> >>> This might be a problem with Ubuntu 13.10, I tested on an Ubuntu 14.04 >>> >>> and it works. >>> >>> >>> >>> The whole problem comes from the ioctl command that requires struct >>> >>> ifreq. From this man page (http://linux.die.net/man/7/netdevice) it >>> >>> looks like it should be enough to include <sys/ioctl.h> and >>> >>> <net/if.h>. I also found that including linux/if.h is usually done by >>> >>> code for kernel, so that might actually not be a good idea. >>> >>> >>> >>> Strange though, adding <sys/ioctl.h> doesn't fix compiling on my >>> >>> environment. Does anyone else run Ubuntu 13.10? maybe I screwed my >>> >>> headers somehow installing some packages ... >>> >> >>> >> I also found this: >>> >> >>> >> http://stackoverflow.com/questions/10433982/why-does-c99-complain-about-storage-sizes >>> >> which says the problem is in fact with -std=c99. Strange though how it >>> >> only behaves bad on my Ubuntu 13.10. Would still be good if someone >>> >> else checks on their env ... >>> > The way I interpret this is that when you specify a specific C >>> > standard (e.g. C99), by default you will only get access to those >>> > library features that are included in that standard. If you need to go >>> > outside of the standard, you need to ask for it specifically. E.g. >>> > define _BSD_SOURCE in this case. >>> > >>> > But this should be independent of Ubuntu releases. I can imagine >>> > different libc (glibc) versions may do this differently though so this >>> > could be that cause of differences in behavior between 13.10 and e.g. >>> > 14.04 (which I use). >>> >>> Ola, we used to make use of _BSD_SOURCE to get the extra features, but >>> the use of this macro has been deprecated since glib 2.20: >>> http://man7.org/linux/man-pages/man7/feature_test_macros.7.html. >>> Instead of defining _BSD_SOURCE the user must rely on _DEFAULT_SOURCE, >>> which exists since 2.19. >>> >>> Looking at my glib version I get: >>> GNU C Library (Ubuntu EGLIBC 2.17-93ubuntu4) stable release version >>> 2.17, by Roland McGrath et al. >>> >>> So the problem in my case is that I have an old glibc version and the >>> way we compile ODP does not cope with that. Other users will be >>> affected. Either we do something about it (I haven't found a way to >>> check the glibc version at compile time yet) or document that ODP will >>> not support glibc older than 2.19 (where _DEFAULT_SOURCE exists). >> >> Or we add some code to automake/configure to detect which (g)libc version >> you are using and then use the appropriate define (_BSD_SOURCE for <= 2.17, >> _DEFAULT_SOURCE for >= 2.19, don't know about 2.18). >> >> Wouldn't this be the "right" way of solving problems like this? This might >> not be the only time we have such a version problem. > > Sounds good. I think autotools should have the support to get the > version of packages. > > Anders, do you have more insights on that? > >> >> -- Ola >> >>> >>> > >>> > olli@macmini:~$ gcc --version >>> > gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2 >>> > Copyright (C) 2013 Free Software Foundation, Inc. >>> > This is free software; see the source for copying conditions. There is >>> > NO >>> > warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR >>> > PURPOSE. >>> > olli@macmini:~$ dpkg -S /usr/include/net/if.h >>> > libc6-dev:amd64, libc6-dev:i386: /usr/include/net/if.h >>> > olli@macmini:~$ dpkg -s libc6-dev | grep Version >>> > Version: 2.19-0ubuntu6.6 >>> > >>> > >>> >> >>> >> /Ciprian >>> >> >>> >>> >>> >>>> >>> >>>> Maxim. >>> >>>> >>> >>>> >>> >>>> >>> >>>>>> Maxim. >>> >>>>>> >>> >>>>>> >>> >>>>>> On 03/10/15 14:14, Maxim Uvarov wrote: >>> >>>>>>> >>> >>>>>>> Please add patch description and put bug link in the bottom of it. >>> >>>>>>> Like >>> >>>>>>> other git commits do. >>> >>>>>>> >>> >>>>>>> Thanks, >>> >>>>>>> Maxim. >>> >>>>>>> >>> >>>>>>> On 03/10/15 12:47, Ciprian Barbu wrote: >>> >>>>>>>> >>> >>>>>>>> Signed-off-by: Ciprian Barbu <[email protected]> >>> >>>>>>>> --- >>> >>>>>>>> fix for https://bugs.linaro.org/show_bug.cgi?id=1330 >>> >>>>>>>> >>> >>>>>>>> example/ipsec/odp_ipsec.c | 2 +- >>> >>>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>>>>>>> >>> >>>>>>>> diff --git a/example/ipsec/odp_ipsec.c >>> >>>>>>>> b/example/ipsec/odp_ipsec.c >>> >>>>>>>> index 98160ba..286b9f0 100644 >>> >>>>>>>> --- a/example/ipsec/odp_ipsec.c >>> >>>>>>>> +++ b/example/ipsec/odp_ipsec.c >>> >>>>>>>> @@ -30,7 +30,7 @@ >>> >>>>>>>> #include <stdbool.h> >>> >>>>>>>> #include <sys/socket.h> >>> >>>>>>>> -#include <net/if.h> >>> >>>>>>>> +#include <linux/if.h> >>> >>>>>>>> #include <sys/ioctl.h> >>> >>>>>>>> #include <sys/socket.h> >>> >>>>>>> >>> >>>>>>> >>> >>>>>> >>> >>>>>> _______________________________________________ >>> >>>>>> lng-odp mailing list >>> >>>>>> [email protected] >>> >>>>>> http://lists.linaro.org/mailman/listinfo/lng-odp >>> >>>> >>> >>>> >>> >> >>> >> _______________________________________________ >>> >> lng-odp mailing list >>> >> [email protected] >>> >> http://lists.linaro.org/mailman/listinfo/lng-odp >> >> _______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
