On 10/16/07, via RT Rob West <[EMAIL PROTECTED]> wrote:
> # New Ticket Created by  "Rob West"
> # Please include the string:  [perl #46473]
> # in the subject line of all future correspondence about this issue.
> # <URL: http://rt.perl.org/rt3/Ticket/Display.html?id=46473 >
>
>
> This patch should make it so that the NOTNULL macro will work as
> expected for a compiler that supports __attribute__((__nonnull__))
> like gcc. Same for PARROT_MALLOC and __attribute__((__malloc__)).
>
> It also surrounds the attribute names with double underscores (as
> allowed by gcc). "This allows you to use them in header files without
> being concerned about a possible macro of the same name."
>
> ==== Patch <attributes_fix> level 1
> Source: [No source]
> Target: d31e2699-5ff4-0310-a27c-f18f2fbe73fe:/trunk:22138 [mirrored]
>         (https://svn.perl.org/parrot/trunk)
> Log:
> Fix configure to correctly verify whether the malloc, format, and
> nonnull attributes are supported
> === config/auto/attributes/test_c.in
> ==================================================================
> --- config/auto/attributes/test_c.in    (revision 22138)
> +++ config/auto/attributes/test_c.in    (patch attributes_fix level 1)
> @@ -12,9 +12,9 @@
>  __attribute__noreturn__
>  __attribute__warn_unused_result__
>  __attribute__deprecated__
> -int
> -dummyfunc(int x)
> -    __attribute__format__(1,2,3)
> +void *
> +dummyfunc(const char *my_format, ...)
> +    __attribute__format__(printf,1,2)
>      __attribute__nonnull__(1)
>      ;
>
> === include/parrot/compiler.h
> ==================================================================
> --- include/parrot/compiler.h   (revision 22138)
> +++ include/parrot/compiler.h   (patch attributes_fix level 1)
> @@ -23,36 +23,36 @@
>  #  ifdef _MSC_VER
>  #    define __attribute__deprecated__         __declspec(deprecated)
>  #  else
> -#    define __attribute__deprecated__           __attribute__((deprecated))
> +#    define __attribute__deprecated__           
> __attribute__((__deprecated__))
>  #  endif
>  #endif
>  #ifdef HASATTRIBUTE_FORMAT
> -#  define __attribute__format__(x,y,z)      __attribute__((format(x,y,z)))
> +#  define __attribute__format__(x,y,z)      
> __attribute__((__format__(x,y,z)))
>  #endif
>  #ifdef HASATTRIBUTE_MALLOC
>  #  define __attribute__malloc__             __attribute__((__malloc__))
>  #endif
>  #ifdef HASATTRIBUTE_NONNULL
> -#  define __attribute__nonnull__(a)         __attribute__((nonnull(a)))
> +#  define __attribute__nonnull__(a)         __attribute__((__nonnull__(a)))
>  #endif
>  #ifdef HASATTRIBUTE_NORETURN
>  #  ifdef _MSC_VER
>  #    define __attribute__noreturn__         __declspec(noreturn)
>  #  else
> -#    define __attribute__noreturn__           __attribute__((noreturn))
> +#    define __attribute__noreturn__           __attribute__((__noreturn__))
>  #  endif
>  #endif
>  #ifdef HASATTRIBUTE_PURE
> -#  define __attribute__pure__               __attribute__((pure))
> +#  define __attribute__pure__               __attribute__((__pure__))
>  #endif
>  #ifdef HASATTRIBUTE_CONST
> -#  define __attribute__const__              __attribute__((const))
> +#  define __attribute__const__              __attribute__((__const__))
>  #endif
>  #ifdef HASATTRIBUTE_UNUSED
> -#  define __attribute__unused__             __attribute__((unused))
> +#  define __attribute__unused__             __attribute__((__unused__))
>  #endif
>  #ifdef HASATTRIBUTE_WARN_UNUSED_RESULT
> -#  define __attribute__warn_unused_result__ 
> __attribute__((warn_unused_result))
> +#  define __attribute__warn_unused_result__
> __attribute__((__warn_unused_result__))
>  #endif
>
>  /* If we haven't defined the attributes yet, define them to blank. */
>
thanks, applied in r22320.
~jerry

Reply via email to