Re: CSTD=c99 breaks package creation

2003-06-13 Thread David Schultz
On Thu, Jun 12, 2003, Tim Robbins wrote:
 On Wed, Jun 11, 2003 at 07:37:01PM -0700, Kris Kennaway wrote:
 
  It's possible that there's either a bug in gcc or there is C code in
  the system that has a different meaning when interpreted to C99
  standards.
 
 I think I may have found the problem, and I think it's in GNU tar.
 
 GNU tar does this:
 
 #ifndef __attribute__
 /* This feature is available in gcc versions 2.5 and later.  */
 # if __GNUC__  2 || (__GNUC__ == 2  __GNUC_MINOR__  5) || __STRICT_ANSI__
 #  define __attribute__(Spec) /* empty */
 # endif
 #endif
 
 machine/_types.h does this:
 
 typedef int __attribute__((__mode__(__DI__)))   __int64_t;
 typedef unsigned int __attribute__((__mode__(__DI__)))  __uint64_t;
 
 If __attribute__ is empty, __int64_t becomes a synonym for int. Bad.

Wow!  Nice catch...
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: CSTD=c99 breaks package creation

2003-06-12 Thread Fritz Heinrichmeyer
deleting the define __attribute
stuff in system.h of
/usr/src/contrib/tar/src/system.h

and rebuilding+installing tar repaired package creation here.

--
Mit freundlichen Grüßen
Fritz Heinrichmeyer FernUniversitaet, LG ES, 58084 Hagen (Germany)
tel:+49 2331/987-1166 fax:987-355 http://www-es.fernuni-hagen.de/~jfh
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: CSTD=c99 breaks package creation

2003-06-12 Thread David O'Brien
On Wed, Jun 11, 2003 at 07:37:01PM -0700, Kris Kennaway wrote:
 On Tue, Jun 10, 2003 at 04:38:58AM -0700, Kris Kennaway wrote:
  A couple of ports are creating broken bzip2 archives since I updated
  the build environments to 5.1-CURRENT:
...
 Backing out the recent changes to bsd.sys.mk fixed these problems.  I
 don't know why, but pkg_create was creating packages that were
 truncated - perhaps tar was closing the pipe early or something.
 
 It's possible that there's either a bug in gcc or there is C code in
 the system that has a different meaning when interpreted to C99
 standards.

If you can wait until after USENIX, I'll track this down.  Is there any
more data than this email you can send me?
 
-- 
-- David  ([EMAIL PROTECTED])
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: CSTD=c99 breaks package creation

2003-06-12 Thread Kris Kennaway
On Thu, Jun 12, 2003 at 02:43:42PM -0700, David O'Brien wrote:
 On Wed, Jun 11, 2003 at 07:37:01PM -0700, Kris Kennaway wrote:
  On Tue, Jun 10, 2003 at 04:38:58AM -0700, Kris Kennaway wrote:
   A couple of ports are creating broken bzip2 archives since I updated
   the build environments to 5.1-CURRENT:
 ...
  Backing out the recent changes to bsd.sys.mk fixed these problems.  I
  don't know why, but pkg_create was creating packages that were
  truncated - perhaps tar was closing the pipe early or something.
  
  It's possible that there's either a bug in gcc or there is C code in
  the system that has a different meaning when interpreted to C99
  standards.
 
 If you can wait until after USENIX, I'll track this down.  Is there any
 more data than this email you can send me?

tjr has a fix.

Kris


pgp0.pgp
Description: PGP signature


CSTD=c99 breaks package creation

2003-06-11 Thread Kris Kennaway
On Tue, Jun 10, 2003 at 04:38:58AM -0700, Kris Kennaway wrote:
 A couple of ports are creating broken bzip2 archives since I updated
 the build environments to 5.1-CURRENT:
 
 
 ports-i386%bzip2 -t ja-makejvf-fkr-1.0_1.tbz
 bzip2: ja-makejvf-fkr-1.0_1.tbz: file ends unexpectedly
 
 You can use the `bzip2recover' program to attempt to recover
 data from undamaged sections of corrupted files.
 
 ports-i386%bzip2 -t cclient-2002c1_1,1.tbz
 bzip2: cclient-2002c1_1,1.tbz: file ends unexpectedly
 
 You can use the `bzip2recover' program to attempt to recover
 data from undamaged sections of corrupted files.
 
 
 They're broken no matter how many times I rebuild them.  The bento
 package cluster machines haven't been updated, so I don't blame a
 kernel problem, but the build chroot is being populated with a
 5.1-CURRENT world instead of 5.1-RELEASE.
 
 Can anyone else reproduce this, or has anyone else seen a similar
 problem?

Backing out the recent changes to bsd.sys.mk fixed these problems.  I
don't know why, but pkg_create was creating packages that were
truncated - perhaps tar was closing the pipe early or something.

It's possible that there's either a bug in gcc or there is C code in
the system that has a different meaning when interpreted to C99
standards.

Kris




pgp0.pgp
Description: PGP signature


Re: CSTD=c99 breaks package creation

2003-06-11 Thread Tim Robbins
On Wed, Jun 11, 2003 at 07:37:01PM -0700, Kris Kennaway wrote:

 It's possible that there's either a bug in gcc or there is C code in
 the system that has a different meaning when interpreted to C99
 standards.

I think I may have found the problem, and I think it's in GNU tar.

GNU tar does this:

#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later.  */
# if __GNUC__  2 || (__GNUC__ == 2  __GNUC_MINOR__  5) || __STRICT_ANSI__
#  define __attribute__(Spec) /* empty */
# endif
#endif

machine/_types.h does this:

typedef int __attribute__((__mode__(__DI__)))   __int64_t;
typedef unsigned int __attribute__((__mode__(__DI__)))  __uint64_t;

If __attribute__ is empty, __int64_t becomes a synonym for int. Bad.

Attached is a test program. Compile it w/o a -std option and see that the
output, which is sizeof(int64_t), is 8 as expected. Compile with -std=c99 and
see that sizeof(int64_t) is 4.


Tim
#ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later.  */
# if __GNUC__  2 || (__GNUC__ == 2  __GNUC_MINOR__  5) || __STRICT_ANSI__
#  define __attribute__(Spec) /* empty */
# endif
#endif

#include sys/types.h
#include stdio.h
#include stdint.h
#include stdlib.h

int
main(int argc, char *argv[])
{

(void)__bswap64((uint64_t)3);
printf(%d\n, (int)sizeof(uint64_t));

exit(0);
}
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]