Nicholas Clifton 2ba3bf
diff -rcp ../binutils-2.20.51.0.7-original/gold/script.cc gold/script.cc
Nicholas Clifton 2ba3bf
*** ../binutils-2.20.51.0.7-original/gold/script.cc	2010-06-09 15:18:46.000000000 +0100
Nicholas Clifton 2ba3bf
--- gold/script.cc	2010-06-09 15:20:49.000000000 +0100
Nicholas Clifton 2ba3bf
*************** script_add_file(void* closurev, const ch
Nicholas Clifton 2ba3bf
*** 2589,2594 ****
Nicholas Clifton 2ba3bf
--- 2589,2612 ----
Nicholas Clifton 2ba3bf
    closure->inputs()->add_file(file);
Nicholas Clifton 2ba3bf
  }
Nicholas Clifton 2ba3bf
  
Nicholas Clifton 2ba3bf
+ // Called by the bison parser to add a library to the link.
Nicholas Clifton 2ba3bf
+ 
Nicholas Clifton 2ba3bf
+ extern "C" void
Nicholas Clifton 2ba3bf
+ script_add_library(void* closurev, const char* name, size_t length)
Nicholas Clifton 2ba3bf
+ {
Nicholas Clifton 2ba3bf
+   Parser_closure* closure = static_cast<Parser_closure*>(closurev);
Nicholas Clifton 2ba3bf
+   std::string name_string(name, length);
Nicholas Clifton 2ba3bf
+ 
Nicholas Clifton 2ba3bf
+   if (name_string[0] != 'l')
Nicholas Clifton 2ba3bf
+     gold_error(_("library name must be prefixed with -l"));
Nicholas Clifton 2ba3bf
+     
Nicholas Clifton 2ba3bf
+   Input_file_argument file(name_string.c_str() + 1,
Nicholas Clifton 2ba3bf
+ 			   Input_file_argument::INPUT_FILE_TYPE_LIBRARY,
Nicholas Clifton 2ba3bf
+ 			   "", false,
Nicholas Clifton 2ba3bf
+ 			   closure->position_dependent_options());
Nicholas Clifton 2ba3bf
+   closure->inputs()->add_file(file);
Nicholas Clifton 2ba3bf
+ }
Nicholas Clifton 2ba3bf
+ 
Nicholas Clifton 2ba3bf
  // Called by the bison parser to start a group.  If we are already in
Nicholas Clifton 2ba3bf
  // a group, that means that this script was invoked within a
Nicholas Clifton 2ba3bf
  // --start-group --end-group sequence on the command line, or that
Nicholas Clifton 2ba3bf
diff -rcp ../binutils-2.20.51.0.7-original/gold/script-c.h gold/script-c.h
Nicholas Clifton 2ba3bf
*** ../binutils-2.20.51.0.7-original/gold/script-c.h	2010-06-09 15:18:47.000000000 +0100
Nicholas Clifton 2ba3bf
--- gold/script-c.h	2010-06-09 15:21:05.000000000 +0100
Nicholas Clifton 2ba3bf
*************** script_add_extern(void* closure, const c
Nicholas Clifton 2ba3bf
*** 222,227 ****
Nicholas Clifton 2ba3bf
--- 222,232 ----
Nicholas Clifton 2ba3bf
  extern void
Nicholas Clifton 2ba3bf
  script_add_file(void* closure, const char*, size_t);
Nicholas Clifton 2ba3bf
  
Nicholas Clifton 2ba3bf
+ /* Called by the bison parser to add a library to the link.  */
Nicholas Clifton 2ba3bf
+ 
Nicholas Clifton 2ba3bf
+ extern void
Nicholas Clifton 2ba3bf
+ script_add_library(void* closure, const char*, size_t);
Nicholas Clifton 2ba3bf
+ 
Nicholas Clifton 2ba3bf
  /* Called by the bison parser to start and stop a group.  */
Nicholas Clifton 2ba3bf
  
Nicholas Clifton 2ba3bf
  extern void
Nicholas Clifton 2ba3bf
diff -rcp ../binutils-2.20.51.0.7-original/gold/yyscript.y gold/yyscript.y
Nicholas Clifton 2ba3bf
*** ../binutils-2.20.51.0.7-original/gold/yyscript.y	2010-06-09 15:18:46.000000000 +0100
Nicholas Clifton 2ba3bf
--- gold/yyscript.y	2010-06-09 15:21:21.000000000 +0100
Nicholas Clifton 2ba3bf
*************** input_list:
Nicholas Clifton 2ba3bf
*** 314,319 ****
Nicholas Clifton 2ba3bf
--- 314,321 ----
Nicholas Clifton 2ba3bf
  input_list_element:
Nicholas Clifton 2ba3bf
  	  string
Nicholas Clifton 2ba3bf
  	    { script_add_file(closure, $1.value, $1.length); }
Nicholas Clifton 2ba3bf
+ 	| '-' STRING
Nicholas Clifton 2ba3bf
+ 	    { script_add_library(closure, $2.value, $2.length); }
Nicholas Clifton 2ba3bf
  	| AS_NEEDED
Nicholas Clifton 2ba3bf
  	    { script_start_as_needed(closure); }
Nicholas Clifton 2ba3bf
  	  '(' input_list ')'