@@ -217,10 +217,7 @@ fn compute_string_table(names: &[u8]) -> MemberData<'_> {
217
217
}
218
218
}
219
219
220
- fn now ( deterministic : bool ) -> u64 {
221
- if !deterministic {
222
- todo ! ( "non deterministic mode is not yet supported" ) ; // FIXME
223
- }
220
+ const fn now ( ) -> u64 {
224
221
0
225
222
}
226
223
@@ -293,7 +290,6 @@ fn compute_symbol_table_size_and_pad(
293
290
fn write_symbol_table_header < W : Write + Seek > (
294
291
w : & mut W ,
295
292
kind : ArchiveKind ,
296
- deterministic : bool ,
297
293
size : u64 ,
298
294
prev_member_offset : u64 ,
299
295
) -> io:: Result < ( ) > {
@@ -304,29 +300,18 @@ fn write_symbol_table_header<W: Write + Seek>(
304
300
"__.SYMDEF"
305
301
} ;
306
302
let pos = w. stream_position ( ) ?;
307
- print_bsd_member_header ( w, pos, name, now ( deterministic ) , 0 , 0 , 0 , size)
303
+ print_bsd_member_header ( w, pos, name, now ( ) , 0 , 0 , 0 , size)
308
304
} else if is_aix_big_archive ( kind) {
309
- print_big_archive_member_header (
310
- w,
311
- "" ,
312
- now ( deterministic) ,
313
- 0 ,
314
- 0 ,
315
- 0 ,
316
- size,
317
- prev_member_offset,
318
- 0 ,
319
- )
305
+ print_big_archive_member_header ( w, "" , now ( ) , 0 , 0 , 0 , size, prev_member_offset, 0 )
320
306
} else {
321
307
let name = if is_64bit_kind ( kind) { "/SYM64" } else { "" } ;
322
- print_gnu_small_member_header ( w, name. to_string ( ) , now ( deterministic ) , 0 , 0 , 0 , size)
308
+ print_gnu_small_member_header ( w, name. to_string ( ) , now ( ) , 0 , 0 , 0 , size)
323
309
}
324
310
}
325
311
326
312
fn write_symbol_table < W : Write + Seek > (
327
313
w : & mut W ,
328
314
kind : ArchiveKind ,
329
- deterministic : bool ,
330
315
members : & [ MemberData < ' _ > ] ,
331
316
string_table : & [ u8 ] ,
332
317
prev_member_offset : u64 ,
@@ -341,7 +326,7 @@ fn write_symbol_table<W: Write + Seek>(
341
326
342
327
let offset_size = if is_64bit_kind ( kind) { 8 } else { 4 } ;
343
328
let ( size, pad) = compute_symbol_table_size_and_pad ( kind, num_syms, offset_size, string_table) ;
344
- write_symbol_table_header ( w, kind, deterministic , size, prev_member_offset) ?;
329
+ write_symbol_table_header ( w, kind, size, prev_member_offset) ?;
345
330
346
331
let mut pos = if is_aix_big_archive ( kind) {
347
332
u64:: try_from ( std:: mem:: size_of :: < big_archive:: FixLenHdr > ( ) ) . unwrap ( )
@@ -427,8 +412,6 @@ fn compute_member_data<'a, S: Write + Seek>(
427
412
sym_names : & mut Cursor < Vec < u8 > > ,
428
413
kind : ArchiveKind ,
429
414
thin : bool ,
430
- deterministic : bool ,
431
- need_symbols : bool ,
432
415
new_members : & ' a [ NewArchiveMember < ' a > ] ,
433
416
) -> io:: Result < Vec < MemberData < ' a > > > {
434
417
const PADDING_DATA : & [ u8 ; 8 ] = & [ b'\n' ; 8 ] ;
@@ -490,7 +473,7 @@ fn compute_member_data<'a, S: Write + Seek>(
490
473
// See also the functions that handle the lookup:
491
474
// in lldb: ObjectContainerBSDArchive::Archive::FindObject()
492
475
// in llvm/tools/dsymutil: BinaryHolder::GetArchiveMemberBuffers().
493
- let unique_timestamps = deterministic && is_darwin ( kind) ;
476
+ let unique_timestamps = is_darwin ( kind) ;
494
477
let mut filename_count = HashMap :: new ( ) ;
495
478
if unique_timestamps {
496
479
for m in new_members {
@@ -569,11 +552,7 @@ fn compute_member_data<'a, S: Write + Seek>(
569
552
) ?;
570
553
}
571
554
572
- let symbols = if need_symbols {
573
- write_symbols ( data, m. get_symbols , sym_names, & mut has_object) ?
574
- } else {
575
- vec ! [ ]
576
- } ;
555
+ let symbols = write_symbols ( data, m. get_symbols , sym_names, & mut has_object) ?;
577
556
578
557
pos += u64:: try_from ( header. len ( ) + data. len ( ) + padding. len ( ) ) . unwrap ( ) ;
579
558
ret. push ( MemberData {
@@ -597,9 +576,7 @@ fn compute_member_data<'a, S: Write + Seek>(
597
576
pub fn write_archive_to_stream < W : Write + Seek > (
598
577
w : & mut W ,
599
578
new_members : & [ NewArchiveMember < ' _ > ] ,
600
- write_symtab : bool ,
601
579
mut kind : ArchiveKind ,
602
- deterministic : bool ,
603
580
thin : bool ,
604
581
) -> io:: Result < ( ) > {
605
582
assert ! (
@@ -610,15 +587,7 @@ pub fn write_archive_to_stream<W: Write + Seek>(
610
587
let mut sym_names = Cursor :: new ( Vec :: new ( ) ) ;
611
588
let mut string_table = Cursor :: new ( Vec :: new ( ) ) ;
612
589
613
- let mut data = compute_member_data (
614
- & mut string_table,
615
- & mut sym_names,
616
- kind,
617
- thin,
618
- deterministic,
619
- write_symtab,
620
- new_members,
621
- ) ?;
590
+ let mut data = compute_member_data ( & mut string_table, & mut sym_names, kind, thin, new_members) ?;
622
591
623
592
let sym_names = sym_names. into_inner ( ) ;
624
593
@@ -646,13 +615,13 @@ pub fn write_archive_to_stream<W: Write + Seek>(
646
615
647
616
// The symbol table is put at the end of the big archive file. The symbol
648
617
// table is at the start of the archive file for other archive formats.
649
- if write_symtab && !is_aix_big_archive ( kind) {
618
+ if !is_aix_big_archive ( kind) {
650
619
// We assume 32-bit offsets to see if 32-bit symbols are possible or not.
651
620
let ( symtab_size, _pad) = compute_symbol_table_size_and_pad ( kind, num_syms, 4 , & sym_names) ;
652
621
last_member_header_offset += {
653
622
// FIXME avoid allocating memory here
654
623
let mut tmp = Cursor :: new ( vec ! [ ] ) ;
655
- write_symbol_table_header ( & mut tmp, kind, deterministic , symtab_size, 0 ) . unwrap ( ) ;
624
+ write_symbol_table_header ( & mut tmp, kind, symtab_size, 0 ) . unwrap ( ) ;
656
625
u64:: try_from ( tmp. into_inner ( ) . len ( ) ) . unwrap ( )
657
626
} + symtab_size;
658
627
@@ -687,9 +656,7 @@ pub fn write_archive_to_stream<W: Write + Seek>(
687
656
}
688
657
689
658
if !is_aix_big_archive ( kind) {
690
- if write_symtab {
691
- write_symbol_table ( w, kind, deterministic, & data, & sym_names, 0 ) ?;
692
- }
659
+ write_symbol_table ( w, kind, & data, & sym_names, 0 ) ?;
693
660
694
661
for m in data {
695
662
w. write_all ( & m. header ) ?;
@@ -723,7 +690,7 @@ pub fn write_archive_to_stream<W: Write + Seek>(
723
690
let member_table_size =
724
691
u64:: try_from ( 20 + 20 * member_offsets. len ( ) + member_table_name_str_tbl_size) . unwrap ( ) ;
725
692
726
- let global_symbol_offset = if write_symtab && num_syms > 0 {
693
+ let global_symbol_offset = if num_syms > 0 {
727
694
last_member_end_offset
728
695
+ align_to (
729
696
u64:: try_from ( std:: mem:: size_of :: < big_archive:: BigArMemHdrType > ( ) ) . unwrap ( )
@@ -817,15 +784,8 @@ pub fn write_archive_to_stream<W: Write + Seek>(
817
784
w. write_all ( & [ 0 ] ) ?;
818
785
}
819
786
820
- if write_symtab && num_syms > 0 {
821
- write_symbol_table (
822
- w,
823
- kind,
824
- deterministic,
825
- & data,
826
- & sym_names,
827
- last_member_end_offset,
828
- ) ?;
787
+ if num_syms > 0 {
788
+ write_symbol_table ( w, kind, & data, & sym_names, last_member_end_offset) ?;
829
789
}
830
790
}
831
791
}
0 commit comments