[PATCH] D92021: [llvm-readelf/obj] - Stop using `reportError` when dumping notes.

George Rimar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 25 01:08:10 PST 2020


grimar marked an inline comment as done.
grimar added inline comments.


================
Comment at: llvm/test/tools/llvm-readobj/ELF/gnu-notes.test:121
+# ERR1-GNU-NEXT:   Owner                Data size        Description
+# ERR1-GNU-NEXT: warning: '[[FILE]]': unable to read notes from the SHT_NOTE section with index 1: SHT_NOTE section [index 1] has invalid offset (0xffff0000) or size (0x0)
+# ERR1-GNU-NOT: {{.}}
----------------
grimar wrote:
> jhenderson wrote:
> > The mention of the "SHT_NOTE section [index 1]" happens twice redundantly. Same issue with the program header below. Do you think we could omit some of this redudant context?
> The problem is that on one situations notes might report the section index and type:
> 
> ```
>   Elf_Note_Iterator notes_begin(const Elf_Phdr &Phdr, Error &Err) const {
>     assert(Phdr.p_type == ELF::PT_NOTE && "Phdr is not of type PT_NOTE");
>     ErrorAsOutParameter ErrAsOutParam(&Err);
>     if (Phdr.p_offset + Phdr.p_filesz > getBufSize()) {
>       Err = createError("PT_NOTE header has invalid offset (0x" +
>                         Twine::utohexstr(Phdr.p_offset) + ") or size (0x" +
>                         Twine::utohexstr(Phdr.p_filesz) + ")");
>       return Elf_Note_Iterator(Err);
>     }
>     return Elf_Note_Iterator(base() + Phdr.p_offset, Phdr.p_filesz, Err);
>   }
> ```
> 
> but in other situations the note iterator might report an error on its own without a context:
> 
> ```
> class Elf_Note_Iterator_Impl
>     : std::iterator<std::forward_iterator_tag, Elf_Note_Impl<ELFT>> {
> 
>   // Stop iteration and indicate an overflow.
>   void stopWithOverflowError() {
>     Nhdr = nullptr;
>     *Err = make_error<StringError>("ELF note overflows container",
>                                    object_error::parse_failed);
>   }
> 
> ```
> 
> Perhaps, the best solution would be to stop reporting section index/type in Object/ELF.h/notes_begin().
> This was introduced by me for llvm-readobj in D64470. Instead we can describe sections/program headers
> on the caller side, like we normally do for other warnings/errors.
> 
> I'll suggest a patch tomorrow.
> 
I've prepared the patch: D92081


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92021/new/

https://reviews.llvm.org/D92021



More information about the llvm-commits mailing list