authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-13 00:20:23+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-05-17 04:41:24+02:00
loge52ffe673875db6c3007be8632849b8c65a41462
tree70309525a1123938b7b2aec69d551b361d75bee6
parent9e48e919e7f2bd29ae3bd664646c28d9baf6d0fd
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

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.

1 files changed, 7 insertions(+), 4 deletions(-)

src/libs/glibc.zig+7-4
...@@ -966,6 +966,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye...@@ -966,6 +966,8 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
966966
967 const obj_inclusions_len = try inc_reader.readInt(u16, .little);967 const obj_inclusions_len = try inc_reader.readInt(u16, .little);
968968
969 var sizes = try arena.alloc(u16, metadata.all_versions.len);
970
969 sym_i = 0;971 sym_i = 0;
970 opt_symbol_name = null;972 opt_symbol_name = null;
971 versions_buffer = undefined;973 versions_buffer = undefined;
...@@ -1003,6 +1005,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye...@@ -1003,6 +1005,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
1003 if (ok_lib_and_target and ver_i <= target_ver_index) {1005 if (ok_lib_and_target and ver_i <= target_ver_index) {
1004 versions_buffer[versions_len] = ver_i;1006 versions_buffer[versions_len] = ver_i;
1005 versions_len += 1;1007 versions_len += 1;
1008 sizes[ver_i] = size;
1006 }1009 }
1007 if (last) break;1010 if (last) break;
1008 }1011 }
...@@ -1066,14 +1069,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye...@@ -1066,14 +1069,14 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
1066 sym_plus_ver,1069 sym_plus_ver,
1067 sym_plus_ver,1070 sym_plus_ver,
1068 sym_plus_ver,1071 sym_plus_ver,
1069 size,1072 sizes[ver_index],
1070 sym_plus_ver,1073 sym_plus_ver,
1071 sym_name,1074 sym_name,
1072 at_sign_str,1075 at_sign_str,
1073 ver.major,1076 ver.major,
1074 ver.minor,1077 ver.minor,
1075 sym_plus_ver,1078 sym_plus_ver,
1076 size,1079 sizes[ver_index],
1077 });1080 });
1078 } else {1081 } else {
1079 const sym_plus_ver = try std.fmt.allocPrint(1082 const sym_plus_ver = try std.fmt.allocPrint(
...@@ -1094,7 +1097,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye...@@ -1094,7 +1097,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
1094 sym_plus_ver,1097 sym_plus_ver,
1095 sym_plus_ver,1098 sym_plus_ver,
1096 sym_plus_ver,1099 sym_plus_ver,
1097 size,1100 sizes[ver_index],
1098 sym_plus_ver,1101 sym_plus_ver,
1099 sym_name,1102 sym_name,
1100 at_sign_str,1103 at_sign_str,
...@@ -1102,7 +1105,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye...@@ -1102,7 +1105,7 @@ pub fn buildSharedObjects(comp: *Compilation, prog_node: std.Progress.Node) anye
1102 ver.minor,1105 ver.minor,
1103 ver.patch,1106 ver.patch,
1104 sym_plus_ver,1107 sym_plus_ver,
1105 size,1108 sizes[ver_index],
1106 });1109 });
1107 }1110 }
1108 }1111 }