Slice Posted May 12, 2020 Share Posted May 12, 2020 1 minute ago, Pene said: But I'm not sure it's a good idea to do that in StrnCpy. Because that's against the standard implementation: http://www.cplusplus.com/reference/cstring/strncpy/ Sometimes, we may pass a buffer of specific size, and doing a *Destination = L'\0' at the end will write past that buffer. For this case memcpy exists. Link to comment Share on other sites More sharing options...
Pene Posted May 12, 2020 Share Posted May 12, 2020 (edited) 26 minutes ago, Slice said: For this case memcpy exists. Yes, I agree. But with that change we need to remember that our StrnCpy doesn't follow the convention and we need to ensure we have a buffer of n+1. Edited May 12, 2020 by Pene Link to comment Share on other sites More sharing options...
Slice Posted May 12, 2020 Share Posted May 12, 2020 I think we can write it into definition and keep in mind. But I want strings will always be null-terminating no matter what EDK2 decided. Or, for example claim that length must be 1 char less then allocated size. Link to comment Share on other sites More sharing options...
Slice Posted May 12, 2020 Share Posted May 12, 2020 StrnCpy(dest, src, len); In this example len should be checked before the function call. Link to comment Share on other sites More sharing options...
Pene Posted May 12, 2020 Share Posted May 12, 2020 (edited) In standard C I remember there is also strncpy_s() which is null terminated. Does it not exist in edk2? If I recall, the difference is that strncpy zeros all remaining bytes (if there are remaining), and strncpy_s always adds one single byte. Yes: strncpy_s unlike strncpy is a null terminated string function, and does not pad the destination array with zeroes. Edited May 12, 2020 by Pene Link to comment Share on other sites More sharing options...
Slice Posted May 12, 2020 Share Posted May 12, 2020 50 minutes ago, Pene said: In standard C I remember there is also strncpy_s() which is null terminated. Does it not exist in edk2? If I recall, the difference is that strncpy zeros all remaining bytes (if there are remaining), and strncpy_s always adds one single byte. Yes: strncpy_s unlike strncpy is a null terminated string function, and does not pad the destination array with zeroes. Exactly what we need There is analog in EDK2 StrnCpyS so we must rewrite all our code to use new function instead of old one. Or not use them at all and switch to XString. 1 Link to comment Share on other sites More sharing options...
Jief_Machak Posted May 12, 2020 Share Posted May 12, 2020 1 hour ago, Slice said: Or not use them at all and switch to XString. I vote for that 2 Link to comment Share on other sites More sharing options...
Goron Posted May 12, 2020 Share Posted May 12, 2020 I have some strange behavior in Clover, perhaps @Slice can point me in the right direction: In UEFI shell, starup chime is crystal clear, but, when played by CLOVER it sounds like someones farting in a can ??? I'll attach a video of that behavior ... and besides that, after EVERY NVRam reset (F11) the sound gets lost and needs to be reapplyed from within the UEFI Shell: is there a way to tell CLOVER to use that sound via .plist? Appreciate any answer! Cheers Goron WhatsApp Video 2020-05-11 at 20.51.56.mp4 Link to comment Share on other sites More sharing options...
Slice Posted May 13, 2020 Share Posted May 13, 2020 There are different sound files. What else? Link to comment Share on other sites More sharing options...
vector sigma Posted May 13, 2020 Share Posted May 13, 2020 (edited) Hi @Killuminati91, with FakeSMC I have no problems since Mavericks till Catalina, btw this is the wrong thread to talk about issues related to VirtualSMC and other Lilu plugins. Guys everythings ok here with gcc 10.1.0. Should we migrate? gcc10.diff.zip CLOVERX64.efi.zip Edited May 13, 2020 by vector sigma Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 @Killuminati91 I moved your post to VirtualSMC thread @vector sigma If you are sure all is OK then commit changes to scripts. I will test. Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 6 hours ago, vector sigma said: Hi @Killuminati91, with FakeSMC I have no problems since Mavericks till Catalina, btw this is the wrong thread to talk about issues related to VirtualSMC and other Lilu plugins. Guys everythings ok here with gcc 10.1.0. Should we migrate? gcc10.diff.zip CLOVERX64.efi.zip There are new options and new warnings. May be create new toolset GCC10? Nice static const int π = 3; int get_naïve_pi() { return π; } 1 Link to comment Share on other sites More sharing options...
vector sigma Posted May 14, 2020 Share Posted May 14, 2020 (edited) 12 hours ago, Slice said: There are new options and new warnings. May be create new toolset GCC10? I did not touch the toolsdef, but if you see something usefull why not. 12 hours ago, Slice said: static const int π = 3; int get_naïve_pi() { return π; } yep nice to use more characters (in truth I hate it Lol) . Nicer would be having also the setter method for a variable like the above. Edited May 14, 2020 by vector sigma Link to comment Share on other sites More sharing options...
vanxuanty95 Posted May 14, 2020 Share Posted May 14, 2020 I want to ask why boot arguments always add -v while I deleted it. I am using ver r5116 Thanks Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 22 minutes ago, vanxuanty95 said: I want to ask why boot arguments always add -v while I deleted it. I am using ver r5116 Thanks It seems you do something wrong. Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 1 hour ago, vector sigma said: I did not touch the toolsdef, but if you see something usefull why not. yep nice to use more characters (in truth I hate it Lol) . Nicer would be having also the setter method for a variable like the above. Not done iMac2017:Clover sergey$ ./build_gcc10.sh - Building GCC 10.1.0 toolchain for x64 - to /Users/sergey/src/opt/local/cross/bin/x86_64-clover-linux-gnu Running on Mac OS X 10.14, with x86_64 architecture. Using Xcode SDK: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk Status: gmp-6.2.0 not found. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1965k 100 1965k 0 0 1043k 0 0:00:01 0:00:01 --:--:-- 1043k Status: isl-0.22.1 not found. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 1637k 100 1637k 0 0 2073k 0 --:--:-- --:--:-- --:--:-- 2072k Status: binutils-2.34 not found. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 20.6M 100 20.6M 0 0 6915k 0 0:00:03 0:00:03 --:--:-- 6916k Status: gcc-10.1.0 not found. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 71.1M 100 71.1M 0 0 11.5M 0 0:00:06 0:00:06 --:--:-- 15.5M * GCC toolchain Build process took 0s to complete... iMac2017:Clover sergey$ Link to comment Share on other sites More sharing options...
vanxuanty95 Posted May 14, 2020 Share Posted May 14, 2020 (edited) 32 minutes ago, Slice said: It seems you do something wrong. My config file does not have -v, and didn't change after boot, I am sure of it, and my log also noted that I did not use -v, but when booted it was automatically added, I also checked vram, -v always in there Edited May 14, 2020 by vanxuanty95 Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 Just now, vanxuanty95 said: My config file does not have -v, and didn't change after boot, I am sure of it, and my log also noted that I did not use -v, but when booted it was automatically added, I also checked vram, -v always in there Show something please, config.plist, preboot.log, nvram somehow. Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 GCC 10.1 works! Now we have to find advantages. Link to comment Share on other sites More sharing options...
vector sigma Posted May 14, 2020 Share Posted May 14, 2020 (edited) 52 minutes ago, vanxuanty95 said: I also checked vram, -v always in there delete it from nvram then because it's persistent 44 minutes ago, Slice said: GCC 10.1 works! Now we have to find advantages. Find no one yet but I feel confident from the GNU guys... as always. Edited May 14, 2020 by vector sigma Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 New warning but not essential /Users/sergey/src/Clover/rEFIt_UEFI/Platform/Settings.h:832:18: error: redundant class-key 'struct' in reference to 'struct MatchOSes' [-Werror=redundant-tags] 832 | TrimMatchOSArray(struct MatchOSes *s); | ^~~~~~ | ------ It can't produce an error but helps us to simplify sources. 1 Link to comment Share on other sites More sharing options...
Slice Posted May 14, 2020 Share Posted May 14, 2020 -Weffc++ gives me thousand errors. Link to comment Share on other sites More sharing options...
vector sigma Posted May 14, 2020 Share Posted May 14, 2020 -Weffc++ (C++ and Objective-C++ only) Warn about violations of the following style guidelines from Scott Meyers’ Effective C++ series of books: Define a copy constructor and an assignment operator for classes with dynamically-allocated memory. Prefer initialization to assignment in constructors. Have operator= return a reference to *this. Don’t try to return a reference when you must return an object. Distinguish between prefix and postfix forms of increment and decrement operators. Never overload &&, ||, or ,. This option also enables -Wnon-virtual-dtor, which is also one of the effective C++ recommendations. However, the check is extended to warn about the lack of virtual destructor in accessible non-polymorphic bases classes too. When selecting this option, be aware that the standard library headers do not obey all of these guidelines; use ‘grep -v’ to filter out those warnings. -Wnon-virtual-dtor (C++ and Objective-C++ only) Warn when a class has virtual functions and an accessible non-virtual destructor itself or in an accessible polymorphic base class, in which case it is possible but unsafe to delete an instance of a derived class through a pointer to the class itself or base class. This warning is automatically enabled if -Weffc++ is specified. ..took me some time to find it here Link to comment Share on other sites More sharing options...
vanxuanty95 Posted May 15, 2020 Share Posted May 15, 2020 11 hours ago, Slice said: Show something please, config.plist, preboot.log, nvram somehow. Thank for your help, I have attached files preboot.log config.plist Link to comment Share on other sites More sharing options...
Slice Posted May 15, 2020 Share Posted May 15, 2020 1 hour ago, vanxuanty95 said: Thank for your help, I have attached files preboot.log config.plist As you are using EmuVariableUefi then check files nvram.plist in the root of all volumes. Link to comment Share on other sites More sharing options...
Recommended Posts