aboutsummaryrefslogtreecommitdiff
path: root/ld/ldemul.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2003-02-28 01:32:31 +0000
committerAlan Modra <amodra@gmail.com>2003-02-28 01:32:31 +0000
commit3bcf55573d377355c73846cc0b819c7d878d8e19 (patch)
treebbe9a2d3302487029b4dbb711170df911a326c35 /ld/ldemul.c
parent2c4c2bc0a526e8e0c186cd7cb005e2947cac3b88 (diff)
downloadgdb-3bcf55573d377355c73846cc0b819c7d878d8e19.zip
gdb-3bcf55573d377355c73846cc0b819c7d878d8e19.tar.gz
gdb-3bcf55573d377355c73846cc0b819c7d878d8e19.tar.bz2
* ldemul.c (ldemul_add_options, ldemul_handle_option): New functions.
(ldemul_parse_args): Return bfd_boolean. Formatting. * ldemul.h (ldemul_add_options, ldemul_handle_option): Declare. (ldemul_parse_args): Adjust. (struct ld_emulation_xfer_struct): Add add_options and handle_option. Return bfd_boolean from parse_args. * lexsup.c (parse_args): Malloc shortopts, longopts and really_longopts. Call ldemul_add_options and ldemul_handle_option. * emultempl/aix.em (gld${EMULATION_NAME}_add_options): Split out from gld${EMULATION_NAME}_parse_args. (gld${EMULATION_NAME}_handle_option): Likewise. (ld_${EMULATION_NAME}_emulation): Adjust initializer. * emultempl/armcoff.em: As for aix.em, but remove parse_args. * emultempl/beos.em: Likewise. * emultempl/pe.em: Likewise. * emultempl/ticoff.em: Likewise. * emultempl/elf32.em: Likewise. Don't duplicate long options either. (gld${EMULATION_NAME}_add_sysroot): Prototype. * emultempl/armelf.em (PARSE_AND_LIST_LONGOPTS): Don't duplicate options. * emultempl/hppaelf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/ppc32elf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/ppc64elf.em (PARSE_AND_LIST_LONGOPTS): Likewise. * emultempl/armelf_oabi.em (ld_${EMULATION_NAME}_emulation): Adjust initializer. * emultempl/generic.em: Likewise. * emultempl/gld960.em: Likewise. * emultempl/gld960c.em: Likewise. * emultempl/linux.em: Likewise. * emultempl/lnk960.em: Likewise. * emultempl/m68kcoff.em: Likewise. * emultempl/mipsecoff.em: Likewise. * emultempl/sunos.em: Likewise. * emultempl/vanilla.em: Likewise. * emultempl/netbsd.em (gldnetbsd_before_parse): Prototype.
Diffstat (limited to 'ld/ldemul.c')
-rw-r--r--ld/ldemul.c31
1 files changed, 26 insertions, 5 deletions
diff --git a/ld/ldemul.c b/ld/ldemul.c
index 72e324a..427e21d 100644
--- a/ld/ldemul.c
+++ b/ld/ldemul.c
@@ -133,17 +133,38 @@ ldemul_place_orphan (file, s)
return FALSE;
}
-int
+void
+ldemul_add_options (ns, shortopts, nl, longopts, nrl, really_longopts)
+ int ns;
+ char **shortopts;
+ int nl;
+ struct option **longopts;
+ int nrl;
+ struct option **really_longopts;
+{
+ if (ld_emulation->add_options)
+ (*ld_emulation->add_options) (ns, shortopts, nl, longopts,
+ nrl, really_longopts);
+}
+
+bfd_boolean
+ldemul_handle_option (optc)
+ int optc;
+{
+ if (ld_emulation->handle_option)
+ return (*ld_emulation->handle_option) (optc);
+ return FALSE;
+}
+
+bfd_boolean
ldemul_parse_args (argc, argv)
int argc;
char **argv;
{
/* Try and use the emulation parser if there is one. */
if (ld_emulation->parse_args)
- {
- return ld_emulation->parse_args (argc, argv);
- }
- return 0;
+ return (*ld_emulation->parse_args) (argc, argv);
+ return TRUE;
}
/* Let the emulation code handle an unrecognized file. */