[PATCH libdrm] configure.ac: rework compiler builtin atomic tests

Emil Velikov emil.l.velikov at gmail.com
Mon Nov 16 05:51:51 PST 2015


Hi Jonathan,

On 29 August 2015 at 08:32, Jonathan Gray <jsg at jsg.id.au> wrote:
> The libdrm autoconf test for atomics uses __sync_val_compare_and_swap with
> the address of a function argument which triggers a gcc ICE on sparc64
> with the OpenBSD system compiler.
>
> Mark Kettenis pointed out that while other architectures probably spill the
> argument onto the stack this is likely not the case on register window
> architectures like SPARC and suggested passing a pointer as an argument
> instead which avoids the ICE and allows the drm libraries requiring
> atomics to build on sparc64 with the autoconf build.
>
> Reported-by: Christian Weisgerber <naddy at openbsd.org>
> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
> Reviewed-by: Mark Kettenis <kettenis at openbsd.org>
> Reviewed-by: Matthieu Herrb <matthieu at openbsd.org>
> ---
>  configure.ac | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/configure.ac b/configure.ac
> index f07507b..705ac3e 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -210,8 +210,8 @@ AC_CACHE_CHECK([for native atomic primitives], drm_cv_atomic_primitives, [
>         drm_cv_atomic_primitives="none"
>
>         AC_LINK_IFELSE([AC_LANG_PROGRAM([[
> -       int atomic_add(int i) { return __sync_fetch_and_add (&i, 1); }
> -       int atomic_cmpxchg(int i, int j, int k) { return __sync_val_compare_and_swap (&i, j, k); }
> +       int atomic_add(int *i) { return __sync_fetch_and_add (i, 1); }
> +       int atomic_cmpxchg(int *i, int j, int k) { return __sync_val_compare_and_swap (i, j, k); }
>                                           ]],[[]])], [drm_cv_atomic_primitives="Intel"],[])
>
Just pushed this patch to master.

Sorry that it took so long - must have missed it. Feel free to ping if
you catch us 'sleeping on the job'.

Thanks
Emil


More information about the dri-devel mailing list