yet more vms work
This commit is contained in:
parent
5f57cea3f6
commit
ac24997f36
2 changed files with 87 additions and 80 deletions
|
@ -1,3 +1,12 @@
|
|||
Mon Jul 31 21:40:47 1995 Ken Raeburn <raeburn@cygnus.com>
|
||||
|
||||
Sat Jul 29 18:55:23 1995 Pat Rankin <rankin@eql.caltech.edu>
|
||||
|
||||
* config/obj-vms.c (COPY_SHORT, COPY_LONG, PUT_SHORT, PUT_LONG):
|
||||
Make expansion be safe for use in expressions.
|
||||
(PUT_COUNTED_STRING): Bracket expansion with `do {...} while (0)'
|
||||
rather than just `{...}'.
|
||||
|
||||
Mon Jul 31 18:19:26 1995 steve chamberlain <sac@slash.cygnus.com>
|
||||
|
||||
* gasp.c (change_base): Don't modify numbers in strings. (pr7583)
|
||||
|
|
|
@ -262,41 +262,41 @@ static int Current_Object_Record_Type; /* Type of record in above */
|
|||
* Macros for moving data around. Must work on big-endian systems.
|
||||
*/
|
||||
#ifdef VMS /* These are more efficient for VMS->VMS systems */
|
||||
#define COPY_LONG(dest,val) {*(long *) dest = val; }
|
||||
#define COPY_SHORT(dest,val) {*(short *) dest = val; }
|
||||
#define COPY_LONG(dest,val) ( *(long *)(dest) = (val) )
|
||||
#define COPY_SHORT(dest,val) ( *(short *)(dest) = (val) )
|
||||
#else
|
||||
#define COPY_LONG(dest,val) { md_number_to_chars(dest, val, 4); }
|
||||
#define COPY_SHORT(dest,val) { md_number_to_chars(dest, val, 2); }
|
||||
#define COPY_LONG(dest,val) md_number_to_chars ((dest), (val), 4)
|
||||
#define COPY_SHORT(dest,val) md_number_to_chars ((dest), (val), 2)
|
||||
#endif
|
||||
/*
|
||||
* Macros for placing data into the object record buffer
|
||||
*/
|
||||
#define PUT_LONG(val) \
|
||||
{ COPY_LONG(&Object_Record_Buffer[Object_Record_Offset], val); \
|
||||
Object_Record_Offset += 4; }
|
||||
#define PUT_LONG(val) \
|
||||
( COPY_LONG (&Object_Record_Buffer[Object_Record_Offset], (val)), \
|
||||
Object_Record_Offset += 4 )
|
||||
|
||||
#define PUT_SHORT(val) \
|
||||
{ COPY_SHORT(&Object_Record_Buffer[Object_Record_Offset], val); \
|
||||
Object_Record_Offset += 2; }
|
||||
#define PUT_SHORT(val) \
|
||||
( COPY_SHORT (&Object_Record_Buffer[Object_Record_Offset], (val)), \
|
||||
Object_Record_Offset += 2 )
|
||||
|
||||
#define PUT_CHAR(val) Object_Record_Buffer[Object_Record_Offset++] = val
|
||||
#define PUT_CHAR(val) ( Object_Record_Buffer[Object_Record_Offset++] = (val) )
|
||||
|
||||
#define PUT_COUNTED_STRING(cp) {\
|
||||
register const char *p = cp; \
|
||||
PUT_CHAR(strlen(p)); \
|
||||
while (*p) PUT_CHAR(*p++);}
|
||||
#define PUT_COUNTED_STRING(cp) do { \
|
||||
register const char *p = (cp); \
|
||||
PUT_CHAR ((char) strlen (p)); \
|
||||
while (*p) PUT_CHAR (*p++); } while (0)
|
||||
|
||||
/*
|
||||
* Macro for determining if a Name has psect attributes attached
|
||||
* to it.
|
||||
*/
|
||||
#define PSECT_ATTRIBUTES_STRING "$$PsectAttributes_"
|
||||
#define PSECT_ATTRIBUTES_STRING_LENGTH 18
|
||||
#define PSECT_ATTRIBUTES_STRING "$$PsectAttributes_"
|
||||
#define PSECT_ATTRIBUTES_STRING_LENGTH 18
|
||||
|
||||
#define HAS_PSECT_ATTRIBUTES(Name) \
|
||||
(strncmp((Name[0] == '_' ? Name + 1 : Name), \
|
||||
PSECT_ATTRIBUTES_STRING, \
|
||||
PSECT_ATTRIBUTES_STRING_LENGTH) == 0)
|
||||
#define HAS_PSECT_ATTRIBUTES(Name) \
|
||||
(strncmp ((*Name == '_' ? Name + 1 : Name), \
|
||||
PSECT_ATTRIBUTES_STRING, \
|
||||
PSECT_ATTRIBUTES_STRING_LENGTH) == 0)
|
||||
|
||||
|
||||
/* in: segT out: N_TYPE bits */
|
||||
|
@ -439,6 +439,9 @@ const pseudo_typeS obj_pseudo_table[] =
|
|||
{0, 0, 0},
|
||||
}; /* obj_pseudo_table */
|
||||
|
||||
|
||||
/* Routine to perform RESOLVE_SYMBOL_REDEFINITION(). */
|
||||
|
||||
int
|
||||
vms_resolve_symbol_redef (sym)
|
||||
symbolS *sym;
|
||||
|
@ -458,16 +461,15 @@ vms_resolve_symbol_redef (sym)
|
|||
* If the old symbol is .comm and it has a size of zero,
|
||||
* we override it with the new symbol value.
|
||||
*/
|
||||
if (S_IS_EXTERNAL(sym) && S_IS_DEFINED(sym)
|
||||
&& (S_GET_VALUE(sym) == 0))
|
||||
if (S_IS_EXTERNAL (sym) && S_IS_DEFINED (sym) && S_GET_VALUE (sym) == 0)
|
||||
{
|
||||
as_warn ("compiler redefined zero-size common symbol `%s'",
|
||||
S_GET_NAME (sym));
|
||||
sym->sy_frag = frag_now;
|
||||
S_SET_OTHER(sym, const_flag);
|
||||
S_SET_VALUE(sym, frag_now_fix ());
|
||||
S_SET_OTHER (sym, const_flag);
|
||||
S_SET_VALUE (sym, frag_now_fix ());
|
||||
/* Keep N_EXT bit. */
|
||||
sym->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE((int) now_seg);
|
||||
sym->sy_symbol.n_type |= SEGMENT_TO_SYMBOL_TYPE ((int) now_seg);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -486,7 +488,7 @@ symbolS *symbolP;
|
|||
/* Special labels only occur prior to explicit section directives. */
|
||||
if ((const_flag & IN_DEFAULT_SECTION) != 0)
|
||||
{
|
||||
char *sym_name = S_GET_NAME(symbolP);
|
||||
char *sym_name = S_GET_NAME (symbolP);
|
||||
|
||||
if (*sym_name == '_')
|
||||
++sym_name;
|
||||
|
@ -613,7 +615,7 @@ Flush_VMS_Object_Record_Buffer ()
|
|||
* Write the data to the file
|
||||
*/
|
||||
#ifndef VMS /* For cross-assembly purposes. */
|
||||
md_number_to_chars((char *) &RecLen, Object_Record_Offset, 2);
|
||||
md_number_to_chars ((char *) &RecLen, Object_Record_Offset, 2);
|
||||
i = write (VMS_Object_File_FD, &RecLen, 2);
|
||||
#endif /* not VMS */
|
||||
i = write (VMS_Object_File_FD,
|
||||
|
@ -1684,8 +1686,8 @@ find_symbol (dbx_type)
|
|||
{
|
||||
struct VMS_DBG_Symbol *spnt;
|
||||
|
||||
spnt = VMS_Symbol_type_list[SYMTYP_HASH(dbx_type)];
|
||||
while (spnt != (struct VMS_DBG_Symbol *) NULL)
|
||||
spnt = VMS_Symbol_type_list[SYMTYP_HASH (dbx_type)];
|
||||
while (spnt)
|
||||
{
|
||||
if (spnt->dbx_type == dbx_type)
|
||||
break;
|
||||
|
@ -1693,7 +1695,7 @@ find_symbol (dbx_type)
|
|||
}
|
||||
if (!spnt || spnt->advanced != ALIAS)
|
||||
return spnt;
|
||||
return find_symbol(spnt->type2);
|
||||
return find_symbol (spnt->type2);
|
||||
}
|
||||
|
||||
|
||||
|
@ -2021,7 +2023,7 @@ generate_suffix (spnt, dbx_type)
|
|||
VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
|
||||
Lpnt = 0;
|
||||
VMS_Def_Struct (struct_number);
|
||||
COPY_LONG(&Local[Lpnt], 0L);
|
||||
COPY_LONG (&Local[Lpnt], 0L);
|
||||
Lpnt += 4;
|
||||
VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
|
||||
Lpnt = 0;
|
||||
|
@ -2046,11 +2048,11 @@ bitfield_suffix (spnt, width)
|
|||
Local[Lpnt++] = 13; /* rec.len==13 */
|
||||
Local[Lpnt++] = DST_K_TYPSPEC; /* a type specification record */
|
||||
Local[Lpnt++] = 0; /* not named */
|
||||
COPY_SHORT(&Local[Lpnt], 9); /* typ.len==9 */
|
||||
COPY_SHORT (&Local[Lpnt], 9); /* typ.len==9 */
|
||||
Lpnt += 2;
|
||||
Local[Lpnt++] = DST_K_TS_NOV_LENG; /* This type is a "novel length"
|
||||
incarnation of some other type. */
|
||||
COPY_LONG(&Local[Lpnt], width); /* size in bits == novel length */
|
||||
COPY_LONG (&Local[Lpnt], width); /* size in bits == novel length */
|
||||
Lpnt += 4;
|
||||
VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
|
||||
Lpnt = 0;
|
||||
|
@ -2078,7 +2080,7 @@ setup_basic_type (spnt)
|
|||
struct VMS_DBG_Symbol *spnt2;
|
||||
|
||||
/* first check whether this type has already been seen by another name */
|
||||
for (spnt2 = VMS_Symbol_type_list[SYMTYP_HASH(spnt->VMS_type)];
|
||||
for (spnt2 = VMS_Symbol_type_list[SYMTYP_HASH (spnt->VMS_type)];
|
||||
spnt2;
|
||||
spnt2 = spnt2->next)
|
||||
if (spnt2 != spnt && spnt2->VMS_type == spnt->VMS_type)
|
||||
|
@ -2101,7 +2103,7 @@ setup_basic_type (spnt)
|
|||
Local[Lpnt++] = '_';
|
||||
for (p = symbol_name; *p; p++)
|
||||
Local[Lpnt++] = *p == ' ' ? '_' : *p;
|
||||
COPY_SHORT(&Local[Lpnt], 2); /* typ.len==2 */
|
||||
COPY_SHORT (&Local[Lpnt], 2); /* typ.len==2 */
|
||||
Lpnt += 2;
|
||||
Local[Lpnt++] = DST_K_TS_ATOM; /* typ.kind is simple type */
|
||||
Local[Lpnt++] = spnt->VMS_type; /* typ.type */
|
||||
|
@ -2130,7 +2132,7 @@ VMS_DBG_record (spnt, Psect, Offset, Name)
|
|||
/* if there are bad characters in name, convert them */
|
||||
Name_pnt = fix_name (Name);
|
||||
|
||||
len = strlen(Name_pnt);
|
||||
len = strlen (Name_pnt);
|
||||
if (Psect < 0)
|
||||
{ /* this is a local variable, referenced to SP */
|
||||
Local[i++] = 7 + len;
|
||||
|
@ -2458,17 +2460,17 @@ VMS_RSYM_Parse (sp, Current_Routine, Text_Psect)
|
|||
return; /*Dunno what this is yet*/
|
||||
*pnt1 = '\0';
|
||||
pnt = fix_name (S_GET_NAME (sp)); /* if there are bad characters in name, convert them */
|
||||
len = strlen(pnt);
|
||||
len = strlen (pnt);
|
||||
Local[i++] = 25 + len;
|
||||
Local[i++] = spnt->VMS_type;
|
||||
Local[i++] = DST_K_VFLAGS_TVS; /* trailing value specified */
|
||||
COPY_LONG(&Local[i], 1 + len); /* relative offset, beyond name */
|
||||
COPY_LONG (&Local[i], 1 + len); /* relative offset, beyond name */
|
||||
i += 4;
|
||||
Local[i++] = len; /* name length (ascic prefix) */
|
||||
while (*pnt != '\0')
|
||||
Local[i++] = *pnt++;
|
||||
Local[i++] = DST_K_VS_FOLLOWS; /* value specification follows */
|
||||
COPY_SHORT(&Local[i], 15); /* length of rest of record */
|
||||
COPY_SHORT (&Local[i], 15); /* length of rest of record */
|
||||
i += 2;
|
||||
Local[i++] = DST_K_VS_ALLOC_SPLIT; /* split lifetime */
|
||||
Local[i++] = 1; /* one binding follows */
|
||||
|
@ -2477,7 +2479,7 @@ VMS_RSYM_Parse (sp, Current_Routine, Text_Psect)
|
|||
VMS_Set_Data (Text_Psect, Min_Offset, OBJ_S_C_DBG, 1);
|
||||
VMS_Set_Data (Text_Psect, Max_Offset, OBJ_S_C_DBG, 1);
|
||||
Local[i++] = DST_K_VALKIND_REG; /* nested value spec */
|
||||
COPY_LONG(&Local[i], S_GET_VALUE (sp));
|
||||
COPY_LONG (&Local[i], S_GET_VALUE (sp));
|
||||
i += 4;
|
||||
VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG);
|
||||
*pnt1 = ':';
|
||||
|
@ -2505,8 +2507,8 @@ forward_reference (pnt)
|
|||
pnt = (char *) strchr (pnt, ':');
|
||||
pnt = cvt_integer (pnt + 1, &i);
|
||||
spnt = find_symbol (i);
|
||||
if(spnt != (struct VMS_DBG_Symbol*) NULL) {
|
||||
while((spnt->advanced == POINTER) || (spnt->advanced == ARRAY))
|
||||
if (spnt) {
|
||||
while (spnt->advanced == POINTER || spnt->advanced == ARRAY)
|
||||
{
|
||||
i = spnt->type2;
|
||||
spnt1 = find_symbol (spnt->type2);
|
||||
|
@ -2534,7 +2536,7 @@ final_forward_reference (spnt)
|
|||
|
||||
while (spnt && (spnt->advanced == POINTER || spnt->advanced == ARRAY))
|
||||
{
|
||||
spnt1 = find_symbol(spnt->type2);
|
||||
spnt1 = find_symbol (spnt->type2);
|
||||
if (spnt->advanced == ARRAY && !spnt1) return 1;
|
||||
spnt = spnt1;
|
||||
}
|
||||
|
@ -2592,7 +2594,7 @@ VMS_typedef_parse (str)
|
|||
/* first we see if this has been defined already, due to a forward reference*/
|
||||
if (!spnt)
|
||||
{
|
||||
i2 = SYMTYP_HASH(i1);
|
||||
i2 = SYMTYP_HASH (i1);
|
||||
spnt = (struct VMS_DBG_Symbol *) xmalloc (sizeof (struct VMS_DBG_Symbol));
|
||||
spnt->next = VMS_Symbol_type_list[i2];
|
||||
VMS_Symbol_type_list[i2] = spnt;
|
||||
|
@ -2622,12 +2624,12 @@ VMS_typedef_parse (str)
|
|||
spnt->advanced = UNKNOWN;
|
||||
return 0;
|
||||
}
|
||||
pnt1 = cvt_integer(pnt,&i1);
|
||||
if(i1 != spnt->dbx_type)
|
||||
pnt1 = cvt_integer (pnt, &i1);
|
||||
if (i1 != spnt->dbx_type)
|
||||
{
|
||||
spnt->advanced = ALIAS;
|
||||
spnt->type2 = i1;
|
||||
strcpy(str, pnt1);
|
||||
strcpy (str, pnt1);
|
||||
return 0;
|
||||
}
|
||||
as_tsktsk ("debugginer output: %d is an unknown untyped variable.",
|
||||
|
@ -2737,7 +2739,7 @@ VMS_typedef_parse (str)
|
|||
spnt->data_size = 0;
|
||||
}
|
||||
if (spnt->VMS_type != 0)
|
||||
setup_basic_type(spnt);
|
||||
setup_basic_type (spnt);
|
||||
pnt1 = (char *) strchr (str, ';') + 1;
|
||||
break;
|
||||
case 's':
|
||||
|
@ -2745,7 +2747,7 @@ VMS_typedef_parse (str)
|
|||
spnt->advanced = (*pnt == 's') ? STRUCT : UNION;
|
||||
spnt->VMS_type = DBG_S_C_ADVANCED_TYPE;
|
||||
pnt1 = cvt_integer (pnt + 1, &spnt->data_size);
|
||||
if (!final_pass && forward_reference(pnt))
|
||||
if (!final_pass && forward_reference (pnt))
|
||||
{
|
||||
spnt->struc_numb = -1;
|
||||
return 1;
|
||||
|
@ -2769,14 +2771,14 @@ VMS_typedef_parse (str)
|
|||
Local[i++] = 11 + strlen (pnt);
|
||||
Local[i++] = DBG_S_C_STRUCT_START;
|
||||
Local[i++] = DST_K_VFLAGS_NOVAL; /* structure definition only */
|
||||
COPY_LONG(&Local[i], 0L); /* hence value is unused */
|
||||
COPY_LONG (&Local[i], 0L); /* hence value is unused */
|
||||
i += 4;
|
||||
Local[i++] = strlen (pnt);
|
||||
pnt2 = pnt;
|
||||
while (*pnt2 != '\0')
|
||||
Local[i++] = *pnt2++;
|
||||
i2 = spnt->data_size * 8; /* number of bits */
|
||||
COPY_LONG(&Local[i], i2);
|
||||
COPY_LONG (&Local[i], i2);
|
||||
i += 4;
|
||||
VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG);
|
||||
i = 0;
|
||||
|
@ -2846,7 +2848,7 @@ VMS_typedef_parse (str)
|
|||
else
|
||||
{ /* not a bitfield */
|
||||
/* check if this is a forward reference */
|
||||
if(final_pass && final_forward_reference(spnt1))
|
||||
if (final_pass && final_forward_reference (spnt1))
|
||||
{
|
||||
as_tsktsk ("debugger output: structure element `%s' has undefined type",
|
||||
pnt2);
|
||||
|
@ -3025,7 +3027,7 @@ VMS_LSYM_Parse ()
|
|||
case N_FUN: /*sometimes these contain typedefs*/
|
||||
str = S_GET_NAME (sp);
|
||||
symbol_name = str;
|
||||
pnt = str + strlen(str) -1;
|
||||
pnt = str + strlen (str) - 1;
|
||||
if (*pnt == '?') /* Continuation stab. */
|
||||
{
|
||||
symbolS *spnext;
|
||||
|
@ -3033,22 +3035,22 @@ VMS_LSYM_Parse ()
|
|||
|
||||
spnext = sp;
|
||||
do {
|
||||
tlen += strlen(str) - 1;
|
||||
tlen += strlen (str) - 1;
|
||||
spnext = symbol_next (spnext);
|
||||
str = S_GET_NAME (spnext);
|
||||
pnt = str + strlen(str) - 1;
|
||||
pnt = str + strlen (str) - 1;
|
||||
} while (*pnt == '?');
|
||||
tlen += strlen(str);
|
||||
tlen += strlen (str);
|
||||
parse_buffer = (char *) xmalloc (tlen + 1);
|
||||
strcpy(parse_buffer, S_GET_NAME (sp));
|
||||
pnt2 = parse_buffer + strlen(S_GET_NAME (sp)) - 1;
|
||||
strcpy (parse_buffer, S_GET_NAME (sp));
|
||||
pnt2 = parse_buffer + strlen(parse_buffer) - 1;
|
||||
*pnt2 = '\0';
|
||||
spnext = sp;
|
||||
do {
|
||||
spnext = symbol_next (spnext);
|
||||
str = S_GET_NAME (spnext);
|
||||
strcat (pnt2, S_GET_NAME (spnext));
|
||||
pnt2 += strlen(str) - 1;
|
||||
strcat (pnt2, str);
|
||||
pnt2 += strlen (str) - 1;
|
||||
*str = '\0'; /* Erase this string */
|
||||
if (*pnt2 != '?') break;
|
||||
*pnt2 = '\0';
|
||||
|
@ -3082,14 +3084,14 @@ VMS_LSYM_Parse ()
|
|||
} /*for*/
|
||||
pass++;
|
||||
/* Make one last pass, if needed, and define whatever we can that is left */
|
||||
if(final_pass == 0 && incomplete == incom1)
|
||||
if (final_pass == 0 && incomplete == incom1)
|
||||
{
|
||||
final_pass = 1;
|
||||
incom1 ++; /* Force one last pass through */
|
||||
}
|
||||
} while ((incomplete != 0) && (incomplete != incom1));
|
||||
/* repeat until all refs resolved if possible */
|
||||
/* if (pass > 1) printf(" Required %d passes\n",pass);*/
|
||||
/* if (pass > 1) printf (" Required %d passes\n", pass);*/
|
||||
if (incomplete != 0)
|
||||
{
|
||||
as_tsktsk ("debugger output: Unable to resolve %d circular references.",
|
||||
|
@ -3481,8 +3483,8 @@ VMS_Case_Hack_Symbol (In, Out)
|
|||
}
|
||||
|
||||
old_name = In;
|
||||
/* if (strlen(In) > 31 && flag_hash_long_names)
|
||||
as_tsktsk("Symbol name truncated: %s\n", In); */
|
||||
/* if (strlen (In) > 31 && flag_hash_long_names)
|
||||
as_tsktsk ("Symbol name truncated: %s\n", In); */
|
||||
/*
|
||||
* Do the case conversion
|
||||
*/
|
||||
|
@ -3497,20 +3499,20 @@ VMS_Case_Hack_Symbol (In, Out)
|
|||
switch (vms_name_mapping)
|
||||
{
|
||||
case 0:
|
||||
if (isupper(*In)) {
|
||||
if (isupper (*In)) {
|
||||
*Out++ = *In++;
|
||||
Case_Hack_Bits |= 1;
|
||||
} else {
|
||||
*Out++ = islower(*In) ? toupper(*In++) : *In++;
|
||||
*Out++ = islower (*In) ? toupper (*In++) : *In++;
|
||||
}
|
||||
break;
|
||||
case 3: *Out++ = *In++;
|
||||
break;
|
||||
case 2:
|
||||
if (islower(*In)) {
|
||||
if (islower (*In)) {
|
||||
*Out++ = *In++;
|
||||
} else {
|
||||
*Out++ = isupper(*In) ? tolower(*In++) : *In++;
|
||||
*Out++ = isupper (*In) ? tolower (*In++) : *In++;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -3541,7 +3543,7 @@ VMS_Case_Hack_Symbol (In, Out)
|
|||
* and ensure that they are lowercase
|
||||
*/
|
||||
for (i = 0; (In[i] != 0) && (i < 8); i++)
|
||||
if (isupper(In[i]) && !Saw_Dollar && !flag_no_hash_mixed_case)
|
||||
if (isupper (In[i]) && !Saw_Dollar && !flag_no_hash_mixed_case)
|
||||
break;
|
||||
|
||||
if (In[i] == 0)
|
||||
|
@ -3556,15 +3558,11 @@ VMS_Case_Hack_Symbol (In, Out)
|
|||
i = 8;
|
||||
while ((--i >= 0) && (*In))
|
||||
switch (vms_name_mapping){
|
||||
case 0: *Out++ = islower(*In) ?
|
||||
toupper (*In++) :
|
||||
*In++;
|
||||
case 0: *Out++ = islower (*In) ? toupper (*In++) : *In++;
|
||||
break;
|
||||
case 3: *Out++ = *In++;
|
||||
break;
|
||||
case 2: *Out++ = isupper(*In) ?
|
||||
tolower(*In++) :
|
||||
*In++;
|
||||
case 2: *Out++ = isupper (*In) ? tolower (*In++) : *In++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -4091,12 +4089,12 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment)
|
|||
if (Current_Environment < 0)
|
||||
VMS_Local_Environment_Setup (".N_ABS");
|
||||
VMS_Global_Symbol_Spec (Name, 0,
|
||||
S_GET_VALUE(sp),
|
||||
S_GET_VALUE (sp),
|
||||
GBLSYM_DEF|GBLSYM_VAL|GBLSYM_LCL);
|
||||
break;
|
||||
case N_ABS | N_EXT:
|
||||
VMS_Global_Symbol_Spec (Name, 0,
|
||||
S_GET_VALUE(sp),
|
||||
S_GET_VALUE (sp),
|
||||
GBLSYM_DEF|GBLSYM_VAL);
|
||||
break;
|
||||
case N_UNDF | N_EXT:
|
||||
|
@ -4854,7 +4852,7 @@ vms_fixup_text_section (text_siz, text_frag_root, data_frag_root)
|
|||
* Create a buffer holding the data segment.
|
||||
*/
|
||||
static void
|
||||
synthesize_data_segment(data_siz, text_siz, data_frag_root)
|
||||
synthesize_data_segment (data_siz, text_siz, data_frag_root)
|
||||
unsigned data_siz, text_siz;
|
||||
struct frag *data_frag_root;
|
||||
{
|
||||
|
@ -5584,7 +5582,7 @@ vms_write_object_file (text_siz, data_siz, bss_siz, text_frag_root,
|
|||
* can be properly emitted.
|
||||
*/
|
||||
if (data_siz > 0)
|
||||
synthesize_data_segment(data_siz, text_siz, data_frag_root);
|
||||
synthesize_data_segment (data_siz, text_siz, data_frag_root);
|
||||
|
||||
|
||||
/******* Global Symbol Directory *******/
|
||||
|
|
Loading…
Reference in a new issue