@@ -539,19 +539,19 @@ i64 ExportEncoder::set_offset(TrieNode &node, i64 offset) {
539
539
return offset;
540
540
}
541
541
542
- void ExportEncoder::write_trie (u8 *start ) {
543
- write_trie (start , root);
542
+ void ExportEncoder::write_trie (u8 *buf ) {
543
+ write_trie (buf , root);
544
544
}
545
545
546
546
void ExportEncoder::write_trie (u8 *start, TrieNode &node) {
547
- u8 *buf = start;
547
+ u8 *buf = start + node. offset ;
548
548
549
549
if (node.is_leaf ) {
550
550
buf += write_uleb (buf, uleb_size (node.flags ) + uleb_size (node.addr ));
551
551
buf += write_uleb (buf, node.flags );
552
552
buf += write_uleb (buf, node.addr );
553
553
} else {
554
- *buf++ = 1 ;
554
+ *buf++ = 0 ;
555
555
}
556
556
557
557
u8 *num_children = buf++;
@@ -573,8 +573,10 @@ void ExportEncoder::write_trie(u8 *start, TrieNode &node) {
573
573
OutputExportSection::OutputExportSection (OutputSegment &parent)
574
574
: OutputSection(parent) {
575
575
is_hidden = true ;
576
- enc.add (" __mh_execute_header" , 0 , 0x100000000 );
577
- hdr.size = enc.finish ();
576
+ enc.add (" __mh_execute_header" , 0 , 0 );
577
+ enc.add (" _hello" , 0 , 0x3f50 );
578
+ enc.add (" _main" , 0 , 0x3f70 );
579
+ hdr.size = align_to (enc.finish (), 8 );
578
580
}
579
581
580
582
void OutputExportSection::copy_buf (Context &ctx) {
0 commit comments