[llvm-objcopy] Fix crash when removing symbol table at same time as adding a symbol
authorGeorgy Komarov <jubnzv@gmail.com>
Wed, 1 Jul 2020 07:15:39 +0000 (10:15 +0300)
committerGeorgy Komarov <jubnzv@gmail.com>
Sun, 5 Jul 2020 02:14:00 +0000 (05:14 +0300)
commitafd81a637dfc79d2960ef8add1c697cb81c929ef
tree313be71183ccb3ce30227d918a1ec27d3642b8b5
parent65330f394b2c5ede01acb97a84112c3cc0127c46
[llvm-objcopy] Fix crash when removing symbol table at same time as adding a symbol

This patch resolves crash that occurs when user wanted to remove all
symbols and add a brand new one using:

```
llvm-objcopy -R .symtab --add-symbol foo=1234 in.o out.o
```

Before these changes the symbol table internally being null when adding
new symbols. For now we will regenerate symtab in this case.

This fixes: https://bugs.llvm.org/show_bug.cgi?id=43930

Reviewed By: jhenderson

Differential Revision: https://reviews.llvm.org/D82935
llvm/test/tools/llvm-objcopy/ELF/add-symbol-new-symtab.test [new file with mode: 0644]
llvm/tools/llvm-objcopy/ELF/ELFObjcopy.cpp
llvm/tools/llvm-objcopy/ELF/Object.cpp
llvm/tools/llvm-objcopy/ELF/Object.h