aboutsummaryrefslogtreecommitdiff
path: root/gas/testsuite
diff options
context:
space:
mode:
authorIain Sandoe <iain@codesourcery.com>2012-01-12 14:03:12 +0000
committerIain Sandoe <iain@codesourcery.com>2012-01-12 14:03:12 +0000
commit50d10658eef31d1c68763d556f02954b9c7c4f00 (patch)
treedcb4c7afc7cee5e547676de8c5069101eb4ddcf1 /gas/testsuite
parent0a4734dc09362b45ad88c4092fe2531d27b8d1d1 (diff)
downloadbinutils-50d10658eef31d1c68763d556f02954b9c7c4f00.zip
binutils-50d10658eef31d1c68763d556f02954b9c7c4f00.tar.gz
binutils-50d10658eef31d1c68763d556f02954b9c7c4f00.tar.bz2
add indirect_symbol to mach-o port.
bfd: * mach-o.c (bfd_mach_o_count_indirect_symbols): New. (bfd_mach_o_build_dysymtab_command): Populate indirect symbol table. * mach-o.h (bfd_mach_o_asymbol): Move declaration to start of the file. (bfd_mach_o_section): Add indirect_syms field. gas: * config/obj-macho.c (obj_mach_o_set_symbol_qualifier): Switch off lazy when the symbol is private_extern. (obj_mach_o_indirect_sym): New type. (obj_mach_o_indirect_symbol): New. (mach_o_pseudo_table): Use obj_mach_o_indirect_symbol. (obj_macho_frob_label): Adjust to avoid adding bsyms for locals. (obj_macho_frob_label): Likewise. Adjust external and comm symbol tests. (obj_mach_o_set_indirect_symbols): New. (obj_mach_o_frob_file_after_relocs): New. *config/obj-macho.h (obj_frob_file_after_relocs): Define. (obj_mach_o_frob_file_after_relocs): Declare. include/mach-o: * loader.h (BFD_MACH_O_INDIRECT_SYM_LOCAL): New. (BFD_MACH_O_INDIRECT_SYM_ABS): New gas/testsuite: * gas/mach-o/dysymtab-2.d: New. * gas/mach-o/err-syms-4.s: New. * gas/mach-o/err-syms-5.s: New. * gas/mach-o/err-syms-6.s: New. * gas/mach-o/symbols-6-64.d: New. * gas/mach-o/symbols-6-64.s: New. * gas/mach-o/symbols-6.d: New. * gas/mach-o/symbols-6.s: New.
Diffstat (limited to 'gas/testsuite')
-rw-r--r--gas/testsuite/ChangeLog11
-rw-r--r--gas/testsuite/gas/mach-o/dysymtab-2.d45
-rw-r--r--gas/testsuite/gas/mach-o/err-syms-4.s6
-rw-r--r--gas/testsuite/gas/mach-o/err-syms-5.s40
-rw-r--r--gas/testsuite/gas/mach-o/err-syms-6.s20
-rw-r--r--gas/testsuite/gas/mach-o/symbols-6-64.d116
-rw-r--r--gas/testsuite/gas/mach-o/symbols-6-64.s4
-rw-r--r--gas/testsuite/gas/mach-o/symbols-6.d116
-rw-r--r--gas/testsuite/gas/mach-o/symbols-6.s4
9 files changed, 362 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index 3176c0c..4f6fa30 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2012-01-12 Iain Sandoe <idsandoe@googlemail.com>
+
+ * gas/mach-o/dysymtab-2.d: New.
+ * gas/mach-o/err-syms-4.s: New.
+ * gas/mach-o/err-syms-5.s: New.
+ * gas/mach-o/err-syms-6.s: New.
+ * gas/mach-o/symbols-6-64.d: New.
+ * gas/mach-o/symbols-6-64.s: New.
+ * gas/mach-o/symbols-6.d: New.
+ * gas/mach-o/symbols-6.s: New.
+
2012-01-09 Iain Sandoe <idsandoe@googlemail.com>
* gas/mach-o/err-syms-1.s: New.
diff --git a/gas/testsuite/gas/mach-o/dysymtab-2.d b/gas/testsuite/gas/mach-o/dysymtab-2.d
new file mode 100644
index 0000000..a1a38b5
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/dysymtab-2.d
@@ -0,0 +1,45 @@
+#as: -L -I $srcdir/$subdir
+#objdump: -P dysymtab
+#target: i?86-*-darwin* powerpc-*-darwin*
+#source: symbols-6.s
+.*: +file format mach-o.*
+#...
+Load command dysymtab:
+( )+local symbols: idx:( )+0( )+num: 55( )+\(nxtidx: 55\)
+( )+external symbols: idx:( )+55( )+num: 24( )+\(nxtidx: 79\)
+( )+undefined symbols: idx:( )+79( )+num: 30( )+\(nxtidx: 109\)
+( )+table of content: off: 0x00000000( )+num: 0( )+\(endoff: 0x00000000\)
+( )+module table: off: 0x00000000( )+num: 0( )+\(endoff: 0x00000000\)
+( )+external reference table: off: 0x00000000( )+num: 0( )+\(endoff: 0x00000000\)
+( )+indirect symbol table: off: 0x000003b0( )+num: 25( )+\(endoff: 0x00000414\)
+( )+external relocation table: off: 0x00000000( )+num: 0( )+\(endoff: 0x00000000\)
+( )+local relocation table: off: 0x00000000( )+num: 0( )+\(endoff: 0x00000000\)
+( )+indirect symbols:
+( )+for section __dummy.__dummy:
+( )+0000000000000000( )+0: 0x0000005e a
+( )+0000000000000008( )+1: 0x00000063 b
+( )+0000000000000010( )+2: 0x0000003d c
+( )+0000000000000018( )+3: 0x0000001b d
+( )+0000000000000020( )+4: 0x00000018 e
+( )+0000000000000028( )+5: 0x00000040 f
+( )+0000000000000030( )+6: 0x00000066 g
+( )+for section __DATA.__la_symbol_ptr:
+( )+0000000000000000( )+7: 0x0000005f a1
+( )+0000000000000004( )+8: 0x00000064 b1
+( )+0000000000000008( )+9: 0x0000003e c1
+( )+000000000000000c( )+10: 0x0000001c d1
+( )+0000000000000010( )+11: 0x00000019 e1
+( )+0000000000000014( )+12: 0x00000041 f1
+( )+0000000000000018( )+13: 0x00000067 g1
+( )+for section __DATA.__nl_symbol_ptr:
+( )+0000000000000000( )+14: 0x00000060 a2
+( )+0000000000000004( )+15: 0x00000065 b2
+( )+0000000000000008( )+16: 0x0000003f c2
+( )+000000000000000c( )+17: 0x80000000 LOCAL
+( )+0000000000000010( )+18: 0x80000000 LOCAL
+( )+0000000000000014( )+19: 0x00000042 f2
+( )+0000000000000018( )+20: 0x00000068 g2
+( )+000000000000001c( )+21: 0x00000041 f1
+( )+0000000000000020( )+22: 0x00000067 g1
+( )+0000000000000024( )+23: 0x00000060 a2
+( )+0000000000000028( )+24: 0x00000065 b2
diff --git a/gas/testsuite/gas/mach-o/err-syms-4.s b/gas/testsuite/gas/mach-o/err-syms-4.s
new file mode 100644
index 0000000..0bb55e9
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/err-syms-4.s
@@ -0,0 +1,6 @@
+# { dg-do assemble }
+
+ .indirect_symbol a
+
+# { dg-error " an .indirect_symbol must be in a symbol pointer or stub section." "" { target *-*-darwin*} 3 }
+
diff --git a/gas/testsuite/gas/mach-o/err-syms-5.s b/gas/testsuite/gas/mach-o/err-syms-5.s
new file mode 100644
index 0000000..684bef0
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/err-syms-5.s
@@ -0,0 +1,40 @@
+# { dg-do assemble { target i?86-*-darwin* powerpc*-*-darwin* } }
+
+# Show that we can check that there are enough syms for the section.
+
+# too few.
+
+ .section __dummy, __dummy, symbol_stubs,strip_static_syms,4
+
+ .indirect_symbol a
+
+ .section __dummy, __dummy1,lazy_symbol_pointers
+
+ .indirect_symbol b
+
+ .section __dummy, __dummy2,non_lazy_symbol_pointers
+
+ .indirect_symbol c
+
+# OK.
+ .section __dummy, __dummy3,non_lazy_symbol_pointers
+
+ .indirect_symbol d
+ .space 4
+
+ .section __dummy, __dummy4,symbol_stubs,strip_static_syms,17
+
+ .indirect_symbol e
+ .space 17
+
+# too many
+
+ .section __dummy, __dummy5,lazy_symbol_pointers
+
+ .indirect_symbol f
+ .space 8
+
+# { dg-error "the number of .indirect_symbols defined in section __dummy.__dummy does not match the number expected .1 defined, 0 expected." "" { target *-*-darwin*} 0 }
+# { dg-error "the number of .indirect_symbols defined in section __dummy.__dummy1 does not match the number expected .1 defined, 0 expected." "" { target *-*-darwin*} 0 }
+# { dg-error "the number of .indirect_symbols defined in section __dummy.__dummy2 does not match the number expected .1 defined, 0 expected." "" { target *-*-darwin*} 0 }
+# { dg-error "the number of .indirect_symbols defined in section __dummy.__dummy5 does not match the number expected .1 defined, 2 expected." "" { target *-*-darwin*} 0 }
diff --git a/gas/testsuite/gas/mach-o/err-syms-6.s b/gas/testsuite/gas/mach-o/err-syms-6.s
new file mode 100644
index 0000000..95db793
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/err-syms-6.s
@@ -0,0 +1,20 @@
+# { dg-do assemble { target x86_64-*-darwin* } }
+
+ .section __dummy, __dummy, symbol_stubs,strip_static_syms,4
+
+ .indirect_symbol a
+
+ .section __dummy, __dummy1,lazy_symbol_pointers
+
+ .indirect_symbol b
+
+ .section __dummy, __dummy2,non_lazy_symbol_pointers
+
+ .indirect_symbol c
+
+# { dg-error "unknown or invalid section type .symbol_stubs." "" { target x86_64-*-darwin* } 3 }
+# { dg-error "an .indirect_symbol must be in a symbol pointer or stub section" "" { target x86_64-*-darwin* } 5 }
+# { dg-error "unknown or invalid section type .lazy_symbol_pointers." "" { target x86_64-*-darwin* } 7 }
+# { dg-error "an .indirect_symbol must be in a symbol pointer or stub section" "" { target x86_64-*-darwin* } 9 }
+# { dg-error "unknown or invalid section type .non_lazy_symbol_pointers." "" { target x86_64-*-darwin* } 11 }
+# { dg-error "an .indirect_symbol must be in a symbol pointer or stub section" "" { target x86_64-*-darwin* } 13 }
diff --git a/gas/testsuite/gas/mach-o/symbols-6-64.d b/gas/testsuite/gas/mach-o/symbols-6-64.d
new file mode 100644
index 0000000..77b38c4
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/symbols-6-64.d
@@ -0,0 +1,116 @@
+#as: -L -I $srcdir/$subdir
+#objdump: -t
+#target: powerpc64-*-darwin*
+#source: symbols-6-64.s
+.*: +file format mach-o.*
+#...
+SYMBOL TABLE:
+0000000000000000 l.*0e SECT.*01 0000 \[.text\] Lzt0
+0000000000000002 l.*0e SECT.*01 0000 \[.text\] Lmt0
+0000000000000004 l.*0e SECT.*01 0000 \[.text\] Lat0
+0000000000000000 l.*0e SECT.*02 0000 \[.data\] Lzd0
+0000000000000002 l.*0e SECT.*02 0000 \[.data\] Lmd0
+0000000000000005 l.*0e SECT.*02 0000 \[.data\] Lad0
+0000000000000000 l.*0e SECT.*03 0000 \[.bss\] zlcomm0
+0000000000000006 l.*0e SECT.*03 0000 \[.bss\] mlcomm0
+000000000000000c l.*0e SECT.*03 0000 \[.bss\] alcomm0
+0000000000000000 l.*0e SECT.*04 0000 \[__HERE.__there\] Lzs0
+0000000000000002 l.*0e SECT.*04 0000 \[__HERE.__there\] Lms0
+0000000000000004 l.*0e SECT.*04 0000 \[__HERE.__there\] Las0
+0000000000000012 l.*0e SECT.*01 0000 \[.text\] Lzt1
+0000000000000015 l.*0e SECT.*01 0000 \[.text\] Lmt1
+0000000000000017 l.*0e SECT.*01 0000 \[.text\] Lat1
+0000000000000012 l.*0e SECT.*02 0000 \[.data\] Lzd1
+0000000000000014 l.*0e SECT.*02 0000 \[.data\] Lmd1
+0000000000000017 l.*0e SECT.*02 0000 \[.data\] Lad1
+0000000000000012 l.*0e SECT.*03 0000 \[.bss\] zlcomm1
+0000000000000018 l.*0e SECT.*03 0000 \[.bss\] mlcomm1
+000000000000001e l.*0e SECT.*03 0000 \[.bss\] alcomm1
+0000000000000016 l.*0e SECT.*04 0000 \[__HERE.__there\] Lzs1
+000000000000001e l.*0e SECT.*04 0000 \[__HERE.__there\] Lms1
+000000000000001f l.*0e SECT.*04 0000 \[__HERE.__there\] Las1
+000000000000001b l.*0e SECT.*01 0000 \[.text\] e
+000000000000001c l.*0e SECT.*01 0000 \[.text\] e1
+000000000000001d l.*0e SECT.*01 0000 \[.text\] e2
+0000000000000024 l.*0e SECT.*02 0000 \[.data\] d
+000000000000002c l.*0e SECT.*02 0000 \[.data\] d1
+0000000000000034 l.*0e SECT.*02 0000 \[.data\] d2
+0000000000000000 l.*0e SECT.*05 0000 \[__dummy.__dummy\] La
+0000000000000008 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lb
+0000000000000010 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lc
+0000000000000018 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Ld
+0000000000000020 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Le
+0000000000000028 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lf
+0000000000000030 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lg
+0000000000000000 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] La1
+0000000000000004 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lb1
+0000000000000008 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lc1
+000000000000000c l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Ld1
+0000000000000010 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Le1
+0000000000000014 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lf1
+0000000000000018 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lg1
+0000000000000000 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] La2
+0000000000000004 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lb2
+0000000000000008 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lc2
+000000000000000c l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Ld2
+0000000000000010 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Le2
+0000000000000014 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lf2
+0000000000000018 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lg2
+000000000000001c l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lf11
+0000000000000020 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lg11
+0000000000000024 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] La12
+0000000000000028 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lb12
+0000000000000004 g.*0f SECT.*02 0000 \[.data\] adg0
+0000000000000016 g.*0f SECT.*02 0000 \[.data\] adg1
+0000000000000005 g.*0f SECT.*04 0000 \[__HERE.__there\] asg0
+000000000000001d g.*0f SECT.*04 0000 \[__HERE.__there\] asg1
+0000000000000005 g.*0f SECT.*01 0000 \[.text\] atg0
+0000000000000016 g.*0f SECT.*01 0000 \[.text\] atg1
+0000000000000018 g.*0f SECT.*01 0000 \[.text\] c
+0000000000000019 g.*0f SECT.*01 0000 \[.text\] c1
+000000000000001a g.*0f SECT.*01 0000 \[.text\] c2
+000000000000003c g.*1f SECT.*02 0000 \[.data\] f
+0000000000000044 g.*1f SECT.*02 0000 \[.data\] f1
+000000000000004c g.*1f SECT.*02 0000 \[.data\] f2
+0000000000000003 g.*0f SECT.*02 0000 \[.data\] mdg0
+0000000000000015 g.*0f SECT.*02 0000 \[.data\] mdg1
+0000000000000003 g.*0f SECT.*04 0000 \[__HERE.__there\] msg0
+000000000000001c g.*0f SECT.*04 0000 \[__HERE.__there\] msg1
+0000000000000003 g.*0f SECT.*01 0000 \[.text\] mtg0
+0000000000000014 g.*0f SECT.*01 0000 \[.text\] mtg1
+0000000000000001 g.*0f SECT.*02 0000 \[.data\] zdg0
+0000000000000013 g.*0f SECT.*02 0000 \[.data\] zdg1
+0000000000000001 g.*0f SECT.*04 0000 \[__HERE.__there\] zsg0
+0000000000000017 g.*0f SECT.*04 0000 \[__HERE.__there\] zsg1
+0000000000000001 g.*0f SECT.*01 0000 \[.text\] ztg0
+0000000000000013 g.*0f SECT.*01 0000 \[.text\] ztg1
+0000000000000000 g.*01 UND.*00 0000 _aud0
+0000000000000000 g.*01 UND.*00 0000 _aud1
+0000000000000000 g.*01 UND.*00 0000 _aus0
+0000000000000000 g.*01 UND.*00 0000 _aus1
+0000000000000000 g.*01 UND.*00 0000 _aut0
+0000000000000000 g.*01 UND.*00 0000 _mud0
+0000000000000000 g.*01 UND.*00 0000 _mud1
+0000000000000000 g.*01 UND.*00 0000 _mus0
+0000000000000000 g.*01 UND.*00 0000 _mus1
+0000000000000000 g.*01 UND.*00 0000 _mut0
+0000000000000000 g.*01 UND.*00 0000 _zud0
+0000000000000000 g.*01 UND.*00 0000 _zud1
+0000000000000000 g.*01 UND.*00 0000 _zus0
+0000000000000000 g.*01 UND.*00 0000 _zus1
+0000000000000000 g.*01 UND.*00 0000 _zut0
+0000000000000000 g.*01 UND.*00 0001 a
+0000000000000000 g.*01 UND.*00 0001 a1
+0000000000000000 g.*01 UND.*00 0000 a2
+000000000000000a.*01 COM.*00 0300 acommon0
+000000000000000a.*01 COM.*00 0300 acommon1
+0000000000000000 g.*01 UND.*00 0001 b
+0000000000000000 g.*01 UND.*00 0001 b1
+0000000000000000 g.*01 UND.*00 0000 b2
+0000000000000000 g.*11 UND.*00 0001 g
+0000000000000000 g.*11 UND.*00 0001 g1
+0000000000000000 g.*11 UND.*00 0000 g2
+000000000000000a.*01 COM.*00 0300 mcommon0
+000000000000000a.*01 COM.*00 0300 mcommon1
+000000000000000a.*01 COM.*00 0300 zcommon0
+000000000000000a.*01 COM.*00 0300 zcommon1
diff --git a/gas/testsuite/gas/mach-o/symbols-6-64.s b/gas/testsuite/gas/mach-o/symbols-6-64.s
new file mode 100644
index 0000000..2555360
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/symbols-6-64.s
@@ -0,0 +1,4 @@
+# now look at what happens when we append some indirects to the normal
+# syms.
+ .include "symbols-base-64.s"
+ .include "symbols-3.s"
diff --git a/gas/testsuite/gas/mach-o/symbols-6.d b/gas/testsuite/gas/mach-o/symbols-6.d
new file mode 100644
index 0000000..96cca41
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/symbols-6.d
@@ -0,0 +1,116 @@
+#as: -L -I $srcdir/$subdir
+#objdump: -t
+#target: i?86-*-darwin* powerpc-*-darwin*
+#source: symbols-6.s
+.*: +file format mach-o.*
+#...
+SYMBOL TABLE:
+00000000 l.*0e SECT.*01 0000 \[.text\] Lzt0
+00000002 l.*0e SECT.*01 0000 \[.text\] Lmt0
+00000004 l.*0e SECT.*01 0000 \[.text\] Lat0
+00000000 l.*0e SECT.*02 0000 \[.data\] Lzd0
+00000002 l.*0e SECT.*02 0000 \[.data\] Lmd0
+00000005 l.*0e SECT.*02 0000 \[.data\] Lad0
+00000000 l.*0e SECT.*03 0000 \[.bss\] zlcomm0
+00000006 l.*0e SECT.*03 0000 \[.bss\] mlcomm0
+0000000c l.*0e SECT.*03 0000 \[.bss\] alcomm0
+00000000 l.*0e SECT.*04 0000 \[__HERE.__there\] Lzs0
+00000002 l.*0e SECT.*04 0000 \[__HERE.__there\] Lms0
+00000004 l.*0e SECT.*04 0000 \[__HERE.__there\] Las0
+00000012 l.*0e SECT.*01 0000 \[.text\] Lzt1
+00000015 l.*0e SECT.*01 0000 \[.text\] Lmt1
+00000017 l.*0e SECT.*01 0000 \[.text\] Lat1
+00000012 l.*0e SECT.*02 0000 \[.data\] Lzd1
+00000014 l.*0e SECT.*02 0000 \[.data\] Lmd1
+00000017 l.*0e SECT.*02 0000 \[.data\] Lad1
+00000012 l.*0e SECT.*03 0000 \[.bss\] zlcomm1
+00000018 l.*0e SECT.*03 0000 \[.bss\] mlcomm1
+0000001e l.*0e SECT.*03 0000 \[.bss\] alcomm1
+00000016 l.*0e SECT.*04 0000 \[__HERE.__there\] Lzs1
+0000001e l.*0e SECT.*04 0000 \[__HERE.__there\] Lms1
+0000001f l.*0e SECT.*04 0000 \[__HERE.__there\] Las1
+0000001b l.*0e SECT.*01 0000 \[.text\] e
+0000001c l.*0e SECT.*01 0000 \[.text\] e1
+0000001d l.*0e SECT.*01 0000 \[.text\] e2
+00000024 l.*0e SECT.*02 0000 \[.data\] d
+0000002c l.*0e SECT.*02 0000 \[.data\] d1
+00000034 l.*0e SECT.*02 0000 \[.data\] d2
+00000000 l.*0e SECT.*05 0000 \[__dummy.__dummy\] La
+00000008 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lb
+00000010 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lc
+00000018 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Ld
+00000020 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Le
+00000028 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lf
+00000030 l.*0e SECT.*05 0000 \[__dummy.__dummy\] Lg
+00000000 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] La1
+00000004 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lb1
+00000008 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lc1
+0000000c l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Ld1
+00000010 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Le1
+00000014 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lf1
+00000018 l.*0e SECT.*06 0000 \[.lazy_symbol_pointer\] Lg1
+00000000 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] La2
+00000004 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lb2
+00000008 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lc2
+0000000c l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Ld2
+00000010 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Le2
+00000014 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lf2
+00000018 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lg2
+0000001c l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lf11
+00000020 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lg11
+00000024 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] La12
+00000028 l.*0e SECT.*07 0000 \[.non_lazy_symbol_pointer\] Lb12
+00000004 g.*0f SECT.*02 0000 \[.data\] adg0
+00000016 g.*0f SECT.*02 0000 \[.data\] adg1
+00000005 g.*0f SECT.*04 0000 \[__HERE.__there\] asg0
+0000001d g.*0f SECT.*04 0000 \[__HERE.__there\] asg1
+00000005 g.*0f SECT.*01 0000 \[.text\] atg0
+00000016 g.*0f SECT.*01 0000 \[.text\] atg1
+00000018 g.*0f SECT.*01 0000 \[.text\] c
+00000019 g.*0f SECT.*01 0000 \[.text\] c1
+0000001a g.*0f SECT.*01 0000 \[.text\] c2
+0000003c g.*1f SECT.*02 0000 \[.data\] f
+00000044 g.*1f SECT.*02 0000 \[.data\] f1
+0000004c g.*1f SECT.*02 0000 \[.data\] f2
+00000003 g.*0f SECT.*02 0000 \[.data\] mdg0
+00000015 g.*0f SECT.*02 0000 \[.data\] mdg1
+00000003 g.*0f SECT.*04 0000 \[__HERE.__there\] msg0
+0000001c g.*0f SECT.*04 0000 \[__HERE.__there\] msg1
+00000003 g.*0f SECT.*01 0000 \[.text\] mtg0
+00000014 g.*0f SECT.*01 0000 \[.text\] mtg1
+00000001 g.*0f SECT.*02 0000 \[.data\] zdg0
+00000013 g.*0f SECT.*02 0000 \[.data\] zdg1
+00000001 g.*0f SECT.*04 0000 \[__HERE.__there\] zsg0
+00000017 g.*0f SECT.*04 0000 \[__HERE.__there\] zsg1
+00000001 g.*0f SECT.*01 0000 \[.text\] ztg0
+00000013 g.*0f SECT.*01 0000 \[.text\] ztg1
+00000000 g.*01 UND.*00 0000 _aud0
+00000000 g.*01 UND.*00 0000 _aud1
+00000000 g.*01 UND.*00 0000 _aus0
+00000000 g.*01 UND.*00 0000 _aus1
+00000000 g.*01 UND.*00 0000 _aut0
+00000000 g.*01 UND.*00 0000 _mud0
+00000000 g.*01 UND.*00 0000 _mud1
+00000000 g.*01 UND.*00 0000 _mus0
+00000000 g.*01 UND.*00 0000 _mus1
+00000000 g.*01 UND.*00 0000 _mut0
+00000000 g.*01 UND.*00 0000 _zud0
+00000000 g.*01 UND.*00 0000 _zud1
+00000000 g.*01 UND.*00 0000 _zus0
+00000000 g.*01 UND.*00 0000 _zus1
+00000000 g.*01 UND.*00 0000 _zut0
+00000000 g.*01 UND.*00 0001 a
+00000000 g.*01 UND.*00 0001 a1
+00000000 g.*01 UND.*00 0000 a2
+0000000a.*01 COM.*00 0300 acommon0
+0000000a.*01 COM.*00 0300 acommon1
+00000000 g.*01 UND.*00 0001 b
+00000000 g.*01 UND.*00 0001 b1
+00000000 g.*01 UND.*00 0000 b2
+00000000 g.*11 UND.*00 0000 g
+00000000 g.*11 UND.*00 0000 g1
+00000000 g.*11 UND.*00 0000 g2
+0000000a.*01 COM.*00 0300 mcommon0
+0000000a.*01 COM.*00 0300 mcommon1
+0000000a.*01 COM.*00 0300 zcommon0
+0000000a.*01 COM.*00 0300 zcommon1
diff --git a/gas/testsuite/gas/mach-o/symbols-6.s b/gas/testsuite/gas/mach-o/symbols-6.s
new file mode 100644
index 0000000..d909fbf
--- /dev/null
+++ b/gas/testsuite/gas/mach-o/symbols-6.s
@@ -0,0 +1,4 @@
+# now look at what happens when we append some indirects to the normal
+# syms.
+ .include "symbols-base.s"
+ .include "symbols-3.s"