set vma on mach-o sections.

gas:

	* 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.

gas/testsuite:

	* 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.
This commit is contained in:
Iain Sandoe 2012-01-13 11:55:02 +00:00
parent ee5106fede
commit c3402d2056
10 changed files with 378 additions and 271 deletions

View file

@ -1,3 +1,11 @@
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

View file

@ -45,6 +45,8 @@
#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);
@ -1471,6 +1473,89 @@ obj_macho_frob_symbol (struct symbol *sp)
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)

View file

@ -62,6 +62,9 @@ extern void obj_macho_frob_label (struct symbol *);
#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);

View file

@ -1,3 +1,12 @@
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.

View file

@ -11,35 +11,35 @@ Load command dysymtab:
( )+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

View file

@ -5,66 +5,66 @@
.*: +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
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

View file

@ -5,66 +5,66 @@
.*: +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
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

View file

@ -5,112 +5,112 @@
.*: +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

View file

@ -2,6 +2,6 @@
.*: +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

View file

@ -3,10 +3,12 @@
.*: +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