public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
* objc SMP patch
@ 1997-08-20  5:23 Oleg Krivosheev
  1997-08-20  5:23 ` f771 dies with trivial fortran code Craig Burley
  1997-08-20  5:23 ` threads support on solaris Oleg Krivosheev
  0 siblings, 2 replies; 8+ messages in thread
From: Oleg Krivosheev @ 1997-08-20  5:23 UTC (permalink / raw)
  To: egcs

 Hi, All

it is still impossible to built ObjC on
any SMP box. I've enclosed below 
a bit hacked Jim Meyering patch
which cures the problem.

Can someone take a look ?

sincerely

OK



	* objc/Make-lang.in (objc/*.o): Depend on $(GCC_PASSES) cc1obj.

=====================================================
--- objc/Make-lang.in.orig	Tue Jul 15 08:53:43 1997
+++ objc/Make-lang.in	Tue Jul 15 08:52:52 1997
@@ -128,58 +128,59 @@
 	objc/thr.o objc/linking.o \
 	objc/$(OBJC_THREAD_FILE).o
 
-objc/hash.o: $(srcdir)/objc/hash.c
+objc/hash.o: $(srcdir)/objc/hash.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/hash.c -o $@
-objc/sarray.o: $(srcdir)/objc/sarray.c
+objc/sarray.o: $(srcdir)/objc/sarray.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/sarray.c -o $@
-objc/class.o: $(srcdir)/objc/class.c
+objc/class.o: $(srcdir)/objc/class.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/class.c -o $@
-objc/sendmsg.o: $(srcdir)/objc/sendmsg.c
+objc/sendmsg.o: $(srcdir)/objc/sendmsg.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/sendmsg.c -o $@
-objc/init.o: $(srcdir)/objc/init.c
+objc/init.o: $(srcdir)/objc/init.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/init.c -o $@
-objc/archive.o: $(srcdir)/objc/archive.c
+objc/archive.o: $(srcdir)/objc/archive.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/archive.c -o $@
-objc/encoding.o: $(srcdir)/objc/encoding.c
+objc/encoding.o: $(srcdir)/objc/encoding.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/encoding.c -o $@
-objc/selector.o: $(srcdir)/objc/selector.c
+objc/selector.o: $(srcdir)/objc/selector.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/selector.c -o $@
-objc/objects.o: $(srcdir)/objc/objects.c
+objc/objects.o: $(srcdir)/objc/objects.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/objects.c -o $@
-objc/misc.o: $(srcdir)/objc/misc.c
+objc/misc.o: $(srcdir)/objc/misc.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/misc.c -o $@
-objc/NXConstStr.o: $(srcdir)/objc/NXConstStr.m
+objc/NXConstStr.o: $(srcdir)/objc/NXConstStr.m $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/NXConstStr.m -o $@
-objc/Object.o: $(srcdir)/objc/Object.m
+objc/Object.o: $(srcdir)/objc/Object.m $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/Object.m -o $@
-objc/Protocol.o: $(srcdir)/objc/Protocol.m
+objc/Protocol.o: $(srcdir)/objc/Protocol.m $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/Protocol.m -o $@
-objc/thr.o: $(srcdir)/objc/thr.h $(srcdir)/objc/thr.c
+objc/thr.o: $(srcdir)/objc/thr.h $(srcdir)/objc/thr.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/thr.c -o $@
-objc/$(OBJC_THREAD_FILE).o: $(srcdir)/objc/$(OBJC_THREAD_FILE).c
+objc/$(OBJC_THREAD_FILE).o: $(srcdir)/objc/$(OBJC_THREAD_FILE).c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/$(OBJC_THREAD_FILE).c -o $@
-objc/nil_method.o: $(srcdir)/objc/nil_method.c
+objc/nil_method.o: $(srcdir)/objc/nil_method.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/nil_method.c -o $@
-objc/linking.o: $(srcdir)/objc/linking.m
+objc/linking.o: $(srcdir)/objc/linking.m $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/linking.m -o $@
-$(srcdir)/objc/libobjc_entry.o: $(srcdir)/objc/libobjc_entry.c
+
+$(srcdir)/objc/libobjc_entry.o: $(srcdir)/objc/libobjc_entry.c $(GCC_PASSES) cc1obj
 	$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) \
 	-c $(srcdir)/objc/libobjc_entry.c -o $@
 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* threads support on solaris
  1997-08-20  5:23 objc SMP patch Oleg Krivosheev
  1997-08-20  5:23 ` f771 dies with trivial fortran code Craig Burley
@ 1997-08-20  5:23 ` Oleg Krivosheev
  1 sibling, 0 replies; 8+ messages in thread
From: Oleg Krivosheev @ 1997-08-20  5:23 UTC (permalink / raw)
  To: egcs

Hi, All

starting with Solaris 2.5 Sun ships POSIX
threads bundled with OS. Grand idea is to
make posix threads default option for
multithreading ObjC runtime support if
we're building on solaris 2.5+. 
Please find enclosed patch which
makes thr-posix default on
solaris 2.5 and up if 
user sets --enable-threads

Can someone take a looke at this?

regards

OK

*** configure.orig	Tue Aug 19 20:48:26 1997
--- configure	Wed Aug 20 01:02:21 1997
***************
*** 2266,2271 ****
--- 2266,2288 ----
  		fi
  		truncate_target=yes
  		;;
+ 	i[3456]86-*-solaris2.[56789]*)
+ 		xm_file=i386/xm-sysv4.h
+ 		if [ x$stabs = xyes ]
+ 		then
+ 			tm_file=i386/sol2dbg.h
+ 		else
+ 			tm_file=i386/sol2.h
+ 		fi
+ 		tmake_file=i386/t-sol2
+ 		extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o"
+ 		xmake_file=x-svr4
+ 		fixincludes=fixinc.svr4
+ 		broken_install=yes
+  		if [ x$enable_threads = xyes ]; then
+ 			thread_file='posix'
+ 		fi
+ 		;;
  	i[3456]86-*-solaris2*)
  		xm_file=i386/xm-sysv4.h
  		if [ x$stabs = xyes ]
***************
*** 3687,3692 ****
--- 3704,3721 ----
  		tmake_file="sparc/t-sparcbare t-rtems"
  		tm_file=sparc/rtems.h
  		;;
+ 	sparc-*-solaris2.[56789]*)
+ 		tm_file=sparc/sol2.h
+ 		xm_file=sparc/xm-sol2.h
+ 		tmake_file=sparc/t-sol2
+ 		xmake_file=sparc/x-sysv4
+ 		extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
+ 		fixincludes=fixinc.svr4
+ 		broken_install=yes
+  		if [ x$enable_threads = xyes ]; then
+ 			thread_file='posix'
+ 		fi
+ 		;;
  	sparc-*-solaris2*)
  		tm_file=sparc/sol2.h
  		xm_file=sparc/xm-sol2.h
*** configure.in.orig	Tue Aug 19 20:57:22 1997
--- configure.in	Tue Aug 19 21:04:03 1997
***************
*** 932,937 ****
--- 932,954 ----
  		fi
  		truncate_target=yes
  		;;
+ 	i[[3456]]86-*-solaris2.[[56789]]*)
+ 		xm_file=i386/xm-sysv4.h
+ 		if [[ x$stabs = xyes ]]
+ 		then
+ 			tm_file=i386/sol2dbg.h
+ 		else
+ 			tm_file=i386/sol2.h
+ 		fi
+ 		tmake_file=i386/t-sol2
+ 		extra_parts="crt1.o crti.o crtn.o crtbegin.o crtend.o"
+ 		xmake_file=x-svr4
+ 		fixincludes=fixinc.svr4
+ 		broken_install=yes
+  		if [[ x$enable_threads = xyes ]]; then
+ 			thread_file='posix'
+ 		fi
+ 		;;
  	i[[3456]]86-*-solaris2*)
  		xm_file=i386/xm-sysv4.h
  		if [[ x$stabs = xyes ]]
***************
*** 2353,2358 ****
--- 2370,2387 ----
  		tmake_file="sparc/t-sparcbare t-rtems"
  		tm_file=sparc/rtems.h
  		;;
+ 	sparc-*-solaris2.[[56789]]*)
+ 		tm_file=sparc/sol2.h
+ 		xm_file=sparc/xm-sol2.h
+ 		tmake_file=sparc/t-sol2
+ 		xmake_file=sparc/x-sysv4
+ 		extra_parts="crt1.o crti.o crtn.o gcrt1.o gmon.o crtbegin.o crtend.o"
+ 		fixincludes=fixinc.svr4
+ 		broken_install=yes
+  		if [[ x$enable_threads = xyes ]]; then
+ 			thread_file='posix'
+ 		fi
+ 		;;
  	sparc-*-solaris2*)
  		tm_file=sparc/sol2.h
  		xm_file=sparc/xm-sol2.h

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: f771 dies with trivial fortran code
  1997-08-20  5:23 objc SMP patch Oleg Krivosheev
@ 1997-08-20  5:23 ` Craig Burley
  1997-08-20  5:23 ` threads support on solaris Oleg Krivosheev
  1 sibling, 0 replies; 8+ messages in thread
From: Craig Burley @ 1997-08-20  5:23 UTC (permalink / raw)
  To: egcs

>f771 dumps core on i386-linux-gnulibc1 when compiling the following simple
>piece of code. Ditto for a cross-compiled i386-cygwin32-g77.
>
>could someone please check on other platforms just so I know that it's not
>a local problem?

It doesn't crash on g77-0.5.21-19970818, which is based on a fairly
heavily modified gcc-2.7.2.2, running on my i486-unknown-linuxaout
system, FWIW.

        tq vm, (burley)

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: f771 dies with trivial fortran code
@ 1997-08-20 23:11 Mumit Khan
  0 siblings, 0 replies; 8+ messages in thread
From: Mumit Khan @ 1997-08-20 23:11 UTC (permalink / raw)
  To: egcs

Jim Wilson <wilson@cygnus.com> writes:
> This is due to a backend change made since gcc 2.7.2.
> 
[...]
> 
> I have checked in this patch to fix the problem.
> 

Thanks! I just built a relatively messy body of FORTRAN code that seem to
be producing the correct results (not using any optimization yet since any
level of optimization is causing libstdc++ tests to fail).

Mumit

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: f771 dies with trivial fortran code
@ 1997-08-20 19:30 Jim Wilson
  0 siblings, 0 replies; 8+ messages in thread
From: Jim Wilson @ 1997-08-20 19:30 UTC (permalink / raw)
  To: egcs

This is due to a backend change made since gcc 2.7.2.

Some code was added to handle C++ destructors inside conditional expressions
differently than they used to be handled.  This apparently was necessary
for correct behaviour, though I don't know exactly what bug was being fixed.
(Perhaps destructors were always run, even if the variable was only constructed
on one side of the conditional expression?)

Anyways, this causes problems if a conditional expression appears inside
the type expression of a parameter.  The code expects us to always have
a binding contour, but we do not have one when parsing the parameters.
Since no destructors are possible in this case, it is safe for us to
do nothing.

A C testcase:

sub (int a, int b, int c[a > b ? a : b])
{
}

A Fortran testcase:

	subroutine foo ()
	character*(*) str
c
	return
c
	entry bar (str)
	str = 'a'
c	^^^^^^^^ culprit
	return
	end
c

I have checked in this patch to fix the problem.

Wed Aug 20 11:58:33 1997  Jim Wilson  <wilson@cygnus.com>

	* stmt.c (start_cleanup_deferal, end_cleanup_deferal): Test
	block_stack before dereferencing it.

Index: stmt.c
===================================================================
RCS file: /cvs/cvsfiles/egcs/stmt.c,v
retrieving revision 1.1.1.1
diff -p -r1.1.1.1 stmt.c
*** stmt.c	1997/08/11 15:57:13	1.1.1.1
--- stmt.c	1997/08/20 18:43:30
*************** expand_cleanups (list, dont_do, in_fixup
*** 4212,4218 ****
  void
  start_cleanup_deferal ()
  {
!   ++block_stack->data.block.conditional_code;
  }
  
  /* Mark the end of a conditional region of code.  Because cleanup
--- 4212,4221 ----
  void
  start_cleanup_deferal ()
  {
!   /* block_stack can be NULL if we are inside the parameter list.  It is
!      OK to do nothing, because cleanups aren't possible here.  */
!   if (block_stack)
!     ++block_stack->data.block.conditional_code;
  }
  
  /* Mark the end of a conditional region of code.  Because cleanup
*************** start_cleanup_deferal ()
*** 4223,4229 ****
  void
  end_cleanup_deferal ()
  {
!   --block_stack->data.block.conditional_code;
  }
  
  /* Move all cleanups from the current block_stack
--- 4226,4235 ----
  void
  end_cleanup_deferal ()
  {
!   /* block_stack can be NULL if we are inside the parameter list.  It is
!      OK to do nothing, because cleanups aren't possible here.  */
!   if (block_stack)
!     --block_stack->data.block.conditional_code;
  }
  
  /* Move all cleanups from the current block_stack

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: f771 dies with trivial fortran code
  1997-08-20 16:37 Trouble with GAS halfword extraction on PPC Peter Barada
@ 1997-08-20 16:37 ` Jeffrey A Law
  0 siblings, 0 replies; 8+ messages in thread
From: Jeffrey A Law @ 1997-08-20 16:37 UTC (permalink / raw)
  To: egcs

  In message <199708200523.AAA02390@mercury.xraylith.wisc.edu>you write:
  > f771 dumps core on i386-linux-gnulibc1 when compiling the following simple
  > piece of code. Ditto for a cross-compiled i386-cygwin32-g77.
  > 
  > could someone please check on other platforms just so I know that it's not
  > a local problem?
It's the same basic problem I sent mail about, except it showed up
in su2cor from spec92.

Jeff

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: f771 dies with trivial fortran code
  1997-08-20 15:03 cross compiling to m68k Joel Sherrill
@ 1997-08-20 15:03 ` Mumit Khan
  0 siblings, 0 replies; 8+ messages in thread
From: Mumit Khan @ 1997-08-20 15:03 UTC (permalink / raw)
  To: egcs

Craig Burley <burley@gnu.ai.mit.edu> writes:
> >f771 dumps core on i386-linux-gnulibc1 when compiling the following simple
> >piece of code. Ditto for a cross-compiled i386-cygwin32-g77.
> >
> >could someone please check on other platforms just so I know that it's not
> >a local problem?
> 
> It doesn't crash on g77-0.5.21-19970818, which is based on a fairly
> heavily modified gcc-2.7.2.2, running on my i486-unknown-linuxaout
> system, FWIW.
> 

Then it might have something to do with the backend. Also crashes on
hppa1.1-hp-hpux10.20, exactly the same place, same problem.

Mumit

^ permalink raw reply	[flat|nested] 8+ messages in thread

* f771 dies with trivial fortran code
@ 1997-08-20  5:23 Mumit Khan
  0 siblings, 0 replies; 8+ messages in thread
From: Mumit Khan @ 1997-08-20  5:23 UTC (permalink / raw)
  To: egcs

f771 dumps core on i386-linux-gnulibc1 when compiling the following simple
piece of code. Ditto for a cross-compiled i386-cygwin32-g77.

could someone please check on other platforms just so I know that it's not
a local problem?

c ==== f77-bug1.f
	subroutine foo ()
	character*(*) str
c
	return
c
	entry bar (str)
	str = 'a'
c	^^^^^^^^ culprit
	return
	end
c
c ==== END f77-bug1.f

% /scratch/src/gnu/bin/g77 -v -c f77-bug1.f
g77 version 0.5.21-19970811
 /scratch/src/gnu/bin/gcc -v -c f77-bug1.f
Reading specs from /scratch/src/gnu/lib/gcc-lib/i386-linux-gnulibc1/egcs-2.90.00/specs
gcc version egcs-2.90.00 970814 (gcc2-970802 experimental)
 /scratch/src/gnu/lib/gcc-lib/i386-linux-gnulibc1/egcs-2.90.00/f771 f77-bug1.f -fset-g77-defaults -quiet -dumpbase f77-bug1.f -version -fversion -o /tmp/cca32362.s
GNU F77 version egcs-2.90.00 970814 (gcc2-970802 experimental) (i386-linux-gnulibc1) compiled by GNU C version egcs-2.90.00 970814 (gcc2-970802 experimental).
GNU Fortran Front End version 0.5.21-19970811 compiled: Aug 17 1997 12:38:30
gcc: Internal compiler error: program f771 got fatal signal 11
% gdb /scratch/src/gnu/lib/gcc-lib/i386-linux-gnulibc1/egcs-2.90.00/f771 core
GDB is free software and you are welcome to distribute copies of it
 under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.16 (i586-unknown-linux), Copyright 1996 Free Software Foundation, Inc...
Core was generated by `/scratch/src/gnu/lib/gcc-lib/i386-linux-gnulibc1/egcs-2.90.00/f771 f77-bug1.f -fset-`,\x10\b\x03'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /lib/libc.so.5.3.12...done.
Reading symbols from /lib/ld-linux.so.1...done.
#0  0x80dadb4 in start_cleanup_deferal () at stmt.c:4215
4215      ++block_stack->data.block.conditional_code;
(gdb) print block_stack
$1 = (struct nesting *) 0x0
(gdb) bt
#0  0x80dadb4 in start_cleanup_deferal () at stmt.c:4215
#1  0x80e717a in expand_expr (exp=0x8206f58, target=0x8207368, tmode=SImode, 
    modifier=EXPAND_NORMAL) at expr.c:6848
#2  0x80e1d36 in store_expr (exp=0x8206f58, target=0x8207368, want_value=0)
    at expr.c:3228
#3  0x80e47df in expand_expr (exp=0x8206f74, target=0x0, tmode=VOIDmode, 
    modifier=EXPAND_MEMORY_USE_BAD) at expr.c:5180
#4  0x80d64aa in expand_function_start (subr=0x82189d4, parms_have_cleanups=0)
    at function.c:5445
#5  0x805bc30 in store_parm_decls (is_main_program=0) at f/com.c:14394
#6  0x8054a06 in ffecom_start_progunit_ () at f/com.c:7867
#7  0x80587c5 in ffecom_end_transition () at f/com.c:11319
#8  0x80a5e31 in ffestd_exec_end () at f/std.c:1402
#9  0x809d948 in ffestc_shriek_subroutine_ (ok=true) at f/stc.c:4935
#10 0x80a45fd in ffestc_R1225 (name=0x0) at f/stc.c:12423
#11 0x809e17e in ffestc_end () at f/stc.c:5658
#12 0x80874d0 in ffestb_end3_ (t=0x821c850) at f/stb.c:3207
#13 0x808719a in ffestb_end (t=0x821c850) at f/stb.c:2986
#14 0x808433d in ffesta_second_ (t=0x821c850) at f/sta.c:1358
#15 0x807f20d in ffelex_send_token_ () at f/lex.c:1652
#16 0x807e196 in ffelex_finish_statement_ () at f/lex.c:973
#17 0x808079b in ffelex_file_fixed (wf=0x821b9d8, f=0x8202bb8) at f/lex.c:2994
#18 0x80bc767 in ffe_file (wf=0x821b9d8, f=0x8202bb8) at f/top.c:555
#19 0x8082b3d in yyparse () at f/parse.c:77
#20 0x80be9bc in compile_file (name=0xbffffad4 "f77-bug1.f") at toplev.c:2470
#21 0x80c123b in main (argc=10, argv=0xbffff968, envp=0xbffff994)
    at toplev.c:4309
#22 0x80491db in _start ()
(gdb) quit

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~1997-08-20 23:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-08-20  5:23 objc SMP patch Oleg Krivosheev
1997-08-20  5:23 ` f771 dies with trivial fortran code Craig Burley
1997-08-20  5:23 ` threads support on solaris Oleg Krivosheev
  -- strict thread matches above, loose matches on Subject: below --
1997-08-20 23:11 f771 dies with trivial fortran code Mumit Khan
1997-08-20 19:30 Jim Wilson
1997-08-20 16:37 Trouble with GAS halfword extraction on PPC Peter Barada
1997-08-20 16:37 ` f771 dies with trivial fortran code Jeffrey A Law
1997-08-20 15:03 cross compiling to m68k Joel Sherrill
1997-08-20 15:03 ` f771 dies with trivial fortran code Mumit Khan
1997-08-20  5:23 Mumit Khan

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).