| author | |
| committer | |
| log | 375bab8460517f5d5ee02c161dc65ff1694132d7 |
| tree | 02e428a21540cb8184f80271ef21b3c0a08a440c |
| parent | 12efefeba5a8128e0a79b4b04fad0d538c382e47 |
5 files changed, 19 insertions(+), 19 deletions(-)
src/Compilation.zig+2-2| ... | ... | @@ -364,7 +364,7 @@ pub const InitOptions = struct { |
| 364 | 364 | link_emit_relocs: bool = false, |
| 365 | 365 | linker_script: ?[]const u8 = null, |
| 366 | 366 | version_script: ?[]const u8 = null, |
| 367 | override_soname: ?[]const u8 = null, | |
| 367 | soname: ?[]const u8 = null, | |
| 368 | 368 | linker_gc_sections: ?bool = null, |
| 369 | 369 | linker_allow_shlib_undefined: ?bool = null, |
| 370 | 370 | linker_bind_global_refs_locally: ?bool = null, |
| ... | ... | @@ -828,7 +828,7 @@ pub fn create(gpa: *Allocator, options: InitOptions) !*Compilation { |
| 828 | 828 | .emit_relocs = options.link_emit_relocs, |
| 829 | 829 | .rdynamic = options.rdynamic, |
| 830 | 830 | .extra_lld_args = options.lld_argv, |
| 831 | .override_soname = options.override_soname, | |
| 831 | .soname = options.soname, | |
| 832 | 832 | .version = options.version, |
| 833 | 833 | .libc_installation = libc_dirs.libc_installation, |
| 834 | 834 | .pic = pic, |
src/glibc.zig+2-2| ... | ... | @@ -917,7 +917,7 @@ fn buildSharedLib( |
| 917 | 917 | }; |
| 918 | 918 | const version: std.builtin.Version = .{ .major = lib.sover, .minor = 0, .patch = 0 }; |
| 919 | 919 | const ld_basename = path.basename(comp.getTarget().standardDynamicLinkerPath().get().?); |
| 920 | const override_soname = if (mem.eql(u8, lib.name, "ld")) ld_basename else null; | |
| 920 | const soname = if (mem.eql(u8, lib.name, "ld")) ld_basename else null; | |
| 921 | 921 | const map_file_path = try path.join(arena, &[_][]const u8{ bin_directory.path.?, all_map_basename }); |
| 922 | 922 | const c_source_files = [1]Compilation.CSourceFile{ |
| 923 | 923 | .{ |
| ... | ... | @@ -955,7 +955,7 @@ fn buildSharedLib( |
| 955 | 955 | .clang_passthrough_mode = comp.clang_passthrough_mode, |
| 956 | 956 | .version = version, |
| 957 | 957 | .version_script = map_file_path, |
| 958 | .override_soname = override_soname, | |
| 958 | .soname = soname, | |
| 959 | 959 | .c_source_files = &c_source_files, |
| 960 | 960 | .is_compiler_rt_or_libc = true, |
| 961 | 961 | }); |
src/link.zig+1-1| ... | ... | @@ -88,7 +88,7 @@ pub const Options = struct { |
| 88 | 88 | subsystem: ?std.Target.SubSystem, |
| 89 | 89 | linker_script: ?[]const u8, |
| 90 | 90 | version_script: ?[]const u8, |
| 91 | override_soname: ?[]const u8, | |
| 91 | soname: ?[]const u8, | |
| 92 | 92 | llvm_cpu_features: ?[*:0]const u8, |
| 93 | 93 | /// Extra args passed directly to LLD. Ignored when not linking with LLD. |
| 94 | 94 | extra_lld_args: []const []const u8, |
src/link/Elf.zig+2-2| ... | ... | @@ -1314,7 +1314,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { |
| 1314 | 1314 | } |
| 1315 | 1315 | } |
| 1316 | 1316 | if (is_dyn_lib) { |
| 1317 | man.hash.addOptionalBytes(self.base.options.override_soname); | |
| 1317 | man.hash.addOptionalBytes(self.base.options.soname); | |
| 1318 | 1318 | man.hash.addOptional(self.base.options.version); |
| 1319 | 1319 | } |
| 1320 | 1320 | man.hash.addStringSet(self.base.options.system_libs); |
| ... | ... | @@ -1512,7 +1512,7 @@ fn linkWithLLD(self: *Elf, comp: *Compilation) !void { |
| 1512 | 1512 | } |
| 1513 | 1513 | |
| 1514 | 1514 | if (is_dyn_lib) { |
| 1515 | if (self.base.options.override_soname) |soname| { | |
| 1515 | if (self.base.options.soname) |soname| { | |
| 1516 | 1516 | try argv.append("-soname"); |
| 1517 | 1517 | try argv.append(soname); |
| 1518 | 1518 | } |
src/main.zig+12-12| ... | ... | @@ -467,7 +467,7 @@ fn buildOutputType( |
| 467 | 467 | var linker_script: ?[]const u8 = null; |
| 468 | 468 | var version_script: ?[]const u8 = null; |
| 469 | 469 | var disable_c_depfile = false; |
| 470 | var override_soname: ?[]const u8 = null; | |
| 470 | var soname: ?[]const u8 = null; | |
| 471 | 471 | var linker_gc_sections: ?bool = null; |
| 472 | 472 | var linker_allow_shlib_undefined: ?bool = null; |
| 473 | 473 | var linker_bind_global_refs_locally: ?bool = null; |
| ... | ... | @@ -1108,33 +1108,33 @@ fn buildOutputType( |
| 1108 | 1108 | if (i >= linker_args.items.len) { |
| 1109 | 1109 | fatal("expected linker arg after '{}'", .{arg}); |
| 1110 | 1110 | } |
| 1111 | const soname = linker_args.items[i]; | |
| 1112 | override_soname = soname; | |
| 1111 | const name = linker_args.items[i]; | |
| 1112 | soname = name; | |
| 1113 | 1113 | // Use it as --name. |
| 1114 | 1114 | // Example: libsoundio.so.2 |
| 1115 | 1115 | var prefix: usize = 0; |
| 1116 | if (mem.startsWith(u8, soname, "lib")) { | |
| 1116 | if (mem.startsWith(u8, name, "lib")) { | |
| 1117 | 1117 | prefix = 3; |
| 1118 | 1118 | } |
| 1119 | var end: usize = soname.len; | |
| 1120 | if (mem.endsWith(u8, soname, ".so")) { | |
| 1119 | var end: usize = name.len; | |
| 1120 | if (mem.endsWith(u8, name, ".so")) { | |
| 1121 | 1121 | end -= 3; |
| 1122 | 1122 | } else { |
| 1123 | 1123 | var found_digit = false; |
| 1124 | while (end > 0 and std.ascii.isDigit(soname[end - 1])) { | |
| 1124 | while (end > 0 and std.ascii.isDigit(name[end - 1])) { | |
| 1125 | 1125 | found_digit = true; |
| 1126 | 1126 | end -= 1; |
| 1127 | 1127 | } |
| 1128 | if (found_digit and end > 0 and soname[end - 1] == '.') { | |
| 1128 | if (found_digit and end > 0 and name[end - 1] == '.') { | |
| 1129 | 1129 | end -= 1; |
| 1130 | 1130 | } else { |
| 1131 | end = soname.len; | |
| 1131 | end = name.len; | |
| 1132 | 1132 | } |
| 1133 | if (mem.endsWith(u8, soname[prefix..end], ".so")) { | |
| 1133 | if (mem.endsWith(u8, name[prefix..end], ".so")) { | |
| 1134 | 1134 | end -= 3; |
| 1135 | 1135 | } |
| 1136 | 1136 | } |
| 1137 | provided_name = soname[prefix..end]; | |
| 1137 | provided_name = name[prefix..end]; | |
| 1138 | 1138 | } else if (mem.eql(u8, arg, "-rpath")) { |
| 1139 | 1139 | i += 1; |
| 1140 | 1140 | if (i >= linker_args.items.len) { |
| ... | ... | @@ -1660,7 +1660,7 @@ fn buildOutputType( |
| 1660 | 1660 | .linker_script = linker_script, |
| 1661 | 1661 | .version_script = version_script, |
| 1662 | 1662 | .disable_c_depfile = disable_c_depfile, |
| 1663 | .override_soname = override_soname, | |
| 1663 | .soname = soname, | |
| 1664 | 1664 | .linker_gc_sections = linker_gc_sections, |
| 1665 | 1665 | .linker_allow_shlib_undefined = linker_allow_shlib_undefined, |
| 1666 | 1666 | .linker_bind_global_refs_locally = linker_bind_global_refs_locally, |