summaryrefslogtreecommitdiffstats
path: root/ld/ldmain.c
diff options
context:
space:
mode:
authorDavid MacKenzie <djm@cygnus>1994-02-25 03:26:25 +0000
committerDavid MacKenzie <djm@cygnus>1994-02-25 03:26:25 +0000
commitd4e5e3c330d5b2e7b6b972e03b1997a88270f703 (patch)
treedd57ae76fac89f06f3f85a050e9537847844d909 /ld/ldmain.c
parentb4f6f3c114e3cd2118ebb6c7e33ac65002d3255f (diff)
downloadppe42-binutils-d4e5e3c330d5b2e7b6b972e03b1997a88270f703.tar.gz
ppe42-binutils-d4e5e3c330d5b2e7b6b972e03b1997a88270f703.zip
Use getopt instead of lex and yacc to parse the command line.
* ld.texinfo (Options): Document changes to option syntax. * Makefile.in: Update dependencies. * ldver.c (help): Tweak dashes in usage message. * ldgram.y (%union): Remove unused members. Remove %tokens for command line options; add ones for input types. (command_line): Rules removed. (file): Instead of command line, recognize an input type indicator, then use the nonterminal for that type. (defsym_expr): New nonterminal from code formerly in command_line. * ldlex.h: Declare parser input type enum and variable. Don't declare parse_line. * ldlex.l: Remove unused variables. Make some used ones static and comment them. (COMMAND): Start state and its rules removed. At start of yylex, return input state token if at start of input. (lex_redirect): Don't need to set yyout. (ldlex_command): Function removed. * ldmain.c (main): Instead of calling parse_line, set up the redirections and call yyparse directly. * ldmisc.c (vfinfo): If there's no input filename, print nothing, not "command line". * lexsup.c: Remove #if 0'd code. (parse_line): Function removed. (parse_args): Rewrite to use getopt_long_only. (set_default_dirlist): New function from code formerly in ldgram.y:command_line. (set_section_start): New function. * emultempl/generic.em, emultempl/gld960.em, emultempl/hppaelf.em, emultempl/lnk960.em, emultempl/m88kbcs.em: Don't enclose compiled-in link scripts in "{" and "}", as the grammar no longer wants them to be.
Diffstat (limited to 'ld/ldmain.c')
-rw-r--r--ld/ldmain.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/ld/ldmain.c b/ld/ldmain.c
index 23e2d373f5..7dfa75be37 100644
--- a/ld/ldmain.c
+++ b/ld/ldmain.c
@@ -22,6 +22,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#include "bfd.h"
#include "sysdep.h"
#include <stdio.h>
+#include "libiberty.h"
#include "bfdlink.h"
#include "config.h"
@@ -205,16 +206,11 @@ main (argc, argv)
char *s = ldemul_get_script (&isfile);
if (isfile)
- {
- /* sizeof counts the terminating NUL. */
- size_t size = strlen (s) + sizeof ("-T ");
- char *buf = (char *) xmalloc(size);
- sprintf (buf, "-T %s", s);
- parse_line (buf, 0);
- free (buf);
- }
+ ldfile_open_command_file (s);
else
- parse_line (s, 1);
+ lex_redirect (s);
+ parser_input = input_script;
+ yyparse ();
}
if (link_info.relocateable && command_line.relax)
OpenPOWER on IntegriCloud