Bug 76789

Summary: [radeonsi] si_descriptors.c requires -std=gnu99 or -fms-extensions
Product: Mesa Reporter: Jonathan Gray <jsg>
Component: Drivers/Gallium/radeonsiAssignee: Default DRI bug account <dri-devel>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: OpenBSD   
Whiteboard:
i915 platform: i915 features:

Description Jonathan Gray 2014-03-30 06:29:45 UTC
Mesa is compiled with -std=c99 but this does not allow anonymous structs within a union unless using a recent version of gcc.

When compiling with gcc 4.2.1 the following error is thrown when compiling the gallium radeonsi driver unless configure.ac is changed to have either -std=gnu99 or -std=c99 -fms-extensions.

libtool: compile:  gcc -DPACKAGE_NAME=\"Mesa\" -DPACKAGE_TARNAME=\"mesa\" -DPACKAGE_VERSION=\"10.2.0-devel\" "-DPACKAGE_STRING=\"Mesa 10.2.0-devel\""
 "-DPACKAGE_BUGREPORT=\"https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa\"" -DPACKAGE_URL=\"\" -DPACKAGE=\"mesa\" -DVERSION=\"10.2.0-devel\" -
DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1
 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DYYTEXT_POINTER=1 -DHAVE_CLOCK_GETTIME=1 -DHAVE_PTHREAD_PRIO_INHERIT=1
-DHAVE_PTHREAD=1 -I. -I/usr/local/include -I/usr/local/include/libelf -I../../../../src/gallium/drivers/radeon -I./include -I../../../../include -I..
/../../../src/gallium/include -I../../../../src/gallium/auxiliary -I../../../../src/gallium/drivers -DDEBUG -DUSE_X86_64_ASM -DHAVE_DLOPEN -DHAVE_POS
IX_MEMALIGN -DHAVE_LIBDRM -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DHAVE_PTHREAD -DUSE_EXTERNAL_DXTN_LIB=1 -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE
_LLVM=0x0303 -fvisibility=hidden -I/usr/X11R6/include -I/usr/include/dev/pci/drm -I/usr/local/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS
 -D__STDC_LIMIT_MACROS -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcm
p -g -O0 -MT si_descriptors.lo -MD -MP -MF .deps/si_descriptors.Tpo -c si_descriptors.c  -fPIC -DPIC -o .libs/si_descriptors.o
In file included from si_descriptors.c:27:
si_pipe.h:113: warning: declaration does not declare anything
si_descriptors.c: In function 'si_init_all_descriptors':
si_descriptors.c:990: error: 'union <anonymous>' has no member named 'const_buffers'
si_descriptors.c:991: error: 'union <anonymous>' has no member named 'rw_buffers'
si_descriptors.c:992: error: 'union <anonymous>' has no member named 'sampler_views'
Comment 1 Jonathan Gray 2014-08-31 20:01:18 UTC
This appears to have been fixed a while ago, though I note the fix is not currently on the 10.2 branch.

commit 74388dd24bc7fdb9e62ec18096163f5426e03fbf
Author: Adam Jackson <ajax@redhat.com>
Date:   Tue Apr 22 12:46:08 2014 -0400

    radeonsi: Don't use anonymous struct trick in atom tracking
    
    I'm somewhat impressed that current gccs will let you do this, but
    sufficiently old ones (including 4.4.7 in RHEL6) won't.
    
    Reviewed-by: Marek Olšák <marek.olsak@amd.com>
    Signed-off-by: Adam Jackson <ajax@redhat.com>

 src/gallium/drivers/radeonsi/si_descriptors.c | 6 +++---
 src/gallium/drivers/radeonsi/si_hw_context.c  | 2 +-
 src/gallium/drivers/radeonsi/si_pipe.c        | 6 +++---
 src/gallium/drivers/radeonsi/si_pipe.h        | 2 +-
 src/gallium/drivers/radeonsi/si_state.c       | 2 +-
 src/gallium/drivers/radeonsi/si_state_draw.c  | 2 +-
 6 files changed, 10 insertions(+), 10 deletions(-)

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.