2001-01-04 Kazu Hirata <kazu@hxi.com>

* som.c: Fix formatting.
This commit is contained in:
Kazu Hirata 2001-01-04 23:27:08 +00:00
parent 9dcb560c82
commit 7eae7d229a
2 changed files with 217 additions and 222 deletions

View File

@ -1,3 +1,7 @@
2001-01-04 Kazu Hirata <kazu@hxi.com>
* som.c: Fix formatting.
2001-01-03 Kazu Hirata <kazu@hxi.com>
* ecoffswap.h: Fix formatting.

435
bfd/som.c
View File

@ -110,17 +110,15 @@
Note one side effect of using a R_PREV_FIXUP is the relocation that
is being repeated moves to the front of the queue. */
struct reloc_queue
{
unsigned char *reloc;
unsigned int size;
} reloc_queue[4];
struct reloc_queue {
unsigned char *reloc;
unsigned int size;
} reloc_queue[4];
/* This fully describes the symbol types which may be attached to
an EXPORT or IMPORT directive. Only SOM uses this formation
(ELF has no need for it). */
typedef enum
{
typedef enum {
SYMBOL_TYPE_UNKNOWN,
SYMBOL_TYPE_ABSOLUTE,
SYMBOL_TYPE_CODE,
@ -132,16 +130,14 @@ typedef enum
SYMBOL_TYPE_SEC_PROG,
} pa_symbol_type;
struct section_to_type
{
struct section_to_type {
char *section;
char type;
};
/* Assorted symbol information that needs to be derived from the BFD symbol
and/or the BFD backend private symbol data. */
struct som_misc_symbol_info
{
struct som_misc_symbol_info {
unsigned int symbol_type;
unsigned int symbol_scope;
unsigned int arg_reloc;
@ -379,14 +375,12 @@ static const struct section_to_type stt[] = {
addil foo-$global$-0x1234 would use an override for "0x1234" rather
than storing it into the addil itself. */
struct fixup_format
{
struct fixup_format {
int D;
const char *format;
};
static const struct fixup_format som_fixup_formats[256] =
{
static const struct fixup_format som_fixup_formats[256] = {
/* R_NO_RELOCATION */
0, "LD1+4*=", /* 0x00 */
1, "LD1+4*=", /* 0x01 */
@ -699,8 +693,7 @@ static const struct fixup_format som_fixup_formats[256] =
0, "", /* 0xff */
};
static const int comp1_opcodes[] =
{
static const int comp1_opcodes[] = {
0x00,
0x40,
0x41,
@ -721,8 +714,7 @@ static const int comp1_opcodes[] =
-1
};
static const int comp2_opcodes[] =
{
static const int comp2_opcodes[] = {
0x00,
0x80,
0x82,
@ -730,8 +722,7 @@ static const int comp2_opcodes[] =
-1
};
static const int comp3_opcodes[] =
{
static const int comp3_opcodes[] = {
0x00,
0x02,
-1
@ -787,8 +778,7 @@ static const int comp3_opcodes[] =
#define SOM_HOWTO(TYPE, NAME) \
HOWTO(TYPE, 0, 0, 32, false, 0, 0, hppa_som_reloc, NAME, false, 0, 0, false)
static reloc_howto_type som_hppa_howto_table[] =
{
static reloc_howto_type som_hppa_howto_table[] = {
SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
SOM_HOWTO (R_NO_RELOCATION, "R_NO_RELOCATION"),
@ -1044,7 +1034,8 @@ static reloc_howto_type som_hppa_howto_table[] =
SOM_HOWTO (R_RESERVED, "R_RESERVED"),
SOM_HOWTO (R_RESERVED, "R_RESERVED"),
SOM_HOWTO (R_RESERVED, "R_RESERVED"),
SOM_HOWTO (R_RESERVED, "R_RESERVED")};
SOM_HOWTO (R_RESERVED, "R_RESERVED")
};
/* Initialize the SOM relocation queue. By definition the queue holds
the last four multibyte fixups. */
@ -1473,104 +1464,104 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
any redundant relocations. */
switch (field)
{
case e_fsel:
case e_psel:
case e_lpsel:
case e_rpsel:
final_types[0] = final_type;
final_types[1] = NULL;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_fsel:
case e_psel:
case e_lpsel:
case e_rpsel:
final_types[0] = final_type;
final_types[1] = NULL;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_tsel:
case e_ltsel:
case e_rtsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
if (field == e_tsel)
*final_types[0] = R_FSEL;
else if (field == e_ltsel)
*final_types[0] = R_LSEL;
else
*final_types[0] = R_RSEL;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_tsel:
case e_ltsel:
case e_rtsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
if (field == e_tsel)
*final_types[0] = R_FSEL;
else if (field == e_ltsel)
*final_types[0] = R_LSEL;
else
*final_types[0] = R_RSEL;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lssel:
case e_rssel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_S_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lssel:
case e_rssel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_S_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lsel:
case e_rsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lsel:
case e_rsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_ldsel:
case e_rdsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_D_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_ldsel:
case e_rdsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_D_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lrsel:
case e_rrsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_R_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_lrsel:
case e_rrsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_R_MODE;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_nsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N1SEL;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_nsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N1SEL;
final_types[1] = final_type;
final_types[2] = NULL;
*final_type = base_type;
break;
case e_nlsel:
case e_nlrsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N0SEL;
final_types[1] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[1])
return NULL;
if (field == e_nlsel)
*final_types[1] = R_N_MODE;
else
*final_types[1] = R_R_MODE;
final_types[2] = final_type;
final_types[3] = NULL;
*final_type = base_type;
break;
case e_nlsel:
case e_nlrsel:
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0])
return NULL;
*final_types[0] = R_N0SEL;
final_types[1] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[1])
return NULL;
if (field == e_nlsel)
*final_types[1] = R_N_MODE;
else
*final_types[1] = R_R_MODE;
final_types[2] = final_type;
final_types[3] = NULL;
*final_type = base_type;
break;
}
switch (base_type)
@ -1579,12 +1570,12 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
/* The difference of two symbols needs *very* special handling. */
if (sym_diff)
{
final_types[0] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[1] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[2] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[3] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[1] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[2] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[3] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0] || !final_types[1] || !final_types[2])
return NULL;
return NULL;
if (field == e_fsel)
*final_types[0] = R_FSEL;
else if (field == e_rsel)
@ -1604,8 +1595,8 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
}
/* PLABELs get their own relocation type. */
else if (field == e_psel
|| field == e_lpsel
|| field == e_rpsel)
|| field == e_lpsel
|| field == e_rpsel)
{
/* A PLABEL relocation that has a size of 32 bits must
be a R_DATA_PLABEL. All others are R_CODE_PLABELs. */
@ -1616,8 +1607,8 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
}
/* PIC stuff. */
else if (field == e_tsel
|| field == e_ltsel
|| field == e_rtsel)
|| field == e_ltsel
|| field == e_rtsel)
*final_type = R_DLT_REL;
/* A relocation in the data space is always a full 32bits. */
else if (format == 32)
@ -1659,12 +1650,12 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
/* The difference of two symbols needs *very* special handling. */
if (sym_diff)
{
final_types[0] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[1] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[2] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[3] = (int *)bfd_alloc (abfd, sizeof (int));
final_types[0] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[1] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[2] = (int *) bfd_alloc (abfd, sizeof (int));
final_types[3] = (int *) bfd_alloc (abfd, sizeof (int));
if (!final_types[0] || !final_types[1] || !final_types[2])
return NULL;
return NULL;
if (field == e_fsel)
*final_types[0] = R_FSEL;
else if (field == e_rsel)
@ -1716,7 +1707,6 @@ hppa_som_gen_reloc_type (abfd, base_type, format, field, sym_diff, sym)
/* Return the address of the correct entry in the PA SOM relocation
howto table. */
/*ARGSUSED*/
static reloc_howto_type *
som_bfd_reloc_type_lookup (abfd, code)
bfd *abfd ATTRIBUTE_UNUSED;
@ -1782,7 +1772,7 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset)
/* Allocate space to hold the saved exec header information. */
obj_som_exec_data (abfd) = (struct som_exec_data *)
bfd_zalloc (abfd, sizeof (struct som_exec_data ));
bfd_zalloc (abfd, sizeof (struct som_exec_data));
if (obj_som_exec_data (abfd) == NULL)
return NULL;
@ -1825,7 +1815,7 @@ som_object_setup (abfd, file_hdrp, aux_hdrp, current_offset)
/* Initialize the saved symbol table and string table to NULL.
Save important offsets and sizes from the SOM header into
the BFD. */
obj_som_stringtab (abfd) = (char *) NULL;
obj_som_stringtab (abfd) = (char *) NULL;
obj_som_symtab (abfd) = (som_symbol_type *) NULL;
obj_som_sorted_syms (abfd) = NULL;
obj_som_stringtab_size (abfd) = file_hdrp->symbol_strings_size;
@ -1856,20 +1846,20 @@ setup_sections (abfd, file_hdr, current_offset)
unsigned int total_subspaces = 0;
asection **subspace_sections, *section;
/* First, read in space names */
/* First, read in space names. */
space_strings = bfd_malloc (file_hdr->space_strings_size);
if (!space_strings && file_hdr->space_strings_size != 0)
goto error_return;
if (bfd_seek (abfd, current_offset + file_hdr->space_strings_location,
SEEK_SET) < 0)
SEEK_SET) < 0)
goto error_return;
if (bfd_read (space_strings, 1, file_hdr->space_strings_size, abfd)
!= file_hdr->space_strings_size)
goto error_return;
/* Loop over all of the space dictionaries, building up sections */
/* Loop over all of the space dictionaries, building up sections. */
for (space_index = 0; space_index < file_hdr->space_total; space_index++)
{
struct space_dictionary_record space;
@ -1878,7 +1868,7 @@ setup_sections (abfd, file_hdr, current_offset)
asection *space_asect;
char *newname;
/* Read the space dictionary element */
/* Read the space dictionary element. */
if (bfd_seek (abfd,
(current_offset + file_hdr->space_location
+ space_index * sizeof space),
@ -1887,10 +1877,10 @@ setup_sections (abfd, file_hdr, current_offset)
if (bfd_read (&space, 1, sizeof space, abfd) != sizeof space)
goto error_return;
/* Setup the space name string */
/* Setup the space name string. */
space.name.n_name = space.name.n_strx + space_strings;
/* Make a section out of it */
/* Make a section out of it. */
newname = bfd_alloc (abfd, strlen (space.name.n_name) + 1);
if (!newname)
goto error_return;
@ -1900,7 +1890,7 @@ setup_sections (abfd, file_hdr, current_offset)
if (!space_asect)
goto error_return;
if (space.is_loadable == 0)
if (space.is_loadable == 0)
space_asect->flags |= SEC_DEBUGGING;
/* Set up all the attributes for the space. */
@ -1913,7 +1903,7 @@ setup_sections (abfd, file_hdr, current_offset)
if (space.subspace_quantity == 0)
continue;
/* Now, read in the first subspace for this space */
/* Now, read in the first subspace for this space. */
if (bfd_seek (abfd,
(current_offset + file_hdr->subspace_location
+ space.subspace_index * sizeof subspace),
@ -1921,14 +1911,15 @@ setup_sections (abfd, file_hdr, current_offset)
goto error_return;
if (bfd_read (&subspace, 1, sizeof subspace, abfd) != sizeof subspace)
goto error_return;
/* Seek back to the start of the subspaces for loop below */
/* Seek back to the start of the subspaces for loop below. */
if (bfd_seek (abfd,
(current_offset + file_hdr->subspace_location
+ space.subspace_index * sizeof subspace),
SEEK_SET) < 0)
goto error_return;
/* Setup the start address and file loc from the first subspace record */
/* Setup the start address and file loc from the first subspace
record. */
space_asect->vma = subspace.subspace_start;
space_asect->filepos = subspace.file_loc_init_value + current_offset;
space_asect->alignment_power = log2 (subspace.alignment);
@ -1939,18 +1930,18 @@ setup_sections (abfd, file_hdr, current_offset)
loop placed any useful values into it. */
memset (&save_subspace, 0, sizeof (struct subspace_dictionary_record));
/* Loop over the rest of the subspaces, building up more sections */
/* Loop over the rest of the subspaces, building up more sections. */
for (subspace_index = 0; subspace_index < space.subspace_quantity;
subspace_index++)
{
asection *subspace_asect;
/* Read in the next subspace */
/* Read in the next subspace. */
if (bfd_read (&subspace, 1, sizeof subspace, abfd)
!= sizeof subspace)
goto error_return;
/* Setup the subspace name string */
/* Setup the subspace name string. */
subspace.name.n_name = subspace.name.n_strx + space_strings;
newname = bfd_alloc (abfd, strlen (subspace.name.n_name) + 1);
@ -1958,7 +1949,7 @@ setup_sections (abfd, file_hdr, current_offset)
goto error_return;
strcpy (newname, subspace.name.n_name);
/* Make a section out of this subspace */
/* Make a section out of this subspace. */
subspace_asect = bfd_make_section_anyway (abfd, newname);
if (!subspace_asect)
goto error_return;
@ -2165,57 +2156,57 @@ som_object_p (abfd)
#ifdef EXECLIBMAGIC
case EXECLIBMAGIC:
/* Read the lst header and determine where the SOM directory begins */
/* Read the lst header and determine where the SOM directory begins. */
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) < 0)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
if (bfd_read ((PTR) & lst_header, 1, SLSTHDR, abfd) != SLSTHDR)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
/* Position to and read the first directory entry */
/* Position to and read the first directory entry. */
if (bfd_seek (abfd, lst_header.dir_loc, SEEK_SET) < 0)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
if (bfd_read ((PTR) & som_entry, 1, ENTRY_SIZE, abfd) != ENTRY_SIZE)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
/* Now position to the first SOM */
/* Now position to the first SOM. */
if (bfd_seek (abfd, som_entry.location, SEEK_SET) < 0)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
current_offset = som_entry.location;
/* And finally, re-read the som header */
/* And finally, re-read the som header. */
if (bfd_read ((PTR) & file_hdr, 1, FILE_HDR_SIZE, abfd) != FILE_HDR_SIZE)
{
if (bfd_get_error () != bfd_error_system_call)
{
if (bfd_get_error () != bfd_error_system_call)
bfd_set_error (bfd_error_wrong_format);
return 0;
}
return 0;
}
break;
#endif
@ -2338,9 +2329,9 @@ som_prep_headers (abfd)
if (som_is_space (section))
{
/* Allocate space for the space dictionary. */
som_section_data (section)->space_dict
= (struct space_dictionary_record *)
bfd_zalloc (abfd, sizeof (struct space_dictionary_record));
som_section_data (section)->space_dict =
(struct space_dictionary_record *)
bfd_zalloc (abfd, sizeof (struct space_dictionary_record));
if (som_section_data (section)->space_dict == NULL)
return false;
/* Set space attributes. Note most attributes of SOM spaces
@ -2470,7 +2461,7 @@ som_count_spaces (abfd)
asection *section;
for (section = abfd->sections; section != NULL; section = section->next)
count += som_is_space (section);
count += som_is_space (section);
return count;
}
@ -2642,7 +2633,7 @@ som_prep_for_fixups (abfd, syms, num_syms)
if (sorted_syms[i]->flags & BSF_SECTION_SYM)
sorted_syms[i]->udata.i = i;
else
som_symbol_data (sorted_syms[i])->index = i;
som_symbol_data (sorted_syms[i])->index = i;
}
}
@ -2687,7 +2678,7 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep)
{
int reloc_offset, current_rounding_mode;
#ifndef NO_PCREL_MODES
int current_call_mode;
int current_call_mode;
#endif
/* Find a subspace of this space. */
@ -2889,7 +2880,7 @@ som_write_fixups (abfd, current_offset, total_reloc_sizep)
/* Find the next R_EXIT relocation. */
for (tmp = j; tmp < subsection->reloc_count; tmp++)
{
tmp_reloc = subsection->orelocation[tmp];
tmp_reloc = subsection->orelocation[tmp];
if (tmp_reloc->howto->type == R_EXIT)
break;
}
@ -3283,17 +3274,17 @@ som_write_symbol_strings (abfd, current_offset, syms, num_syms, string_sizep,
/* Next comes the string itself + a null terminator. */
strcpy (p, syms[i]->name);
som_symbol_data(syms[i])->stringtab_offset = strings_size;
som_symbol_data (syms[i])->stringtab_offset = strings_size;
p += length + 1;
strings_size += length + 1;
/* Always align up to the next word boundary. */
while (strings_size % 4)
{
{
bfd_put_8 (abfd, 0, p);
strings_size++;
p++;
}
}
}
/* Scribble out any partial block. */
@ -3868,12 +3859,11 @@ som_finish_writing (abfd)
section = abfd->sections;
for (i = 0; i < num_spaces; i++)
{
/* Find a space. */
while (!som_is_space (section))
section = section->next;
/* Dump its header */
/* Dump its header. */
if (bfd_write ((PTR) som_section_data (section)->space_dict,
sizeof (struct space_dictionary_record), 1, abfd)
!= sizeof (struct space_dictionary_record))
@ -3888,23 +3878,23 @@ som_finish_writing (abfd)
{
location = obj_som_file_hdr (abfd)->compiler_location;
if (bfd_seek (abfd, location, SEEK_SET) < 0)
return false;
return false;
if (bfd_write ((PTR) obj_som_compilation_unit (abfd),
COMPUNITSZ, 1, abfd) != COMPUNITSZ)
return false;
return false;
}
/* Setting of the system_id has to happen very late now that copying of
BFD private data happens *after* section contents are set. */
if (abfd->flags & (EXEC_P | DYNAMIC))
obj_som_file_hdr(abfd)->system_id = obj_som_exec_data (abfd)->system_id;
obj_som_file_hdr (abfd)->system_id = obj_som_exec_data (abfd)->system_id;
else if (bfd_get_mach (abfd) == pa20)
obj_som_file_hdr(abfd)->system_id = CPU_PA_RISC2_0;
obj_som_file_hdr (abfd)->system_id = CPU_PA_RISC2_0;
else if (bfd_get_mach (abfd) == pa11)
obj_som_file_hdr(abfd)->system_id = CPU_PA_RISC1_1;
obj_som_file_hdr (abfd)->system_id = CPU_PA_RISC1_1;
else
obj_som_file_hdr(abfd)->system_id = CPU_PA_RISC1_0;
obj_som_file_hdr (abfd)->system_id = CPU_PA_RISC1_0;
/* Compute the checksum for the file header just before writing
the header to disk. */
@ -4178,7 +4168,6 @@ som_write_object_contents (abfd)
return (som_finish_writing (abfd));
}
/* Read and save the string table associated with the given BFD. */
@ -4428,7 +4417,7 @@ som_slurp_symbol_table (abfd)
/* Check for a weak symbol. */
if (bufp->secondary_def)
sym->symbol.flags |= BSF_WEAK;
sym->symbol.flags |= BSF_WEAK;
/* Mark section symbols and symbols used by the debugger.
Note $START$ is a magic code symbol, NOT a section symbol. */
@ -4498,7 +4487,7 @@ som_make_empty_symbol (abfd)
bfd *abfd;
{
som_symbol_type *new =
(som_symbol_type *) bfd_zalloc (abfd, sizeof (som_symbol_type));
(som_symbol_type *) bfd_zalloc (abfd, sizeof (som_symbol_type));
if (new == NULL)
return 0;
new->symbol.the_bfd = abfd;
@ -4574,7 +4563,7 @@ som_set_reloc_info (fixup, end, internal_relocs, section, symbols, just_count)
unsigned char *save_fixup;
int variables[26], stack[20], c, v, count, prev_fixup, *sp, saved_unwind_bits;
const int *subop;
arelent *rptr= internal_relocs;
arelent *rptr = internal_relocs;
unsigned int offset = 0;
#define var(c) variables[(c) - 'A']
@ -4675,7 +4664,6 @@ som_set_reloc_info (fixup, end, internal_relocs, section, symbols, just_count)
push (v);
}
else
/* An operator. Pop two two values from the stack and
use them as operands to the given operation. Push
the result of the operation back on the stack. */
@ -5036,7 +5024,7 @@ som_new_section_hook (abfd, newsect)
return false;
newsect->alignment_power = 3;
/* We allow more than three sections internally */
/* We allow more than three sections internally. */
return true;
}
@ -5068,6 +5056,7 @@ som_bfd_copy_private_symbol_data (ibfd, isymbol, obfd, osymbol)
/* Copy any private info we understand from the input section
to the output section. */
static boolean
som_bfd_copy_private_section_data (ibfd, isection, obfd, osection)
bfd *ibfd;
@ -5081,9 +5070,9 @@ som_bfd_copy_private_section_data (ibfd, isection, obfd, osection)
|| (!som_is_space (isection) && !som_is_subspace (isection)))
return true;
som_section_data (osection)->copy_data
= (struct som_copyable_section_data_struct *)
bfd_zalloc (obfd, sizeof (struct som_copyable_section_data_struct));
som_section_data (osection)->copy_data =
(struct som_copyable_section_data_struct *)
bfd_zalloc (obfd, sizeof (struct som_copyable_section_data_struct));
if (som_section_data (osection)->copy_data == NULL)
return false;
@ -5138,10 +5127,10 @@ bfd_som_set_section_attributes (section, defined, private, sort_key, spnum)
/* Allocate memory to hold the magic information. */
if (som_section_data (section)->copy_data == NULL)
{
som_section_data (section)->copy_data
= (struct som_copyable_section_data_struct *)
bfd_zalloc (section->owner,
sizeof (struct som_copyable_section_data_struct));
som_section_data (section)->copy_data =
(struct som_copyable_section_data_struct *)
bfd_zalloc (section->owner,
sizeof (struct som_copyable_section_data_struct));
if (som_section_data (section)->copy_data == NULL)
return false;
}
@ -5168,10 +5157,10 @@ bfd_som_set_subsection_attributes (section, container, access,
/* Allocate memory to hold the magic information. */
if (som_section_data (section)->copy_data == NULL)
{
som_section_data (section)->copy_data
= (struct som_copyable_section_data_struct *)
bfd_zalloc (section->owner,
sizeof (struct som_copyable_section_data_struct));
som_section_data (section)->copy_data =
(struct som_copyable_section_data_struct *)
bfd_zalloc (section->owner,
sizeof (struct som_copyable_section_data_struct));
if (som_section_data (section)->copy_data == NULL)
return false;
}
@ -5198,6 +5187,7 @@ bfd_som_set_symbol_type (symbol, type)
/* Attach an auxiliary header to the BFD backend so that it may be
written into the object file. */
boolean
bfd_som_attach_aux_hdr (abfd, type, string)
bfd *abfd;
@ -5248,7 +5238,7 @@ bfd_som_attach_aux_hdr (abfd, type, string)
boolean
bfd_som_attach_compilation_unit (abfd, name, language_name, product_id,
version_id)
version_id)
bfd *abfd;
const char *name;
const char *language_name;
@ -5292,7 +5282,7 @@ som_get_section_contents (abfd, section, location, offset, count)
return true;
if ((bfd_size_type) (offset+count) > section->_raw_size
|| bfd_seek (abfd, (file_ptr) (section->filepos + offset), SEEK_SET) == -1
|| bfd_read (location, (bfd_size_type)1, count, abfd) != count)
|| bfd_read (location, (bfd_size_type) 1, count, abfd) != count)
return (false); /* on error */
return (true);
}
@ -5339,13 +5329,13 @@ som_set_arch_mach (abfd, arch, machine)
enum bfd_architecture arch;
unsigned long machine;
{
/* Allow any architecture to be supported by the SOM backend */
/* Allow any architecture to be supported by the SOM backend. */
return bfd_default_set_arch_mach (abfd, arch, machine);
}
static boolean
som_find_nearest_line (abfd, section, symbols, offset, filename_ptr,
functionname_ptr, line_ptr)
functionname_ptr, line_ptr)
bfd *abfd ATTRIBUTE_UNUSED;
asection *section ATTRIBUTE_UNUSED;
asymbol **symbols ATTRIBUTE_UNUSED;
@ -5397,7 +5387,7 @@ som_decode_symclass (symbol)
return 'I';
if (symbol->flags & BSF_WEAK)
return 'W';
if (!(symbol->flags & (BSF_GLOBAL|BSF_LOCAL)))
if (!(symbol->flags & (BSF_GLOBAL | BSF_LOCAL)))
return '?';
if (bfd_is_abs_section (symbol->section)
@ -5423,7 +5413,7 @@ som_get_symbol_info (ignore_abfd, symbol, ret)
{
ret->type = som_decode_symclass (symbol);
if (ret->type != 'U')
ret->value = symbol->value+symbol->section->vma;
ret->value = symbol->value + symbol->section->vma;
else
ret->value = 0;
ret->name = symbol->name;
@ -5650,6 +5640,7 @@ som_bfd_fill_in_ar_symbols (abfd, lst_header, syms)
}
/* Read in the LST from the archive. */
static boolean
som_slurp_armap (abfd)
bfd *abfd;
@ -5824,6 +5815,7 @@ som_bfd_prep_for_ar_write (abfd, num_syms, stringsize)
/* Hash a symbol name based on the hashing algorithm presented in the
SOM ABI. */
static unsigned int
som_bfd_ar_symbol_hash (symbol)
asymbol *symbol;
@ -5835,7 +5827,7 @@ som_bfd_ar_symbol_hash (symbol)
return 0x1000100 | (symbol->name[0] << 16) | symbol->name[0];
return ((len & 0x7f) << 24) | (symbol->name[1] << 16)
| (symbol->name[len-2] << 8) | symbol->name[len-1];
| (symbol->name[len - 2] << 8) | symbol->name[len - 1];
}
/* Do the bulk of the work required to write the SOM library
@ -6027,7 +6019,7 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength)
p += 4;
strcpy (p, sym->symbol.name);
p += strlen (sym->symbol.name) + 1;
while ((int)p % 4)
while ((int) p % 4)
{
bfd_put_8 (abfd, 0, p);
p++;
@ -6100,7 +6092,6 @@ som_bfd_ar_write_symbol_stuff (abfd, nsyms, string_size, lst, elength)
You'll never believe this is really how armaps are handled in SOM... */
/*ARGSUSED*/
static boolean
som_write_armap (abfd, elength, map, orl_count, stridx)
bfd *abfd;
@ -6187,9 +6178,9 @@ som_write_armap (abfd, elength, map, orl_count, stridx)
/* Compute the checksum. Must happen after the entire lst header
has filled in. */
p = (int *)&lst;
p = (int *) &lst;
lst.checksum = 0;
for (i = 0; i < sizeof (struct lst_header)/sizeof (int) - 1; i++)
for (i = 0; i < sizeof (struct lst_header) / sizeof (int) - 1; i++)
lst.checksum ^= *p++;
sprintf (hdr.ar_name, "/ ");
@ -6257,6 +6248,7 @@ som_bfd_free_cached_info (abfd)
/* End of miscellaneous support functions. */
/* Linker support functions. */
static boolean
som_bfd_link_split_section (abfd, sec)
bfd *abfd ATTRIBUTE_UNUSED;
@ -6294,8 +6286,7 @@ som_bfd_link_split_section (abfd, sec)
#define som_bfd_gc_sections bfd_generic_gc_sections
const bfd_target som_vec =
{
const bfd_target som_vec = {
"som", /* name */
bfd_target_som_flavour,
BFD_ENDIAN_BIG, /* target byte order */