On 12/10/2014 08:32 AM, Bill Fischofer wrote:
Just as an FYI, I took a stab at classifying the issues with std=c99.
The root issue is that c99 is more than just a C language issue--it
also implies that you're restricted to using the standard C library
,and most of the examples (and odp_shared_memory.c) violate this
restriction.
I think for examples there is no need to be C99. Examples is only odp
library usage. So it can be even C++, python. I think.
Maxim.
The "cheat" is to include the line:
#define _BSD_SOURCE
which "unhides" the non-standard library functions. But the real
answer is that to be strictly c99 compliant you need to go back and
replace the non-standard library calls with their standard
equivalents. Unfortunately many of these do not have standard
equivalents, or at least not strict equivalents, so this may involve
redesigning the code.
For the examples, the cheat is probably OK since they are illustrating
application use of ODP and we never said that ODP /applications/ need
to be c99 compliant. However odp_shared_memory.c /is/ part of ODP and
hence should be held to that higher standard. In this routine's case
the offending routine is ftruncate(). I'm not a C library guru so I'm
not sure how one would replace that call with something that passes
muster, but that's the key sticking point.
The existing odp_timer.c routine has similar issues, but since that's
being replaced with Ola's new timer code I assume that shouldn't be a
problem.
Moral: If you learned to program C applications prior to C99, you
probably aren't writing C99-compliant code because you're naturally
reaching for non-standard library routines without thinking about this
problem.
Bill
On Tue, Dec 9, 2014 at 1:46 PM, Bill Fischofer
<[email protected] <mailto:[email protected]>> wrote:
Thanks! I'll fix that in the v3 patch as well.
Bill
On Tue, Dec 9, 2014 at 1:22 PM, Stuart Haslam
<[email protected] <mailto:[email protected]>> wrote:
On Tue, Dec 09, 2014 at 06:20:02PM +0000, Bill Fischofer wrote:
> I'll take a look at odp_shared_memory. Maxim/Stuart should
take a look at odp_packet_io.c. I assume Ola's new timer code
is compliant. If not, it should be.
>
> Bill
I just sent a patch that clears the caddr_t failure.
Note that I also get build failures on one of my dev branches
which has
the buffer pool patch applied, due to the use of typeof.
--
Stuart.
>
> On Tue, Dec 9, 2014 at 12:10 PM, Mike Holmes
<[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
>
>
> On 9 December 2014 at 12:57, Bill Fischofer
<[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> If we can get a complete list of which files currently have
issues I'm thinking that would be an excellent list to mull
over during the Christmas break.
>
> For a list just add the cflags line "./configure
CFLAGS=-std=c99" and then make -k 2>&1 | grep "^.*\.c:"
>
> Api is currently
>
> odp_packet_io.c
> odp_shared_memory.c
> odp_timer.c
>
> There are more in the examples
>
> For those of us who will be "off" we may still want a coding
fix for an hour or so. :)
>
> Also it's an excellent way for those on the ODP mailing list
who want to "get their hands dirty" with ODP code to tackle
something small and focused.
>
> Bill
>
> On Tue, Dec 9, 2014 at 11:54 AM, Mike Holmes <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> I think adding it explicitly when using the patch checking
tool "apply-and-build.sh" might be a way forward.
>
> If we can get agreement on C99, then bugzilla already has
many of these bugs
listed,<https://bugs.linaro.org/buglist.cgi?component=General&list_id=3080&product=OpenDataPlane&resolution=--->
including the source of Robbies issue. All we need is
agreement that C99 is our direction and git blame will show us
the likely best person to fix each issue.
>
> On 9 December 2014 at 12:48, Bill Fischofer
<[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> OK, I understand this is perhaps a longer-term project, but
is there a file-level way we can enable this check? If yes,
then we can ask that as part of modules that are currently
being patched that c99 checks be included in them. That way
files will be brought into compliance and then stay in
compliance after they've been merged.
>
> On Tue, Dec 9, 2014 at 11:40 AM, Mike Holmes <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> sorry, I cleaned the history try this:
>
https://ci.linaro.org/view/odp-ci/job/odp-api-check-native-c99/buildhw=x86_64,label=build/16/console
>
> On 9 December 2014 at 12:39, Mike Holmes <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> Make -k gives the attached so it is easy to look past the
first issue.
> We cant make it default because everything breaks, we should
fix things and then the CI job which
> has been building it this way for a while will eventually
pass. If we can get consensus on linux-generic sticking to to
C99 it is worth following up on this build.
>
> The builds are for both ARM and X86, I had not been
following it becasue we did not have consensus on the C99
issue: X86 is working but Arm filesystem needs curl installing.
>
>
https://ci.linaro.org/view/odp-ci/job/odp-api-check-native-c99/buildhw=x86_64,label=build/14/console
>
> We dont want to hijack the need to have ./configure check
for the version we are using however.
>
>
> On 9 December 2014 at 12:17, Bill Fischofer <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> I suggest we turn on that by default. It's the one way to
ensure that the issues will get fixed. Is this a
stop-on-first-error situation or can we have it carry on so we
get a complete list of what the c99 issues are?
>
> On Tue, Dec 9, 2014 at 11:02 AM, Mike Holmes <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> This might also be the right time to adhere to the use of
only C99 in linux-generics implementation ?
>
> CFLAGS=-std=c99 ./configure
> make
>
> Throws up other issues, the first is in packet_io
>
> mike@fedora1:~/git/odp$ make
> Making all in platform
> make[1]: Entering directory '/home/mike/git/odp/platform'
> Making all in linux-generic
> make[2]: Entering directory
'/home/mike/git/odp/platform/linux-generic'
> CC odp_packet_io.lo
> odp_packet_io.c: In function 'odp_pktio_set_mtu':
> odp_packet_io.c:512:35: error: 'caddr_t' undeclared (first
use in this function)
> ret = ioctl(sockfd, SIOCSIFMTU, (caddr_t)&ifr);
> ^
> odp_packet_io.c:512:35: note: each undeclared identifier is
reported only once for each function it appears in
> Makefile:560: recipe for target 'odp_packet_io.lo' failed
>
>
>
> Mike
>
> On 9 December 2014 at 11:48, Robbie King (robking) <[email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>> wrote:
> After cloning tip just now, I found that I couldn’t build
the fresh
> workspace due to having GCC 4.6.3 (the C11 changes to the
atomics
> bumps minimum GCC up to 4.8 as best I can tell). I’m not
very familiar
> with what “./configure” can and can’t do, but it seems we
should verify
> the compiler supports these constructs and fail during the
configure
> phase (as opposed to build time).
>
> Thanks,
> Robbie
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>
>http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
>
>
> --
> Mike Holmes
> Linaro Sr Technical Manager
> LNG - ODP
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
<mailto:[email protected]><mailto:[email protected]
<mailto:[email protected]>>
>http://lists.linaro.org/mailman/listinfo/lng-odp
>
>
>
>
>
> --
> Mike Holmes
> Linaro Sr Technical Manager
> LNG - ODP
>
>
>
> --
> Mike Holmes
> Linaro Sr Technical Manager
> LNG - ODP
>
>
>
>
> --
> Mike Holmes
> Linaro Sr Technical Manager
> LNG - ODP
>
>
>
>
> --
> Mike Holmes
> Linaro Sr Technical Manager
> LNG - ODP
>
> _______________________________________________
> lng-odp mailing list
> [email protected] <mailto:[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