diff options
| author | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-13 00:20:23 +0200 |
|---|---|---|
| committer | Alex Rønne Petersen <alex@alexrp.com> | 2025-05-17 04:41:24 +0200 |
| commit | e52ffe673875db6c3007be8632849b8c65a41462 (patch) | |
| tree | 70309525a1123938b7b2aec69d551b361d75bee6 /src/libs | |
| parent | 9e48e919e7f2bd29ae3bd664646c28d9baf6d0fd (diff) | |
| download | zig-e52ffe673875db6c3007be8632849b8c65a41462.tar.gz zig-e52ffe673875db6c3007be8632849b8c65a41462.zip | |
glibc: Fix a benign bug when selecting the size of an object symbol.
This didn't cause any problems in practice, but doing it this way is technically
more correct.
Diffstat (limited to 'src/libs')
| -rw-r--r-- | src/libs/glibc.zig | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libs/glibc.zig b/src/libs/glibc.zig index 5d1c6f420b..bd698cc0b3 100644 --- a/src/libs/glibc.zig +++ b/src/libs/glibc.zig @@ -966,6 +966,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye const obj_inclusions_len = try inc_reader.readInt(u16, .little); + var sizes = try arena.alloc(u16, metadata.all_versions.len); + sym_i = 0; opt_symbol_name = null; versions_buffer = undefined; @@ -1003,6 +1005,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye if (ok_lib_and_target and ver_i <= target_ver_index) { versions_buffer[versions_len] = ver_i; versions_len += 1; + sizes[ver_i] = size; } if (last) break; } @@ -1066,14 +1069,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye sym_plus_ver, sym_plus_ver, sym_plus_ver, - size, + sizes[ver_index], sym_plus_ver, sym_name, at_sign_str, ver.major, ver.minor, sym_plus_ver, - size, + sizes[ver_index], }); } else { const sym_plus_ver = try std.fmt.allocPrint( @@ -1094,7 +1097,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye sym_plus_ver, sym_plus_ver, sym_plus_ver, - size, + sizes[ver_index], sym_plus_ver, sym_name, at_sign_str, @@ -1102,7 +1105,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye ver.minor, ver.patch, sym_plus_ver, - size, + sizes[ver_index], }); } } |
