Improved platform detection

This commit is contained in:
WolverinDEV 2020-01-24 22:27:54 +01:00
parent 42feb48467
commit a829f705d2
3 changed files with 39 additions and 6 deletions

View File

@ -202,7 +202,6 @@ INSTALL (
set(TEST_LIBRARIES
threadpool::static #Static
TeaSpeak #Static
CXXTerminal::static #Static
${StringVariable_LIBRARIES_STATIC}
${YAML_CPP_LIBRARIES}

View File

@ -127,7 +127,9 @@ command command::parse(const std::string_view &data, bool expect_type, bool drop
}
size_t bulk_index = 0;
while(++current_index > 0 || (current_index == 0 && !expect_type && (expect_type = true))) {
while(++current_index > 0 || (current_index == 0 && !expect_type)) {
expect_type = true;
end_index = data.find_first_of(" |", current_index);
if(end_index != current_index) { /* else we've found another space or a pipe */

View File

@ -50,15 +50,23 @@ void handleCommand(
const field<tl("key_c"), uint64_t>::optional::bulked& key_c,
const trigger<tl("test")>& switch_test
) {
if(key_a.value() < 10)
cout << "ERROR" << endl;
if(key_a.value() < 10) {
__asm__("nop");
}
__asm__("nop");
auto b = key_c.as<string>();
__asm__("nop");
string key_c_str = key_c;
__asm__("nop");
auto c = key_b.has_value();
cout << key_c[1].value() << endl;
cout << "Return code: " << return_code.get_or<string>("XXX") << endl;
__asm__("nop");
(void) key_c[1].value();
__asm__("nop");
(void) return_code.get_or<string>("XXX");
//cout << << endl;
//cout << "Return code: " << return_code.get_or<string>("XXX") << endl;
__asm__("nop");
}
@ -85,7 +93,31 @@ void eval_test(command_result x) {
}
}
struct A {
virtual ~A() { puts("~A\n"); }
};
struct B : public A {
virtual ~B() { puts("~B\n"); }
};
int main() {
make_command_result(error::accounting_slot_limit_reached, "");
/*
0x559e5259a479 <main()+41>: lea 0xa0(%rsp),%rbx
0x559e5259a481 <main()+49>: lea 0x30(%rsp),%r14
0x559e5259a486 <main()+54>: callq 0x559e525579d0 <operator new(unsigned long)@plt>
0x559e5259a48b <main()+59>: lea 0x17e6a6(%rip),%rdi # 0x559e52718b38
0x559e5259a492 <main()+66>: mov %rax,%rbp
0x559e5259a495 <main()+69>: callq 0x559e52558b10 <puts@plt>
0x559e5259a49a <main()+74>: mov $0x1,%esi
0x559e5259a49f <main()+79>: mov %rbp,%rdi
0x559e5259a4a2 <main()+82>: callq 0x559e525573d0 <operator delete(void*, unsigned long)@plt>
*/
{
A* var = new B{};
delete var;
}
test<"abs">();
//for(const auto& error : avariableErrors)
// cout << error.name << " = " << hex << "0x" << error.errorId << "," << endl;