[lxc-devel] [PATCH] clang: Remaining changes

Stéphane Graber stgraber at ubuntu.com
Thu Oct 24 04:20:52 UTC 2013


On Wed, Oct 23, 2013 at 11:04:58PM -0500, Serge Hallyn wrote:
> Quoting Stéphane Graber (stgraber at ubuntu.com):
> > Those are a bit less obvious than those I pushed directly to master.
> > All those changes were required to build LXC under clang here.
> > 
> > With this, gcc can be replaced by clang to build LXC so long as you're
> > not using the python3 binding (as python extensions can't be built under
> > clang at the moment).
> > 
> > For reference, the clang output for those is: http://paste.ubuntu.com/6292460/
> > 
> > Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
> 
> Acked-by: Serge E. Hallyn <serge.hallyn at ubuntu.com>
> 
> One comment,
> 
> > ---
> >  src/lxc/caps.c     | 2 +-
> >  src/lxc/commands.c | 4 ++--
> >  src/lxc/conf.c     | 4 ++--
> >  3 files changed, 5 insertions(+), 5 deletions(-)
> > 
> > diff --git a/src/lxc/caps.c b/src/lxc/caps.c
> > index bcbb859..89b87af 100644
> > --- a/src/lxc/caps.c
> > +++ b/src/lxc/caps.c
> > @@ -204,7 +204,7 @@ static int _real_caps_last_cap(void)
> >  			buf[n] = '\0';
> >  			result = strtol(buf, &ptr, 10);
> >  			if (!ptr || (*ptr != '\0' && *ptr != '\n') ||
> > -			    result == LONG_MIN || result == LONG_MAX)
> > +			    result == INT_MIN || result == INT_MAX)
> 
> Hi Stéphane,
> 
> probably the original code was my fault, but this is weird.  The
> check doesn't actually guarantee anything, so per the NOTES section
> in strtoul(3) man page I think we should set errno to 0 before the
> strtol call, and check errno afterward.  Then drop these MIN/MAX
> checks here, leaving the < 0 check below.
> 
> Your patch wouldn't break anything so if you like we can just apply
> this and I'll push an update to do the above in the morning.

Sounds good.

I pushed my patch for now.

> 
> >  				result = -1;
> >  		}
> >  
> > diff --git a/src/lxc/commands.c b/src/lxc/commands.c
> > index 33821dd..3e44ef3 100644
> > --- a/src/lxc/commands.c
> > +++ b/src/lxc/commands.c
> > @@ -109,7 +109,7 @@ static const char *lxc_cmd_str(lxc_cmd_t cmd)
> >  		[LXC_CMD_GET_CONFIG_ITEM] = "get_config_item",
> >  	};
> >  
> > -	if (cmd < 0 || cmd >= LXC_CMD_MAX)
> > +	if (cmd >= LXC_CMD_MAX)
> >  		return "Unknown cmd";
> >  	return cmdname[cmd];
> >  }
> > @@ -735,7 +735,7 @@ static int lxc_cmd_process(int fd, struct lxc_cmd_req *req,
> >  		[LXC_CMD_GET_CONFIG_ITEM] = lxc_cmd_get_config_item_callback,
> >  	};
> >  
> > -	if (req->cmd < 0 || req->cmd >= LXC_CMD_MAX) {
> > +	if (req->cmd >= LXC_CMD_MAX) {
> >  		ERROR("bad cmd %d received", req->cmd);
> >  		return -1;
> >  	}
> > diff --git a/src/lxc/conf.c b/src/lxc/conf.c
> > index 208c08b..0724e3f 100644
> > --- a/src/lxc/conf.c
> > +++ b/src/lxc/conf.c
> > @@ -1948,7 +1948,7 @@ static int setup_caps(struct lxc_list *caps)
> >  			* we don't */
> >  			capid = strtol(drop_entry, &ptr, 10);
> >  			if (!ptr || *ptr != '\0' ||
> > -			capid == LONG_MIN || capid == LONG_MAX)
> > +			capid == INT_MIN || capid == INT_MAX)
> >  				/* not a valid number */
> >  				capid = -1;
> >  			else if (capid > lxc_caps_last_cap())
> > @@ -2013,7 +2013,7 @@ static int dropcaps_except(struct lxc_list *caps)
> >  			* we don't */
> >  			capid = strtol(keep_entry, &ptr, 10);
> >  			if (!ptr || *ptr != '\0' ||
> > -			capid == LONG_MIN || capid == LONG_MAX)
> > +			capid == INT_MIN || capid == INT_MAX)
> >  				/* not a valid number */
> >  				capid = -1;
> >  			else if (capid > lxc_caps_last_cap())
> > -- 
> > 1.8.3.2
> > 
> > 
> > ------------------------------------------------------------------------------
> > October Webinars: Code for Performance
> > Free Intel webinars can help you accelerate application performance.
> > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
> > the latest Intel processors and coprocessors. See abstracts and register >
> > http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
> > _______________________________________________
> > Lxc-devel mailing list
> > Lxc-devel at lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: Digital signature
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20131024/36587768/attachment.pgp>


More information about the lxc-devel mailing list