ld for VMS?

Douglas B Rupp rupp@gnat.com
Sun Apr 25 18:29:00 GMT 2010


Objects on AVMS are a variable length file type, no such file type 
exists on Unix, it's just a byte stream.  You may be running into this 
problem.  Do this before you try to link on VMS:

$ set file/attr=(rfm=var,rat=none) <foo>.obj

Jay K wrote:
> Tristan,
>   I'm seeing the following:
>   Any alpha-dec-vms-ld invocation with reasonable inputs fails an assertion:
>    alpha-dec-vms-ld: BFD (GNU Binutils) 2.20.51.20100425 assertion fail /src/binutils/src/bfd/vms-lib.c:351
>           BFD_ASSERT (sbm_sz>= sizeof (struct vms_dcxsbm) + l + 3 * sbm_len);
>  in _bfd_vms_lib_archive_p. I'm not sure it is complaining about gas output or the libraries from VMS.
> Maybe I'll poke around.
> When I run it under a debugger:
> 
> $ gdb --args alpha-dec-vms-ld cm3-boot-ALPHA32_VMS-1/Makefile.mo
> (gdb) r
> Starting program: /usr/local/bin/alpha-dec-vms-ld cm3-boot-ALPHA32_VMS-1/Makefile.mo
> Reading symbols for shared libraries +++. done
> /usr/local/bin/alpha-dec-vms-ld: BFD (GNU Binutils) 2.20.51.20100425 assertion fail /src/binutils/src/bfd/vms-lib.c:351
> 
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x00000000
> 0x000562bf in vms_lib_dcx (vec=0x845a08, buf=0x0, nbytes=65536) at /src/binutils/src/bfd/vms-lib.c:616
> 616              if (!(sbm->flags[offset>> 3] & (1 << (offset & 7))))
> 
> up
> up
> (gdb) p *abfd  
> $1 = {
>   id = 6, 
>   filename = 0x80ed54 "ACLEDTSHR", 
> 
> 
> Any alpha-dec-vms-as output passed to link on VMS is rejected with lots of errors, invalid record types, invalid lengths, etc.
> 
> alpha-dec-vms-gcc -malpha-as output is not accepted by VMS "macro", lots of errors.
> 
> alpha-dec-vms-nm does accept alpha-dec-vms-as output.
> 
> Any ideas?
> 
> You see, I can generate assembly on a cross host. That seems to work.
> And then I can either assemble it on the cross host, copy to VMS, link on VMS,
> or I could copy the assembly to VMS, run macro and link on VMS.
> Or I could link on the cross host and just copy the executables to VMS.
> None of the three options seems to be working.
> 
> I'll have to poke around more..
> 
>  - Jay
> 
> ----------------------------------------
>> From: jay.krell@cornell.edu
>> To: gingold@adacore.com
>> CC: binutils@sourceware.org
>> Subject: RE: ld for VMS?
>> Date: Thu, 22 Apr 2010 16:24:09 +0000
>>
>>
>> Darn ok. Maybe your changes will be contributed upstream? I guess not.
>> I'll try to cross build it then. I'm seeing new errors, building unwind stuff in libgcc.
>> I'll try some different configurations, could be gcc configure saw the GNU as/ld and
>> decided to provide more functionality.
>> Yes I can see binutils trunk builds VMS ld, thanks. I had only tried the latest release.
>> Maybe I should go past 4.5 for gcc too?
>>
>> I also had to hack the headers a bit, like ln -s . vms and
>> #ifdef __GNUC__
>> #ifndef __int64
>> #define __int64 long long
>> #endif
>>
>> Thanks,
>>  - Jay
>>
>> ----------------------------------------
>>> Subject: Re: ld for VMS?
>>> From: gingold@adacore.com
>>> Date: Thu, 22 Apr 2010 17:35:15 +0200
>>> CC: binutils@sourceware.org
>>> To: jay.krell@cornell.edu
>>>
>>>
>>> On Apr 22, 2010, at 5:27 PM, Jay K wrote:
>>>
>>>> Awesome!
>>>> "Partly" as in?
>>> So, partially. This is still work in progress. But I am able to link and run large programs (such as gcc).
>>>
>>>> I can do without shared objects, for one thing, at least for now.
>>>> I can try trunk.
>>> Use of shared objects work. But ld can't currently generate shared images.
>>>
>>>> gcc 4.5 seems to largely work for Alpha/vms "out of the box".
>>>> At least to output assembly, I think for GNU as. (which I had already built/installed, so configure found it).
>>> Right.
>>>
>>>> My larger goal is to cross build: gcc, bash, sed, awk, make, etc. enough so that I can build gcc natively, at least cc1.
>>> Well, you'd better to forget that. If you want a native gcc, you'd better to build it via a cross compiler.
>>>
>>> We did native builds of gcc, but it requires a lot of adjustments in the scripts. Tedious work.
>>>
>>> Tristan.
>  		 	   		  
> 



More information about the Binutils mailing list