This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
PATCH: update alpha VMS build
- From: Tristan Gingold <gingold at adacore dot com>
- To: binutils at sourceware dot org
- Date: Thu, 13 Nov 2008 10:16:27 +0100
- Subject: PATCH: update alpha VMS build
Hi,
the scripts and makefiles to build on VMS haven't been updated for a while
and were broken.
Here is a patch to build some binutils tools on Alpha VMS 8.3. It modifies
only VMS specific files but bfdio.c (it adds a few lines of code within
#ifdef/#endif).
Tristan.
bfd/
2008-11-13 Tristan Gingold <gingold@adacore.com>
* configure.com: Handle bfd_default_target_size, BFD_HOST_LONG_LONG,
BFD_HOST_64BIT_LONG_LONG, BFD_HOSTPTR_T, bfd_file_ptr.
Generate bfdver.h.
* vms-hdr.c (_bfd_vms_write_hdr): Use strdup/free instead of alloca.
* hosts/alphavms.h: Defines macros to bypass i18n.
* makefile.vms (OBJS): Update file list.
(DEFS): Remove VMS_DEBUG, const, add DEBUGDIR.
(CFLAGS): Update flags.
* bfdio.c (real_fopen): Add code specific to VMS: extract attributes
from modes.
binutils/
2008-11-13 Tristan Gingold <gingold@adacore.com>
* configure.com: Get version from configure.in of bfd.
* makefile.vms-in (DEBUG_OBJS): Add dwarf.obj.
(CFLAGS): Update flags.
include/
2008-11-13 Tristan Gingold <gingold@adacore.com>
* fopen-vms.h (FOPEN_RB): Use a single string to match the
standard prototype.
(FOPEN_WB): Ditto.
(FOPEN_AB): Ditto.
(FOPEN_RUB): Ditto.
(FOPEN_WUB): Ditto.
(FOPEN_AUB): Ditto.
libiberty/
2008-11-13 Tristan Gingold <gingold@adacore.com>
* makefile.vms (OBJS): Update objects list.
(CFLAGS): Update.
(libiberty.olb): Remove alloca-conf.h dependency.
* config.h-vms: Use new macro sets, use builtin alloca.
opcodes/
2008-11-13 Tristan Gingold <gingold@adacore.com>
* makefile.vms (OBJS): Update list of objects.
(DEFS): Update
(CFLAGS): Update.
*** bfd/bfdio.c 6 Nov 2008 14:10:45 -0000 1.18
--- bfd/bfdio.c 13 Nov 2008 09:08:12 -0000
***************
*** 86,96 ****
--- 86,122 ----
FILE *
real_fopen (const char *filename, const char *modes)
{
+ #ifdef VMS
+ char vms_modes[4];
+ char *vms_attr;
+
+ /* On VMS, fopen allows file attributes as optionnal arguments.
+ We need to use them but we'd better to use the common prototype.
+ In fopen-vms.h, they are separated from the mode with a comma.
+ Split here. */
+ vms_attr = strchr (modes, ',');
+ if (vms_attr == NULL)
+ {
+ /* No attributes. */
+ return close_on_exec (fopen (filename, modes));
+ }
+ else
+ {
+ /* Attribute found - rebuild modes. */
+ size_t modes_len = vms_attr - modes;
+
+ BFD_ASSERT (modes_len < sizeof (vms_modes));
+ memcpy (vms_modes, modes, modes_len);
+ vms_modes[modes_len] = 0;
+ return close_on_exec (fopen (filename, vms_modes, vms_attr + 1));
+ }
+ #else /* !VMS */
#if defined (HAVE_FOPEN64)
return close_on_exec (fopen64 (filename, modes));
#else
return close_on_exec (fopen (filename, modes));
#endif
+ #endif /* !VMS */
}
/*
*** bfd/configure.com 3 May 1999 07:28:55 -0000 1.1.1.1
--- bfd/configure.com 13 Nov 2008 09:08:12 -0000
***************
*** 49,60 ****
--- 49,78 ----
ERASE(match_pos);
COPY_TEXT('64');
ENDIF;
+ match_pos := SEARCH_QUIETLY('@bfd_default_target_size@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('64');
+ ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
COPY_TEXT('0');
ENDIF;
+ match_pos := SEARCH_QUIETLY('@BFD_HOST_LONG_LONG@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('0');
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('@BFD_HOST_64BIT_LONG_LONG@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('0');
+ ENDIF;
match_pos := SEARCH_QUIETLY('@BFD_HOST_64_BIT_DEFINED@', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
***************
*** 75,80 ****
--- 93,116 ----
ERASE(match_pos);
COPY_TEXT('uint64');
ENDIF;
+ match_pos := SEARCH_QUIETLY('@BFD_HOSTPTR_T@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('uint64');
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('@bfd_file_ptr@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('bfd_signed_vma');
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('unsigned @bfd_file_ptr@ ufile_ptr', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('bfd_vma ufile_ptr');
+ ENDIF;
WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
QUIT
$ EOD
***************
*** 152,157 ****
--- 188,248 ----
$
$ write sys$output "Generated `bfd.h' from `bfd-in2.h'."
$!
+ $! create bfdver.h
+ $!
+ $ edit/tpu/nojournal/nosection/nodisplay/command=sys$input -
+ []version.h /output=[]bfdver.h
+ $DECK
+ !
+ ! Copy file, changing lines with macros (@@)
+ !
+ !
+ vfile := CREATE_BUFFER("vfile", "configure.in");
+ rang := CREATE_RANGE(BEGINNING_OF(vfile), END_OF(vfile));
+ match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(bfd, ', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ vers := CURRENT_LINE-")";
+ ELSE;
+ vers := "unknown";
+ ENDIF;
+ versnum := vers - "." - ".";
+
+ file := CREATE_BUFFER("file", GET_INFO(COMMAND_LINE, "file_name"));
+ rang := CREATE_RANGE(BEGINNING_OF(file), END_OF(file));
+
+ match_pos := SEARCH_QUIETLY('@bfd_version@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT(versnum);
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('@bfd_version_string@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('"');
+ COPY_TEXT(vers);
+ COPY_TEXT('"');
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('@bfd_version_package@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('"(GNU Binutils) "');
+ ENDIF;
+ match_pos := SEARCH_QUIETLY('@report_bugs_to@', FORWARD, EXACT, rang);
+ IF match_pos <> 0 THEN;
+ POSITION(BEGINNING_OF(match_pos));
+ ERASE(match_pos);
+ COPY_TEXT('"<http://www.sourceware.org/bugzilla/>"');
+ ENDIF;
+ WRITE_FILE(file, GET_INFO(COMMAND_LINE, "output_file"));
+ QUIT
+ $ EOD
+ $ write sys$output "Generated `bfdver.h' from 'version.h' and `configure.in'."
+ $!
$!
$! create targmatch.h
$!
***************
*** 210,215 ****
--- 301,308 ----
#define HAVE_TIME_H 1
/* Define if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
+ /* Disable NLS */
+ #undef ENABLE_NLS
$!
$ write sys$output "Generated `config.h'"
*** bfd/makefile.vms 3 May 1999 07:28:57 -0000 1.1.1.1
--- bfd/makefile.vms 13 Nov 2008 09:08:12 -0000
***************
*** 18,28 ****
endif
! OBJS=archive.obj,archures.obj,bfd.obj,cache.obj,coffgen.obj,corefile.obj,\
! format.obj,init.obj,libbfd.obj,opncls.obj,reloc.obj,section.obj,syms.obj,\
! targets.obj,hash.obj,linker.obj,elf.obj,srec.obj,binary.obj,tekhex.obj,\
! ihex.obj,stab-syms.obj,vms.obj,vms-hdr.obj,vms-gsd.obj,vms-tir.obj,\
! vms-misc.obj,$(TARGETOBJS)
ifeq ($(CC),gcc)
ifeq ($(ARCH),ALPHA)
--- 18,29 ----
endif
! OBJS=archive.obj,archive64.obj,archures.obj,bfd.obj,bfdio.obj,binary.obj,\
! cache.obj,coffgen.obj,compress.obj,corefile.obj,dwarf2.obj,elf.obj,\
! format.obj,hash.obj,ihex.obj,init.obj,libbfd.obj,linker.obj,opncls.obj,\
! reloc.obj,section.obj,simple.obj,srec.obj,stab-syms.obj,syms.obj,\
! targets.obj,tekhex.obj,\
! vms.obj,vms-hdr.obj,vms-gsd.obj,vms-tir.obj,vms-misc.obj,$(TARGETOBJS)
ifeq ($(CC),gcc)
ifeq ($(ARCH),ALPHA)
***************
*** 30,47 ****
"HAVE_vms_alpha_vec=1")
else
DEFS=/define=(SELECT_VECS="&vms_vax_vec",SELECT_ARCHITECTURES="&bfd_vax_arch",\
! "HAVE_vms_vax_vec=1","VMS_DEBUG")
endif
CFLAGS=/include=([],[-.include])$(DEFS)
else
ifeq ($(ARCH),ALPHA)
DEFS=/define=(SELECT_VECS="&vms_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_arch",\
! "HAVE_vms_alpha_vec=1","unlink=remove","const=","VMS_DEBUG",)
else
DEFS=/define=(SELECT_VECS="&vms_vax_vec",SELECT_ARCHITECTURES="&bfd_vax_arch",\
! "HAVE_vms_vax_vec=1","unlink=remove","const=","VMS_DEBUG")
endif
! CFLAGS=/noopt/debug/include=([],[-.include])$(DEFS)/warnings=disable=(missingreturn,implicitfunc,longextern)
endif
--- 31,48 ----
"HAVE_vms_alpha_vec=1")
else
DEFS=/define=(SELECT_VECS="&vms_vax_vec",SELECT_ARCHITECTURES="&bfd_vax_arch",\
! "HAVE_vms_vax_vec=1")
endif
CFLAGS=/include=([],[-.include])$(DEFS)
else
ifeq ($(ARCH),ALPHA)
DEFS=/define=(SELECT_VECS="&vms_alpha_vec",SELECT_ARCHITECTURES="&bfd_alpha_arch",\
! "HAVE_vms_alpha_vec=1","unlink=remove","DEBUGDIR=NULL")
else
DEFS=/define=(SELECT_VECS="&vms_vax_vec",SELECT_ARCHITECTURES="&bfd_vax_arch",\
! "HAVE_vms_vax_vec=1","unlink=remove","const=")
endif
! CFLAGS=/noopt/debug/show=incl/name=(as_is,shortened)/include=([],[-.include])$(DEFS)/warnings=disable=(missingreturn,longextern)
endif
*** bfd/vms-hdr.c 3 Jul 2007 14:26:43 -0000 1.21
--- bfd/vms-hdr.c 13 Nov 2008 09:08:12 -0000
***************
*** 212,219 ****
char *fname, *fout, *fptr;
fptr = bfd_get_filename (abfd);
! fname = alloca (strlen (fptr) + 1);
! strcpy (fname, fptr);
fout = strrchr (fname, ']');
if (fout == 0)
fout = strchr (fname, ':');
--- 212,218 ----
char *fname, *fout, *fptr;
fptr = bfd_get_filename (abfd);
! fname = strdup (fptr);
fout = strrchr (fname, ']');
if (fout == 0)
fout = strchr (fname, ':');
***************
*** 238,243 ****
--- 237,243 ----
*fptr = 0;
}
_bfd_vms_output_counted (abfd, fout);
+ free (fname);
}
else
_bfd_vms_output_counted (abfd, "NONAME");
*** bfd/hosts/alphavms.h 3 Jul 2007 14:26:43 -0000 1.6
--- bfd/hosts/alphavms.h 13 Nov 2008 09:08:13 -0000
***************
*** 34,39 ****
--- 34,40 ----
#include <time.h>
#include "bfd.h"
+ #include "filenames.h"
#ifndef BFD_HOST_64_BIT
/* Make the basic types 64-bit quantities on the host.
***************
*** 67,69 ****
--- 68,79 ----
#endif
extern int getpagesize PARAMS ((void));
+
+ /* No intl. */
+ #define gettext(Msgid) (Msgid)
+ #define dgettext(Domainname, Msgid) (Msgid)
+ #define dcgettext(Domainname, Msgid, Category) (Msgid)
+ #define textdomain(Domainname) while (0) /* nothing */
+ #define bindtextdomain(Domainname, Dirname) while (0) /* nothing */
+ #define _(String) (String)
+ #define N_(String) (String)
*** binutils/configure.com 3 May 1999 07:29:09 -0000 1.1.1.1
--- binutils/configure.com 13 Nov 2008 09:08:13 -0000
***************
*** 53,61 ****
!
! Get VERSION from configure.in
!
! mfile := CREATE_BUFFER("mfile", "CONFIGURE.IN");
rang := CREATE_RANGE(BEGINNING_OF(mfile), END_OF(mfile));
! match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(binutils, ', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
--- 53,61 ----
!
! Get VERSION from configure.in
!
! mfile := CREATE_BUFFER("mfile", "[-.bfd]CONFIGURE.IN");
rang := CREATE_RANGE(BEGINNING_OF(mfile), END_OF(mfile));
! match_pos := SEARCH_QUIETLY('AM_INIT_AUTOMAKE(bfd, ', FORWARD, EXACT, rang);
IF match_pos <> 0 THEN;
POSITION(BEGINNING_OF(match_pos));
ERASE(match_pos);
*** binutils/makefile.vms-in 3 May 1999 07:29:10 -0000 1.1.1.1
--- binutils/makefile.vms-in 13 Nov 2008 09:08:13 -0000
***************
*** 22,28 ****
LIBS=,gnu_cc_library:libgcc/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
else
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\
! /warnings=disable=(missingreturn,implicitfunc,longextern)
DEFS=/define=("TARGET=$(TARGET)","const=","unlink=remove")
LIBS=,sys$$library:vaxcrtl.olb/lib
endif
--- 22,30 ----
LIBS=,gnu_cc_library:libgcc/lib,sys$$library:vaxcrtl.olb/lib,gnu_cc_library:crt0.obj
else
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\
! /name=(as_is,shortened)\
! /warnings=disable=(missingreturn,longextern)\
! /prefix=(all,except=("getopt","optarg","optopt","optind","opterr"))
DEFS=/define=("TARGET=$(TARGET)","const=","unlink=remove")
LIBS=,sys$$library:vaxcrtl.olb/lib
endif
***************
*** 34,40 ****
OPCODES_DEP = [-.opcodes]libopcodes.olb
OPCODES = [-.opcodes]libopcodes.olb/lib
! DEBUG_OBJS = rddbg.obj,debug.obj,stabs.obj,ieee.obj,rdcoff.obj
WRITE_DEBUG_OBJS = $(DEBUG_OBJS),wrstabs.obj
--- 36,42 ----
OPCODES_DEP = [-.opcodes]libopcodes.olb
OPCODES = [-.opcodes]libopcodes.olb/lib
! DEBUG_OBJS = rddbg.obj,debug.obj,stabs.obj,ieee.obj,rdcoff.obj,dwarf.obj
WRITE_DEBUG_OBJS = $(DEBUG_OBJS),wrstabs.obj
*** include/fopen-vms.h 3 May 1999 07:29:02 -0000 1.1.1.1
--- include/fopen-vms.h 13 Nov 2008 09:08:14 -0000
***************
*** 9,20 ****
the application unable to be configured for both "same" and "binary"
variant systems. */
! #define FOPEN_RB "rb","rfm=var"
! #define FOPEN_WB "wb","rfm=var"
! #define FOPEN_AB "ab","rfm=var"
! #define FOPEN_RUB "r+b","rfm=var"
! #define FOPEN_WUB "w+b","rfm=var"
! #define FOPEN_AUB "a+b","rfm=var"
#define FOPEN_RT "r"
#define FOPEN_WT "w"
--- 9,20 ----
the application unable to be configured for both "same" and "binary"
variant systems. */
! #define FOPEN_RB "rb,rfm=var"
! #define FOPEN_WB "wb,rfm=var"
! #define FOPEN_AB "ab,rfm=var"
! #define FOPEN_RUB "r+b,rfm=var"
! #define FOPEN_WUB "w+b,rfm=var"
! #define FOPEN_AUB "a+b,rfm=var"
#define FOPEN_RT "r"
#define FOPEN_WT "w"
*** libiberty/config.h-vms 3 May 1999 07:28:53 -0000 1.1.1.1
--- libiberty/config.h-vms 13 Nov 2008 09:08:16 -0000
***************
*** 1,13 ****
! #ifndef NEED_strerror
! #define NEED_strerror
! #endif
! #ifndef NEED_basename
! #define NEED_basename
! #endif
! #ifndef NEED_psignal
! #define NEED_psignal
! #endif
! #ifndef NEED_on_exit
! #define NEED_on_exit
! #endif
!
--- 1,8 ----
! #define HAVE_SYS_STAT_H 1
! #define HAVE_STDLIB_H 1
! #define HAVE_STRING_H 1
! #define HAVE_LIMITS_H 1
! #define HAVE_UNISTD_H 1
! #define HAVE_TIMES 1
! #include <builtins.h>
! #define C_alloca __ALLOCA
*** libiberty/makefile.vms 22 Feb 2000 15:59:20 -0000 1.1.1.2
--- libiberty/makefile.vms 13 Nov 2008 09:08:16 -0000
***************
*** 8,25 ****
#
OBJS=bcopy.obj,bcmp.obj,getopt.obj,obstack.obj,xexit.obj,xmalloc.obj,hex.obj,\
! getopt1.obj,cplus-dem.obj,strncasecmp.obj,strcasecmp.obj,strdup.obj,\
! concat.obj,getruntime.obj,getpagesize.obj,alloca.obj,xstrerror.obj,\
! xmemdup.obj,xstrdup.obj,xatexit.obj,choose-temp.obj,fnmatch.obj,objalloc.obj
ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include])
else
# assume dec c
! CFLAGS=/noopt/debug/include=([],[-.include])/define=("const=")/warnings=disable=(missingreturn,implicitfunc)
endif
! libiberty.olb: config.h alloca-conf.h $(OBJS)
purge
lib/create libiberty *.obj
--- 8,28 ----
#
OBJS=bcopy.obj,bcmp.obj,getopt.obj,obstack.obj,xexit.obj,xmalloc.obj,hex.obj,\
! getopt1.obj,cplus-dem.obj,cp-demangle.obj,cp-demint.obj,\
! asprintf.obj vasprintf.obj,mkstemps.obj,\
! concat.obj,getruntime.obj,getpagesize.obj,xstrerror.obj,\
! xmemdup.obj,xstrdup.obj,xatexit.obj,choose-temp.obj,fnmatch.obj,\
! objalloc.obj,safe-ctype.obj,hashtab.obj,lbasename.obj,argv.obj,\
! lrealpath.obj,make-temp-file.obj,unlink-if-ordinary.obj
ifeq ($(CC),gcc)
CFLAGS=/include=([],[-.include])
else
# assume dec c
! CFLAGS=/noopt/debug/include=([],[-.include])/warnings=disable=(missingreturn)/name=(as_is,shortened)/define=(HAVE_CONFIG_H=1)/prefix=(all,except=("getopt","optarg","optopt","optind","opterr"))
endif
! libiberty.olb: config.h $(OBJS)
purge
lib/create libiberty *.obj
*** opcodes/makefile.vms 3 May 1999 07:28:59 -0000 1.1.1.1
--- opcodes/makefile.vms 13 Nov 2008 09:08:16 -0000
***************
*** 6,13 ****
# Created by Klaus K"ampf, kkaempf@progis.de
#
#
! ifeq ($(ARCH),alpha)
! OBJS=alpha-dis.obj,alpha-opc.obj,dis-buf.obj,disassemble.obj
FORMAT=OBJ_EVAX
ARCHDEF="ARCH_alpha"
else
--- 6,13 ----
# Created by Klaus K"ampf, kkaempf@progis.de
#
#
! ifeq ($(ARCH),ALPHA)
! OBJS=alpha-dis.obj,alpha-opc.obj,dis-init.obj,dis-buf.obj,disassemble.obj
FORMAT=OBJ_EVAX
ARCHDEF="ARCH_alpha"
else
***************
*** 20,28 ****
DEFS=/define=($(FORMAT))
CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS)
else
! DEFS=/define=($(FORMAT),"const=")
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\
! /warnings=disable=(missingreturn,implicitfunc,longextern)
endif
libopcodes.olb: sysdep.h $(OBJS)
--- 20,28 ----
DEFS=/define=($(FORMAT))
CFLAGS=/include=([],[-.include],[-.bfd])$(DEFS)
else
! DEFS=/define=($(FORMAT))
CFLAGS=/noopt/debug/include=([],[-.include],[-.bfd])$(DEFS)\
! /name=(as_is,shortened)/warnings=disable=(missingreturn,longextern)
endif
libopcodes.olb: sysdep.h $(OBJS)