From: Yang Tse Date: Sat, 14 Apr 2012 13:12:30 +0000 (+0200) Subject: headers: require GCC 2.7 or newer in order to allow attribute GCC'isms usage X-Git-Tag: curl-7_26_0~55 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=48d13b44c660cdefaf1a921c974f43ee4df346a2;p=thirdparty%2Fcurl.git headers: require GCC 2.7 or newer in order to allow attribute GCC'isms usage Usage in other code paths already protected and requiring even newer versions. --- diff --git a/lib/setup.h b/lib/setup.h index 4bce5a93ff..732b1a3b41 100644 --- a/lib/setup.h +++ b/lib/setup.h @@ -605,13 +605,17 @@ int netware_init(void); #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #endif -/* Provide a mechanism to silence picky compilers, such as gcc 4.6+. - Parameters should of course normally not be unused, but for example when we - have multiple implementations of the same interface it may happen. */ -#ifndef __GNUC__ -#define UNUSED_PARAM /*NOTHING*/ +/* + * Provide a mechanism to silence picky compilers, such as gcc 4.6+. + * Parameters should of course normally not be unused, but for example when + * we have multiple implementations of the same interface it may happen. + */ + +#if defined(__GNUC__) && ((__GNUC__ >= 3) || \ + ((__GNUC__ == 2) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 7))) +# define UNUSED_PARAM __attribute__((__unused__)) #else -#define UNUSED_PARAM __attribute__((__unused__)) +# define UNUSED_PARAM /*NOTHING*/ #endif /* diff --git a/tests/server/tftp.h b/tests/server/tftp.h index 461ab9a36b..0650efe6ae 100644 --- a/tests/server/tftp.h +++ b/tests/server/tftp.h @@ -28,8 +28,11 @@ #define SEGSIZE 512 /* data segment size */ -#ifndef __GNUC__ -#define __attribute__(x) +#if defined(__GNUC__) && ((__GNUC__ >= 3) || \ + ((__GNUC__ == 2) && defined(__GNUC_MINOR__) && (__GNUC_MINOR__ >= 7))) +# define PACKED_STRUCT __attribute__((__packed__)) +#else +# define PACKED_STRUCT /*NOTHING*/ #endif /* Using a packed struct as binary in a program is begging for problems, but @@ -40,7 +43,7 @@ struct tftphdr { short th_opcode; /* packet type */ unsigned short th_block; /* all sorts of things */ char th_data[1]; /* data or error string */ -} __attribute__ ((__packed__)); +} PACKED_STRUCT; #define th_stuff th_block #define th_code th_block