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,
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;
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 */
0, "", /* 0xff */
};
-static const int comp1_opcodes[] =
-{
+static const int comp1_opcodes[] = {
0x00,
0x40,
0x41,
-1
};
-static const int comp2_opcodes[] =
-{
+static const int comp2_opcodes[] = {
0x00,
0x80,
0x82,
-1
};
-static const int comp3_opcodes[] =
-{
+static const int comp3_opcodes[] = {
0x00,
0x02,
-1
#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"),
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. */
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)
/* 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)
}
/* 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. */
}
/* 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)
/* 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)
/* 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;
/* 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;
/* 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;
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;
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),
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;
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. */
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),
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);
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);
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;
#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
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
asection *section;
for (section = abfd->sections; section != NULL; section = section->next)
- count += som_is_space (section);
+ count += som_is_space (section);
return count;
}
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;
}
}
{
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. */
/* 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;
}
/* 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. */
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))
{
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. */
return (som_finish_writing (abfd));
}
-
\f
/* Read and save the string table associated with the given BFD. */
/* 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. */
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;
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']
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. */
return false;
newsect->alignment_power = 3;
- /* We allow more than three sections internally */
+ /* We allow more than three sections internally. */
return true;
}
/* 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;
|| (!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;
/* 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;
}
/* 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;
}
/* 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;
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;
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);
}
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;
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)
{
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;
}
/* Read in the LST from the archive. */
+
static boolean
som_slurp_armap (abfd)
bfd *abfd;
/* 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;
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
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++;
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;
/* 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, "/ ");
/* End of miscellaneous support functions. */
/* Linker support functions. */
+
static boolean
som_bfd_link_split_section (abfd, sec)
bfd *abfd ATTRIBUTE_UNUSED;
#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 */