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.
This commit is contained in:
David MacKenzie
1994-02-25 03:26:25 +00:00
parent b4f6f3c114
commit d4e5e3c330
10 changed files with 731 additions and 850 deletions

View File

@@ -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)