This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: VxWorks Patches Back from the Dead!


Il 23/08/2012 04:27, rbmj ha scritto:
>>
>>   sed '/if test -s .{MACRO_LIST}/s/$/ && false/' \
>>      ${srcdir}/fixinc.in > ${target}
>>
>> for vxworks rather than all that configury rigmarole.
>> That would eliminate changes to gcc/configure.ac and gcc/Makefile.in.
> 
> I didn't even think of that.  I was probably doing all my fixes in the
> Makefile because that was where I was looking with the original
> problem.  However, I'm looking at the result of that sed command, and I
> don't think that the && is going to work, as when I run that sed command
> I just get whitespace there.  IIRC, sed handles '&' differently so it
> probably needs to be escaped.  I'll see if I get a chance to test that
> later on.

Yes, & is equivalent to \0.  You need \&\& instead.

Some comments on the patches:

> +	c_fix_arg	= "%0\n"
> +		"#define ioctl(fd, func, arg) ((ioctl)((fd), (func), ((int)(arg))))\n";

This can be simply

#define ioctl(fd, func, arg) ioctl(fd, func, (int)arg)

thanks to C and cpp precedence rules.

> 
> +	c_fix_arg	= "%0\n"
> +		"#ifdef IN_GCC\n"
> +		"#define mkdir(dir, mode) ((mode), (mkdir)(dir))\n"
> +		"#endif\n";

Are you sure about the #ifdef/#endif?  In fact, you definitely do not
want a _global_ include to have a dependency on a user symbol.

> Add fix to make write() const correct on VxWorks
> 
> VxWorks' write() takes its second argument as non-const, so the
> compiler complains if one tries to pass a const pointer to it.

I think this does not need to be VxWorks-specific, but I'm not sure of
the standards for fixincludes. Bruce?

> Subject: [PATCH 10/10] Make open() call more compatible in gcc/gcov-io.c
> 
> In gcc/gcov-io.c, the call to open() only has two arguments. This
> is fine, as long as the system open() is standards compliant.

So you have to add another fixincludes hack, adding a macro indirection
like the one you have for ioctl:

#define open(a, b, ...)      __open(a, b , ##__VA_ARGS__, 0660)
#define __open(a, b, c, ...) (open)(a, b, c)

Please make these adjustments and resubmit.  Thanks!

Paolo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]