From 6feb9908bf34f941977a987989bc18e445869103 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Fri, 28 May 2004 10:34:18 +0000 Subject: [PATCH] * ldlang.c: Formatting. Wrap long lines, expand bfd_get_section_flags throughout file. * lexsup.c: Formatting. Wrap long lines. * ldwrite.c: Update copyright date. --- ld/ChangeLog | 5 + ld/ldlang.c | 176 +++++++++++++------------ ld/ldwrite.c | 4 +- ld/lexsup.c | 362 +++++++++++++++++++++++++++++---------------------- 4 files changed, 306 insertions(+), 241 deletions(-) diff --git a/ld/ChangeLog b/ld/ChangeLog index 5dc49031ff7..1a2aaf33893 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,5 +1,10 @@ 2004-05-28 Alan Modra + * ldlang.c: Formatting. Wrap long lines, expand bfd_get_section_flags + throughout file. + * lexsup.c: Formatting. Wrap long lines. + * ldwrite.c: Update copyright date. + * ldlang.c (lang_add_section): Don't twidlle SEC_EXCLUDE here. (output_section_callback): Nor SEC_KEEP here. (gc_section_callback): Twiddle SEC_EXCLUDE here. diff --git a/ld/ldlang.c b/ld/ldlang.c index 991a647658f..b471b5b9bbc 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -306,13 +306,11 @@ lang_for_each_statement_worker (void (*func) (lang_statement_union_type *), break; case lang_output_section_statement_enum: lang_for_each_statement_worker - (func, - s->output_section_statement.children.head); + (func, s->output_section_statement.children.head); break; case lang_wild_statement_enum: - lang_for_each_statement_worker - (func, - s->wild_statement.children.head); + lang_for_each_statement_worker (func, + s->wild_statement.children.head); break; case lang_group_statement_enum: lang_for_each_statement_worker (func, @@ -526,7 +524,8 @@ lang_init (void) and so we issue a warning. */ static lang_memory_region_type *lang_memory_region_list; -static lang_memory_region_type **lang_memory_region_list_tail = &lang_memory_region_list; +static lang_memory_region_type **lang_memory_region_list_tail + = &lang_memory_region_list; lang_memory_region_type * lang_memory_region_lookup (const char *const name, bfd_boolean create) @@ -542,7 +541,8 @@ lang_memory_region_lookup (const char *const name, bfd_boolean create) if (strcmp (p->name, name) == 0) { if (create) - einfo (_("%P:%S: warning: redeclaration of memory region '%s'\n"), name); + einfo (_("%P:%S: warning: redeclaration of memory region '%s'\n"), + name); return p; } @@ -784,7 +784,7 @@ sort_def_symbol (hash_entry, info) } else if (!ud->map_symbol_def_tail) ud->map_symbol_def_tail = &ud->map_symbol_def_head; - def = (struct map_symbol_def *) obstack_alloc (&map_obstack, sizeof *def); + def = obstack_alloc (&map_obstack, sizeof *def); def->entry = hash_entry; *ud->map_symbol_def_tail = def; ud->map_symbol_def_tail = &def->next; @@ -930,8 +930,7 @@ section_already_linked (bfd *abfd, asection *sec, void *data) return; } - flags = bfd_get_section_flags (abfd, sec); - + flags = sec->flags; if ((flags & SEC_LINK_ONCE) == 0) return; @@ -979,7 +978,8 @@ section_already_linked (bfd *abfd, asection *sec, void *data) einfo (_("%P: %B: warning: ignoring duplicate section `%s'\n"), abfd, name); else - einfo (_("%P: %B: warning: ignoring duplicate `%s' section symbol `%s'\n"), + einfo (_("%P: %B: warning: ignoring duplicate `%s'" + " section symbol `%s'\n"), abfd, name, sec->comdat->name); break; @@ -993,7 +993,8 @@ section_already_linked (bfd *abfd, asection *sec, void *data) case SEC_LINK_DUPLICATES_SAME_SIZE: if (bfd_section_size (abfd, sec) != bfd_section_size (l->sec->owner, l->sec)) - einfo (_("%P: %B: warning: duplicate section `%s' has different size\n"), + einfo (_("%P: %B: warning: duplicate section `%s'" + " has different size\n"), abfd, name); break; } @@ -1381,20 +1382,14 @@ check_section_callback (lang_wild_statement_type *ptr ATTRIBUTE_UNUSED, struct wildcard_list *sec ATTRIBUTE_UNUSED, asection *section, lang_input_statement_type *file ATTRIBUTE_UNUSED, - void *output) + void *data) { /* Exclude sections that match UNIQUE_SECTION_LIST. */ if (unique_section_p (section)) return; - if (section->output_section == NULL) - { - flagword flags = bfd_get_section_flags (section->owner, section); - - if ((flags & SEC_READONLY) == 0) - ((lang_output_section_statement_type *) output)->all_input_readonly - = FALSE; - } + if (section->output_section == NULL && (section->flags & SEC_READONLY) == 0) + ((lang_output_section_statement_type *) data)->all_input_readonly = FALSE; } /* This is passed a file name which must have been seen already and @@ -1424,8 +1419,8 @@ lookup_name (const char *name) } if (search == NULL) - search = new_afile (name, lang_input_file_is_search_file_enum, default_target, - FALSE); + search = new_afile (name, lang_input_file_is_search_file_enum, + default_target, FALSE); /* If we have already added this file, or this file is not real (FIXME: can that ever actually happen?) or the name is NULL @@ -1819,7 +1814,8 @@ open_output (const char *name) /* Oh dear - we could not find any targets that satisfy our requirements. */ if (winner == NULL) - einfo (_("%P: warning: could not find any targets that match endianness requirement\n")); + einfo (_("%P: warning: could not find any targets" + " that match endianness requirement\n")); else output_target = winner->name; } @@ -2153,8 +2149,9 @@ lang_place_undefineds (void) /* Check for all readonly or some readwrite sections. */ static void -check_input_sections (lang_statement_union_type *s, - lang_output_section_statement_type *output_section_statement) +check_input_sections + (lang_statement_union_type *s, + lang_output_section_statement_type *output_section_statement) { for (; s != (lang_statement_union_type *) NULL; s = s->header.next) { @@ -2876,10 +2873,11 @@ insert_pad (lang_statement_union_type **ptr, /* Work out how much this section will move the dot point. */ static bfd_vma -size_input_section (lang_statement_union_type **this_ptr, - lang_output_section_statement_type *output_section_statement, - fill_type *fill, - bfd_vma dot) +size_input_section + (lang_statement_union_type **this_ptr, + lang_output_section_statement_type *output_section_statement, + fill_type *fill, + bfd_vma dot) { lang_input_section_type *is = &((*this_ptr)->input_section); asection *i = is->section; @@ -2929,11 +2927,9 @@ size_input_section (lang_statement_union_type **this_ptr, } #define IGNORE_SECTION(bfd, s) \ - (((bfd_get_section_flags (bfd, s) & SEC_THREAD_LOCAL) \ - ? ((bfd_get_section_flags (bfd, s) & (SEC_LOAD | SEC_NEVER_LOAD)) \ - != SEC_LOAD) \ - : ((bfd_get_section_flags (bfd, s) & (SEC_ALLOC | SEC_NEVER_LOAD)) \ - != SEC_ALLOC)) \ + (((s->flags & SEC_THREAD_LOCAL) != 0 \ + ? (s->flags & (SEC_LOAD | SEC_NEVER_LOAD)) != SEC_LOAD \ + : (s->flags & (SEC_ALLOC | SEC_NEVER_LOAD)) != SEC_ALLOC) \ || bfd_section_size (bfd, s) == 0) /* Check to see if any allocated sections overlap with other allocated @@ -3009,7 +3005,8 @@ os_region_check (lang_output_section_statement_type *os, { if (tree != NULL) { - einfo (_("%X%P: address 0x%v of %B section %s is not within region %s\n"), + einfo (_("%X%P: address 0x%v of %B section %s" + " is not within region %s\n"), region->current, os->bfd_section->owner, os->bfd_section->name, @@ -3064,9 +3061,10 @@ lang_size_sections_1 if (os->children.head == NULL || os->children.head->header.next != NULL - || os->children.head->header.type != lang_input_section_enum) - einfo (_("%P%X: Internal error on COFF shared library section %s\n"), - os->name); + || (os->children.head->header.type + != lang_input_section_enum)) + einfo (_("%P%X: Internal error on COFF shared library" + " section %s\n"), os->name); input = os->children.head->input_section.section; bfd_set_section_vma (os->bfd_section->owner, @@ -3088,10 +3086,10 @@ lang_size_sections_1 /* No address specified for this section, get one from the region specification. */ if (os->region == NULL - || (((bfd_get_section_flags (output_bfd, os->bfd_section) - & (SEC_ALLOC | SEC_LOAD)) != 0) + || ((os->bfd_section->flags & (SEC_ALLOC | SEC_LOAD)) && os->region->name[0] == '*' - && strcmp (os->region->name, DEFAULT_MEMORY_REGION) == 0)) + && strcmp (os->region->name, + DEFAULT_MEMORY_REGION) == 0)) { os->region = lang_memory_default (os->bfd_section); } @@ -3102,7 +3100,8 @@ lang_size_sections_1 if (!IGNORE_SECTION (output_bfd, os->bfd_section) && ! link_info.relocatable && check_regions - && strcmp (os->region->name, DEFAULT_MEMORY_REGION) == 0 + && strcmp (os->region->name, + DEFAULT_MEMORY_REGION) == 0 && lang_memory_region_list != NULL && (strcmp (lang_memory_region_list->name, DEFAULT_MEMORY_REGION) != 0 @@ -3113,16 +3112,18 @@ lang_size_sections_1 default memory region we can end up creating an excessively large binary, or even seg faulting when attempting to perform a negative seek. See - http://sources.redhat.com/ml/binutils/2003-04/msg00423.html + sources.redhat.com/ml/binutils/2003-04/msg00423.html for an example of this. This behaviour can be overridden by the using the --no-check-sections switch. */ if (command_line.check_section_addresses) - einfo (_("%P%F: error: no memory region specified for loadable section `%s'\n"), + einfo (_("%P%F: error: no memory region specified" + " for loadable section `%s'\n"), bfd_get_section_name (output_bfd, os->bfd_section)); else - einfo (_("%P: warning: no memory region specified for loadable section `%s'\n"), + einfo (_("%P: warning: no memory region specified" + " for loadable section `%s'\n"), bfd_get_section_name (output_bfd, os->bfd_section)); } @@ -3138,7 +3139,8 @@ lang_size_sections_1 os->bfd_section->alignment_power); if (dot != olddot && config.warn_section_align) - einfo (_("%P: warning: changing start of section %s by %u bytes\n"), + einfo (_("%P: warning: changing start of section" + " %s by %u bytes\n"), os->name, (unsigned int) (dot - olddot)); } } @@ -3154,7 +3156,8 @@ lang_size_sections_1 os->processed = 0; if (!r.valid_p) - einfo (_("%F%S: non constant or forward reference address expression for section %s\n"), + einfo (_("%F%S: non constant or forward reference" + " address expression for section %s\n"), os->name); dot = r.value + r.section->bfd_section->vma; @@ -3209,10 +3212,8 @@ lang_size_sections_1 addresses of sections after it. We have to update dot. */ if (os->region != NULL - && ((bfd_get_section_flags (output_bfd, os->bfd_section) - & SEC_NEVER_LOAD) == 0 - || (bfd_get_section_flags (output_bfd, os->bfd_section) - & (SEC_ALLOC | SEC_LOAD)))) + && ((os->bfd_section->flags & SEC_NEVER_LOAD) == 0 + || (os->bfd_section->flags & (SEC_ALLOC | SEC_LOAD)))) { os->region->current = dot; @@ -3371,7 +3372,8 @@ lang_size_sections_1 { /* If we don't have an output section, then just adjust the default memory address. */ - lang_memory_region_lookup (DEFAULT_MEMORY_REGION, FALSE)->current = newdot; + lang_memory_region_lookup (DEFAULT_MEMORY_REGION, + FALSE)->current = newdot; } else { @@ -3388,7 +3390,8 @@ lang_size_sections_1 /* If dot is advanced, this implies that the section should have space allocated to it, unless the user has explicitly stated that the section should never be loaded. */ - if (!(output_section_statement->flags & (SEC_NEVER_LOAD | SEC_ALLOC))) + if (!(output_section_statement->flags + & (SEC_NEVER_LOAD | SEC_ALLOC))) output_section_statement->bfd_section->flags |= SEC_ALLOC; dot = newdot; @@ -3662,10 +3665,11 @@ lang_do_assignments_1 } void -lang_do_assignments (lang_statement_union_type *s, - lang_output_section_statement_type *output_section_statement, - fill_type *fill, - bfd_vma dot) +lang_do_assignments + (lang_statement_union_type *s, + lang_output_section_statement_type *output_section_statement, + fill_type *fill, + bfd_vma dot) { /* Callers of exp_fold_tree need to increment this. */ lang_statement_iteration++; @@ -3779,7 +3783,8 @@ lang_finish (void) if (ts != NULL) { if (warn) - einfo (_("%P: warning: cannot find entry symbol %s; defaulting to %V\n"), + einfo (_("%P: warning: cannot find entry symbol %s;" + " defaulting to %V\n"), entry_symbol.name, bfd_get_section_vma (output_bfd, ts)); if (! bfd_set_start_address (output_bfd, @@ -3790,7 +3795,8 @@ lang_finish (void) else { if (warn) - einfo (_("%P: warning: cannot find entry symbol %s; not setting start address\n"), + einfo (_("%P: warning: cannot find entry symbol %s;" + " not setting start address\n"), entry_symbol.name); } } @@ -3822,8 +3828,9 @@ lang_check (void) for (file = file_chain.head; file != NULL; file = file->input_statement.next) { input_bfd = file->input_statement.the_bfd; - compatible = bfd_arch_get_compatible (input_bfd, output_bfd, - command_line.accept_unknown_input_arch); + compatible + = bfd_arch_get_compatible (input_bfd, output_bfd, + command_line.accept_unknown_input_arch); /* In general it is not possible to perform a relocatable link between differing object formats when the input @@ -3836,7 +3843,8 @@ lang_check (void) || bfd_get_flavour (input_bfd) != bfd_get_flavour (output_bfd)) && (bfd_get_file_flags (input_bfd) & HAS_RELOC) != 0) { - einfo (_("%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n"), + einfo (_("%P%F: Relocatable linking with relocations from" + " format %s (%B) to format %s (%B) is not supported\n"), bfd_get_target (input_bfd), input_bfd, bfd_get_target (output_bfd), output_bfd); /* einfo with %F exits. */ @@ -3845,7 +3853,8 @@ lang_check (void) if (compatible == NULL) { if (command_line.warn_mismatch) - einfo (_("%P: warning: %s architecture of input file `%B' is incompatible with %s output\n"), + einfo (_("%P: warning: %s architecture of input file `%B'" + " is incompatible with %s output\n"), bfd_printable_name (input_bfd), input_bfd, bfd_printable_name (output_bfd)); } @@ -3866,8 +3875,8 @@ lang_check (void) if (! bfd_merge_private_bfd_data (input_bfd, output_bfd)) { if (command_line.warn_mismatch) - einfo (_("%P%X: failed to merge target specific data of file %B\n"), - input_bfd); + einfo (_("%P%X: failed to merge target specific data" + " of file %B\n"), input_bfd); } if (! command_line.warn_mismatch) bfd_set_error_handler (pfn); @@ -4028,7 +4037,8 @@ lang_place_orphans (void) /* This message happens when using the svr3.ifile linker script, so I have disabled it. */ - info_msg (_("%P: no [COMMON] command, defaulting to .bss\n")); + info_msg (_("%P: no [COMMON] command," + " defaulting to .bss\n")); #endif default_common_section = lang_output_section_statement_lookup (".bss"); @@ -4696,8 +4706,9 @@ lang_get_regions (lang_memory_region_type **region, { *lma_region = lang_memory_region_lookup (lma_memspec, FALSE); - /* If no runtime region or VMA has been specified, but the load region has - been specified, then use the load region for the runtime region as well. */ + /* If no runtime region or VMA has been specified, but the load region + has been specified, then use the load region for the runtime region + as well. */ if (lma_memspec != NULL && ! have_vma && strcmp (memspec, DEFAULT_MEMORY_REGION) == 0) @@ -5496,7 +5507,8 @@ lang_register_vers_node (const char *name, if ((name[0] == '\0' && lang_elf_version_info != NULL) || (lang_elf_version_info && lang_elf_version_info->name[0] == '\0')) { - einfo (_("%X%P: anonymous version tag cannot be combined with other version tags\n")); + einfo (_("%X%P: anonymous version tag cannot be combined" + " with other version tags\n")); free (version); return; } @@ -5524,16 +5536,17 @@ lang_register_vers_node (const char *name, while (e2 && strcmp (e1->symbol, e2->symbol) == 0) { if (e1->mask == e2->mask) - einfo (_("%X%P: duplicate expression `%s' in version information\n"), - e1->symbol); + einfo (_("%X%P: duplicate expression `%s'" + " in version information\n"), e1->symbol); e2 = e2->next; } } else if (!e1->symbol) for (e2 = t->locals.remaining; e2 != NULL; e2 = e2->next) - if (strcmp (e1->pattern, e2->pattern) == 0 && e1->mask == e2->mask) - einfo (_("%X%P: duplicate expression `%s' in version information\n"), - e1->pattern); + if (strcmp (e1->pattern, e2->pattern) == 0 + && e1->mask == e2->mask) + einfo (_("%X%P: duplicate expression `%s'" + " in version information\n"), e1->pattern); } } @@ -5549,16 +5562,18 @@ lang_register_vers_node (const char *name, while (e2 && strcmp (e1->symbol, e2->symbol) == 0) { if (e1->mask == e2->mask) - einfo (_("%X%P: duplicate expression `%s' in version information\n"), + einfo (_("%X%P: duplicate expression `%s'" + " in version information\n"), e1->symbol); e2 = e2->next; } } else if (!e1->symbol) for (e2 = t->globals.remaining; e2 != NULL; e2 = e2->next) - if (strcmp (e1->pattern, e2->pattern) == 0 && e1->mask == e2->mask) - einfo (_("%X%P: duplicate expression `%s' in version information\n"), - e1->pattern); + if (strcmp (e1->pattern, e2->pattern) == 0 + && e1->mask == e2->mask) + einfo (_("%X%P: duplicate expression `%s'" + " in version information\n"), e1->pattern); } } @@ -5631,8 +5646,7 @@ lang_do_version_exports_section (void) /* Do not free the contents, as we used them creating the regex. */ /* Do not include this section in the link. */ - bfd_set_section_flags (is->the_bfd, sec, - bfd_get_section_flags (is->the_bfd, sec) | SEC_EXCLUDE); + sec->flags |= SEC_EXCLUDE; } lreg = lang_new_vers_pattern (NULL, "*", NULL); diff --git a/ld/ldwrite.c b/ld/ldwrite.c index 47a58061d85..b7637e079ff 100644 --- a/ld/ldwrite.c +++ b/ld/ldwrite.c @@ -1,6 +1,6 @@ /* ldwrite.c -- write out the linked file - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002, 2003 - Free Software Foundation, Inc. + Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002, + 2003, 2004 Free Software Foundation, Inc. Written by Steve Chamberlain sac@cygnus.com This file is part of GLD, the Gnu Linker. diff --git a/ld/lexsup.c b/ld/lexsup.c index 51373413f10..55ab5ee0da0 100644 --- a/ld/lexsup.c +++ b/ld/lexsup.c @@ -184,274 +184,312 @@ struct ld_option static const struct ld_option ld_options[] = { { {NULL, required_argument, NULL, '\0'}, - 'a', N_("KEYWORD"), N_("Shared library control for HP/UX compatibility"), - ONE_DASH }, + 'a', N_("KEYWORD"), N_("Shared library control for HP/UX compatibility"), + ONE_DASH }, { {"architecture", required_argument, NULL, 'A'}, - 'A', N_("ARCH"), N_("Set architecture") , TWO_DASHES }, + 'A', N_("ARCH"), N_("Set architecture") , TWO_DASHES }, { {"format", required_argument, NULL, 'b'}, - 'b', N_("TARGET"), N_("Specify target for following input files"), TWO_DASHES }, + 'b', N_("TARGET"), N_("Specify target for following input files"), + TWO_DASHES }, { {"mri-script", required_argument, NULL, 'c'}, - 'c', N_("FILE"), N_("Read MRI format linker script"), TWO_DASHES }, + 'c', N_("FILE"), N_("Read MRI format linker script"), TWO_DASHES }, { {"dc", no_argument, NULL, 'd'}, - 'd', NULL, N_("Force common symbols to be defined"), ONE_DASH }, + 'd', NULL, N_("Force common symbols to be defined"), ONE_DASH }, { {"dp", no_argument, NULL, 'd'}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"entry", required_argument, NULL, 'e'}, - 'e', N_("ADDRESS"), N_("Set start address"), TWO_DASHES }, + 'e', N_("ADDRESS"), N_("Set start address"), TWO_DASHES }, { {"export-dynamic", no_argument, NULL, OPTION_EXPORT_DYNAMIC}, - 'E', NULL, N_("Export all dynamic symbols"), TWO_DASHES }, + 'E', NULL, N_("Export all dynamic symbols"), TWO_DASHES }, { {"EB", no_argument, NULL, OPTION_EB}, - '\0', NULL, N_("Link big-endian objects"), ONE_DASH }, + '\0', NULL, N_("Link big-endian objects"), ONE_DASH }, { {"EL", no_argument, NULL, OPTION_EL}, - '\0', NULL, N_("Link little-endian objects"), ONE_DASH }, + '\0', NULL, N_("Link little-endian objects"), ONE_DASH }, { {"auxiliary", required_argument, NULL, 'f'}, - 'f', N_("SHLIB"), N_("Auxiliary filter for shared object symbol table"), - TWO_DASHES }, + 'f', N_("SHLIB"), N_("Auxiliary filter for shared object symbol table"), + TWO_DASHES }, { {"filter", required_argument, NULL, 'F'}, - 'F', N_("SHLIB"), N_("Filter for shared object symbol table"), TWO_DASHES }, + 'F', N_("SHLIB"), N_("Filter for shared object symbol table"), + TWO_DASHES }, { {NULL, no_argument, NULL, '\0'}, - 'g', NULL, N_("Ignored"), ONE_DASH }, + 'g', NULL, N_("Ignored"), ONE_DASH }, { {"gpsize", required_argument, NULL, 'G'}, - 'G', N_("SIZE"), N_("Small data size (if no size, same as --shared)"), - TWO_DASHES }, + 'G', N_("SIZE"), N_("Small data size (if no size, same as --shared)"), + TWO_DASHES }, { {"soname", required_argument, NULL, OPTION_SONAME}, - 'h', N_("FILENAME"), N_("Set internal name of shared library"), ONE_DASH }, + 'h', N_("FILENAME"), N_("Set internal name of shared library"), ONE_DASH }, { {"dynamic-linker", required_argument, NULL, OPTION_DYNAMIC_LINKER}, - 'I', N_("PROGRAM"), N_("Set PROGRAM as the dynamic linker to use"), TWO_DASHES }, + 'I', N_("PROGRAM"), N_("Set PROGRAM as the dynamic linker to use"), + TWO_DASHES }, { {"library", required_argument, NULL, 'l'}, - 'l', N_("LIBNAME"), N_("Search for library LIBNAME"), TWO_DASHES }, + 'l', N_("LIBNAME"), N_("Search for library LIBNAME"), TWO_DASHES }, { {"library-path", required_argument, NULL, 'L'}, - 'L', N_("DIRECTORY"), N_("Add DIRECTORY to library search path"), TWO_DASHES }, + 'L', N_("DIRECTORY"), N_("Add DIRECTORY to library search path"), + TWO_DASHES }, { {NULL, required_argument, NULL, '\0'}, - 'm', N_("EMULATION"), N_("Set emulation"), ONE_DASH }, + 'm', N_("EMULATION"), N_("Set emulation"), ONE_DASH }, { {"print-map", no_argument, NULL, 'M'}, - 'M', NULL, N_("Print map file on standard output"), TWO_DASHES }, + 'M', NULL, N_("Print map file on standard output"), TWO_DASHES }, { {"nmagic", no_argument, NULL, 'n'}, - 'n', NULL, N_("Do not page align data"), TWO_DASHES }, + 'n', NULL, N_("Do not page align data"), TWO_DASHES }, { {"omagic", no_argument, NULL, 'N'}, - 'N', NULL, N_("Do not page align data, do not make text readonly"), - EXACTLY_TWO_DASHES }, + 'N', NULL, N_("Do not page align data, do not make text readonly"), + EXACTLY_TWO_DASHES }, { {"no-omagic", no_argument, NULL, OPTION_NO_OMAGIC}, - '\0', NULL, N_("Page align data, make text readonly"), EXACTLY_TWO_DASHES }, + '\0', NULL, N_("Page align data, make text readonly"), + EXACTLY_TWO_DASHES }, { {"output", required_argument, NULL, 'o'}, - 'o', N_("FILE"), N_("Set output file name"), EXACTLY_TWO_DASHES }, + 'o', N_("FILE"), N_("Set output file name"), EXACTLY_TWO_DASHES }, { {NULL, required_argument, NULL, '\0'}, - 'O', NULL, N_("Optimize output file"), ONE_DASH }, + 'O', NULL, N_("Optimize output file"), ONE_DASH }, { {"Qy", no_argument, NULL, OPTION_IGNORE}, - '\0', NULL, N_("Ignored for SVR4 compatibility"), ONE_DASH }, + '\0', NULL, N_("Ignored for SVR4 compatibility"), ONE_DASH }, { {"emit-relocs", no_argument, NULL, 'q'}, - 'q', NULL, "Generate relocations in final output", TWO_DASHES }, + 'q', NULL, "Generate relocations in final output", TWO_DASHES }, { {"relocatable", no_argument, NULL, 'r'}, - 'r', NULL, N_("Generate relocatable output"), TWO_DASHES }, + 'r', NULL, N_("Generate relocatable output"), TWO_DASHES }, { {NULL, no_argument, NULL, '\0'}, - 'i', NULL, NULL, ONE_DASH }, + 'i', NULL, NULL, ONE_DASH }, { {"just-symbols", required_argument, NULL, 'R'}, - 'R', N_("FILE"), N_("Just link symbols (if directory, same as --rpath)"), - TWO_DASHES }, + 'R', N_("FILE"), N_("Just link symbols (if directory, same as --rpath)"), + TWO_DASHES }, { {"strip-all", no_argument, NULL, 's'}, - 's', NULL, N_("Strip all symbols"), TWO_DASHES }, + 's', NULL, N_("Strip all symbols"), TWO_DASHES }, { {"strip-debug", no_argument, NULL, 'S'}, - 'S', NULL, N_("Strip debugging symbols"), TWO_DASHES }, + 'S', NULL, N_("Strip debugging symbols"), TWO_DASHES }, { {"strip-discarded", no_argument, NULL, OPTION_STRIP_DISCARDED}, - '\0', NULL, N_("Strip symbols in discarded sections"), TWO_DASHES }, + '\0', NULL, N_("Strip symbols in discarded sections"), TWO_DASHES }, { {"no-strip-discarded", no_argument, NULL, OPTION_NO_STRIP_DISCARDED}, - '\0', NULL, N_("Do not strip symbols in discarded sections"), TWO_DASHES }, + '\0', NULL, N_("Do not strip symbols in discarded sections"), TWO_DASHES }, { {"trace", no_argument, NULL, 't'}, - 't', NULL, N_("Trace file opens"), TWO_DASHES }, + 't', NULL, N_("Trace file opens"), TWO_DASHES }, { {"script", required_argument, NULL, 'T'}, - 'T', N_("FILE"), N_("Read linker script"), TWO_DASHES }, + 'T', N_("FILE"), N_("Read linker script"), TWO_DASHES }, { {"undefined", required_argument, NULL, 'u'}, - 'u', N_("SYMBOL"), N_("Start with undefined reference to SYMBOL"), TWO_DASHES }, + 'u', N_("SYMBOL"), N_("Start with undefined reference to SYMBOL"), + TWO_DASHES }, { {"unique", optional_argument, NULL, OPTION_UNIQUE}, - '\0', N_("[=SECTION]"), N_("Don't merge input [SECTION | orphan] sections"), TWO_DASHES }, + '\0', N_("[=SECTION]"), + N_("Don't merge input [SECTION | orphan] sections"), TWO_DASHES }, { {"Ur", no_argument, NULL, OPTION_UR}, - '\0', NULL, N_("Build global constructor/destructor tables"), ONE_DASH }, + '\0', NULL, N_("Build global constructor/destructor tables"), ONE_DASH }, { {"version", no_argument, NULL, OPTION_VERSION}, - 'v', NULL, N_("Print version information"), TWO_DASHES }, + 'v', NULL, N_("Print version information"), TWO_DASHES }, { {NULL, no_argument, NULL, '\0'}, - 'V', NULL, N_("Print version and emulation information"), ONE_DASH }, + 'V', NULL, N_("Print version and emulation information"), ONE_DASH }, { {"discard-all", no_argument, NULL, 'x'}, - 'x', NULL, N_("Discard all local symbols"), TWO_DASHES }, + 'x', NULL, N_("Discard all local symbols"), TWO_DASHES }, { {"discard-locals", no_argument, NULL, 'X'}, - 'X', NULL, N_("Discard temporary local symbols (default)"), TWO_DASHES }, + 'X', NULL, N_("Discard temporary local symbols (default)"), TWO_DASHES }, { {"discard-none", no_argument, NULL, OPTION_DISCARD_NONE}, - '\0', NULL, N_("Don't discard any local symbols"), TWO_DASHES }, + '\0', NULL, N_("Don't discard any local symbols"), TWO_DASHES }, { {"trace-symbol", required_argument, NULL, 'y'}, - 'y', N_("SYMBOL"), N_("Trace mentions of SYMBOL"), TWO_DASHES }, + 'y', N_("SYMBOL"), N_("Trace mentions of SYMBOL"), TWO_DASHES }, { {NULL, required_argument, NULL, '\0'}, - 'Y', N_("PATH"), N_("Default search path for Solaris compatibility"), ONE_DASH }, + 'Y', N_("PATH"), N_("Default search path for Solaris compatibility"), + ONE_DASH }, { {"start-group", no_argument, NULL, '('}, - '(', NULL, N_("Start a group"), TWO_DASHES }, + '(', NULL, N_("Start a group"), TWO_DASHES }, { {"end-group", no_argument, NULL, ')'}, - ')', NULL, N_("End a group"), TWO_DASHES }, - { {"accept-unknown-input-arch", no_argument, NULL, OPTION_ACCEPT_UNKNOWN_INPUT_ARCH}, - '\0', NULL, N_("Accept input files whose architecture cannot be determined"), TWO_DASHES }, - { {"no-accept-unknown-input-arch", no_argument, NULL, OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH}, - '\0', NULL, N_("Reject input files whose architecture is unknown"), TWO_DASHES }, + ')', NULL, N_("End a group"), TWO_DASHES }, + { {"accept-unknown-input-arch", no_argument, NULL, + OPTION_ACCEPT_UNKNOWN_INPUT_ARCH}, + '\0', NULL, + N_("Accept input files whose architecture cannot be determined"), + TWO_DASHES }, + { {"no-accept-unknown-input-arch", no_argument, NULL, + OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH}, + '\0', NULL, N_("Reject input files whose architecture is unknown"), + TWO_DASHES }, { {"assert", required_argument, NULL, OPTION_ASSERT}, - '\0', N_("KEYWORD"), N_("Ignored for SunOS compatibility"), ONE_DASH }, + '\0', N_("KEYWORD"), N_("Ignored for SunOS compatibility"), ONE_DASH }, { {"Bdynamic", no_argument, NULL, OPTION_CALL_SHARED}, - '\0', NULL, N_("Link against shared libraries"), ONE_DASH }, + '\0', NULL, N_("Link against shared libraries"), ONE_DASH }, { {"dy", no_argument, NULL, OPTION_CALL_SHARED}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"call_shared", no_argument, NULL, OPTION_CALL_SHARED}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"Bstatic", no_argument, NULL, OPTION_NON_SHARED}, - '\0', NULL, N_("Do not link against shared libraries"), ONE_DASH }, + '\0', NULL, N_("Do not link against shared libraries"), ONE_DASH }, { {"dn", no_argument, NULL, OPTION_NON_SHARED}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"non_shared", no_argument, NULL, OPTION_NON_SHARED}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"static", no_argument, NULL, OPTION_NON_SHARED}, - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"Bsymbolic", no_argument, NULL, OPTION_SYMBOLIC}, - '\0', NULL, N_("Bind global references locally"), ONE_DASH }, + '\0', NULL, N_("Bind global references locally"), ONE_DASH }, { {"check-sections", no_argument, NULL, OPTION_CHECK_SECTIONS}, - '\0', NULL, N_("Check section addresses for overlaps (default)"), TWO_DASHES }, + '\0', NULL, N_("Check section addresses for overlaps (default)"), + TWO_DASHES }, { {"no-check-sections", no_argument, NULL, OPTION_NO_CHECK_SECTIONS}, - '\0', NULL, N_("Do not check section addresses for overlaps"), - TWO_DASHES }, + '\0', NULL, N_("Do not check section addresses for overlaps"), + TWO_DASHES }, { {"cref", no_argument, NULL, OPTION_CREF}, - '\0', NULL, N_("Output cross reference table"), TWO_DASHES }, + '\0', NULL, N_("Output cross reference table"), TWO_DASHES }, { {"defsym", required_argument, NULL, OPTION_DEFSYM}, - '\0', N_("SYMBOL=EXPRESSION"), N_("Define a symbol"), TWO_DASHES }, + '\0', N_("SYMBOL=EXPRESSION"), N_("Define a symbol"), TWO_DASHES }, { {"demangle", optional_argument, NULL, OPTION_DEMANGLE}, - '\0', N_("[=STYLE]"), N_("Demangle symbol names [using STYLE]"), TWO_DASHES }, + '\0', N_("[=STYLE]"), N_("Demangle symbol names [using STYLE]"), + TWO_DASHES }, { {"embedded-relocs", no_argument, NULL, OPTION_EMBEDDED_RELOCS}, - '\0', NULL, N_("Generate embedded relocs"), TWO_DASHES}, + '\0', NULL, N_("Generate embedded relocs"), TWO_DASHES}, { {"fini", required_argument, NULL, OPTION_FINI}, - '\0', N_("SYMBOL"), N_("Call SYMBOL at unload-time"), ONE_DASH }, + '\0', N_("SYMBOL"), N_("Call SYMBOL at unload-time"), ONE_DASH }, { {"force-exe-suffix", no_argument, NULL, OPTION_FORCE_EXE_SUFFIX}, - '\0', NULL, N_("Force generation of file with .exe suffix"), TWO_DASHES}, + '\0', NULL, N_("Force generation of file with .exe suffix"), TWO_DASHES}, { {"gc-sections", no_argument, NULL, OPTION_GC_SECTIONS}, - '\0', NULL, N_("Remove unused sections (on some targets)"), - TWO_DASHES }, + '\0', NULL, N_("Remove unused sections (on some targets)"), + TWO_DASHES }, { {"no-gc-sections", no_argument, NULL, OPTION_NO_GC_SECTIONS}, - '\0', NULL, N_("Don't remove unused sections (default)"), - TWO_DASHES }, + '\0', NULL, N_("Don't remove unused sections (default)"), + TWO_DASHES }, { {"hash-size=", required_argument, NULL, OPTION_HASH_SIZE}, - '\0', NULL, N_("Set default hash table size close to "), TWO_DASHES }, + '\0', NULL, N_("Set default hash table size close to "), + TWO_DASHES }, { {"help", no_argument, NULL, OPTION_HELP}, - '\0', NULL, N_("Print option help"), TWO_DASHES }, + '\0', NULL, N_("Print option help"), TWO_DASHES }, { {"init", required_argument, NULL, OPTION_INIT}, - '\0', N_("SYMBOL"), N_("Call SYMBOL at load-time"), ONE_DASH }, + '\0', N_("SYMBOL"), N_("Call SYMBOL at load-time"), ONE_DASH }, { {"Map", required_argument, NULL, OPTION_MAP}, - '\0', N_("FILE"), N_("Write a map file"), ONE_DASH }, + '\0', N_("FILE"), N_("Write a map file"), ONE_DASH }, { {"no-define-common", no_argument, NULL, OPTION_NO_DEFINE_COMMON}, - '\0', NULL, N_("Do not define Common storage"), TWO_DASHES }, + '\0', NULL, N_("Do not define Common storage"), TWO_DASHES }, { {"no-demangle", no_argument, NULL, OPTION_NO_DEMANGLE }, - '\0', NULL, N_("Do not demangle symbol names"), TWO_DASHES }, + '\0', NULL, N_("Do not demangle symbol names"), TWO_DASHES }, { {"no-keep-memory", no_argument, NULL, OPTION_NO_KEEP_MEMORY}, - '\0', NULL, N_("Use less memory and more disk I/O"), TWO_DASHES }, + '\0', NULL, N_("Use less memory and more disk I/O"), TWO_DASHES }, { {"no-undefined", no_argument, NULL, OPTION_NO_UNDEFINED}, - '\0', NULL, N_("Do not allow unresolved references in object files"), TWO_DASHES }, + '\0', NULL, N_("Do not allow unresolved references in object files"), + TWO_DASHES }, { {"allow-shlib-undefined", no_argument, NULL, OPTION_ALLOW_SHLIB_UNDEFINED}, - '\0', NULL, N_("Allow unresolved references in shared libaries"), TWO_DASHES }, - { {"no-allow-shlib-undefined", no_argument, NULL, OPTION_NO_ALLOW_SHLIB_UNDEFINED}, - '\0', NULL, N_("Do not allow unresolved references in shared libs"), TWO_DASHES }, - { {"allow-multiple-definition", no_argument, NULL, OPTION_ALLOW_MULTIPLE_DEFINITION}, - '\0', NULL, N_("Allow multiple definitions"), TWO_DASHES }, + '\0', NULL, N_("Allow unresolved references in shared libaries"), + TWO_DASHES }, + { {"no-allow-shlib-undefined", no_argument, NULL, + OPTION_NO_ALLOW_SHLIB_UNDEFINED}, + '\0', NULL, N_("Do not allow unresolved references in shared libs"), + TWO_DASHES }, + { {"allow-multiple-definition", no_argument, NULL, + OPTION_ALLOW_MULTIPLE_DEFINITION}, + '\0', NULL, N_("Allow multiple definitions"), TWO_DASHES }, { {"no-undefined-version", no_argument, NULL, OPTION_NO_UNDEFINED_VERSION}, - '\0', NULL, N_("Disallow undefined version"), TWO_DASHES }, + '\0', NULL, N_("Disallow undefined version"), TWO_DASHES }, { {"no-warn-mismatch", no_argument, NULL, OPTION_NO_WARN_MISMATCH}, - '\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES}, + '\0', NULL, N_("Don't warn about mismatched input files"), TWO_DASHES}, { {"no-whole-archive", no_argument, NULL, OPTION_NO_WHOLE_ARCHIVE}, - '\0', NULL, N_("Turn off --whole-archive"), TWO_DASHES }, + '\0', NULL, N_("Turn off --whole-archive"), TWO_DASHES }, { {"noinhibit-exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC}, - '\0', NULL, N_("Create an output file even if errors occur"), TWO_DASHES }, + '\0', NULL, N_("Create an output file even if errors occur"), + TWO_DASHES }, { {"noinhibit_exec", no_argument, NULL, OPTION_NOINHIBIT_EXEC}, - '\0', NULL, NULL, NO_HELP }, + '\0', NULL, NULL, NO_HELP }, { {"nostdlib", no_argument, NULL, OPTION_NOSTDLIB}, - '\0', NULL, N_("Only use library directories specified on\n\t\t\t\tthe command line"), ONE_DASH }, + '\0', NULL, N_("Only use library directories specified on\n" + "\t\t\t\tthe command line"), ONE_DASH }, { {"oformat", required_argument, NULL, OPTION_OFORMAT}, - '\0', N_("TARGET"), N_("Specify target of output file"), EXACTLY_TWO_DASHES }, + '\0', N_("TARGET"), N_("Specify target of output file"), + EXACTLY_TWO_DASHES }, { {"qmagic", no_argument, NULL, OPTION_IGNORE}, - '\0', NULL, N_("Ignored for Linux compatibility"), ONE_DASH }, - { {"reduce-memory-overheads", no_argument, NULL, OPTION_REDUCE_MEMORY_OVERHEADS}, - '\0', NULL, N_("Reduce memory overheads, possibly taking much longer"), TWO_DASHES }, + '\0', NULL, N_("Ignored for Linux compatibility"), ONE_DASH }, + { {"reduce-memory-overheads", no_argument, NULL, + OPTION_REDUCE_MEMORY_OVERHEADS}, + '\0', NULL, N_("Reduce memory overheads, possibly taking much longer"), + TWO_DASHES }, { {"relax", no_argument, NULL, OPTION_RELAX}, - '\0', NULL, N_("Relax branches on certain targets"), TWO_DASHES }, + '\0', NULL, N_("Relax branches on certain targets"), TWO_DASHES }, { {"retain-symbols-file", required_argument, NULL, - OPTION_RETAIN_SYMBOLS_FILE}, - '\0', N_("FILE"), N_("Keep only symbols listed in FILE"), TWO_DASHES }, + OPTION_RETAIN_SYMBOLS_FILE}, + '\0', N_("FILE"), N_("Keep only symbols listed in FILE"), TWO_DASHES }, { {"rpath", required_argument, NULL, OPTION_RPATH}, - '\0', N_("PATH"), N_("Set runtime shared library search path"), ONE_DASH }, + '\0', N_("PATH"), N_("Set runtime shared library search path"), ONE_DASH }, { {"rpath-link", required_argument, NULL, OPTION_RPATH_LINK}, - '\0', N_("PATH"), N_("Set link time shared library search path"), ONE_DASH }, + '\0', N_("PATH"), N_("Set link time shared library search path"), + ONE_DASH }, { {"shared", no_argument, NULL, OPTION_SHARED}, - '\0', NULL, N_("Create a shared library"), ONE_DASH }, + '\0', NULL, N_("Create a shared library"), ONE_DASH }, { {"Bshareable", no_argument, NULL, OPTION_SHARED }, /* FreeBSD. */ - '\0', NULL, NULL, ONE_DASH }, + '\0', NULL, NULL, ONE_DASH }, { {"pie", no_argument, NULL, OPTION_PIE}, - '\0', NULL, N_("Create a position independent executable"), ONE_DASH }, + '\0', NULL, N_("Create a position independent executable"), ONE_DASH }, { {"pic-executable", no_argument, NULL, OPTION_PIE}, - '\0', NULL, NULL, TWO_DASHES }, + '\0', NULL, NULL, TWO_DASHES }, { {"sort-common", no_argument, NULL, OPTION_SORT_COMMON}, - '\0', NULL, N_("Sort common symbols by size"), TWO_DASHES }, + '\0', NULL, N_("Sort common symbols by size"), TWO_DASHES }, { {"sort_common", no_argument, NULL, OPTION_SORT_COMMON}, - '\0', NULL, NULL, NO_HELP }, + '\0', NULL, NULL, NO_HELP }, { {"spare-dynamic-tags", required_argument, NULL, OPTION_SPARE_DYNAMIC_TAGS}, - '\0', N_("COUNT"), N_("How many tags to reserve in .dynamic section"), TWO_DASHES }, + '\0', N_("COUNT"), N_("How many tags to reserve in .dynamic section"), + TWO_DASHES }, { {"split-by-file", optional_argument, NULL, OPTION_SPLIT_BY_FILE}, - '\0', N_("[=SIZE]"), N_("Split output sections every SIZE octets"), TWO_DASHES }, + '\0', N_("[=SIZE]"), N_("Split output sections every SIZE octets"), + TWO_DASHES }, { {"split-by-reloc", optional_argument, NULL, OPTION_SPLIT_BY_RELOC}, - '\0', N_("[=COUNT]"), N_("Split output sections every COUNT relocs"), TWO_DASHES }, + '\0', N_("[=COUNT]"), N_("Split output sections every COUNT relocs"), + TWO_DASHES }, { {"stats", no_argument, NULL, OPTION_STATS}, - '\0', NULL, N_("Print memory usage statistics"), TWO_DASHES }, + '\0', NULL, N_("Print memory usage statistics"), TWO_DASHES }, { {"target-help", no_argument, NULL, OPTION_TARGET_HELP}, - '\0', NULL, N_("Display target specific options"), TWO_DASHES }, + '\0', NULL, N_("Display target specific options"), TWO_DASHES }, { {"task-link", required_argument, NULL, OPTION_TASK_LINK}, - '\0', N_("SYMBOL"), N_("Do task level linking"), TWO_DASHES }, + '\0', N_("SYMBOL"), N_("Do task level linking"), TWO_DASHES }, { {"traditional-format", no_argument, NULL, OPTION_TRADITIONAL_FORMAT}, - '\0', NULL, N_("Use same format as native linker"), TWO_DASHES }, + '\0', NULL, N_("Use same format as native linker"), TWO_DASHES }, { {"section-start", required_argument, NULL, OPTION_SECTION_START}, - '\0', N_("SECTION=ADDRESS"), N_("Set address of named section"), TWO_DASHES }, + '\0', N_("SECTION=ADDRESS"), N_("Set address of named section"), + TWO_DASHES }, { {"Tbss", required_argument, NULL, OPTION_TBSS}, - '\0', N_("ADDRESS"), N_("Set address of .bss section"), ONE_DASH }, + '\0', N_("ADDRESS"), N_("Set address of .bss section"), ONE_DASH }, { {"Tdata", required_argument, NULL, OPTION_TDATA}, - '\0', N_("ADDRESS"), N_("Set address of .data section"), ONE_DASH }, + '\0', N_("ADDRESS"), N_("Set address of .data section"), ONE_DASH }, { {"Ttext", required_argument, NULL, OPTION_TTEXT}, - '\0', N_("ADDRESS"), N_("Set address of .text section"), ONE_DASH }, - { {"unresolved-symbols=", required_argument, NULL, OPTION_UNRESOLVED_SYMBOLS}, - '\0', NULL, N_("How to handle unresolved symbols. is:\n\t\t\t\tignore-all, report-all, ignore-in-object-files,\n\t\t\t\tignore-in-shared-libs"), - TWO_DASHES }, + '\0', N_("ADDRESS"), N_("Set address of .text section"), ONE_DASH }, + { {"unresolved-symbols=", required_argument, NULL, + OPTION_UNRESOLVED_SYMBOLS}, + '\0', NULL, N_("How to handle unresolved symbols. is:\n" + "\t\t\t\tignore-all, report-all, ignore-in-object-files,\n" + "\t\t\t\tignore-in-shared-libs"), TWO_DASHES }, { {"verbose", no_argument, NULL, OPTION_VERBOSE}, - '\0', NULL, N_("Output lots of information during link"), TWO_DASHES }, + '\0', NULL, N_("Output lots of information during link"), TWO_DASHES }, { {"dll-verbose", no_argument, NULL, OPTION_VERBOSE}, /* Linux. */ - '\0', NULL, NULL, NO_HELP }, + '\0', NULL, NULL, NO_HELP }, { {"version-script", required_argument, NULL, OPTION_VERSION_SCRIPT }, - '\0', N_("FILE"), N_("Read version information script"), TWO_DASHES }, + '\0', N_("FILE"), N_("Read version information script"), TWO_DASHES }, { {"version-exports-section", required_argument, NULL, OPTION_VERSION_EXPORTS_SECTION }, - '\0', N_("SYMBOL"), N_("Take export symbols list from .exports, using\n\t\t\t\tSYMBOL as the version."), - TWO_DASHES }, + '\0', N_("SYMBOL"), N_("Take export symbols list from .exports, using\n" + "\t\t\t\tSYMBOL as the version."), TWO_DASHES }, { {"warn-common", no_argument, NULL, OPTION_WARN_COMMON}, - '\0', NULL, N_("Warn about duplicate common symbols"), TWO_DASHES }, + '\0', NULL, N_("Warn about duplicate common symbols"), TWO_DASHES }, { {"warn-constructors", no_argument, NULL, OPTION_WARN_CONSTRUCTORS}, - '\0', NULL, N_("Warn if global constructors/destructors are seen"), - TWO_DASHES }, + '\0', NULL, N_("Warn if global constructors/destructors are seen"), + TWO_DASHES }, { {"warn-multiple-gp", no_argument, NULL, OPTION_WARN_MULTIPLE_GP}, - '\0', NULL, N_("Warn if the multiple GP values are used"), TWO_DASHES }, + '\0', NULL, N_("Warn if the multiple GP values are used"), TWO_DASHES }, { {"warn-once", no_argument, NULL, OPTION_WARN_ONCE}, - '\0', NULL, N_("Warn only once per undefined symbol"), TWO_DASHES }, + '\0', NULL, N_("Warn only once per undefined symbol"), TWO_DASHES }, { {"warn-section-align", no_argument, NULL, OPTION_WARN_SECTION_ALIGN}, - '\0', NULL, N_("Warn if start of section changes due to alignment"), - TWO_DASHES }, - { {"warn-unresolved-symbols", no_argument, NULL, OPTION_WARN_UNRESOLVED_SYMBOLS}, + '\0', NULL, N_("Warn if start of section changes due to alignment"), + TWO_DASHES }, + { {"warn-unresolved-symbols", no_argument, NULL, + OPTION_WARN_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("Report unresolved symbols as warnings"), TWO_DASHES }, - { {"error-unresolved-symbols", no_argument, NULL, OPTION_ERROR_UNRESOLVED_SYMBOLS}, + { {"error-unresolved-symbols", no_argument, NULL, + OPTION_ERROR_UNRESOLVED_SYMBOLS}, '\0', NULL, N_("Report unresolved symbols as errors"), TWO_DASHES }, { {"fatal-warnings", no_argument, NULL, OPTION_WARN_FATAL}, - '\0', NULL, N_("Treat warnings as errors"), - TWO_DASHES }, + '\0', NULL, N_("Treat warnings as errors"), + TWO_DASHES }, { {"whole-archive", no_argument, NULL, OPTION_WHOLE_ARCHIVE}, - '\0', NULL, N_("Include all objects from following archives"), TWO_DASHES }, + '\0', NULL, N_("Include all objects from following archives"), + TWO_DASHES }, { {"as-needed", no_argument, NULL, OPTION_AS_NEEDED}, - '\0', NULL, N_("Only set DT_NEEDED for following dynamic libs if used"), TWO_DASHES }, + '\0', NULL, N_("Only set DT_NEEDED for following dynamic libs if used"), + TWO_DASHES }, { {"no-as-needed", no_argument, NULL, OPTION_NO_AS_NEEDED}, - '\0', NULL, N_("Always set DT_NEEDED for following dynamic libs"), TWO_DASHES }, + '\0', NULL, N_("Always set DT_NEEDED for following dynamic libs"), + TWO_DASHES }, { {"wrap", required_argument, NULL, OPTION_WRAP}, - '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES }, + '\0', N_("SYMBOL"), N_("Use wrapper functions for SYMBOL"), TWO_DASHES }, }; #define OPTION_COUNT ARRAY_SIZE (ld_options) @@ -789,13 +827,15 @@ parse_args (unsigned argc, char **argv) link_info.keep_memory = FALSE; break; case OPTION_NO_UNDEFINED: - link_info.unresolved_syms_in_objects = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_objects + = how_to_report_unresolved_symbols; break; case OPTION_ALLOW_SHLIB_UNDEFINED: link_info.unresolved_syms_in_shared_libs = RM_IGNORE; break; case OPTION_NO_ALLOW_SHLIB_UNDEFINED: - link_info.unresolved_syms_in_shared_libs = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_shared_libs + = how_to_report_unresolved_symbols; break; case OPTION_UNRESOLVED_SYMBOLS: if (strcmp (optarg, "ignore-all") == 0) @@ -805,17 +845,21 @@ parse_args (unsigned argc, char **argv) } else if (strcmp (optarg, "report-all") == 0) { - link_info.unresolved_syms_in_objects = how_to_report_unresolved_symbols; - link_info.unresolved_syms_in_shared_libs = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_objects + = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_shared_libs + = how_to_report_unresolved_symbols; } else if (strcmp (optarg, "ignore-in-object-files") == 0) { link_info.unresolved_syms_in_objects = RM_IGNORE; - link_info.unresolved_syms_in_shared_libs = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_shared_libs + = how_to_report_unresolved_symbols; } else if (strcmp (optarg, "ignore-in-shared-libs") == 0) { - link_info.unresolved_syms_in_objects = how_to_report_unresolved_symbols; + link_info.unresolved_syms_in_objects + = how_to_report_unresolved_symbols; link_info.unresolved_syms_in_shared_libs = RM_IGNORE; } else @@ -828,14 +872,14 @@ parse_args (unsigned argc, char **argv) if (link_info.unresolved_syms_in_shared_libs == RM_GENERATE_ERROR) link_info.unresolved_syms_in_shared_libs = RM_GENERATE_WARNING; break; - + case OPTION_ERROR_UNRESOLVED_SYMBOLS: how_to_report_unresolved_symbols = RM_GENERATE_ERROR; if (link_info.unresolved_syms_in_objects == RM_GENERATE_WARNING) link_info.unresolved_syms_in_objects = RM_GENERATE_ERROR; if (link_info.unresolved_syms_in_shared_libs == RM_GENERATE_WARNING) link_info.unresolved_syms_in_shared_libs = RM_GENERATE_ERROR; - break; + break; case OPTION_ALLOW_MULTIPLE_DEFINITION: link_info.allow_multiple_definition = TRUE; break; @@ -1037,13 +1081,15 @@ parse_args (unsigned argc, char **argv) /* Check for =... */ optarg2 = strchr (optarg, '='); if (optarg2 == NULL) - einfo (_("%P%F: invalid argument to option \"--section-start\"\n")); + einfo (_("%P%F: invalid argument to option" + " \"--section-start\"\n")); optarg2++; /* So far so good. Are all the args present? */ if ((*optarg == '\0') || (*optarg2 == '\0')) - einfo (_("%P%F: missing argument(s) to option \"--section-start\"\n")); + einfo (_("%P%F: missing argument(s) to option" + " \"--section-start\"\n")); /* We must copy the section name as set_section_start doesn't do it for us. */ @@ -1260,7 +1306,7 @@ parse_args (unsigned argc, char **argv) if (link_info.unresolved_syms_in_objects == RM_NOT_YET_SET) /* FIXME: Should we allow emulations a chance to set this ? */ link_info.unresolved_syms_in_objects = how_to_report_unresolved_symbols; - + if (link_info.unresolved_syms_in_shared_libs == RM_NOT_YET_SET) /* FIXME: Should we allow emulations a chance to set this ? */ link_info.unresolved_syms_in_shared_libs = how_to_report_unresolved_symbols; -- 2.30.2