https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61789

            Bug ID: 61789
           Summary: Missing syscall constants
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: erezh at il dot ibm.com
                CC: cmang at google dot com

Created attachment 33113
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33113&action=edit
Failed compilation

OS: Ubutnu 14.04 LTS Server - both amd64 and ppc64

gccgo version (output of "go version"):
go version xgcc (Ubuntu 4.9-20140406-0ubuntu1) 4.9.0 20140405 (experimental)
[trunk revision 209157] linux/amd64

How-to-produce:
Compile the attached syscallCheck.go with gccgo. It should fail with an output
similar to below. When compiling with Google's gc, there should be no errors.
# gccgo -g -o test syscall_test.go
syscall_test.go:12:48: error: reference to undefined identifier
‘syscall.TIOCSPTLCK’
     fmt.Println("syscall.TIOCSPTLCK=", syscall.TIOCSPTLCK)
                                                ^
syscall_test.go:13:46: error: reference to undefined identifier
‘syscall.TIOCGPTN’
     fmt.Println("syscall.TIOCGPTN=", syscall.TIOCGPTN)
                                              ^
syscall_test.go:17:49: error: reference to undefined identifier
‘syscall.CLONE_NEWNS’
     fmt.Println("syscall.CLONE_NEWNS=", syscall.CLONE_NEWNS)
                                                 ^
syscall_test.go:18:50: error: reference to undefined identifier
‘syscall.CLONE_NEWUTS’
     fmt.Println("syscall.CLONE_NEWUTS=", syscall.CLONE_NEWUTS)
                                                  ^
syscall_test.go:19:50: error: reference to undefined identifier
‘syscall.CLONE_NEWIPC’
     fmt.Println("syscall.CLONE_NEWIPC=", syscall.CLONE_NEWIPC)
                                                  ^
syscall_test.go:20:51: error: reference to undefined identifier
‘syscall.CLONE_NEWUSER’
     fmt.Println("syscall.CLONE_NEWUSER=", syscall.CLONE_NEWUSER)
                                                   ^
syscall_test.go:21:50: error: reference to undefined identifier
‘syscall.CLONE_NEWPID’
     fmt.Println("syscall.CLONE_NEWPID=", syscall.CLONE_NEWPID)
                                                  ^
syscall_test.go:22:50: error: reference to undefined identifier
‘syscall.CLONE_NEWNET’
     fmt.Println("syscall.CLONE_NEWNET=", syscall.CLONE_NEWNET)
                                                  ^
Further analysis, and more related issues:
1. I found that the missing constants are defined in the files
zerrors_linux_amd64.go and ztypes_linux_amd64.go - for amd64. Both files are
part of the golang-src package. However, for some reason, those files are not
compiled into gccgo (libgo?) and are therefore not available for builds.

2. For ppc64, I could not even find the respective files in golang-src. 

3. Is it possible that more platform-specific files such as above have been
skipped being built into gccgo/libgo?

Reply via email to