Commit Graph

89 Commits

Author SHA1 Message Date
1a0d15ca86 userland: convert make to python 2019-03-12 10:01:38 +00:00
0deab8f8f7 user mode: use the nonexistent symlink workaround
I was considering setting --static by default to match gem5, but then
that breaks shared libraries like openblas... so let's just use the
ugly workaround for now as it seems to work...
2019-03-12 10:01:38 +00:00
a9160d2217 Sort all os.listdir and os.walk to keep things more reproducible 2019-03-10 00:00:04 +00:00
2e3f4c1484 baremetal: refactor build to reduce duplication 2019-03-10 00:00:03 +00:00
d5e16fd8ae lkmc_vector_equal into lkmc.c
Document lkmc.c
2019-02-20 00:00:04 +00:00
a8b6f758ba split --prebuilt and --host into --gcc-which and --qemu-which
Only one --host exists at ./build-modules, since that can select the host
kernel, which is independent from the toolchain.

Document that user mode simulation stopped working.
2019-02-16 00:00:00 +00:00
01194dda5c userland: --static implies --userland-build-id static 2019-02-15 00:00:00 +00:00
240ef1f431 linux: dominate defconfig
build-linux: make it more flexible to better meet the task
2019-02-06 00:00:01 +00:00
125d14805f buildroot: move to glibc
selinux: continue attempt now that we have glibc, but still failing
2019-02-01 00:00:01 +00:00
0578d8975e android: understand that rw are qcow2 2019-01-31 00:00:01 +00:00
9012247540 android: understand the disk images 2019-01-30 00:00:01 +00:00
5b39fd2129 android: add working run script 2019-01-30 00:00:00 +00:00
72cd8f580d build-gem5: --clang 2019-01-25 00:00:03 +00:00
7b99c45ac2 build-gem5: build individual unit tests 2019-01-25 00:00:02 +00:00
ce8e363ca1 gem5: expose unit tests 2019-01-25 00:00:00 +00:00
c858e57ed9 build-gem5: fix worktree checkout 2019-01-24 00:00:02 +00:00
4f6051af1d build android sketch 2019-01-23 00:00:03 +00:00
da900a579c LKMC v3.0
This is a squash commit, the unsquashed development went through many
unstable phases which would break bisects. The unsquashed branch is:
https://github.com/cirosantilli/linux-kernel-module-cheat/tree/v3.0-unsquash

The main improvement of this release was to greatly generalize the testing system.

The key addition was cli_function.py, which allows scripts such as ./run to
be transparently called either from Python or from the command line.

New tests scripts were created using this improved framework: test-baremetal
and test-user-mode.

We were lazy to port some of less important tests to the new setup, TODO's were
added, and we need comes they will be fixed. Getting started is however sacred
as usual and should work.

Other changes include:

-   gem5: update to 7fa4c946386e7207ad5859e8ade0bbfc14000d91

-   run: --tmux-args implies --tmux

-   run: add --userland-args to make userland arguments across QEMU and gem5

    Get rid of --userland-before as a consequence.

-   bring initrd and initramfs back to life

-   build-userland: create --static to make build a bit easier

-   gem5: --gem5-worktree also set --gem5-build-id

-   remove --gem5, use --emulator gem5 everywhere

    Allow passing --emulator multiple times for transparent tests selection
    just like --arch.

-   test-userland: allow selecting just a few tests

-   linux: update to v4.20

-   buildroot: update to 2018.08

    The main motivation for this was to fix the build for Ubuntu 18.10, which
    has glibc 2.28, which broke the 2018.05 build at the m4-host package with:

        #error "Please port gnulib fseeko.c to your platform!

-   getvar --type input

-   failed xen attempt, refactor timer, failed svc attempt, aarch64 use gicv3

-   build-doc: exit 1 on error, add to release testing

-   build: add --apt option to make things easier on other distros

-   build-linux: --no-modules-install
2019-01-22 00:00:00 +00:00
d569854ae1 kernel: add section about /proc/version
Customize user, host and date
2018-12-05 00:00:00 +00:00
f03e6ea2eb linux: add --linux-source-dir to have custom linux source dir 2018-12-04 15:10:02 +00:00
38ba2b85fc gem5 display: a bit more info on dp650 2018-12-04 15:10:02 +00:00
bc9e348a44 start simple integration to test dp650
Not yet merged on gem5 mailine, review published at:
https://gem5-review.googlesource.com/c/public/gem5/+/11036/1
2018-12-04 00:00:00 +00:00
ba2976cc7f gem5: fix arm multicore with system.auto_reset_addr = True
baremetal: fix aarch64/no_bootloader/semihost_exit.S which was wrong
because was using unset sp for register block. Tests needed urgently!!
2018-11-26 00:00:00 +00:00
7816f1f635 trace: improve a bit, fix bugs 2018-11-23 00:00:00 +00:00
8dd01415f5 baremetal: only rebuild required files based on mtime
Move multcore test up with bootloader.
2018-11-22 00:00:03 +00:00
f73eaaffd2 prebuilt: automatically pick up qemu from PATH if not built like qemu-img 2018-11-22 00:00:02 +00:00
034bd3600f build-buildroot: fix qemu-img -T order
Fix #42
2018-11-20 00:00:03 +00:00
33f286b354 run: make qemu-img more resilient to --prebuilt by not doing -T in that case 2018-11-19 22:35:16 +00:00
238f1ad1c0 common: add --qemu option to override configs 2018-11-13 00:00:02 +00:00
403d4a9d06 docker: migrate to python 2018-11-11 00:00:01 +00:00
32420eec33 download-dependencies: merge into ./build --download-dependencies
Reuses the module system dependencies present there.

run: make --dry-run work even when there is no out directory yet

docker: make the wrapping more intuitive
2018-11-10 00:00:02 +00:00
6119fb80ea common: print_cmd only prints a single line if the command fits in one line
No more ugly ' \\\n;' ending!
2018-11-10 00:00:02 +00:00
c1f060ca65 test-gdb: find source path correctly
Previously was relying on glob order, and which could pick up the .py
instead of the .c / .S.
2018-11-09 00:00:02 +00:00
5d649377fc build: make baremetal parts more flexible and powerful
Document test-gdb on readme
2018-11-09 00:00:01 +00:00
e0dbe2416d gdb: create some automated tests with pytest
gem5 baremetal: use m5exit m5op in exit() so as to not force users to
apply a patch for almost all examples
2018-11-09 09:33:44 +00:00
b1e16a59a1 baremetal: exit at the end of main instead of infinite loop
run: interpret lkmc_test_fail as the last line of test as an error
2018-11-09 09:33:44 +00:00
d39d5b8154 run: add --background option 2018-11-07 05:48:13 +00:00
72167f9f68 bring a minimal buildroot kernel modules example to life
More importantly, to make modules_install on the Linux kernel build.
2018-11-05 00:00:00 +00:00
8fb9db3931 manually encode newlines on all printed commands
This way we group key value arguments: e.g.:

    make \
    -j 8 \
    all

instead of:

    make \
    -j \
    8 \
    all

and reach CLI nirvana, while also subtly breaking several commands due to
lack of testing.
2018-11-04 00:00:01 +00:00
9693c23fe6 gdb userland and gdbserver are perfect 2018-11-03 00:00:01 +00:00
07a000cae7 rename packages to buildroot_packages
fix BR2_SAMPLE_PACKAGE to PACKAGE_SAMPLE_PACKAGE on README

Add some more README.adoc to subdirs.
2018-11-02 22:00:09 +00:00
6bfb5221d1 userland: make --host awesome 2018-10-31 19:00:05 +00:00
e042a1b2ad console: make awesome 2018-10-31 21:00:03 +00:00
65a103d6c1 host kernel module works 2018-10-31 23:00:01 +00:00
911dd8be32 remove some more kernel_module- references
make kgdb x86_64 work once again, now pending a decent serial refactor
2018-10-31 23:00:01 +00:00
4f47491482 userland: make uber awesome with --baremetal-like executable resolution 2018-10-30 22:00:02 +00:00
ab2574a790 userland: build id
user mode: factor out nicely with -static and build id
2018-10-30 22:00:02 +00:00
b5b646ffd4 qemu: document GDB user mode, fix some stuff 2018-10-29 22:00:02 +00:00
a29b5a41fb gem5: expose syscall emulation with --user
Then also expose QEMU user mode with --user. Docs not perfect yet,
would require a build alternative for userland/ for -static and or
passing options before the QEMU userland executable with a new CLI.
2018-10-29 22:00:02 +00:00
e267435f6a fix most of GDB and remove most kernel_modules- references 2018-10-29 00:00:00 +00:00