[PATCH] D44227: [ELF] Convert {read, write}*be to endianness-aware read/write.
Rui Ueyama via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 8 20:04:21 PST 2018
ruiu accepted this revision.
ruiu added a comment.
This revision is now accepted and ready to land.
LGTM
================
Comment at: ELF/Target.h:184
+// Endianness-aware read/write.
+inline uint16_t read16(const void *P) {
+ return llvm::support::endian::read16(P, Config->Endianness);
----------------
MaskRay wrote:
> ruiu wrote:
> > Please use `uint8_t *` instead of `void *` for P.
> ```
> ../projects/lld/ELF/SyntheticSections.cpp:1767:5: error: no matching function for call to 'write32'
> write32(Buckets + I->BucketIdx, I->Sym->DynsymIndex);
> ^~~~~~~
> ../projects/lld/ELF/Target.h:200:13: note: candidate function not viable: no known conversion from 'uint32_t *' (aka 'unsigned int *') to 'uint8_t *' (aka 'unsigned char *') for 1st argument
> inline void write32(uint8_t *P, uint32_t V) {
> ^
> ../projects/lld/ELF/SyntheticSections.cpp:1841:3: error: no matching function for call to 'write32'
> write32(P++, NumSymbols); // nbucket
> ^~~~~~~
> ../projects/lld/ELF/Target.h:200:13: note: candidate function not viable: no known conversion from 'uint32_t *' (aka 'unsigned int *') to 'uint8_t *' (aka 'unsigned char *') for 1st argument
> inline void write32(uint8_t *P, uint32_t V) {
> ^
> ../projects/lld/ELF/SyntheticSections.cpp:1842:3: error: no matching function for call to 'write32'
> write32(P++, NumSymbols); // nchain
> ```
>
> uint8_t* uint32_t* uint16_t* typed pointers are all used. `void *` is a common type they will accept.
Ah thanks. I didn't know that.
Repository:
rLLD LLVM Linker
https://reviews.llvm.org/D44227
More information about the llvm-commits
mailing list