diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2019-08-23 13:36:14 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2019-08-23 13:36:14 +0000 |
commit | 58492b1895e23869253592544ae87f58742013e3 (patch) | |
tree | c853c979734c2bd1b7a0a55e58ce952c00080d88 /lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc | |
parent | 57ae79d7a25cbb9f542bea55b9cb629abb80174e (diff) | |
download | bcm5719-llvm-58492b1895e23869253592544ae87f58742013e3.tar.gz bcm5719-llvm-58492b1895e23869253592544ae87f58742013e3.zip |
[mips] Do not include offset into `%got` expression for global symbols
Now pseudo instruction `la $6, symbol+8($6)` is expanding into the following
chain of commands:
```
lw $1, %got(symbol+8)($gp)
addiu $1, $1, 8
addu $6, $1, $6
```
This is incorrect. When a linker handles the `R_MIPS_GOT16` relocation,
it does not expect to get any addend and breaks on assertion. Otherwise
it has to create new GOT entry for each unique "sym + offset" pair.
Offset for a global symbol should be added to result of loading GOT
entry by a separate `add` command.
The patch fixes the problem by stripping off an offset from the expression
passed to the `%got`. That's interesting that even current code inserts
a separate `add` command.
Differential Revision: https://reviews.llvm.org/D66552
llvm-svn: 369755
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/expression_command/context-object-objc')
0 files changed, 0 insertions, 0 deletions