| ... | ... | @@ -384,7 +384,7 @@ pub const GotSection = struct { |
| 384 | 384 | try writeInt(value, elf_file, writer); |
| 385 | 385 | }, |
| 386 | 386 | .tlsld => { |
| 387 | | try writeInt(if (is_dyn_lib) @as(u64, 0) else 1, elf_file, writer); |
| 387 | try writeInt(if (is_dyn_lib) @as(i64, 0) else 1, elf_file, writer); |
| 388 | 388 | try writeInt(0, elf_file, writer); |
| 389 | 389 | }, |
| 390 | 390 | .tlsgd => { |
| ... | ... | @@ -392,7 +392,7 @@ pub const GotSection = struct { |
| 392 | 392 | try writeInt(0, elf_file, writer); |
| 393 | 393 | try writeInt(0, elf_file, writer); |
| 394 | 394 | } else { |
| 395 | | try writeInt(if (is_dyn_lib) @as(u64, 0) else 1, elf_file, writer); |
| 395 | try writeInt(if (is_dyn_lib) @as(i64, 0) else 1, elf_file, writer); |
| 396 | 396 | const offset = symbol.?.address(.{}, elf_file) - elf_file.dtpAddress(); |
| 397 | 397 | try writeInt(offset, elf_file, writer); |
| 398 | 398 | } |
| ... | ... | @@ -412,17 +412,12 @@ pub const GotSection = struct { |
| 412 | 412 | } |
| 413 | 413 | }, |
| 414 | 414 | .tlsdesc => { |
| 415 | | if (symbol.?.flags.import) { |
| 416 | | try writeInt(0, elf_file, writer); |
| 417 | | try writeInt(0, elf_file, writer); |
| 418 | | } else { |
| 419 | | try writeInt(0, elf_file, writer); |
| 420 | | const offset = if (apply_relocs) |
| 421 | | symbol.?.address(.{}, elf_file) - elf_file.tlsAddress() |
| 422 | | else |
| 423 | | 0; |
| 424 | | try writeInt(offset, elf_file, writer); |
| 425 | | } |
| 415 | try writeInt(0, elf_file, writer); |
| 416 | const offset: i64 = if (apply_relocs and !symbol.?.flags.import) |
| 417 | symbol.?.address(.{}, elf_file) - elf_file.tlsAddress() |
| 418 | else |
| 419 | 0; |
| 420 | try writeInt(offset, elf_file, writer); |
| 426 | 421 | }, |
| 427 | 422 | } |
| 428 | 423 | } |
| ... | ... | @@ -1505,9 +1500,9 @@ fn writeInt(value: anytype, elf_file: *Elf, writer: anytype) !void { |
| 1505 | 1500 | const target = elf_file.getTarget(); |
| 1506 | 1501 | const endian = target.cpu.arch.endian(); |
| 1507 | 1502 | switch (entry_size) { |
| 1508 | | 2 => try writer.writeInt(u16, @intCast(value), endian), |
| 1509 | | 4 => try writer.writeInt(u32, @intCast(value), endian), |
| 1510 | | 8 => try writer.writeInt(u64, @intCast(value), endian), |
| 1503 | 2 => try writer.writeInt(i16, @intCast(value), endian), |
| 1504 | 4 => try writer.writeInt(i32, @intCast(value), endian), |
| 1505 | 8 => try writer.writeInt(i64, value, endian), |
| 1511 | 1506 | else => unreachable, |
| 1512 | 1507 | } |
| 1513 | 1508 | } |