This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

BeOS bootstrap



Hello all,

can someone point me out whether BeOS target is supported or not ?

Recently I tried to bootstrap CVS snapshot (sorry, no fast Internet
connection so I have to use snapshots) on i586-pc-beos target with
fairly limited success. I use BeOS R5 on dual PII-350.

Here is what I have got:

- beoself target uses, in particular, ./config/i386/winnt.c file. Comparing to
the version of this file found in GNUPro sources for BeOS R5, there is one
major difference in function `i386_pe_asm_file_end' -- that is, support for
.drectve section. Unfortunately, when building ELF target, neither
'drectve_section' nor 'I386_PE_STRIP_ENCODING' used for implementing this are
defined. I guarded drectve supporting code with ifdefs on 'DRECTVE_SECTION_FUNCTION'
(which made file to look pretty much like the one in GNUPro) and 20000501 snapshot
has built successfully after that.  I attached patch for winnt.c in case it could be
useful.

- yesterday I tried to build 20000604. Beside the change I described above, I
got a bunch of warnings `function declaration is not a prototype'. I fixed
this with patch which is also attached. Unfortunately all of this did not help
to build 20000604 since `fixincl' got segmentation violation. Surprisingly
enough, it got it in the middle of `malloc' while trying to open new file in
`proc2_fopen'. It was late night when I got it, so no additional comments on
this, at least for awhile :)

- accidentally I took a look at ./config/i386/beos-pe.h file. I noticed that
this file includes "cygwin32.h" file. AFAIK, "cygwin32.h" was renamed to
"cygwin.h", so it looks to me that beos-pe target won't build as well.

- and one more thing: current CVS misses BeOS threads support. GNUPro had it;
it looks it was missed while integrating BeOS support into the current CVS.
If BeOS is still among supported targets, it would be rather disappointing to
drop threads support on the way from 2.95 to the next release (it would affect
c++ thread-safe exception handling, isn't it ?)

Thanks for looking into that.

-- 
Regards,
--Dennis
*** ../../../../repository/egcs/gcc/config/i386/winnt.c	Tue Jan 25 13:44:25 2000
--- winnt.c	Sun Jun  4 15:50:52 2000
***************
*** 606,611 ****
--- 606,612 ----
  	}
      }
  
+ #if defined (DRECTVE_SECTION_FUNCTION)
    if (export_head)
      {
        struct export_list *q;
***************
*** 617,621 ****
--- 618,623 ----
  		   (q->is_data) ? ",data" : "");
  	}
      }
+ #endif
  }
  
*** ./egcs/gcc/config/i386/beos-elf.h	Tue Feb 29 13:13:07 2000
--- beos-elf.h	Tue Jun  6 09:39:49 2000
***************
*** 165,170 ****
--- 165,172 ----
  
  #define TARGET_NOP_FUN_DLLIMPORT 1
  
+ union tree_node;
+ 
  /* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
     is a valid machine specific attribute for DECL.
     The attributes in ATTRIBUTES have previously been assigned to DECL.  */
***************
*** 172,178 ****
  #undef VALID_MACHINE_DECL_ATTRIBUTE
  #define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \
    i386_pe_valid_decl_attribute_p (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
! extern int i386_pe_valid_decl_attribute_p ();
  
  /* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
     is a valid machine specific attribute for TYPE.
--- 174,180 ----
  #undef VALID_MACHINE_DECL_ATTRIBUTE
  #define VALID_MACHINE_DECL_ATTRIBUTE(DECL, ATTRIBUTES, IDENTIFIER, ARGS) \
    i386_pe_valid_decl_attribute_p (DECL, ATTRIBUTES, IDENTIFIER, ARGS)
! extern int i386_pe_valid_decl_attribute_p PARAMS((union tree_node*, union tree_node*, union tree_node*, union tree_node*);
  
  /* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS
     is a valid machine specific attribute for TYPE.
***************
*** 181,191 ****
  #undef VALID_MACHINE_TYPE_ATTRIBUTE
  #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, IDENTIFIER, ARGS) \
    i386_pe_valid_type_attribute_p (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)
! extern int i386_pe_valid_type_attribute_p ();
  
  #define MERGE_MACHINE_DECL_ATTRIBUTES(OLD, NEW) \
    i386_pe_merge_decl_attributes ((OLD), (NEW))
! extern union tree_node *i386_pe_merge_decl_attributes ();
  
  /* Used to implement dllexport overriding dllimport semantics.  It's also used
     to handle vtables - the first pass won't do anything because
--- 183,193 ----
  #undef VALID_MACHINE_TYPE_ATTRIBUTE
  #define VALID_MACHINE_TYPE_ATTRIBUTE(TYPE, ATTRIBUTES, IDENTIFIER, ARGS) \
    i386_pe_valid_type_attribute_p (TYPE, ATTRIBUTES, IDENTIFIER, ARGS)
! extern int i386_pe_valid_type_attribute_p PARAMS((union tree_node*, union tree_node*, union tree_node*, union tree_node));
  
  #define MERGE_MACHINE_DECL_ATTRIBUTES(OLD, NEW) \
    i386_pe_merge_decl_attributes ((OLD), (NEW))
! extern union tree_node *i386_pe_merge_decl_attributes PARAMS((union tree_node*, union tree_node*));
  
  /* Used to implement dllexport overriding dllimport semantics.  It's also used
     to handle vtables - the first pass won't do anything because

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]