I know it's kind of sleazy, and I understand the resulting inefficiency, if I use exceptions, but one way to reduce the problems is configure -enable-sjlj-exceptions. - Jay ---------------------------------------- > From: jay.krell@xxxxxxxxxxx > To: gcc-help@xxxxxxxxxxx > Subject: some problems targeting VMS > Date: Sat, 24 Apr 2010 01:23:06 +0000 > > > This is with release 4.5.0 (with reference to trunk also). Maybe I should try trunk. > > > VMS issues: > > 1) > > current: > http://gcc.gnu.org/viewcvs/trunk/gcc/config/vms/t-vms?revision=150230&view=markup > > # Temporary restriction: VMS_EXTRA_PARTS must be compiled by DEC C. > #VMS_EXTRA_PARTS=vcrt0.o pcrt0.o > VMS_EXTRA_PARTS= > > DECC=`echo $(CC) | sed -e 's/xgcc -B.*/decc$(exeext)/' -e 's/^gcc/decc/' -e 's/^decc/.\/decc/' -e 's/\(.*\)-gcc/\1-decc/'` > > # Assemble startup files. > $(T)vcrt0.o: $(CRT0_S) $(GCC_PASSES) > $(DECC) -c /names=as_is $(srcdir)/config/vms/vms-crt0.c -o $(T)vcrt0.o > > $(T)pcrt0.o: $(CRT0_S) $(GCC_PASSES) > $(DECC) -c /names=as_is $(srcdir)/config/vms/vms-psxcrt0.c -o $(T)pcrt0.o > > > This code dates to I believe 2001: > introduced partly in http://gcc.gnu.org/viewcvs/trunk/gcc/config/alpha/t-vms?r1=47532&r2=47831 > > The "temporary" comment I think came with the move from alpha/t-vms to vms/t-vms, 8 months ago. > > Must it still be compiled with DEC C? > I'll try it with gcc. > > There is this: > > #if !defined(__DECC) > /*You Lose! This file can only be compiled with DEC C.*/ > #else > > > of course to deal with. > (Is #error not widely enough implemented?) > > > 2) > > /obj/gcc/avms/./gcc/xgcc -B/obj/gcc/avms/./gcc/ -B/usr/local/alpha-dec-vms/bin/ -B/usr/local/alpha-dec-vms/lib/ -isystem /usr/local/alpha-dec-vms/include -isystem /usr/local/alpha-dec-vms/sys-include -g -O2 -mieee -mcpu=ev6 -O2 -g -O2 -mieee -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE -W -Wall -Wwrite-strings -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -isystem ./include -mieee -g -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED -Dinhibit_libc -I. -I. -I../../.././gcc -I/src/gcc-4.5.0/libgcc -I/src/gcc-4.5.0/libgcc/. -I/src/gcc-4.5.0/libgcc/../gcc -I/src/gcc-4.5.0/libgcc/../include -DHAVE_CC_TLS -DUSE_EMUTLS -o unwind-dw2.o -MT unwind-dw2.o -MD -MP -MF unwind-dw2.dep -fexceptions -c /src/gcc-4.5.0/libgcc/../gcc/unwind-dw2.c > In file included from /src/gcc-4.5.0/libgcc/../gcc/resource.h:24:0, > from /usr/local/alpha-dec-vms/include/wait.h:74, > from /usr/local/alpha-dec-vms/include/stdlib.h:51, > from /src/gcc-4.5.0/libgcc/../gcc/config/alpha/vms-unwind.h:26, > from /src/gcc-4.5.0/libgcc/../gcc/unwind-dw2.c:333: > /src/gcc-4.5.0/libgcc/../gcc/hard-reg-set.h:42:39: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'HARD_REG_ELT_TYPE' > > > Line is: > typedef unsigned HOST_WIDEST_FAST_INT HARD_REG_ELT_TYPE; > > seems to be various problems compiling unwind-dw2.c: > > /src/gcc-4.5.0/libgcc/../gcc/input.h:25:22: fatal error: line-map.h: No such file or directory > and others, gmp.h, symtab.h > compilation terminated. > > for now I removed unwind-dw2.c et al from being compiled. > emptying LIB2ADDEH I think it was. > > I also had to hack the VMS headers a bit, like: > > #if defined(__GNUC_) && !defined(__int64) > #define __int64 long long > #endif > > (typedef doesn't work, due to "unsigned __int64") > > It would probably behoove gcc to understand "__int64", at least on VMS and NT/Cygwin/MinGW. > Probably it already does on the latter. > > > - Jay > >