@@ -384,15 +384,15 @@ 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 = > {
391
391
if (symbol .? .flags .import ) {
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
}
0 commit comments