re PR go/46986 (Go is not supported on Darwin)
[platform/upstream/gcc.git] / libgo / go / syscall / signame.c
1 /* signame.c -- get the name of a signal
2
3    Copyright 2012 The Go Authors. All rights reserved.
4    Use of this source code is governed by a BSD-style
5    license that can be found in the LICENSE file.  */
6
7 #include <string.h>
8
9 #include "runtime.h"
10 #include "arch.h"
11 #include "malloc.h"
12
13 String Signame (intgo sig) __asm__ (GOSYM_PREFIX "syscall.Signame");
14
15 String
16 Signame (intgo sig)
17 {
18   const char* s = NULL;
19   char buf[100];
20   size_t len;
21   byte *data;
22   String ret;
23
24 #if defined(HAVE_STRSIGNAL)
25   s = strsignal (sig);
26 #endif
27
28   if (s == NULL)
29     {
30       snprintf(buf, sizeof buf, "signal %ld", (long) sig);
31       s = buf;
32     }
33   len = __builtin_strlen (s);
34   data = runtime_mallocgc (len, FlagNoPointers, 0, 0);
35   __builtin_memcpy (data, s, len);
36   ret.str = data;
37   ret.len = len;
38   return ret;
39 }