### Description
On `Fedora 31` dist master build log contains this warnings ``` make --no-print-directory -C ./squirrel/squirrel SQMARCH64="-m64" CC_EXTRA_FLAGS="-fPIC" \ OUT="../../libsquirrel.a" sq64 gcc -O2 -m64 -D_SQ64 -fno-exceptions -fno-rtti -Wall -fno-strict-aliasing -c sqapi.cpp sqbaselib.cpp sqfuncstate.cpp sqdebug.cpp sqlexer.cpp sqobject.cpp sqcompiler.cpp sqstate.cpp sqtable.cpp sqmem.cpp sqvm.cpp sqclass.cpp -I../include -I. -Iinclude -fPIC In file included from sqobject.h:5, from sqpcheader.h:17, from sqapi.cpp:4: squtils.h: In instantiation of 'void sqvector::remove(SQUnsignedInteger) [with T = SQObjectPtr; SQUnsignedInteger = long long unsigned int]': sqarray.h:83:27: required from here squtils.h:97:20: warning: 'void* memmove(void*, const void*, size_t)' writing to an object of type 'struct SQObjectPtr' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] 97 | memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sqpcheader.h:17, from sqapi.cpp:4: sqobject.h:205:8: note: 'struct SQObjectPtr' declared here 205 | struct SQObjectPtr : public SQObject | ^~~~~~~~~~~ In file included from sqobject.h:5, from sqpcheader.h:17, from sqbaselib.cpp:4: squtils.h: In instantiation of 'void sqvector::remove(SQUnsignedInteger) [with T = SQObjectPtr; SQUnsignedInteger = long long unsigned int]': sqarray.h:83:27: required from here squtils.h:97:20: warning: 'void* memmove(void*, const void*, size_t)' writing to an object of type 'struct SQObjectPtr' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] 97 | memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sqpcheader.h:17, from sqbaselib.cpp:4: sqobject.h:205:8: note: 'struct SQObjectPtr' declared here 205 | struct SQObjectPtr : public SQObject | ^~~~~~~~~~~ In file included from sqobject.h:5, from sqpcheader.h:17, from sqobject.cpp:4: squtils.h: In instantiation of 'void sqvector::remove(SQUnsignedInteger) [with T = SQObjectPtr; SQUnsignedInteger = long long unsigned int]': sqarray.h:83:27: required from here squtils.h:97:20: warning: 'void* memmove(void*, const void*, size_t)' writing to an object of type 'struct SQObjectPtr' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] 97 | memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sqpcheader.h:17, from sqobject.cpp:4: sqobject.h:205:8: note: 'struct SQObjectPtr' declared here 205 | struct SQObjectPtr : public SQObject | ^~~~~~~~~~~ In file included from sqobject.h:5, from sqpcheader.h:17, from sqstate.cpp:4: squtils.h: In instantiation of 'void sqvector::remove(SQUnsignedInteger) [with T = SQObjectPtr; SQUnsignedInteger = long long unsigned int]': sqarray.h:83:27: required from here squtils.h:97:20: warning: 'void* memmove(void*, const void*, size_t)' writing to an object of type 'struct SQObjectPtr' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] 97 | memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sqpcheader.h:17, from sqstate.cpp:4: sqobject.h:205:8: note: 'struct SQObjectPtr' declared here 205 | struct SQObjectPtr : public SQObject | ^~~~~~~~~~~ In file included from sqobject.h:5, from sqpcheader.h:17, from sqvm.cpp:4: squtils.h: In instantiation of 'void sqvector::remove(SQUnsignedInteger) [with T = SQObjectPtr; SQUnsignedInteger = long long unsigned int]': sqarray.h:83:27: required from here squtils.h:97:20: warning: 'void* memmove(void*, const void*, size_t)' writing to an object of type 'struct SQObjectPtr' with no trivial copy-assignment; use copy-assignment or copy-initialization instead [-Wclass-memaccess] 97 | memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - idx - 1)); | ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from sqpcheader.h:17, from sqvm.cpp:4: sqobject.h:205:8: note: 'struct SQObjectPtr' declared here 205 | struct SQObjectPtr : public SQObject | ^~~~~~~~~~~ ar rc ../../libsquirrel.a *.o ```
Yes, that is coming from the embedded code from squirrel. And as I already [mentioned](https://github.com/kamailio/kamailio/issues/1372#issuecomment-352125291) I don't like having embedded code.
I saw that you created a change as well to remove squirrel and use the debian version. Was this discussed on the mailing list that time?
Closed #2135.
app_squirrel is more for educational purposes or to be used on embedded systems upon proper testing. There is no plan to change/fix the imported files. The lib is not available in most of the *nixes out there, that was one reason for importing, besides the goal of no external dependency.
I just pushed the latest version of squirrel interpreter in master, not sure if it fixes anything.
Anyhow, feel free to exclude it from official packaging, if it causes any issues. Otherwise, this is a `will not be fixed case`.
Warning still exist after update. Looks as this lib already packaged into RPM. https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Everything...
I goes to update current version to latest. Then lib will be available for dynamic linking. Could you confirm that need use https://github.com/albertodemichelis/squirrel as source repo.
Reopened #2135.
Closed #2135.
@sergey-safarov please don't reopen the issue, warnings in squirrel will not be fixed by us. You can always try to fix them upstream
Victor @linuxmaniac If used already compiled shared lib, then no need to build (embed) squirrel source.
@sergey-safarov - as I wrote in my comment, the reason about embedding is also no external dependency, as kamailio is used on *BSD or other Unixes. Anyhow, the compile warnings are also in the external lib, just you don't see them.