|
|
Message-ID: <548325F5.2050205@pennware.com>
Date: Sat, 06 Dec 2014 09:51:17 -0600
From: Richard Pennington <rich@...nware.com>
To: musl@...ts.openwall.com
Subject: Bare metal musl data points.
Hi,
A few examples of bare metal musl in action.
The simplest main(). No I/O. Just startup code and libc initialization:
dev main 367 % cat main.c
int main()
{
}
dev main 357 % size main
text data bss dec hex filename
5358 2080 33156 40594 9e92 main
dev main 368 % make run
Running main
enter 'control-A x' to exit QEMU
audio: Could not init `oss' audio driver
The simplest hello world example in C. Polled serial I/O:
dev hello 371 % cat main.c
#include <stdio.h>
int main()
{
printf("hello world\n");
}
dev hello 361 % size hello
text data bss dec hex filename
26377 2228 34204 62809 f559 hello
dev hello 370 % make run
Running hello
enter 'control-A x' to exit QEMU
audio: Could not init `oss' audio driver
hello world
Hello world again in C++. Yikes!
dev hellocpp 373 % cat main.cpp
#include <iostream>
int main()
{
std::cout << "hello world" << std::endl;
}
dev hellocpp 363 % size hellocpp
text data bss dec hex filename
1327518 2568 43600 1373686 14f5f6 hellocpp
calhost.localdomain hellocpp 374 % make run
Running hellocpp
enter 'control-A x' to exit QEMU
audio: Could not init `oss' audio driver
hello world
A full ELK build with file system, virtual memory, etc.:
/* ELK running as a VM enabled OS.
*/
#include <sys/cdefs.h>
#include <stdio.h>
#include "command.h"
int main(int argc, char **argv)
{
setprogname("elk");
printf("%s started. Type \"help\" for a list of commands.\n",
getprogname());
// Enter the kernel command processor.
do_commands(getprogname());
}
dev elk 377 % size elk
text data bss dec hex filename
223830 3456 54540 281826 44ce2 elk
dev elk 379 % make run
Running elk
enter 'control-A x' to exit QEMU
audio: Could not init `oss' audio driver
elk started. Type "help" for a list of commands.
elk % ps
Total pages: 7936 (32505856 bytes), Free pages: 7926 (32464896 bytes)
PID TID TADR STATE PRI NAME
0 0 0x800452e8 RUNNING 1 kernel
0 2 0x8004ae54 IDLE 3 [idle0]
elk % date
Thu Jan 1 00:00:31 1970
elk %
[~] main%
Fun stuff.
Rich
http://ellcc.org
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.