angel@FLIPPER.MIAMI.EDU (angel li) (09/20/88)
Here are some diffs for a GAS module that fixes problems with GCC on VMS.
It is now possible to create shareable images from files compiled with
GCC. These fixes were obtained from kashtan@iu.ai.sri.com and apply to
version 1.24 of GAS.
Angel Li
University of Miami/RSMAS Remote Sensing Group
Internet: angel@flipper.miami.edu UUCP: ncar!umigw!angel
*** write.c_orig Tue Sep 20 09:39:09 1988
--- write.c Tue Sep 20 09:39:06 1988
***************
*** 154,169
#define SUB_SEGMENT_ALIGN (2)
for ( frchainP=frchain_root; frchainP; frchainP=frchainP->frch_next )
{
! #ifdef VMS
! /*
! * Under VAX/VMS, the linker (and PSECT specifications)
! * take care of correctly aligning the segments.
! * Doing the alignment here (on initialized data) can
! * mess up the calculation of global data PSECT sizes.
! */
! if(frchainP->frch_seg == SEG_DATA)
! continue;
! #endif
subseg_new (frchainP -> frch_seg, frchainP -> frch_subseg);
frag_align (SUB_SEGMENT_ALIGN, 0);
/* frag_align will have left a new frag. */
--- 154,169 -----
#define SUB_SEGMENT_ALIGN (2)
for ( frchainP=frchain_root; frchainP; frchainP=frchainP->frch_next )
{
! #ifdef VMS
! /*
! * Under VAX/VMS, the linker (and PSECT specifications)
! * take care of correctly aligning the segments.
! * Doing the alignment here (on initialized data) can
! * mess up the calculation of global data PSECT sizes.
! */
! #undef SUB_SEGMENT_ALIGN
! #define SUB_SEGMENT_ALIGN ((frchainP->frch_seg != SEG_DATA) ? 2 : 0)
! #endif /* VMS */
subseg_new (frchainP -> frch_seg, frchainP -> frch_subseg);
frag_align (SUB_SEGMENT_ALIGN, 0);
/* frag_align will have left a new frag. */
***************
*** 327,333
used instead of 128. */
/* JF the \001 bit is to make sure that local labels
( 1: - 9: don't make it into the symtable either */
! #ifndef VMS
if ( !name || (symbolP->sy_nlist.n_type&N_STAB)
|| (name[0]!='\001' && (flagseen ['L'] || name [0] != 'L' )))
#endif /* not VMS */
--- 327,333 -----
used instead of 128. */
/* JF the \001 bit is to make sure that local labels
( 1: - 9: don't make it into the symtable either */
! #ifndef VMS /* Under VMS we need to keep local symbols */
if ( !name || (symbolP->sy_nlist.n_type&N_STAB)
|| (name[0]!='\001' && (flagseen ['L'] || name [0] != 'L' )))
#endif /* not VMS */
***************
*** 333,339
#endif /* not VMS */
{
symbolP -> sy_number = symbol_number ++;
! #ifndef VMS
if (name)
{ /* Ordinary case. */
symbolP -> sy_name_offset = string_byte_count;
--- 333,339 -----
#endif /* not VMS */
{
symbolP -> sy_number = symbol_number ++;
! #ifndef VMS
if (name)
{ /* Ordinary case. */
symbolP -> sy_name_offset = string_byte_count;
***************
*** 344,350
symbolP -> sy_name_offset = 0;
symbolPP = & (symbolP -> sy_next);
}
! #ifndef VMS
else
* symbolPP = symbolP -> sy_next;
#endif /* not VMS */
--- 344,350 -----
symbolP -> sy_name_offset = 0;
symbolPP = & (symbolP -> sy_next);
}
! #ifndef VMS
else
* symbolPP = symbolP -> sy_next;
#endif /* not VMS */
***************
*** 397,403
} /* switch (fr_type) */
} /* for each frag. */
! #ifndef VMS
/*
* Scan every FixS performing fixups. We had to wait until now to do
* this because md_convert_frag() may have made some fixSs.
--- 397,403 -----
} /* switch (fr_type) */
} /* for each frag. */
! #ifndef VMS
/*
* Scan every FixS performing fixups. We had to wait until now to do
* this because md_convert_frag() may have made some fixSs.
***************
*** 531,537
* within the segment. Since segments live in different file addresses,
* these frag addresses may not be the same as final object-file addresses.
*/
! #ifndef VMS
static
#endif /* not VMS */
void
--- 531,537 -----
* within the segment. Since segments live in different file addresses,
* these frag addresses may not be the same as final object-file addresses.
*/
! #ifndef VMS
static
#endif /* not VMS */
void