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

            Bug ID: 69511
           Summary: G.gcstack_size uses uintptr instead of size_t
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: go
          Assignee: ian at airs dot com
          Reporter: vogt at linux dot vnet.ibm.com
                CC: cmang at google dot com, krebbel at gcc dot gnu.org
  Target Milestone: ---
            Target: s390 s390x

Created attachment 37488
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37488&action=edit
Proposed fix.

The field gcstack_size in the G structure in libgo/runtime/runtime.h has
"uintptr" as its type, but &G.gcstack_size is passed to a function expecting
"size_t *".  On S/390 this results in a warning and hence a bootstrap failure
with the split stack patches we're working on:

  error: passing argument 3 of
  ‘__splitstack_find’ from incompatible pointer type
[-Werror=incompatible-pointer-types]
  g->gcstack = __splitstack_find(nil, nil, &g->gcstack_size,

I believe it's safe to change the type to size_t which it should have been in
the first place.  But theoretically it's possible that size_t and unitptr are
of different bit size.  What do you think about the attached patch?

Reply via email to