File tree Expand file tree Collapse file tree 2 files changed +9
-4
lines changed Expand file tree Collapse file tree 2 files changed +9
-4
lines changed Original file line number Diff line number Diff line change @@ -1685,8 +1685,11 @@ template <class ELFT> void SymbolTableSection<ELFT>::writeTo(uint8_t *Buf) {
1685
1685
ESym->st_other |= STO_MIPS_PLT;
1686
1686
if (isMicroMips ()) {
1687
1687
// Set STO_MIPS_MICROMIPS flag and less-significant bit for
1688
- // defined microMIPS symbols and shared symbols with PLT record.
1689
- if (Sym->isDefined () && (Sym->StOther & STO_MIPS_MICROMIPS)) {
1688
+ // a defined microMIPS symbol and symbol should point to its
1689
+ // PLT entry (in case of microMIPS, PLT entries always contain
1690
+ // microMIPS code).
1691
+ if (Sym->isDefined () &&
1692
+ ((Sym->StOther & STO_MIPS_MICROMIPS) || Sym->NeedsPltAddr )) {
1690
1693
if (StrTabSec.isDynamic ())
1691
1694
ESym->st_value |= 1 ;
1692
1695
ESym->st_other |= STO_MIPS_MICROMIPS;
Original file line number Diff line number Diff line change 42
42
# CHECK-NEXT: Binding: Global
43
43
# CHECK-NEXT: Type: Function
44
44
# CHECK-NEXT: Other [
45
+ # CHECK-NEXT: STO_MIPS_MICROMIPS
45
46
# CHECK-NEXT: STO_MIPS_PLT
46
47
# CHECK-NEXT: ]
47
48
# CHECK-NEXT: Section: Undefined
50
51
# CHECK: DynamicSymbols [
51
52
# CHECK: Symbol {
52
53
# CHECK: Name: foo0
53
- # CHECK-NEXT: Value: 0x20040
54
+ # CHECK-NEXT: Value: 0x20041
54
55
# CHECK-NEXT: Size:
55
56
# CHECK-NEXT: Binding: Global
56
57
# CHECK-NEXT: Type: Function
57
58
# CHECK-NEXT: Other [
59
+ # CHECK-NEXT: STO_MIPS_MICROMIPS
58
60
# CHECK-NEXT: STO_MIPS_PLT
59
61
# CHECK-NEXT: ]
60
62
# CHECK-NEXT: Section: Undefined
76
78
# CHECK-NEXT: Entry {
77
79
# CHECK-NEXT: Address:
78
80
# CHECK-NEXT: Initial: 0x20021
79
- # CHECK-NEXT: Value: 0x20040
81
+ # CHECK-NEXT: Value: 0x20041
80
82
# CHECK-NEXT: Type: Function
81
83
# CHECK-NEXT: Section: Undefined
82
84
# CHECK-NEXT: Name: foo0@
You can’t perform that action at this time.
0 commit comments