BuildSystem: binutils1.39->1.44, gcc12.2.0->15.1.0

This commit is contained in:
2025-06-19 19:00:50 +03:00
parent 9c86e5e54d
commit 32c35a822b
9 changed files with 387 additions and 18 deletions

View File

@@ -68,7 +68,9 @@ namespace Kernel
bool has_fd(int fd) const
{
if (fd < 0 || static_cast<size_t>(fd) >= events.size())
// For some reason having (fd < 0 || ...) makes GCC 15.1.0
// think bitmap access can be out of bounds...
if (static_cast<size_t>(fd) >= events.size())
return false;
return bitmap[fd / 32] & (1u << (fd % 32));
}

View File

@@ -179,7 +179,7 @@ namespace Kernel
BAN::Atomic<bool> m_smp_free_lock { false };
SMPMessage* m_smp_free { nullptr };
SMPMessage* m_smp_message_storage;
SMPMessage* m_smp_message_storage { nullptr };
void* m_current_page_table { nullptr };

View File

@@ -13,7 +13,7 @@ namespace Kernel
long ret;
asm volatile("int %[irq]"
: "=a"(ret)
: [irq]"i"(IRQ_SYSCALL)
: [irq]"i"(static_cast<int>(IRQ_SYSCALL)) // WTF GCC 15
, "a"(syscall)
, "b"((uintptr_t)arg1)
, "c"((uintptr_t)arg2)

View File

@@ -746,6 +746,8 @@ namespace Kernel::ACPI::AML
return {};
}
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstack-usage="
static BAN::ErrorOr<void> perform_store(const Node& source, Reference* target, TargetType target_type)
{
dprintln_if(AML_DUMP_FUNCTION_CALLS, "perform_store");
@@ -826,6 +828,7 @@ namespace Kernel::ACPI::AML
return {};
}
#pragma GCC diagnostic pop
static BAN::ErrorOr<void> store_into_target(ParseContext& context, const Node& node)
{

View File

@@ -176,19 +176,20 @@ namespace Kernel
switch (entry->type)
{
case 0:
Processor processor;
processor.processor_id = entry->entry0.acpi_processor_id;
processor.apic_id = entry->entry0.apic_id;
processor.flags = entry->entry0.flags & 0x03;
MUST(apic->m_processors.push_back(processor));
MUST(apic->m_processors.emplace_back(Processor {
.processor_id = entry->entry0.acpi_processor_id,
.apic_id = entry->entry0.apic_id,
.flags = static_cast<uint8_t>(entry->entry0.flags & 0x03),
}));
break;
case 1:
IOAPIC ioapic;
ioapic.id = entry->entry1.ioapic_id;
ioapic.paddr = entry->entry1.ioapic_address;
ioapic.gsi_base = entry->entry1.gsi_base;
ioapic.max_redirs = 0;
MUST(apic->m_io_apics.push_back(ioapic));
MUST(apic->m_io_apics.emplace_back(IOAPIC {
.id = entry->entry1.ioapic_id,
.paddr = entry->entry1.ioapic_address,
.vaddr = 0,
.gsi_base = entry->entry1.gsi_base,
.max_redirs = 0,
}));
break;
case 2:
apic->m_irq_overrides[entry->entry2.irq_source] = entry->entry2.gsi;

View File

@@ -391,7 +391,7 @@ namespace Kernel
// NOTE: This is offset by 2 pointers since interrupt without PL change
// does not push SP and SS. This allows accessing "whole" interrupt stack.
:: [load_sp]"r"(Processor::current_stack_top() - 2 * sizeof(uintptr_t)),
[yield]"i"(IRQ_YIELD)
[yield]"i"(static_cast<int>(IRQ_YIELD)) // WTF GCC 15
: "memory", "rcx"
);
#elif ARCH(i686)
@@ -403,7 +403,7 @@ namespace Kernel
// NOTE: This is offset by 2 pointers since interrupt without PL change
// does not push SP and SS. This allows accessing "whole" interrupt stack.
:: [load_sp]"r"(Processor::current_stack_top() - 2 * sizeof(uintptr_t)),
[yield]"i"(IRQ_YIELD)
[yield]"i"(static_cast<int>(IRQ_YIELD)) // WTF GCC 15
: "memory", "ecx"
);
#else