diff options
Diffstat (limited to 'ld/emultempl/armcoff.em')
-rw-r--r-- | ld/emultempl/armcoff.em | 66 |
1 files changed, 25 insertions, 41 deletions
diff --git a/ld/emultempl/armcoff.em b/ld/emultempl/armcoff.em index 15ebecf..2368b90 100644 --- a/ld/emultempl/armcoff.em +++ b/ld/emultempl/armcoff.em @@ -40,18 +40,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "ldfile.h" #include "ldemul.h" -static void gld${EMULATION_NAME}_before_parse PARAMS ((void)); -static void gld${EMULATION_NAME}_before_allocation PARAMS ((void)); -static char *gld${EMULATION_NAME}_get_script PARAMS ((int *isfile)); -static void gld${EMULATION_NAME}_add_options - PARAMS ((int, char **, int, struct option **, int, struct option **)); -static void gld${EMULATION_NAME}_list_options PARAMS ((FILE *)); -static bfd_boolean gld${EMULATION_NAME}_handle_option PARAMS ((int)); -static void gld${EMULATION_NAME}_finish PARAMS ((void)); -static void gld${EMULATION_NAME}_after_open PARAMS ((void)); - -/* If TRUE, then interworking stubs which support calls to old, non-interworking - aware ARM code should be generated. */ +/* If TRUE, then interworking stubs which support calls to old, + non-interworking aware ARM code should be generated. */ static int support_old_code = 0; static char * thumb_entry_symbol = NULL; @@ -60,13 +50,10 @@ static char * thumb_entry_symbol = NULL; #define OPTION_THUMB_ENTRY 301 static void -gld${EMULATION_NAME}_add_options (ns, shortopts, nl, longopts, nrl, really_longopts) - int ns ATTRIBUTE_UNUSED; - char **shortopts ATTRIBUTE_UNUSED; - int nl; - struct option **longopts; - int nrl ATTRIBUTE_UNUSED; - struct option **really_longopts ATTRIBUTE_UNUSED; +gld${EMULATION_NAME}_add_options + (int ns ATTRIBUTE_UNUSED, char **shortopts ATTRIBUTE_UNUSED, int nl, + struct option **longopts, int nrl ATTRIBUTE_UNUSED, + struct option **really_longopts ATTRIBUTE_UNUSED) { static const struct option xtra_long[] = { {"support-old-code", no_argument, NULL, OPTION_SUPPORT_OLD_CODE}, @@ -74,22 +61,20 @@ gld${EMULATION_NAME}_add_options (ns, shortopts, nl, longopts, nrl, really_longo {NULL, no_argument, NULL, 0} }; - *longopts = (struct option *) - xrealloc (*longopts, nl * sizeof (struct option) + sizeof (xtra_long)); + *longopts = xrealloc (*longopts, + nl * sizeof (struct option) + sizeof (xtra_long)); memcpy (*longopts + nl, &xtra_long, sizeof (xtra_long)); } static void -gld${EMULATION_NAME}_list_options (file) - FILE * file; +gld${EMULATION_NAME}_list_options (FILE *file) { fprintf (file, _(" --support-old-code Support interworking with old code\n")); fprintf (file, _(" --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n")); } static bfd_boolean -gld${EMULATION_NAME}_handle_option (optc) - int optc; +gld${EMULATION_NAME}_handle_option (int optc) { switch (optc) { @@ -104,12 +89,12 @@ gld${EMULATION_NAME}_handle_option (optc) thumb_entry_symbol = optarg; break; } - + return TRUE; } static void -gld${EMULATION_NAME}_before_parse () +gld${EMULATION_NAME}_before_parse (void) { #ifndef TARGET_ /* I.e., if not generic. */ ldfile_set_output_arch ("`echo ${ARCH}`"); @@ -120,7 +105,7 @@ gld${EMULATION_NAME}_before_parse () sections, but before any sizes or addresses have been set. */ static void -gld${EMULATION_NAME}_before_allocation () +gld${EMULATION_NAME}_before_allocation (void) { /* we should be able to set the size of the interworking stub section */ @@ -143,7 +128,7 @@ gld${EMULATION_NAME}_before_allocation () } static void -gld${EMULATION_NAME}_after_open () +gld${EMULATION_NAME}_after_open (void) { if (strstr (bfd_get_target (output_bfd), "arm") == NULL) { @@ -154,7 +139,7 @@ gld${EMULATION_NAME}_after_open () einfo ("%F%X%P: error: cannot change output format whilst linking ARM binaries\n"); return; } - + { LANG_FOR_EACH_INPUT_STATEMENT (is) { @@ -165,13 +150,13 @@ gld${EMULATION_NAME}_after_open () } static void -gld${EMULATION_NAME}_finish PARAMS((void)) +gld${EMULATION_NAME}_finish (void) { struct bfd_link_hash_entry * h; if (thumb_entry_symbol == NULL) return; - + h = bfd_link_hash_lookup (link_info.hash, thumb_entry_symbol, FALSE, FALSE, TRUE); @@ -182,21 +167,21 @@ gld${EMULATION_NAME}_finish PARAMS((void)) { static char buffer[32]; bfd_vma val; - + /* Special procesing is required for a Thumb entry symbol. The bottom bit of its address must be set. */ val = (h->u.def.value + bfd_get_section_vma (output_bfd, h->u.def.section->output_section) + h->u.def.section->output_offset); - + val |= 1; /* Now convert this value into a string and store it in entry_symbol - where the lang_finish() function will pick it up. */ + where the lang_finish() function will pick it up. */ buffer[0] = '0'; buffer[1] = 'x'; - + sprintf_vma (buffer + 2, val); if (entry_symbol.name != NULL && entry_from_cmdline) @@ -209,8 +194,7 @@ gld${EMULATION_NAME}_finish PARAMS((void)) } static char * -gld${EMULATION_NAME}_get_script (isfile) - int *isfile; +gld${EMULATION_NAME}_get_script (int *isfile) EOF if test -n "$COMPILE_IN" @@ -221,7 +205,7 @@ then sc="-f stringify.sed" cat >>e${EMULATION_NAME}.c <<EOF -{ +{ *isfile = 0; if (link_info.relocatable && config.build_constructors) @@ -242,7 +226,7 @@ else # Scripts read from the filesystem. cat >>e${EMULATION_NAME}.c <<EOF -{ +{ *isfile = 1; if (link_info.relocatable && config.build_constructors) @@ -262,7 +246,7 @@ fi cat >>e${EMULATION_NAME}.c <<EOF -struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = +struct ld_emulation_xfer_struct ld_${EMULATION_NAME}_emulation = { gld${EMULATION_NAME}_before_parse, syslib_default, |