From fb3f38da2a7d45b88c838b3ac55fe40479961790 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 6 Nov 2012 18:28:21 +0000 Subject: [PATCH] compiler, libgo: Fixes to prepare for 64-bit int. From-SVN: r193254 --- gcc/go/gofrontend/types.cc | 8 ++++++-- libgo/go/bytes/indexbyte.c | 4 ++-- libgo/go/log/syslog/syslog_c.c | 6 ++++-- libgo/go/syscall/signame.c | 6 +++--- libgo/runtime/cpuprof.c | 2 +- libgo/runtime/go-new-map.c | 5 +++-- libgo/runtime/go-rune.c | 2 +- libgo/runtime/go-string.h | 2 +- libgo/runtime/go-traceback.c | 4 ++-- libgo/runtime/proc.c | 4 ++-- libgo/runtime/runtime.h | 4 ++-- libgo/runtime/string.goc | 2 +- 12 files changed, 28 insertions(+), 21 deletions(-) diff --git a/gcc/go/gofrontend/types.cc b/gcc/go/gofrontend/types.cc index 8a9f7d15df7..5e9e828d9d5 100644 --- a/gcc/go/gofrontend/types.cc +++ b/gcc/go/gofrontend/types.cc @@ -2568,8 +2568,12 @@ Integer_type::create_abstract_integer_type() { static Integer_type* abstract_type; if (abstract_type == NULL) - abstract_type = new Integer_type(true, false, INT_TYPE_SIZE, - RUNTIME_TYPE_KIND_INT); + { + Type* int_type = Type::lookup_integer_type("int"); + abstract_type = new Integer_type(true, false, + int_type->integer_type()->bits(), + RUNTIME_TYPE_KIND_INT); + } return abstract_type; } diff --git a/libgo/go/bytes/indexbyte.c b/libgo/go/bytes/indexbyte.c index 9c72e611a80..1f4399c446a 100644 --- a/libgo/go/bytes/indexbyte.c +++ b/libgo/go/bytes/indexbyte.c @@ -13,11 +13,11 @@ We deliberately don't split the stack in case it does call the library function, which shouldn't need much stack space. */ -int IndexByte (struct __go_open_array, char) +intgo IndexByte (struct __go_open_array, char) asm ("bytes.IndexByte") __attribute__ ((no_split_stack)); -int +intgo IndexByte (struct __go_open_array s, char b) { char *p; diff --git a/libgo/go/log/syslog/syslog_c.c b/libgo/go/log/syslog/syslog_c.c index 3b4cddd5d86..d79cba3757b 100644 --- a/libgo/go/log/syslog/syslog_c.c +++ b/libgo/go/log/syslog/syslog_c.c @@ -6,14 +6,16 @@ #include +#include "runtime.h" + /* We need to use a C function to call the syslog function, because we can't represent a C varargs function in Go. */ -void syslog_c(int, const char*) +void syslog_c(intgo, const char*) asm ("log_syslog.syslog_c"); void -syslog_c (int priority, const char *msg) +syslog_c (intgo priority, const char *msg) { syslog (priority, "%s", msg); } diff --git a/libgo/go/syscall/signame.c b/libgo/go/syscall/signame.c index 5ff0b09dbb7..c2d3b9fac70 100644 --- a/libgo/go/syscall/signame.c +++ b/libgo/go/syscall/signame.c @@ -10,10 +10,10 @@ #include "arch.h" #include "malloc.h" -String Signame (int sig) asm ("syscall.Signame"); +String Signame (intgo sig) asm ("syscall.Signame"); String -Signame (int sig) +Signame (intgo sig) { const char* s = NULL; char buf[100]; @@ -27,7 +27,7 @@ Signame (int sig) if (s == NULL) { - snprintf(buf, sizeof buf, "signal %d", sig); + snprintf(buf, sizeof buf, "signal %ld", (long) sig); s = buf; } len = __builtin_strlen (s); diff --git a/libgo/runtime/cpuprof.c b/libgo/runtime/cpuprof.c index 23af18b6c2b..3b7f572d5a5 100644 --- a/libgo/runtime/cpuprof.c +++ b/libgo/runtime/cpuprof.c @@ -124,7 +124,7 @@ static uintptr eod[3] = {0, 1, 0}; static void LostProfileData(void) { } -extern void runtime_SetCPUProfileRate(int32) +extern void runtime_SetCPUProfileRate(intgo) __asm__("runtime.SetCPUProfileRate"); // SetCPUProfileRate sets the CPU profiling rate. diff --git a/libgo/runtime/go-new-map.c b/libgo/runtime/go-new-map.c index 096856e234c..c289bc0bea0 100644 --- a/libgo/runtime/go-new-map.c +++ b/libgo/runtime/go-new-map.c @@ -106,10 +106,11 @@ __go_map_next_prime (uintptr_t n) struct __go_map * __go_new_map (const struct __go_map_descriptor *descriptor, uintptr_t entries) { - intgo ientries; + int32 ientries; struct __go_map *ret; - ientries = (intgo) entries; + /* The master library limits map entries to int32, so we do too. */ + ientries = (int32) entries; if (ientries < 0 || (uintptr_t) ientries != entries) runtime_panicstring ("map size out of range"); diff --git a/libgo/runtime/go-rune.c b/libgo/runtime/go-rune.c index ba6d86c501f..4c65e215167 100644 --- a/libgo/runtime/go-rune.c +++ b/libgo/runtime/go-rune.c @@ -14,7 +14,7 @@ characters used from STR. */ int -__go_get_rune (const unsigned char *str, size_t len, int *rune) +__go_get_rune (const unsigned char *str, size_t len, int32 *rune) { int c, c1, c2, c3, l; diff --git a/libgo/runtime/go-string.h b/libgo/runtime/go-string.h index f4c149bb54e..7fee1da03eb 100644 --- a/libgo/runtime/go-string.h +++ b/libgo/runtime/go-string.h @@ -26,6 +26,6 @@ __go_ptr_strings_equal (const String *ps1, const String *ps2) return __go_strings_equal (*ps1, *ps2); } -extern int __go_get_rune (const unsigned char *, size_t, int *); +extern int __go_get_rune (const unsigned char *, size_t, int32 *); #endif /* !defined(LIBGO_GO_STRING_H) */ diff --git a/libgo/runtime/go-traceback.c b/libgo/runtime/go-traceback.c index 4d5b61a4fd5..2927351c8a9 100644 --- a/libgo/runtime/go-traceback.c +++ b/libgo/runtime/go-traceback.c @@ -29,13 +29,13 @@ runtime_printtrace (uintptr *pcbuf, int32 c) { String fn; String file; - int line; + intgo line; if (__go_file_line (pcbuf[i], &fn, &file, &line) && runtime_showframe (fn.str)) { runtime_printf ("%S\n", fn); - runtime_printf ("\t%S:%d\n", file, line); + runtime_printf ("\t%S:%D\n", file, (int64) line); } } } diff --git a/libgo/runtime/proc.c b/libgo/runtime/proc.c index 43071e581cc..b6254a7e53f 100644 --- a/libgo/runtime/proc.c +++ b/libgo/runtime/proc.c @@ -610,11 +610,11 @@ runtime_goroutinetrailer(G *g) if(g != nil && g->gopc != 0 && g->goid != 1) { String fn; String file; - int line; + intgo line; if(__go_file_line(g->gopc - 1, &fn, &file, &line)) { runtime_printf("created by %S\n", fn); - runtime_printf("\t%S:%d\n", file, line); + runtime_printf("\t%S:%D\n", file, (int64) line); } } } diff --git a/libgo/runtime/runtime.h b/libgo/runtime/runtime.h index e6281eaf803..72e1eb2f8b9 100644 --- a/libgo/runtime/runtime.h +++ b/libgo/runtime/runtime.h @@ -341,7 +341,7 @@ int32 runtime_ncpu; /* * common functions and data */ -int32 runtime_findnull(const byte*); +intgo runtime_findnull(const byte*); void runtime_dump(byte*, int32); /* @@ -614,7 +614,7 @@ extern uintptr runtime_stacks_sys; struct backtrace_state; extern struct backtrace_state *__go_get_backtrace_state(void); -extern _Bool __go_file_line(uintptr, String*, String*, int *); +extern _Bool __go_file_line(uintptr, String*, String*, intgo *); extern byte* runtime_progname(); int32 getproccount(void); diff --git a/libgo/runtime/string.goc b/libgo/runtime/string.goc index d3f0c2d4b9c..240ab0ba5e4 100644 --- a/libgo/runtime/string.goc +++ b/libgo/runtime/string.goc @@ -54,7 +54,7 @@ func stringiter(s String, k int) (retk int) { out: } -func stringiter2(s String, k int) (retk int, retv int) { +func stringiter2(s String, k int) (retk int, retv int32) { if(k >= s.len) { // retk=0 is end of iteration retk = 0; -- 2.30.2