public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
From: "ian at airs dot com" <gcc-bugzilla@gcc.gnu.org> To: gcc-bugs@gcc.gnu.org Subject: [Bug go/58075] Unable to build go on ia64-hp-hpux11.31 Date: Sun, 04 Aug 2013 18:44:00 -0000 [thread overview] Message-ID: <bug-58075-4-oUj6KsJjbf@http.gcc.gnu.org/bugzilla/> (raw) In-Reply-To: <bug-58075-4@http.gcc.gnu.org/bugzilla/> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58075 --- Comment #1 from Ian Lance Taylor <ian at airs dot com> --- That compilation error means that a configure test detected that the setcontext call modified TLS variables, which should not happen. That does happen on some older versions of Solaris and NetBSD, and the code in libgo/runtime/proc.c has a workaround for those versions. Apparently HP/UX also has this bug, and somebody will need to write a workaround there as well. The test case can be found in libgo/configure.ac, and I've appended it below. The test case should compile and run and exit with a zero exit status (you may need to provide the -pthread option when compiling and linking, I don't know what HP/UX requires in that regard). If the program does not exit with a zero status, there is a bug in the implementation of setcontext. I encourage you to report that bug to HP. #include <pthread.h> #include <stdlib.h> #include <ucontext.h> #include <unistd.h> __thread int tls; static char stack[10 * 1024 * 1024]; static ucontext_t c; /* Called via makecontext/setcontext. */ static void cfn (void) { exit (tls); } /* Called via pthread_create. */ static void * tfn (void *dummy) { /* The thread should still see this value after calling setcontext. */ tls = 0; setcontext (&c); /* The call to setcontext should not return. */ abort (); } int main () { pthread_t tid; /* The thread should not see this value. */ tls = 1; if (getcontext (&c) < 0) abort (); c.uc_stack.ss_sp = stack; c.uc_stack.ss_flags = 0; c.uc_stack.ss_size = sizeof stack; c.uc_link = NULL; makecontext (&c, cfn, 0); if (pthread_create (&tid, NULL, tfn, NULL) != 0) abort (); if (pthread_join (tid, NULL) != 0) abort (); /* The thread should have called exit. */ abort (); }
next prev parent reply other threads:[~2013-08-04 18:44 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-08-04 2:42 [Bug go/58075] New: " pda at freeshell dot org 2013-08-04 18:44 ` ian at airs dot com [this message] 2013-08-12 23:48 ` [Bug go/58075] " pda at freeshell dot org 2013-08-13 0:00 ` ian at airs dot com 2015-02-03 20:04 ` ian at airs dot com
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=bug-58075-4-oUj6KsJjbf@http.gcc.gnu.org/bugzilla/ \ --to=gcc-bugzilla@gcc.gnu.org \ --cc=gcc-bugs@gcc.gnu.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).