+2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
+
+ * config/obj-macho.c (obj_mach_o_set_vma_data): New type.
+ (obj_mach_o_set_section_vma): New.
+ (obj_mach_o_post_relax_hook): New.
+ * config/obj-macho.h (md_post_relax_hook): Define.
+ (obj_mach_o_post_relax_hook): Declare.
+
2012-01-12 Iain Sandoe <idsandoe@googlemail.com>
* config/obj-macho.c (obj_mach_o_set_symbol_qualifier): Switch off
#include "mach-o/loader.h"
#include "obj-macho.h"
+#include <string.h>
+
/* Forward decls. */
static segT obj_mach_o_segT_from_bfd_name (const char *, int);
return 0;
}
+/* Zerofill and GB Zerofill sections must be sorted to follow all other
+ sections in their segments.
+
+ The native 'as' leaves the sections physically in the order they appear in
+ the source, and adjusts the section VMAs to meet the constraint.
+
+ We follow this for now - if nothing else, it makes comparison easier.
+
+ An alternative implementation would be to sort the sections as ld requires.
+ It might be advantageous to implement such a scheme in the future (or even
+ to make the style of section ordering user-selectable). */
+
+typedef struct obj_mach_o_set_vma_data
+{
+ bfd_vma vma;
+ unsigned vma_pass;
+ unsigned zerofill_seen;
+ unsigned gb_zerofill_seen;
+} obj_mach_o_set_vma_data;
+
+/* We do (possibly) three passes through to set the vma, so that:
+
+ zerofill sections get VMAs after all others in their segment
+ GB zerofill get VMAs last.
+
+ As we go, we notice if we see any Zerofill or GB Zerofill sections, so that
+ we can skip the additional passes if there's nothing to do. */
+
+static void
+obj_mach_o_set_section_vma (bfd *abfd ATTRIBUTE_UNUSED, asection *sec, void *v_p)
+{
+ bfd_mach_o_section *ms = bfd_mach_o_get_mach_o_section (sec);
+ unsigned bfd_align = bfd_get_section_alignment (abfd, sec);
+ obj_mach_o_set_vma_data *p = (struct obj_mach_o_set_vma_data *)v_p;
+ unsigned sectype = (ms->flags & BFD_MACH_O_SECTION_TYPE_MASK);
+ unsigned zf;
+
+ zf = 0;
+ if (sectype == BFD_MACH_O_S_ZEROFILL)
+ {
+ zf = 1;
+ p->zerofill_seen = zf;
+ }
+ else if (sectype == BFD_MACH_O_S_GB_ZEROFILL)
+ {
+ zf = 2;
+ p->gb_zerofill_seen = zf;
+ }
+
+ if (p->vma_pass != zf)
+ return;
+
+ /* We know the section size now - so make a vma for the section just
+ based on order. */
+ ms->size = bfd_get_section_size (sec);
+
+ /* Make sure that the align agrees, and set to the largest value chosen. */
+ ms->align = ms->align > bfd_align ? ms->align : bfd_align;
+ bfd_set_section_alignment (abfd, sec, ms->align);
+
+ p->vma += (1 << ms->align) - 1;
+ p->vma &= ~((1 << ms->align) - 1);
+ ms->addr = p->vma;
+ bfd_set_section_vma (abfd, sec, p->vma);
+ p->vma += ms->size;
+}
+
+/* (potentially) three passes over the sections, setting VMA. We skip the
+ {gb}zerofill passes if we didn't see any of the relevant sections. */
+
+void obj_mach_o_post_relax_hook (void)
+{
+ obj_mach_o_set_vma_data d;
+
+ memset (&d, 0, sizeof (d));
+
+ bfd_map_over_sections (stdoutput, obj_mach_o_set_section_vma, (char *) &d);
+ if ((d.vma_pass = d.zerofill_seen) != 0)
+ bfd_map_over_sections (stdoutput, obj_mach_o_set_section_vma, (char *) &d);
+ if ((d.vma_pass = d.gb_zerofill_seen) != 0)
+ bfd_map_over_sections (stdoutput, obj_mach_o_set_section_vma, (char *) &d);
+}
+
static void
obj_mach_o_set_indirect_symbols (bfd *abfd, asection *sec,
void *xxx ATTRIBUTE_UNUSED)
#define obj_frob_symbol(s, punt) punt = obj_macho_frob_symbol(s)
extern int obj_macho_frob_symbol (struct symbol *);
+#define md_post_relax_hook obj_mach_o_post_relax_hook()
+void obj_mach_o_post_relax_hook (void);
+
#define obj_frob_file_after_relocs obj_mach_o_frob_file_after_relocs
extern void obj_mach_o_frob_file_after_relocs (void);
+2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
+
+ * gas/mach-o/dysymtab-2.d: Update to include the set VMA.
+ * gas/mach-o/symbols-1-64.d: Likewise.
+ * gas/mach-o/symbols-1.d: Likewise.
+ * gas/mach-o/symbols-6.d: Likewise.
+ * gas/mach-o/zerofill-1.d: Likewise.
+ * gas/mach-o/zerofill-2.d: Likewise.
+
2012-01-12 Iain Sandoe <idsandoe@googlemail.com>
* gas/mach-o/dysymtab-2.d: New.
( )+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\)
+( )+indirect symbol table: off: 0x00000428( )+num: 25( )+\(endoff: 0x0000048c\)
( )+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
+( )+0000000000000096( )+0: 0x0000005e a
+( )+000000000000009e( )+1: 0x00000063 b
+( )+00000000000000a6( )+2: 0x0000003d c
+( )+00000000000000ae( )+3: 0x0000001b d
+( )+00000000000000b6( )+4: 0x00000018 e
+( )+00000000000000be( )+5: 0x00000040 f
+( )+00000000000000c6( )+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
+( )+00000000000000d0( )+7: 0x0000005f a1
+( )+00000000000000d4( )+8: 0x00000064 b1
+( )+00000000000000d8( )+9: 0x0000003e c1
+( )+00000000000000dc( )+10: 0x0000001c d1
+( )+00000000000000e0( )+11: 0x00000019 e1
+( )+00000000000000e4( )+12: 0x00000041 f1
+( )+00000000000000e8( )+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
+( )+00000000000000ec( )+14: 0x00000060 a2
+( )+00000000000000f0( )+15: 0x00000065 b2
+( )+00000000000000f4( )+16: 0x0000003f c2
+( )+00000000000000f8( )+17: 0x80000000 LOCAL
+( )+00000000000000fc( )+18: 0x80000000 LOCAL
+( )+0000000000000100( )+19: 0x00000042 f2
+( )+0000000000000104( )+20: 0x00000068 g2
+( )+0000000000000108( )+21: 0x00000041 f1
+( )+000000000000010c( )+22: 0x00000067 g1
+( )+0000000000000110( )+23: 0x00000060 a2
+( )+0000000000000114( )+24: 0x00000065 b2
.*: +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
-000000000000001e l.*0e SECT 01 0000 \[.text\] Lzt1
-0000000000000021 l.*0e SECT 01 0000 \[.text\] Lmt1
-0000000000000023 l.*0e SECT 01 0000 \[.text\] Lat1
-000000000000001e l.*0e SECT 02 0000 \[.data\] Lzd1
-0000000000000020 l.*0e SECT 02 0000 \[.data\] Lmd1
-0000000000000023 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
-0000000000000026 l.*0e SECT 04 0000 \[__HERE.__there\] Lzs1
-0000000000000032 l.*0e SECT 04 0000 \[__HERE.__there\] Lms1
-0000000000000033 l.*0e SECT 04 0000 \[__HERE.__there\] Las1
-0000000000000004 g.*0f SECT 02 0000 \[.data\] adg0
-0000000000000022 g.*0f SECT 02 0000 \[.data\] adg1
-0000000000000005 g.*0f SECT 04 0000 \[__HERE.__there\] asg0
-0000000000000031 g.*0f SECT 04 0000 \[__HERE.__there\] asg1
-0000000000000005 g.*0f SECT 01 0000 \[.text\] atg0
-0000000000000022 g.*0f SECT 01 0000 \[.text\] atg1
-0000000000000003 g.*0f SECT 02 0000 \[.data\] mdg0
-0000000000000021 g.*0f SECT 02 0000 \[.data\] mdg1
-0000000000000003 g.*0f SECT 04 0000 \[__HERE.__there\] msg0
-0000000000000030 g.*0f SECT 04 0000 \[__HERE.__there\] msg1
-0000000000000003 g.*0f SECT 01 0000 \[.text\] mtg0
-0000000000000020 g.*0f SECT 01 0000 \[.text\] mtg1
-0000000000000001 g.*0f SECT 02 0000 \[.data\] zdg0
-000000000000001f g.*0f SECT 02 0000 \[.data\] zdg1
-0000000000000001 g.*0f SECT 04 0000 \[__HERE.__there\] zsg0
-0000000000000027 g.*0f SECT 04 0000 \[__HERE.__there\] zsg1
-0000000000000001 g.*0f SECT 01 0000 \[.text\] ztg0
-000000000000001f 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
-000000000000000a.*01 COM 00 0300 acommon0
-000000000000000a.*01 COM 00 0300 acommon1
-000000000000000a.*01 COM 00 0300 mcommon0
-000000000000000a.*01 COM 00 0300 mcommon1
-000000000000000a.*01 COM 00 0300 zcommon0
-000000000000000a.*01 COM 00 0300 zcommon1
\ No newline at end of file
+0000000000000000 l( )+0e SECT( )+01 0000 \[.text\] Lzt0
+0000000000000002 l( )+0e SECT( )+01 0000 \[.text\] Lmt0
+0000000000000004 l( )+0e SECT( )+01 0000 \[.text\] Lat0
+0000000000000024 l( )+0e SECT( )+02 0000 \[.data\] Lzd0
+0000000000000026 l( )+0e SECT( )+02 0000 \[.data\] Lmd0
+0000000000000029 l( )+0e SECT( )+02 0000 \[.data\] Lad0
+000000000000009c l( )+0e SECT( )+03 0000 \[.bss\] zlcomm0
+00000000000000a2 l( )+0e SECT( )+03 0000 \[.bss\] mlcomm0
+00000000000000a8 l( )+0e SECT( )+03 0000 \[.bss\] alcomm0
+0000000000000060 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs0
+0000000000000062 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms0
+0000000000000064 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Las0
+000000000000001e l( )+0e SECT( )+01 0000 \[.text\] Lzt1
+0000000000000021 l( )+0e SECT( )+01 0000 \[.text\] Lmt1
+0000000000000023 l( )+0e SECT( )+01 0000 \[.text\] Lat1
+0000000000000042 l( )+0e SECT( )+02 0000 \[.data\] Lzd1
+0000000000000044 l( )+0e SECT( )+02 0000 \[.data\] Lmd1
+0000000000000047 l( )+0e SECT( )+02 0000 \[.data\] Lad1
+00000000000000ae l( )+0e SECT( )+03 0000 \[.bss\] zlcomm1
+00000000000000b4 l( )+0e SECT( )+03 0000 \[.bss\] mlcomm1
+00000000000000ba l( )+0e SECT( )+03 0000 \[.bss\] alcomm1
+0000000000000086 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs1
+0000000000000092 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms1
+0000000000000093 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Las1
+0000000000000028 g( )+0f SECT( )+02 0000 \[.data\] adg0
+0000000000000046 g( )+0f SECT( )+02 0000 \[.data\] adg1
+0000000000000065 g( )+0f SECT( )+04 0000 \[__HERE.__there\] asg0
+0000000000000091 g( )+0f SECT( )+04 0000 \[__HERE.__there\] asg1
+0000000000000005 g( )+0f SECT( )+01 0000 \[.text\] atg0
+0000000000000022 g( )+0f SECT( )+01 0000 \[.text\] atg1
+0000000000000027 g( )+0f SECT( )+02 0000 \[.data\] mdg0
+0000000000000045 g( )+0f SECT( )+02 0000 \[.data\] mdg1
+0000000000000063 g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg0
+0000000000000090 g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg1
+0000000000000003 g( )+0f SECT( )+01 0000 \[.text\] mtg0
+0000000000000020 g( )+0f SECT( )+01 0000 \[.text\] mtg1
+0000000000000025 g( )+0f SECT( )+02 0000 \[.data\] zdg0
+0000000000000043 g( )+0f SECT( )+02 0000 \[.data\] zdg1
+0000000000000061 g( )+0f SECT( )+04 0000 \[__HERE.__there\] zsg0
+0000000000000087 g( )+0f SECT( )+04 0000 \[__HERE.__there\] zsg1
+0000000000000001 g( )+0f SECT( )+01 0000 \[.text\] ztg0
+000000000000001f 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
+000000000000000a( )+01 COM( )+00 0300 acommon0
+000000000000000a( )+01 COM( )+00 0300 acommon1
+000000000000000a( )+01 COM( )+00 0300 mcommon0
+000000000000000a( )+01 COM( )+00 0300 mcommon1
+000000000000000a( )+01 COM( )+00 0300 zcommon0
+000000000000000a( )+01 COM( )+00 0300 zcommon1
.*: +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
-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
-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
-0000000a.*01 COM 00 0300 acommon0
-0000000a.*01 COM 00 0300 acommon1
-0000000a.*01 COM 00 0300 mcommon0
-0000000a.*01 COM 00 0300 mcommon1
-0000000a.*01 COM 00 0300 zcommon0
-0000000a.*01 COM 00 0300 zcommon1
\ No newline at end of file
+00000000 l( )+0e SECT( )+01 0000 \[.text\] Lzt0
+00000002 l( )+0e SECT( )+01 0000 \[.text\] Lmt0
+00000004 l( )+0e SECT( )+01 0000 \[.text\] Lat0
+00000018 l( )+0e SECT( )+02 0000 \[.data\] Lzd0
+0000001a l( )+0e SECT( )+02 0000 \[.data\] Lmd0
+0000001d l( )+0e SECT( )+02 0000 \[.data\] Lad0
+00000060 l( )+0e SECT( )+03 0000 \[.bss\] zlcomm0
+00000066 l( )+0e SECT( )+03 0000 \[.bss\] mlcomm0
+0000006c l( )+0e SECT( )+03 0000 \[.bss\] alcomm0
+0000003c l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs0
+0000003e l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms0
+00000040 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
+0000002a l( )+0e SECT( )+02 0000 \[.data\] Lzd1
+0000002c l( )+0e SECT( )+02 0000 \[.data\] Lmd1
+0000002f l( )+0e SECT( )+02 0000 \[.data\] Lad1
+00000072 l( )+0e SECT( )+03 0000 \[.bss\] zlcomm1
+00000078 l( )+0e SECT( )+03 0000 \[.bss\] mlcomm1
+0000007e l( )+0e SECT( )+03 0000 \[.bss\] alcomm1
+00000052 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs1
+0000005a l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms1
+0000005b l( )+0e SECT( )+04 0000 \[__HERE.__there\] Las1
+0000001c g( )+0f SECT( )+02 0000 \[.data\] adg0
+0000002e g( )+0f SECT( )+02 0000 \[.data\] adg1
+00000041 g( )+0f SECT( )+04 0000 \[__HERE.__there\] asg0
+00000059 g( )+0f SECT( )+04 0000 \[__HERE.__there\] asg1
+00000005 g( )+0f SECT( )+01 0000 \[.text\] atg0
+00000016 g( )+0f SECT( )+01 0000 \[.text\] atg1
+0000001b g( )+0f SECT( )+02 0000 \[.data\] mdg0
+0000002d g( )+0f SECT( )+02 0000 \[.data\] mdg1
+0000003f g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg0
+00000058 g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg1
+00000003 g( )+0f SECT( )+01 0000 \[.text\] mtg0
+00000014 g( )+0f SECT( )+01 0000 \[.text\] mtg1
+00000019 g( )+0f SECT( )+02 0000 \[.data\] zdg0
+0000002b g( )+0f SECT( )+02 0000 \[.data\] zdg1
+0000003d g( )+0f SECT( )+04 0000 \[__HERE.__there\] zsg0
+00000053 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
+0000000a( )+01 COM( )+ 00 0300 acommon0
+0000000a( )+01 COM( )+ 00 0300 acommon1
+0000000a( )+01 COM( )+ 00 0300 mcommon0
+0000000a( )+01 COM( )+ 00 0300 mcommon1
+0000000a( )+01 COM( )+00 0300 zcommon0
+0000000a( )+01 COM( )+00 0300 zcommon1
.*: +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
+00000000 l( )+0e SECT( )+01 0000 \[.text\] Lzt0
+00000002 l( )+0e SECT( )+01 0000 \[.text\] Lmt0
+00000004 l( )+0e SECT( )+01 0000 \[.text\] Lat0
+0000001e l( )+0e SECT( )+02 0000 \[.data\] Lzd0
+00000020 l( )+0e SECT( )+02 0000 \[.data\] Lmd0
+00000023 l( )+0e SECT( )+02 0000 \[.data\] Lad0
+00000118 l( )+0e SECT( )+03 0000 \[.bss\] zlcomm0
+0000011e l( )+0e SECT( )+03 0000 \[.bss\] mlcomm0
+00000124 l( )+0e SECT( )+03 0000 \[.bss\] alcomm0
+00000072 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs0
+00000074 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms0
+00000076 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
+00000030 l( )+0e SECT( )+02 0000 \[.data\] Lzd1
+00000032 l( )+0e SECT( )+02 0000 \[.data\] Lmd1
+00000035 l( )+0e SECT( )+02 0000 \[.data\] Lad1
+0000012a l( )+0e SECT( )+03 0000 \[.bss\] zlcomm1
+00000130 l( )+0e SECT( )+03 0000 \[.bss\] mlcomm1
+00000136 l( )+0e SECT( )+03 0000 \[.bss\] alcomm1
+00000088 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lzs1
+00000090 l( )+0e SECT( )+04 0000 \[__HERE.__there\] Lms1
+00000091 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
+00000042 l( )+0e SECT( )+02 0000 \[.data\] d
+0000004a l( )+0e SECT( )+02 0000 \[.data\] d1
+00000052 l( )+0e SECT( )+02 0000 \[.data\] d2
+00000096 l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] La
+0000009e l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Lb
+000000a6 l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Lc
+000000ae l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Ld
+000000b6 l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Le
+000000be l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Lf
+000000c6 l( )+0e SECT( )+05 0000 \[__dummy.__dummy\] Lg
+000000d0 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] La1
+000000d4 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Lb1
+000000d8 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Lc1
+000000dc l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Ld1
+000000e0 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Le1
+000000e4 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Lf1
+000000e8 l( )+0e SECT( )+06 0000 \[.lazy_symbol_pointer\] Lg1
+000000ec l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] La2
+000000f0 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lb2
+000000f4 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lc2
+000000f8 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Ld2
+000000fc l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Le2
+00000100 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lf2
+00000104 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lg2
+00000108 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lf11
+0000010c l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lg11
+00000110 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] La12
+00000114 l( )+0e SECT( )+07 0000 \[.non_lazy_symbol_pointer\] Lb12
+00000022 g( )+0f SECT( )+02 0000 \[.data\] adg0
+00000034 g( )+0f SECT( )+02 0000 \[.data\] adg1
+00000077 g( )+0f SECT( )+04 0000 \[__HERE.__there\] asg0
+0000008f 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
+0000005a g( )+1f SECT( )+02 0000 \[.data\] f
+00000062 g( )+1f SECT( )+02 0000 \[.data\] f1
+0000006a g( )+1f SECT( )+02 0000 \[.data\] f2
+00000021 g( )+0f SECT( )+02 0000 \[.data\] mdg0
+00000033 g( )+0f SECT( )+02 0000 \[.data\] mdg1
+00000075 g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg0
+0000008e g( )+0f SECT( )+04 0000 \[__HERE.__there\] msg1
+00000003 g( )+0f SECT( )+01 0000 \[.text\] mtg0
+00000014 g( )+0f SECT( )+01 0000 \[.text\] mtg1
+0000001f g( )+0f SECT( )+02 0000 \[.data\] zdg0
+00000031 g( )+0f SECT( )+02 0000 \[.data\] zdg1
+00000073 g( )+0f SECT( )+04 0000 \[__HERE.__there\] zsg0
+00000089 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
.*: +file format mach-o.*
#...
01: __TEXT.*__text.*(00000000)?00000000 (00000000)?00000004 80000000
-02: __DATA.*__zf_1.*(00000000)?00000000 (00000000)?00000000 00000001
-03: __DATA.*__zf_2.*(00000000)?00000000 (00000000)?00000002 00000001
-04: __DATA.*__zf_3.*(00000000)?00000000 (00000000)?0000000c 00000001
+02: __DATA.*__zf_1.*(00000000)?00000004 (00000000)?00000000 00000001
+03: __DATA.*__zf_2.*(00000000)?00000004 (00000000)?00000002 00000001
+04: __DATA.*__zf_3.*(00000000)?00000008 (00000000)?0000000c 00000001
.*: +file format mach-o.*
#...
SYMBOL TABLE:
-(00000000)?00000000 l.*0e SECT.*03 0000 \[__DATA.__zf_2\] zfs
-(00000000)?00000000 l.*0e SECT.*04 0000 \[__DATA.__zf_3\] withalign
-(00000000)?00000008 l.*0e SECT.*04 0000 \[__DATA.__zf_3\] withalign1
-(00000000)?00000000 g.*0f SECT.*01 0000 \[.text\] a
-(00000000)?00000001 g.*0f SECT.*01 0000 \[.text\] b
-(00000000)?00000002 g.*0f SECT.*01 0000 \[.text\] c
-(00000000)?00000003 g.*0f SECT.*01 0000 \[.text\] d
+(00000000)?00000004 l( )+0e SECT( )+03 0000 \[__DATA.__zf_2\] zfs
+(00000000)?00000008 l( )+0e SECT( )+04 0000 \[__DATA.__zf_3\] withalign
+(00000000)?00000010 l( )+0e SECT( )+04 0000 \[__DATA.__zf_3\] withalign1
+(00000000)?00000000 g( )+0f SECT( )+01 0000 \[.text\] a
+(00000000)?00000001 g( )+0f SECT( )+01 0000 \[.text\] b
+(00000000)?00000002 g( )+0f SECT( )+01 0000 \[.text\] c
+(00000000)?00000003 g( )+0f SECT( )+01 0000 \[.text\] d
+
+