default_ld_assemble.
	(ld_assemble_flags): New function.
	* ld-elf/frame.exp: Pass -mpic and -mpid flags to the assembler on
	tic6x.
	* ld-elf/exclude.exp: Likewise.
	* lib/ld-lib.exp (default_ld_assemble): Take extra argument in_flags
	and pass it to the assembler.
+2011-05-12  Bernd Schmidt  <bernds@codesourcery.com>
+
+       * config/default.exp (ld_assemble): Pass flags parameter to
+       default_ld_assemble.
+       (ld_assemble_flags): New function.
+       * ld-elf/frame.exp: Pass -mpic and -mpid flags to the assembler on
+       tic6x.
+       * ld-elf/exclude.exp: Likewise.
+       * lib/ld-lib.exp (default_ld_assemble): Take extra argument in_flags
+       and pass it to the assembler.
+
 2011-05-11  Richard Sandiford  <rdsandiford@googlemail.com>
 
        * ld-mips-elf/mips-elf.exp: Add missing $has_newabi tests.
 
 #      assemble a file
 #
 proc ld_assemble { as source object } {
-       default_ld_assemble $as $source $object 
+       default_ld_assemble $as "" $source $object 
+}
+
+#
+# ld_assemble_flags
+#      assemble a file with extra flags
+#
+proc ld_assemble_flags { as flags source object } {
+       default_ld_assemble $as $flags $source $object 
 }
 
 #
 
     return
 }
 
+set as_opt ""
+
+# This target requires extra as options when building code for shared
+# libraries.
+if { [istarget "tic6x-*-*"] } {
+    set as_opt "-mpic -mpid=near"
+}
+
 global ar
 global as
 global ld
 set test8 "ld exclude symbols from archive - --exclude-libs foo,libexclude.a"
 set test9 "ld don't exclude symbols from archive - --exclude-libs foo:bar"
 
-if { ![ld_assemble $as $srcdir/$subdir/exclude1.s tmpdir/exclude1.o ]
-     || ![ld_assemble $as $srcdir/$subdir/exclude2.s tmpdir/exclude2.o] } {
+if { ![ld_assemble_flags $as $as_opt $srcdir/$subdir/exclude1.s tmpdir/exclude1.o ]
+     || ![ld_assemble_flags $as $as_opt $srcdir/$subdir/exclude2.s tmpdir/exclude2.o] } {
     unresolved $test1
     return
 }
 
     return
 }
 
+set as_opt ""
+
+# This target requires extra as options when building code for shared
+# libraries.
+if { [istarget "tic6x-*-*"] } {
+    set as_opt "-mpic -mpid=near"
+}
+
 set test1      "read-only .eh_frame section"
 set test2      "read-only .gcc_except_table section"
 
 global as
 global ld
 
-if { ![ld_assemble $as $srcdir/$subdir/tbss.s tmpdir/tbss.o ]
-     || ![ld_assemble $as $srcdir/$subdir/frame.s tmpdir/frame.o] } {
+if { ![ld_assemble_flags $as $as_opt $srcdir/$subdir/tbss.s tmpdir/tbss.o ]
+     || ![ld_assemble_flags $as $as_opt $srcdir/$subdir/frame.s tmpdir/frame.o] } {
     unresolved "$test1"
     return
 }
     }
 }
 
-if ![ld_assemble $as $srcdir/$subdir/table.s tmpdir/table.o ] {
+if ![ld_assemble_flags $as $as_opt $srcdir/$subdir/table.s tmpdir/table.o ] {
     unresolved "$test2"
     return
 }
 
 
 # Assemble a file.
 #
-proc default_ld_assemble { as source object } {
+proc default_ld_assemble { as in_flags source object } {
     global ASFLAGS
     global host_triplet
 
     if ![info exists ASFLAGS] { set ASFLAGS "" }
 
     set flags [big_or_little_endian]
-    set exec_output [run_host_cmd "$as" "$flags $ASFLAGS -o $object $source"]
+    set exec_output [run_host_cmd "$as" "$flags $in_flags $ASFLAGS -o $object $source"]
     set exec_output [prune_warnings $exec_output]
     if [string match "" $exec_output] then {
        return 1