omjavaid added a comment. In D92063#2416162 <https://reviews.llvm.org/D92063#2416162>, @labath wrote:
> +@mgorny, as he's been navigating these waters lately... > > So... I presume we can't just slap `__attribute__((packed))` on the > structure, because the kernel actually expects that the data structure will > have the extra space for the padding. Is that so? > > Even if we can't, I'm wondering if it wouldn't be cleaner to use two > structures for this. Something like: > > LLVM_PACKED_START > struct GPR { > // as before... > }; > /// Big comment explaining the purpose of padding > struct GPRBuffer: GPR { > uint32_t pad; > }; > LLVM_PACKED_END > > and then using GPR or GPRBuffer accordingly. What do you think? So I didnt check this before but FreeBSD and Linux have different ptrace GPR size expectation. Here is what FreeBSD struct looks like: struct reg { uint64_t x[30]; uint64_t lr; uint64_t sp; uint64_t elr; uint32_t spsr; }; While on Linux it looks something like this: struct { u64 regs[31]; u64 sp; u64 pc; u64 pstate; }; So I am going to put a __attribute__((packed)) and use the same for FreeBSD while going to isolate Linux implementation in my next update. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D92063/new/ https://reviews.llvm.org/D92063 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits