Bug 306260

Summary: libANGLE: lots of -Wclass-memaccess warnings
Product: WebKit Reporter: Thomas Klausner <wiz>
Component: ANGLEAssignee: Nobody <webkit-unassigned>
Status: NEW    
Severity: Normal CC: djg, kbr, kkinnunen
Priority: P2    
Version: Other   
Hardware: All   
OS: Other   

Thomas Klausner
Reported 2026-01-26 03:24:46 PST
When building webkit-gtk-2.50.4 on NetBSD, I see many warnings like the ones below about libangle. I reported this to the webkit-gtk mailing list and Michael Catanzaro said they were probably ok, but either the warning should be disabled or suppressed for these files, see https://lists.webkit.org/archives/list/webkit-gtk@lists.webkit.org/message/2GUR4GPWCV3XIBHWLT6L3JAED5AT6X23/ and to report a bug. Here is the bug report :-) /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h: In constructor 'gl::ActiveVariable::ActiveVariable()': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:63:30: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::ActiveVariable::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 63 | ActiveVariable() { memset(&pod, 0, sizeof(pod)); } | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp: In constructor 'gl::ProgramExecutable::ProgramExecutable(rx::GLImplFactory*, gl::InfoLog*)': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/ProgramExecutable.cpp:750:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::ProgramExecutable::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 750 | memset(&mPod, 0, sizeof(mPod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::LinkedUniform::LinkedUniform(GLenum, GLenum, const std::vector<unsigned int>&, int, int, int, int, const sh::BlockMemberInfo&)': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:28:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::LinkedUniform'; use assignment or value-initialization instead [-Wclass-memaccess] 28 | memset(this, 0, sizeof(*this)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:87:8: note: 'struct gl::LinkedUniform' declared here 87 | struct LinkedUniform | ^~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::BufferVariable::BufferVariable()': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:85:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::BufferVariable::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 85 | memset(&pod, 0, sizeof(pod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:204:12: note: 'struct gl::BufferVariable::PODStruct' declared here 204 | struct PODStruct | ^~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::BufferVariable::BufferVariable(GLenum, GLenum, const std::string&, const std::vector<unsigned int>&, int, int, const sh::BlockMemberInfo&)': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:100:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::BufferVariable::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 100 | memset(&pod, 0, sizeof(pod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:204:12: note: 'struct gl::BufferVariable::PODStruct' declared here 204 | struct PODStruct | ^~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::AtomicCounterBuffer::AtomicCounterBuffer()': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:112:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::AtomicCounterBuffer::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 112 | memset(&pod, 0, sizeof(pod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:240:12: note: 'struct gl::AtomicCounterBuffer::PODStruct' declared here 240 | struct PODStruct | ^~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::InterfaceBlock::InterfaceBlock()': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:131:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::InterfaceBlock::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 131 | memset(&pod, 0, sizeof(pod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.h:278:12: note: 'struct gl::InterfaceBlock::PODStruct' declared here 278 | struct PODStruct | ^~~~~~~~~ /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp: In constructor 'gl::InterfaceBlock::InterfaceBlock(const std::string&, const std::string&, bool, bool, unsigned int, unsigned int, int)': /tmp/wip/webkit-gtk/work/webkitgtk-2.50.4/Source/ThirdParty/ANGLE/src/libANGLE/Uniform.cpp:143:11: warning: 'void* memset(void*, int, size_t)' clearing an object of non-trivial type 'struct gl::InterfaceBlock::PODStruct'; use assignment or value-initialization instead [-Wclass-memaccess] 143 | memset(&pod, 0, sizeof(pod)); | ~~~~~~^~~~~~~~~~~~~~~~~~~~~~
Attachments
Note You need to log in before you can comment on or make changes to this bug.