Skip to content

Commit 8672689

Browse files
committed
WIP hack avoid long member names.
1 parent 136dc9d commit 8672689

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

src/archive.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,13 +106,15 @@ mod windows_import_lib {
106106
// name: * // import name; null terminated string
107107
// dll_name: * // dll name; null terminated string
108108
pub fn generate(dll_name: &str, import_names: &[&str]) -> Vec<u8> {
109-
assert!(dll_name.len() < 16, "long member names not supported yet");
110109
assert!(import_names.len() <= 0xFFFF, "too many import names");
111110
// number of symbols, and members containing symbols for symbol lookup members
112111
let symbol_count = import_names.len();
113112

114113
let mut writer = Writer::new();
115114

115+
// hack: trim dll name to 15 characters to avoid long member names
116+
let member_name = &dll_name[..dll_name.len().min(15)];
117+
116118
// legacy symbol directory
117119
let mut legacy_symbol_directory = writer.start_member_raw();
118120
legacy_symbol_directory.set_raw_name(b"/");
@@ -150,7 +152,7 @@ mod windows_import_lib {
150152

151153
// import members
152154
for (index, name) in import_names.iter().enumerate() {
153-
let mut member = writer.start_member(dll_name);
155+
let mut member = writer.start_member(member_name);
154156
// update member offsets
155157
let member_offset = member.header_offset as u32;
156158
member.data[legacy_member_table_offset + index * 4..][..4]

0 commit comments

Comments
 (0)