================
@@ -116,6 +116,10 @@ std::pair<uint8_t, uint8_t> 
PPCXCOFFObjectWriter::getRelocTypeAndSignSize(
       return {XCOFF::RelocationType::R_TLS_IE, SignAndSizeForFKData};
     case MCSymbolRefExpr::VK_PPC_AIX_TLSLE:
       return {XCOFF::RelocationType::R_TLS_LE, SignAndSizeForFKData};
+    case MCSymbolRefExpr::VK_PPC_AIX_TLSLD:
----------------
orcguru wrote:

I think there could be concern regarding this setting, and I observed obj 
output and the asm-as output is a little bit different on "IsSigned" setting on 
relocations for symbol ".__tls_get_mod", for example:

obj mode output processed by "llvm-readobj --relocs --expand-relocs"
```
  Section (index: 1) .text {
    Relocation {
      Virtual Address: 0xE
      Symbol: _$TLSML (11)
      IsSigned: No
      FixupBitValue: 0
      Length: 16
      Type: R_TOC (0x3)
    }
    Relocation {
      Virtual Address: 0x10
      Symbol: .__tls_get_mod (1)
      IsSigned: No
      FixupBitValue: 0
      Length: 26
      Type: R_RBA (0x18)
    }
    Relocation {
      Virtual Address: 0x16
      Symbol: a (13)
      IsSigned: No
      FixupBitValue: 0
      Length: 16
      Type: R_TOC (0x3)
    }
...
```

asm mode output assembled by "as -a64 -many ", and then processed by 
"llvm-readobj --relocs --expand-relocs"
```
  Section (index: 1) .text {
    Relocation {
      Virtual Address: 0x16
      Symbol: a (13)
      IsSigned: No
      FixupBitValue: 0
      Length: 16
      Type: R_TOC (0x3)
    }
    Relocation {
      Virtual Address: 0x1A
      Symbol: _$TLSML (15)
      IsSigned: No
      FixupBitValue: 0
      Length: 16
      Type: R_TOC (0x3)
    }
    Relocation {
      Virtual Address: 0x1C
      Symbol: .__tls_get_mod (3)
      IsSigned: Yes
      FixupBitValue: 0
      Length: 26
      Type: R_RBA (0x18)
    }
...
```

Notice they have different setting regarding "IsSigned" on the relocation for 
the ".__tls_get_mod" symbol.

I took another look into the behavior of general-dynamic, and then I saw the 
same difference there:

obj mode
```
    Relocation {
      Virtual Address: 0x1C
      Symbol: .__tls_get_addr (1)
      IsSigned: No
      FixupBitValue: 0
      Length: 26
      Type: R_RBA (0x18)
    }
```

asm mode
```
    Relocation {
      Virtual Address: 0x1C
      Symbol: .__tls_get_addr (3)
      IsSigned: Yes
      FixupBitValue: 0
      Length: 26
      Type: R_RBA (0x18)
    }
```

Looks like LD is aligned with GD in this particular behavior, so this may not 
be an issue.

https://github.com/llvm/llvm-project/pull/66316
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to