Bug 473459

Summary: undefined macros in drm/drm.h break userspace compilation (__user and DEPRECATED)
Product: [Fedora] Fedora Reporter: Hans Ulrich Niedermann <rhbugs>
Component: kernelAssignee: Dave Airlie <airlied>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: medium    
Version: 10CC: kernel-maint, quintela, udovdh
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2008-11-30 08:29:19 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Hans Ulrich Niedermann 2008-11-28 16:08:42 UTC
Description of problem:

  drm/drm.h makes extensive use of the C preprocessor macros
  __user and DEPRECATED.

  Howver, in F10 drm/drm.h does not define those macros any more
  like it did in F9. Those two macros are usually undefined in
  userspace software, and thus compilation will fail.

  The drm/drm.h in F9 (from libdrm-devel) used to contain

    #ifndef __user
    #define __user
    #endif
    [...]
    #ifdef __GNUC__
    # define DEPRECATED  __attribute__ ((deprecated))
    #else
    # define DEPRECATED
    #endif

  which prevents the problem.

Version-Release number of selected component (if applicable):

  [F-9]$ rpm -qf /usr/include/drm/drm.h
  libdrm-devel-2.4.0-0.13.fc9.i386

  [F-10]$ rpm -qf /usr/include/drm/drm.h
  kernel-headers-2.6.27.5-117.fc10.x86_64

How reproducible:

  100%

Steps to Reproduce:
0. Compile any userspace software which uses drm/drm.h, without
   explicitly defining the __user and DEPRECATED macros, e.g.
1. git clone git://anongit.freedesktop.org/git/xorg/driver/xf86-video-radeonhd
2. cd xf86-video-radeonhd
3. ./autogen.sh
4. make
  
Actual results:

  Compile error in radeon_drm.h due to effects of undefined __user
  and DEPRECATED in code included from drm/drm.h

Expected results:

  Compiles.

Additional info:

  I guess we can also add workarounds to all userspace software which
  includes drm/drm.h... but that might be the wrong place to fix it.

Comment 1 Dave Airlie 2008-11-30 08:29:19 UTC
this is a bug in the radeonhd driver, please don't bother us with it.

they include their own radeon_drm.h which they need to fix.