From e8bc22d9c183e9371747ebf39e15ea7a69723253 Mon Sep 17 00:00:00 2001 From: Const Correctness Date: Fri, 20 Jun 2025 02:49:22 -0400 Subject: [PATCH 1/2] Update cxx.cc C++14 standard (see https://en.cppreference.com/w/cpp/memory/new/operator_delete) requires operator delete(void *, size_t), --- src/kernel/runtime/cxx.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/kernel/runtime/cxx.cc b/src/kernel/runtime/cxx.cc index 19c9d01..1342047 100644 --- a/src/kernel/runtime/cxx.cc +++ b/src/kernel/runtime/cxx.cc @@ -70,6 +70,10 @@ void operator delete(void *ptr) kfree(ptr); } +void operator delete(void *ptr, size_t) noexcept { + kfree(ptr); +} + #ifndef __arm__ void* operator new(size_t len) { From 7226fc7420fb85c7f1290bd98bcafb4dcf919752 Mon Sep 17 00:00:00 2001 From: horriblecpp Date: Fri, 20 Jun 2025 02:51:54 -0400 Subject: [PATCH 2/2] updated src/Vagrantfile for modern use --- src/Vagrantfile | 139 +++++++----------------------------------------- 1 file changed, 20 insertions(+), 119 deletions(-) diff --git a/src/Vagrantfile b/src/Vagrantfile index 046ab4c..eb85f94 100644 --- a/src/Vagrantfile +++ b/src/Vagrantfile @@ -1,127 +1,28 @@ # -*- mode: ruby -*- # vi: set ft=ruby : -# Vagrantfile API/syntax version. Don't touch unless you know what you're doing! -VAGRANTFILE_API_VERSION = "2" +Vagrant.configure("2") do |config| + config.vm.box = "ubuntu/bionic64" -Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| - # All Vagrant configuration is done here. The most common configuration - # options are documented and commented below. For a complete reference, - # please see the online documentation at vagrantup.com. + # Optional: specific version + # config.vm.box_version = "20240112.0.0" - # Every Vagrant virtual environment requires a box to build off of. - config.vm.box = "lucid32" + # Networking example: uncomment to enable + # config.vm.network "private_network", ip: "192.168.56.10" - # The url from where the 'config.vm.box' box will be fetched if it - # doesn't already exist on the user's system. - config.vm.box_url = "http://files.vagrantup.com/lucid32.box" + # Sync a host folder to guest VM (uncomment if needed) + # config.vm.synced_folder "./host_folder", "/home/vagrant/guest_folder" - # Create a forwarded port mapping which allows access to a specific port - # within the machine from a port on the host machine. In the example below, - # accessing "localhost:8080" will access port 80 on the guest machine. - # config.vm.network :forwarded_port, guest: 80, host: 8080 - - # Create a private network, which allows host-only access to the machine - # using a specific IP. - # config.vm.network :private_network, ip: "192.168.33.10" - - # Create a public network, which generally matched to bridged network. - # Bridged networks make the machine appear as another physical device on - # your network. - # config.vm.network :public_network - - # If true, then any SSH connections made will enable agent forwarding. - # Default value: false - # config.ssh.forward_agent = true - - # Share an additional folder to the guest VM. The first argument is - # the path on the host to the actual folder. The second argument is - # the path on the guest to mount the folder. And the optional third - # argument is a set of non-required options. - # config.vm.synced_folder "../data", "/vagrant_data" - - # Provider-specific configuration so you can fine-tune various - # backing providers for Vagrant. These expose provider-specific options. - # Example for VirtualBox: - # - # config.vm.provider :virtualbox do |vb| - # # Don't boot with headless mode - # vb.gui = true - # - # # Use VBoxManage to customize the VM. For example to change memory: - # vb.customize ["modifyvm", :id, "--memory", "1024"] - # end - # - # View the documentation for the provider you're using for more - # information on available options. - - # Enable provisioning with Puppet stand alone. Puppet manifests - # are contained in a directory path relative to this Vagrantfile. - # You will need to create the manifests directory and a manifest in - # the file base.pp in the manifests_path directory. - # - # An example Puppet manifest to provision the message of the day: - # - # # group { "puppet": - # # ensure => "present", - # # } - # # - # # File { owner => 0, group => 0, mode => 0644 } - # # - # # file { '/etc/motd': - # # content => "Welcome to your Vagrant-built virtual machine! - # # Managed by Puppet.\n" - # # } - # - # config.vm.provision :puppet do |puppet| - # puppet.manifests_path = "manifests" - # puppet.manifest_file = "init.pp" - # end - - # Enable provisioning with chef solo, specifying a cookbooks path, roles - # path, and data_bags path (all relative to this Vagrantfile), and adding - # some recipes and/or roles. - # - # config.vm.provision :chef_solo do |chef| - # chef.cookbooks_path = "../my-recipes/cookbooks" - # chef.roles_path = "../my-recipes/roles" - # chef.data_bags_path = "../my-recipes/data_bags" - # chef.add_recipe "mysql" - # chef.add_role "web" - # - # # You may also specify custom JSON attributes: - # chef.json = { :mysql_password => "foo" } - # end - - $script = %Q{ + # Provision using a shell script (inline) + config.vm.provision "shell", inline: <<-SHELL sudo apt-get update - sudo apt-get install nasm make build-essential grub qemu zip -y - } - - - config.vm.provision :shell, :inline => $script - - - # Enable provisioning with chef server, specifying the chef server URL, - # and the path to the validation key (relative to this Vagrantfile). - # - # The Opscode Platform uses HTTPS. Substitute your organization for - # ORGNAME in the URL and validation key. - # - # If you have your own Chef Server, use the appropriate URL, which may be - # HTTP instead of HTTPS depending on your configuration. Also change the - # validation key to validation.pem. - # - # config.vm.provision :chef_client do |chef| - # chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME" - # chef.validation_key_path = "ORGNAME-validator.pem" - # end - # - # If you're using the Opscode platform, your validator client is - # ORGNAME-validator, replacing ORGNAME with your organization name. - # - # If you have your own Chef Server, the default validation client name is - # chef-validator, unless you changed the configuration. - # - # chef.validation_client_name = "ORGNAME-validator" -end + sudo apt-get install -y nasm make build-essential grub-pc-bin qemu-system-x86 zip + SHELL + + # Optional VirtualBox tweaks + config.vm.provider "virtualbox" do |vb| + vb.name = "modern_vm" + vb.memory = 2048 + vb.cpus = 2 + end +end \ No newline at end of file