Project

General

Profile

Actions

Bug #5491

closed

build failure on Tru64 UNIX 5.1

Added by twwlogin (The Written Word Inc) over 12 years ago. Updated over 12 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
UNKNOWN
Backport:
[ruby-core:40432]

Description

Building 1.9.2 with latest svn revision at 33531 produces a build error because <c_except.h> defines leave and except:
/* definitions of keywords and intrinsic function names */
#ifndef __cplusplus
#define try __builtin_try
#endif
#define except __builtin_except
#define leave __builtin_leave
#define finally __builtin_finally

cc -ieee -g -I. -I.ext/include/alphaev67-osf5.1 -I./include -I. -DRUBY_EXPORT -o compile.o -c compile.c
cc: Error: compile.c, line 504: In this statement, "YARVINSN___builtin_leave" is not declared. (undeclared)
ADD_INSN(ret, iseq->compile_data->last_line, leave);
--------^
cc: Error: compile.c, line 3584: In this statement, "YARVINSN___builtin_leave" is not declared. (undeclared)
ADD_INSN(ret, nd_line(node), leave);
------------^
cc: Error: compile.c, line 4273: In this statement, "YARVINSN___builtin_leave" is not declared. (undeclared)
ADD_INSN(ret, nd_line(node), leave);
--------------------^
gmake: *** [compile.o] Error 1


Files

patch (978 Bytes) patch #undef leave and except to undo #define's under Tru64 UNIX twwlogin (The Written Word Inc), 10/27/2011 11:42 AM
Actions #2

Updated by naruse (Yui NARUSE) over 12 years ago

I understand the problem, but the patch is hard to merge.
What header includes c_excpt.h?
I want to undef them just after including a header.

Updated by twwlogin (The Written Word Inc) over 12 years ago

For compile.c, we have:
#include "ruby/ruby.h"
#include "vm_core.h"
#include "thread_pthread.h"
#include <pthread.h>
#include <pthread_exception.h>
#include <c_excpt.h>

So, if you #undef leave and #undef except after #include <pthread.h> in thread_pthread.h, that's a solution as well.

Updated by nobu (Nobuyoshi Nakada) over 12 years ago

=begin
You mean this?

diff --git a/thread_pthread.h b/thread_pthread.h
index f180a79..b3e7c36 100644
--- a/thread_pthread.h
+++ b/thread_pthread.h
@@ -32,6 +32,11 @@ typedef struct native_thread_data_struct {

#include <semaphore.h>

+#undef except
+#undef try
+#undef leave
+#undef finally
+
typedef struct rb_global_vm_lock_struct {
/* fast path */
unsigned long acquired;
=end

Updated by twwlogin (The Written Word Inc) over 12 years ago

Yes, that should work.

Actions #6

Updated by nobu (Nobuyoshi Nakada) over 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r33546.
The Written Word, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0