yet more vms work

This commit is contained in:
Ken Raeburn
1995-08-01 01:41:53 +00:00
parent 5f57cea3f6
commit ac24997f36
2 changed files with 87 additions and 80 deletions

View File

@ -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> Mon Jul 31 18:19:26 1995 steve chamberlain <sac@slash.cygnus.com>
* gasp.c (change_base): Don't modify numbers in strings. (pr7583) * gasp.c (change_base): Don't modify numbers in strings. (pr7583)

View File

@ -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. * Macros for moving data around. Must work on big-endian systems.
*/ */
#ifdef VMS /* These are more efficient for VMS->VMS systems */ #ifdef VMS /* These are more efficient for VMS->VMS systems */
#define COPY_LONG(dest,val) {*(long *) dest = val; } #define COPY_LONG(dest,val) ( *(long *)(dest) = (val) )
#define COPY_SHORT(dest,val) {*(short *) dest = val; } #define COPY_SHORT(dest,val) ( *(short *)(dest) = (val) )
#else #else
#define COPY_LONG(dest,val) { md_number_to_chars(dest, val, 4); } #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_SHORT(dest,val) md_number_to_chars ((dest), (val), 2)
#endif #endif
/* /*
* Macros for placing data into the object record buffer * Macros for placing data into the object record buffer
*/ */
#define PUT_LONG(val) \ #define PUT_LONG(val) \
{ COPY_LONG(&Object_Record_Buffer[Object_Record_Offset], val); \ ( COPY_LONG (&Object_Record_Buffer[Object_Record_Offset], (val)), \
Object_Record_Offset += 4; } Object_Record_Offset += 4 )
#define PUT_SHORT(val) \ #define PUT_SHORT(val) \
{ COPY_SHORT(&Object_Record_Buffer[Object_Record_Offset], val); \ ( COPY_SHORT (&Object_Record_Buffer[Object_Record_Offset], (val)), \
Object_Record_Offset += 2; } 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) {\ #define PUT_COUNTED_STRING(cp) do { \
register const char *p = cp; \ register const char *p = (cp); \
PUT_CHAR(strlen(p)); \ PUT_CHAR ((char) strlen (p)); \
while (*p) PUT_CHAR(*p++);} while (*p) PUT_CHAR (*p++); } while (0)
/* /*
* Macro for determining if a Name has psect attributes attached * Macro for determining if a Name has psect attributes attached
* to it. * to it.
*/ */
#define PSECT_ATTRIBUTES_STRING "$$PsectAttributes_" #define PSECT_ATTRIBUTES_STRING "$$PsectAttributes_"
#define PSECT_ATTRIBUTES_STRING_LENGTH 18 #define PSECT_ATTRIBUTES_STRING_LENGTH 18
#define HAS_PSECT_ATTRIBUTES(Name) \ #define HAS_PSECT_ATTRIBUTES(Name) \
(strncmp((Name[0] == '_' ? Name + 1 : Name), \ (strncmp ((*Name == '_' ? Name + 1 : Name), \
PSECT_ATTRIBUTES_STRING, \ PSECT_ATTRIBUTES_STRING, \
PSECT_ATTRIBUTES_STRING_LENGTH) == 0) PSECT_ATTRIBUTES_STRING_LENGTH) == 0)
/* in: segT out: N_TYPE bits */ /* in: segT out: N_TYPE bits */
@ -439,6 +439,9 @@ const pseudo_typeS obj_pseudo_table[] =
{0, 0, 0}, {0, 0, 0},
}; /* obj_pseudo_table */ }; /* obj_pseudo_table */
/* Routine to perform RESOLVE_SYMBOL_REDEFINITION(). */
int int
vms_resolve_symbol_redef (sym) vms_resolve_symbol_redef (sym)
symbolS *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, * If the old symbol is .comm and it has a size of zero,
* we override it with the new symbol value. * we override it with the new symbol value.
*/ */
if (S_IS_EXTERNAL(sym) && S_IS_DEFINED(sym) if (S_IS_EXTERNAL (sym) && S_IS_DEFINED (sym) && S_GET_VALUE (sym) == 0)
&& (S_GET_VALUE(sym) == 0))
{ {
as_warn ("compiler redefined zero-size common symbol `%s'", as_warn ("compiler redefined zero-size common symbol `%s'",
S_GET_NAME (sym)); S_GET_NAME (sym));
sym->sy_frag = frag_now; sym->sy_frag = frag_now;
S_SET_OTHER(sym, const_flag); S_SET_OTHER (sym, const_flag);
S_SET_VALUE(sym, frag_now_fix ()); S_SET_VALUE (sym, frag_now_fix ());
/* Keep N_EXT bit. */ /* 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; return 1;
} }
@ -486,7 +488,7 @@ symbolS *symbolP;
/* Special labels only occur prior to explicit section directives. */ /* Special labels only occur prior to explicit section directives. */
if ((const_flag & IN_DEFAULT_SECTION) != 0) if ((const_flag & IN_DEFAULT_SECTION) != 0)
{ {
char *sym_name = S_GET_NAME(symbolP); char *sym_name = S_GET_NAME (symbolP);
if (*sym_name == '_') if (*sym_name == '_')
++sym_name; ++sym_name;
@ -613,7 +615,7 @@ Flush_VMS_Object_Record_Buffer ()
* Write the data to the file * Write the data to the file
*/ */
#ifndef VMS /* For cross-assembly purposes. */ #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); i = write (VMS_Object_File_FD, &RecLen, 2);
#endif /* not VMS */ #endif /* not VMS */
i = write (VMS_Object_File_FD, i = write (VMS_Object_File_FD,
@ -1684,8 +1686,8 @@ find_symbol (dbx_type)
{ {
struct VMS_DBG_Symbol *spnt; struct VMS_DBG_Symbol *spnt;
spnt = VMS_Symbol_type_list[SYMTYP_HASH(dbx_type)]; spnt = VMS_Symbol_type_list[SYMTYP_HASH (dbx_type)];
while (spnt != (struct VMS_DBG_Symbol *) NULL) while (spnt)
{ {
if (spnt->dbx_type == dbx_type) if (spnt->dbx_type == dbx_type)
break; break;
@ -1693,7 +1695,7 @@ find_symbol (dbx_type)
} }
if (!spnt || spnt->advanced != ALIAS) if (!spnt || spnt->advanced != ALIAS)
return spnt; 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); VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
Lpnt = 0; Lpnt = 0;
VMS_Def_Struct (struct_number); VMS_Def_Struct (struct_number);
COPY_LONG(&Local[Lpnt], 0L); COPY_LONG (&Local[Lpnt], 0L);
Lpnt += 4; Lpnt += 4;
VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
Lpnt = 0; Lpnt = 0;
@ -2046,11 +2048,11 @@ bitfield_suffix (spnt, width)
Local[Lpnt++] = 13; /* rec.len==13 */ Local[Lpnt++] = 13; /* rec.len==13 */
Local[Lpnt++] = DST_K_TYPSPEC; /* a type specification record */ Local[Lpnt++] = DST_K_TYPSPEC; /* a type specification record */
Local[Lpnt++] = 0; /* not named */ Local[Lpnt++] = 0; /* not named */
COPY_SHORT(&Local[Lpnt], 9); /* typ.len==9 */ COPY_SHORT (&Local[Lpnt], 9); /* typ.len==9 */
Lpnt += 2; Lpnt += 2;
Local[Lpnt++] = DST_K_TS_NOV_LENG; /* This type is a "novel length" Local[Lpnt++] = DST_K_TS_NOV_LENG; /* This type is a "novel length"
incarnation of some other type. */ 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; Lpnt += 4;
VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG); VMS_Store_Immediate_Data (Local, Lpnt, OBJ_S_C_DBG);
Lpnt = 0; Lpnt = 0;
@ -2078,7 +2080,7 @@ setup_basic_type (spnt)
struct VMS_DBG_Symbol *spnt2; struct VMS_DBG_Symbol *spnt2;
/* first check whether this type has already been seen by another name */ /* 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 = spnt2->next) spnt2 = spnt2->next)
if (spnt2 != spnt && spnt2->VMS_type == spnt->VMS_type) if (spnt2 != spnt && spnt2->VMS_type == spnt->VMS_type)
@ -2101,7 +2103,7 @@ setup_basic_type (spnt)
Local[Lpnt++] = '_'; Local[Lpnt++] = '_';
for (p = symbol_name; *p; p++) for (p = symbol_name; *p; p++)
Local[Lpnt++] = *p == ' ' ? '_' : *p; Local[Lpnt++] = *p == ' ' ? '_' : *p;
COPY_SHORT(&Local[Lpnt], 2); /* typ.len==2 */ COPY_SHORT (&Local[Lpnt], 2); /* typ.len==2 */
Lpnt += 2; Lpnt += 2;
Local[Lpnt++] = DST_K_TS_ATOM; /* typ.kind is simple type */ Local[Lpnt++] = DST_K_TS_ATOM; /* typ.kind is simple type */
Local[Lpnt++] = spnt->VMS_type; /* typ.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 */ /* if there are bad characters in name, convert them */
Name_pnt = fix_name (Name); Name_pnt = fix_name (Name);
len = strlen(Name_pnt); len = strlen (Name_pnt);
if (Psect < 0) if (Psect < 0)
{ /* this is a local variable, referenced to SP */ { /* this is a local variable, referenced to SP */
Local[i++] = 7 + len; Local[i++] = 7 + len;
@ -2458,17 +2460,17 @@ VMS_RSYM_Parse (sp, Current_Routine, Text_Psect)
return; /*Dunno what this is yet*/ return; /*Dunno what this is yet*/
*pnt1 = '\0'; *pnt1 = '\0';
pnt = fix_name (S_GET_NAME (sp)); /* if there are bad characters in name, convert them */ 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++] = 25 + len;
Local[i++] = spnt->VMS_type; Local[i++] = spnt->VMS_type;
Local[i++] = DST_K_VFLAGS_TVS; /* trailing value specified */ 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; i += 4;
Local[i++] = len; /* name length (ascic prefix) */ Local[i++] = len; /* name length (ascic prefix) */
while (*pnt != '\0') while (*pnt != '\0')
Local[i++] = *pnt++; Local[i++] = *pnt++;
Local[i++] = DST_K_VS_FOLLOWS; /* value specification follows */ 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; i += 2;
Local[i++] = DST_K_VS_ALLOC_SPLIT; /* split lifetime */ Local[i++] = DST_K_VS_ALLOC_SPLIT; /* split lifetime */
Local[i++] = 1; /* one binding follows */ 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, Min_Offset, OBJ_S_C_DBG, 1);
VMS_Set_Data (Text_Psect, Max_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 */ 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; i += 4;
VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG);
*pnt1 = ':'; *pnt1 = ':';
@ -2505,8 +2507,8 @@ forward_reference (pnt)
pnt = (char *) strchr (pnt, ':'); pnt = (char *) strchr (pnt, ':');
pnt = cvt_integer (pnt + 1, &i); pnt = cvt_integer (pnt + 1, &i);
spnt = find_symbol (i); spnt = find_symbol (i);
if(spnt != (struct VMS_DBG_Symbol*) NULL) { if (spnt) {
while((spnt->advanced == POINTER) || (spnt->advanced == ARRAY)) while (spnt->advanced == POINTER || spnt->advanced == ARRAY)
{ {
i = spnt->type2; i = spnt->type2;
spnt1 = find_symbol (spnt->type2); spnt1 = find_symbol (spnt->type2);
@ -2534,7 +2536,7 @@ final_forward_reference (spnt)
while (spnt && (spnt->advanced == POINTER || spnt->advanced == ARRAY)) 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; if (spnt->advanced == ARRAY && !spnt1) return 1;
spnt = spnt1; spnt = spnt1;
} }
@ -2592,7 +2594,7 @@ VMS_typedef_parse (str)
/* first we see if this has been defined already, due to a forward reference*/ /* first we see if this has been defined already, due to a forward reference*/
if (!spnt) if (!spnt)
{ {
i2 = SYMTYP_HASH(i1); i2 = SYMTYP_HASH (i1);
spnt = (struct VMS_DBG_Symbol *) xmalloc (sizeof (struct VMS_DBG_Symbol)); spnt = (struct VMS_DBG_Symbol *) xmalloc (sizeof (struct VMS_DBG_Symbol));
spnt->next = VMS_Symbol_type_list[i2]; spnt->next = VMS_Symbol_type_list[i2];
VMS_Symbol_type_list[i2] = spnt; VMS_Symbol_type_list[i2] = spnt;
@ -2622,12 +2624,12 @@ VMS_typedef_parse (str)
spnt->advanced = UNKNOWN; spnt->advanced = UNKNOWN;
return 0; return 0;
} }
pnt1 = cvt_integer(pnt,&i1); pnt1 = cvt_integer (pnt, &i1);
if(i1 != spnt->dbx_type) if (i1 != spnt->dbx_type)
{ {
spnt->advanced = ALIAS; spnt->advanced = ALIAS;
spnt->type2 = i1; spnt->type2 = i1;
strcpy(str, pnt1); strcpy (str, pnt1);
return 0; return 0;
} }
as_tsktsk ("debugginer output: %d is an unknown untyped variable.", as_tsktsk ("debugginer output: %d is an unknown untyped variable.",
@ -2737,7 +2739,7 @@ VMS_typedef_parse (str)
spnt->data_size = 0; spnt->data_size = 0;
} }
if (spnt->VMS_type != 0) if (spnt->VMS_type != 0)
setup_basic_type(spnt); setup_basic_type (spnt);
pnt1 = (char *) strchr (str, ';') + 1; pnt1 = (char *) strchr (str, ';') + 1;
break; break;
case 's': case 's':
@ -2745,7 +2747,7 @@ VMS_typedef_parse (str)
spnt->advanced = (*pnt == 's') ? STRUCT : UNION; spnt->advanced = (*pnt == 's') ? STRUCT : UNION;
spnt->VMS_type = DBG_S_C_ADVANCED_TYPE; spnt->VMS_type = DBG_S_C_ADVANCED_TYPE;
pnt1 = cvt_integer (pnt + 1, &spnt->data_size); pnt1 = cvt_integer (pnt + 1, &spnt->data_size);
if (!final_pass && forward_reference(pnt)) if (!final_pass && forward_reference (pnt))
{ {
spnt->struc_numb = -1; spnt->struc_numb = -1;
return 1; return 1;
@ -2769,14 +2771,14 @@ VMS_typedef_parse (str)
Local[i++] = 11 + strlen (pnt); Local[i++] = 11 + strlen (pnt);
Local[i++] = DBG_S_C_STRUCT_START; Local[i++] = DBG_S_C_STRUCT_START;
Local[i++] = DST_K_VFLAGS_NOVAL; /* structure definition only */ 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; i += 4;
Local[i++] = strlen (pnt); Local[i++] = strlen (pnt);
pnt2 = pnt; pnt2 = pnt;
while (*pnt2 != '\0') while (*pnt2 != '\0')
Local[i++] = *pnt2++; Local[i++] = *pnt2++;
i2 = spnt->data_size * 8; /* number of bits */ i2 = spnt->data_size * 8; /* number of bits */
COPY_LONG(&Local[i], i2); COPY_LONG (&Local[i], i2);
i += 4; i += 4;
VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG); VMS_Store_Immediate_Data (Local, i, OBJ_S_C_DBG);
i = 0; i = 0;
@ -2846,7 +2848,7 @@ VMS_typedef_parse (str)
else else
{ /* not a bitfield */ { /* not a bitfield */
/* check if this is a forward reference */ /* 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", as_tsktsk ("debugger output: structure element `%s' has undefined type",
pnt2); pnt2);
@ -3025,7 +3027,7 @@ VMS_LSYM_Parse ()
case N_FUN: /*sometimes these contain typedefs*/ case N_FUN: /*sometimes these contain typedefs*/
str = S_GET_NAME (sp); str = S_GET_NAME (sp);
symbol_name = str; symbol_name = str;
pnt = str + strlen(str) -1; pnt = str + strlen (str) - 1;
if (*pnt == '?') /* Continuation stab. */ if (*pnt == '?') /* Continuation stab. */
{ {
symbolS *spnext; symbolS *spnext;
@ -3033,22 +3035,22 @@ VMS_LSYM_Parse ()
spnext = sp; spnext = sp;
do { do {
tlen += strlen(str) - 1; tlen += strlen (str) - 1;
spnext = symbol_next (spnext); spnext = symbol_next (spnext);
str = S_GET_NAME (spnext); str = S_GET_NAME (spnext);
pnt = str + strlen(str) - 1; pnt = str + strlen (str) - 1;
} while (*pnt == '?'); } while (*pnt == '?');
tlen += strlen(str); tlen += strlen (str);
parse_buffer = (char *) xmalloc (tlen + 1); parse_buffer = (char *) xmalloc (tlen + 1);
strcpy(parse_buffer, S_GET_NAME (sp)); strcpy (parse_buffer, S_GET_NAME (sp));
pnt2 = parse_buffer + strlen(S_GET_NAME (sp)) - 1; pnt2 = parse_buffer + strlen(parse_buffer) - 1;
*pnt2 = '\0'; *pnt2 = '\0';
spnext = sp; spnext = sp;
do { do {
spnext = symbol_next (spnext); spnext = symbol_next (spnext);
str = S_GET_NAME (spnext); str = S_GET_NAME (spnext);
strcat (pnt2, S_GET_NAME (spnext)); strcat (pnt2, str);
pnt2 += strlen(str) - 1; pnt2 += strlen (str) - 1;
*str = '\0'; /* Erase this string */ *str = '\0'; /* Erase this string */
if (*pnt2 != '?') break; if (*pnt2 != '?') break;
*pnt2 = '\0'; *pnt2 = '\0';
@ -3082,14 +3084,14 @@ VMS_LSYM_Parse ()
} /*for*/ } /*for*/
pass++; pass++;
/* Make one last pass, if needed, and define whatever we can that is left */ /* 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; final_pass = 1;
incom1 ++; /* Force one last pass through */ incom1 ++; /* Force one last pass through */
} }
} while ((incomplete != 0) && (incomplete != incom1)); } while ((incomplete != 0) && (incomplete != incom1));
/* repeat until all refs resolved if possible */ /* 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) if (incomplete != 0)
{ {
as_tsktsk ("debugger output: Unable to resolve %d circular references.", as_tsktsk ("debugger output: Unable to resolve %d circular references.",
@ -3481,8 +3483,8 @@ VMS_Case_Hack_Symbol (In, Out)
} }
old_name = In; old_name = In;
/* if (strlen(In) > 31 && flag_hash_long_names) /* if (strlen (In) > 31 && flag_hash_long_names)
as_tsktsk("Symbol name truncated: %s\n", In); */ as_tsktsk ("Symbol name truncated: %s\n", In); */
/* /*
* Do the case conversion * Do the case conversion
*/ */
@ -3497,20 +3499,20 @@ VMS_Case_Hack_Symbol (In, Out)
switch (vms_name_mapping) switch (vms_name_mapping)
{ {
case 0: case 0:
if (isupper(*In)) { if (isupper (*In)) {
*Out++ = *In++; *Out++ = *In++;
Case_Hack_Bits |= 1; Case_Hack_Bits |= 1;
} else { } else {
*Out++ = islower(*In) ? toupper(*In++) : *In++; *Out++ = islower (*In) ? toupper (*In++) : *In++;
} }
break; break;
case 3: *Out++ = *In++; case 3: *Out++ = *In++;
break; break;
case 2: case 2:
if (islower(*In)) { if (islower (*In)) {
*Out++ = *In++; *Out++ = *In++;
} else { } else {
*Out++ = isupper(*In) ? tolower(*In++) : *In++; *Out++ = isupper (*In) ? tolower (*In++) : *In++;
} }
break; break;
} }
@ -3541,7 +3543,7 @@ VMS_Case_Hack_Symbol (In, Out)
* and ensure that they are lowercase * and ensure that they are lowercase
*/ */
for (i = 0; (In[i] != 0) && (i < 8); i++) 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; break;
if (In[i] == 0) if (In[i] == 0)
@ -3556,15 +3558,11 @@ VMS_Case_Hack_Symbol (In, Out)
i = 8; i = 8;
while ((--i >= 0) && (*In)) while ((--i >= 0) && (*In))
switch (vms_name_mapping){ switch (vms_name_mapping){
case 0: *Out++ = islower(*In) ? case 0: *Out++ = islower (*In) ? toupper (*In++) : *In++;
toupper (*In++) :
*In++;
break; break;
case 3: *Out++ = *In++; case 3: *Out++ = *In++;
break; break;
case 2: *Out++ = isupper(*In) ? case 2: *Out++ = isupper (*In) ? tolower (*In++) : *In++;
tolower(*In++) :
*In++;
break; break;
} }
} }
@ -4091,12 +4089,12 @@ VMS_Emit_Globalvalues (text_siz, data_siz, Data_Segment)
if (Current_Environment < 0) if (Current_Environment < 0)
VMS_Local_Environment_Setup (".N_ABS"); VMS_Local_Environment_Setup (".N_ABS");
VMS_Global_Symbol_Spec (Name, 0, VMS_Global_Symbol_Spec (Name, 0,
S_GET_VALUE(sp), S_GET_VALUE (sp),
GBLSYM_DEF|GBLSYM_VAL|GBLSYM_LCL); GBLSYM_DEF|GBLSYM_VAL|GBLSYM_LCL);
break; break;
case N_ABS | N_EXT: case N_ABS | N_EXT:
VMS_Global_Symbol_Spec (Name, 0, VMS_Global_Symbol_Spec (Name, 0,
S_GET_VALUE(sp), S_GET_VALUE (sp),
GBLSYM_DEF|GBLSYM_VAL); GBLSYM_DEF|GBLSYM_VAL);
break; break;
case N_UNDF | N_EXT: 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. * Create a buffer holding the data segment.
*/ */
static void 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; unsigned data_siz, text_siz;
struct frag *data_frag_root; 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. * can be properly emitted.
*/ */
if (data_siz > 0) 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 *******/ /******* Global Symbol Directory *******/