Bug 657437 - does not compile: connection.c:620: error: invalid initializer
does not compile: connection.c:620: error: invalid initializer
Product: Fedora
Classification: Fedora
Component: systemtap (Show other bugs)
All Linux
low Severity high
: ---
: ---
Assigned To: Stan Cox
Fedora Extras Quality Assurance
: Triaged
Depends On: 605588
  Show dependency treegraph
Reported: 2010-11-25 21:37 EST by Frank Ch. Eigler
Modified: 2011-01-26 12:57 EST (History)
10 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 605588
Last Closed: 2011-01-26 12:57:01 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Frank Ch. Eigler 2010-11-25 21:37:56 EST
+++ This bug was initially created as a clone of Bug #605588 +++

Description of problem:
connection.c:620: error: invalid initializer

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

How reproducible:

Steps to Reproduce:
1. build it
Actual results:

Expected results:

Additional info:
make[1]: Entering directory `/usr/src/redhat/BUILD/xorg-server-1.8.0/os'
  CC     connection.lo
connection.c: In function 'NotifyParentProcess':
connection.c:362: warning: ignoring return value of 'write', declared with attribute warn_unused_result
connection.c: In function 'AuthAudit':
connection.c:620: error: invalid initializer
make[1]: *** [connection.lo] Error 1

in the .i file
    XSERVER_CLIENT_AUTH(client->index, addr, client_pid, client_zid);
morphs into:

    do if (__builtin_expect ( client__auth_semaphore , 0)) { volatile __typeof__(((client->index))) arg1 = (client->index); volatile __typeof__(((addr))) arg2 = (addr); volatile __typeof__(((client_pid))) arg3 = (client_pid); volatile __typeof__(((client_zid))) arg4 = (client_zid); ; __asm__ volatile (".section .probes," "\"aw\"" "\n" "\t.balign 8\n" "1:\n\t.asciz " "\"client__auth\"" "\n" "\t.balign 4\n" "\t.int " "0x31425250" "\n" "\t.balign 8\n" "\t.quad " "1b\n" "\t.balign 8\n" "\t.quad " "2f" "\n" "\t.int 0\n" "\t.previous\n"); __asm__ volatile ("2:\n" "\tnop " "/* %0 %1 %2 %3 */" :: "g"(arg1), "g"(arg2), "g"(arg3), "g"(arg4)); } while (0);

--- Additional comment from fedora-triage-list@redhat.com on 2010-07-30 08:09:50 EDT ---

This bug appears to have been reported against 'rawhide' during the Fedora 14 development cycle.
Changing version to '14'.

More information and reason for this action is here:

--- Additional comment from ajax@redhat.com on 2010-08-02 17:53:31 EDT ---

I suspect you have systemtap-sdt-devel installed.  Don't do that.

But we should probably fix the specfile to explicitly turn dtrace support off.

--- Additional comment from ajax@redhat.com on 2010-10-25 16:55:15 EDT ---

Fixed in rawhide.

--- Additional comment from bb@kernelpanic.ru on 2010-11-24 16:27:56 EST ---

Adam, can you, please, fix it for RHEL6 too? The same issue occures, when I rebuild xorg-x11-server-1.7.7-26.el6.src.rpm on RHEL6 box.


--- Additional comment from fche@redhat.com on 2010-11-25 21:35:42 EST ---

"I suspect you have systemtap-sdt-devel installed.  Don't do that."

A more useful response would have been to involve the systemtap team in fixing whatever build problems arise.  I'll clone this bug to that effect.
Comment 1 Stan Cox 2010-12-09 09:28:18 EST
v1 sdt support doesn't coerce types so it ends up doing something like:
 char x[256]; __typeof__ ((x)) arg2 = x; // not legal C.  
(This construct would work fine: char *a; a = alloca(256);)
The x[256] construct works okay with v2 and v3 sdt support because both coerce types.
So the choices would seem to be:
1. v1 sdt has a limitation that a probe argument cannot be an array type.
2. change v1 sdt to coerce like v2 and v3.
Comment 2 Frank Ch. Eigler 2011-01-26 12:57:01 EST
systemtap 1.4 includes sdtv3, which has been tested to work with xorg.

Note You need to log in before you can comment on or make changes to this bug.