Compare commits
509 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
5ea320f0f0 | ||
|
be2888790f | ||
|
9276df8219 | ||
|
aa58dc8ff1 | ||
|
03bfe2f5ce | ||
|
882df4e732 | ||
|
40b0203116 | ||
|
ae94e383a3 | ||
|
70b1421107 | ||
|
57e8966b5d | ||
|
aa2ad0329b | ||
|
21ea877a01 | ||
|
e9b6ac7126 | ||
|
24a4cd0e56 | ||
|
57d2e370d8 | ||
|
aa8151c3d2 | ||
|
b5a7f60a6b | ||
|
e5b75c4482 | ||
|
c0c9fbb198 | ||
|
e5f21388a4 | ||
|
ae2ca1e051 | ||
|
860132349f | ||
|
48c7e47771 | ||
|
79eb20b5d1 | ||
|
c9edd83549 | ||
|
34c694069c | ||
|
9ec31629f5 | ||
|
632b6b45e3 | ||
|
618037c0cb | ||
|
3e9899b233 | ||
|
68101114ce | ||
|
dfc27f3416 | ||
|
2a3244d2e5 | ||
|
189cf4ec73 | ||
|
86239d7bdf | ||
|
7bf718da57 | ||
|
5a36c05277 | ||
|
5aaf99b474 | ||
|
f505aa71e6 | ||
|
5560e57038 | ||
|
7b409340e4 | ||
|
b4cde1c031 | ||
|
88f0e1cca8 | ||
|
b23462d47c | ||
|
81321deb03 | ||
|
c14705b746 | ||
|
a093fe0378 | ||
|
13c46e46a6 | ||
|
3398bf0dd9 | ||
|
939dffb06f | ||
|
a5e8881923 | ||
|
06320f8fb3 | ||
|
e092a94869 | ||
|
644e03821e | ||
|
8f5c321507 | ||
|
5d4ada9352 | ||
|
d416122fd8 | ||
|
feddb5ad3c | ||
|
16a913e01c | ||
|
b6f99c7ac5 | ||
|
f19216bf87 | ||
|
33727c2abe | ||
|
2765122e67 | ||
|
9c953ddf27 | ||
|
f77e4e8a8e | ||
|
0c0b91b9f9 | ||
|
21f87c2b1e | ||
|
353984bb97 | ||
|
23715d6389 | ||
|
9fb0825a6b | ||
|
771b632092 | ||
|
16c9eedafb | ||
|
d9b395ac03 | ||
|
c03d395571 | ||
|
f8ebcfc077 | ||
|
ce1ec9d27b | ||
|
edfda7c396 | ||
|
9e479726ed | ||
|
96e3b8469c | ||
|
2a44cea3f3 | ||
|
0248433f2c | ||
|
eeb0e6a830 | ||
|
5d0de491f1 | ||
|
4ecd540d46 | ||
|
dee84a8948 | ||
|
0cdd5584a0 | ||
|
b50b0a0a2c | ||
|
2d6d426b8c | ||
|
7440e5ebb7 | ||
|
23c505d548 | ||
|
34754d941f | ||
|
39681d7a0f | ||
|
e3c7731bcc | ||
|
eaa624e71d | ||
|
f3656c8800 | ||
|
1e8900a92b | ||
|
8ad6c33424 | ||
|
c339e077c8 | ||
|
46aca420cc | ||
|
da5fe74408 | ||
|
9e2483ab62 | ||
|
5dee8b0339 | ||
|
52c3c36e34 | ||
|
625bdb6368 | ||
|
ccfe18558c | ||
|
f719f7d838 | ||
|
e1024aba22 | ||
|
0c7af72ba8 | ||
|
f2f17bfb16 | ||
|
9bd6d4ad54 | ||
|
e2499f758a | ||
|
50772688f0 | ||
|
08f9ea33dc | ||
|
b74c52f8ba | ||
|
630ea144cb | ||
|
36d3313805 | ||
|
399313e148 | ||
|
0f2bee2834 | ||
|
91cb708816 | ||
|
a77c70718d | ||
|
1cf29645c6 | ||
|
c30d23da8f | ||
|
18fe24f01f | ||
|
130ebd8f04 | ||
|
ac8d6944c2 | ||
|
8272cd905e | ||
|
bfaaec428b | ||
|
145c056b83 | ||
|
6b9dae0bef | ||
|
f5bb548df5 | ||
|
a0111e0df1 | ||
|
4dc70fdf45 | ||
|
c7ee41c6c4 | ||
|
2b0c490219 | ||
|
31913f8489 | ||
|
95dbde278c | ||
|
13ac2e8b3f | ||
|
e2355ed7fb | ||
|
792715e5e9 | ||
|
419e257f34 | ||
|
e5b1a35303 | ||
|
feedeaa339 | ||
|
fe31748c87 | ||
|
d27431f679 | ||
|
593e13f670 | ||
|
2c47753ad3 | ||
|
86b8b5ea78 | ||
|
30bf99b81e | ||
|
b084081593 | ||
|
fb58e92621 | ||
|
5df47d3527 | ||
|
27477ba983 | ||
|
699e452654 | ||
|
06574e4ecd | ||
|
907bf6ce94 | ||
|
3b137d634d | ||
|
7f8e2d44ed | ||
|
eab878741a | ||
|
fb3b3f4c66 | ||
|
4cdcf2a37b | ||
|
eadee98bf0 | ||
|
0bb329b0bf | ||
|
262c1f4604 | ||
|
136697dd49 | ||
|
0209271936 | ||
|
9e47db1193 | ||
|
bbb501833d | ||
|
db870d96d6 | ||
|
18d53408ff | ||
|
2dcebec0ce | ||
|
bfa3cead95 | ||
|
f26e5a6eea | ||
|
dd82a45499 | ||
|
6c142a6df4 | ||
|
a68997b11e | ||
|
6f0648992a | ||
|
20d8d8adc7 | ||
|
9835e11ebe | ||
|
bbc2b528e0 | ||
|
fe76d597a9 | ||
|
1de5094978 | ||
|
99730f29b2 | ||
|
ba150f34d6 | ||
|
e1efa4d70a | ||
|
7dac18443f | ||
|
4c6962457f | ||
|
9dbfe1c365 | ||
|
74b7b5e92c | ||
|
9c5403e1e6 | ||
|
b3cc412aad | ||
|
e2aa099738 | ||
|
4c938fac30 | ||
|
486b1c20c1 | ||
|
97499a0cf2 | ||
|
9b1e06cd0c | ||
|
24c80efc1a | ||
|
bf6fd0405d | ||
|
fd3d975161 | ||
|
ebd55c4a66 | ||
|
bc46fbdc84 | ||
|
dcced03469 | ||
|
d9275e2a70 | ||
|
362ef3db04 | ||
|
e0e1f53ce2 | ||
|
7219aba42c | ||
|
2a599ea133 | ||
|
056bdaa53e | ||
|
189200d0b0 | ||
|
e398748032 | ||
|
d0900861c2 | ||
|
63a9a4d4c0 | ||
|
b6a6472874 | ||
|
7c89273dbe | ||
|
98ef7f9f5f | ||
|
4ee8cf5610 | ||
|
4b5db35e9d | ||
|
8efd8cde75 | ||
|
4f8b339fac | ||
|
14899d899b | ||
|
b9c4b23d90 | ||
|
f7bf4302e4 | ||
|
368cdf1265 | ||
|
cc4ef911ee | ||
|
1b94cff100 | ||
|
3d82853ffe | ||
|
5e2444d115 | ||
|
bc233a7a4b | ||
|
7ad75d9162 | ||
|
0f9c15fe4f | ||
|
1a10c66182 | ||
|
75e4ef25ad | ||
|
330c88aa0c | ||
|
3f9a656929 | ||
|
02f96e8a26 | ||
|
15f10734e7 | ||
|
d78b78cb2e | ||
|
eea6d31a22 | ||
|
637b3bdb9b | ||
|
89d55b364d | ||
|
04e6df709d | ||
|
1e00550694 | ||
|
a90c2f16fa | ||
|
f7b2e1ff6d | ||
|
593e13937c | ||
|
231c7632c0 | ||
|
1ba13fdfd0 | ||
|
c2102ae059 | ||
|
156d50d2de | ||
|
98f1250742 | ||
|
c26275184c | ||
|
4a566dd746 | ||
|
8b018e6721 | ||
|
803b49c40b | ||
|
2ed6486834 | ||
|
6b28563584 | ||
|
5849eacdce | ||
|
e7db4418b1 | ||
|
af773c779d | ||
|
b136460925 | ||
|
31a6aab44c | ||
|
269ef9dbc7 | ||
|
4ef183353c | ||
|
fbbbf47e5c | ||
|
40160210a7 | ||
|
4fe83e1026 | ||
|
58124a7fea | ||
|
df31239ac5 | ||
|
b5f98d40fe | ||
|
01a8d3bb00 | ||
|
2a7829c50b | ||
|
860b1c8cbe | ||
|
e2fc15ae0e | ||
|
500c10f191 | ||
|
70402aa91d | ||
|
9e7e6822b7 | ||
|
fa506bd242 | ||
|
69df7422b1 | ||
|
b916d1e54e | ||
|
3676bc353c | ||
|
ea4c77ffc5 | ||
|
e686743ba6 | ||
|
2a1200f36f | ||
|
2cdf05814d | ||
|
0ec661b389 | ||
|
1771b6e779 | ||
|
b95f138fa1 | ||
|
dfdcd7eff3 | ||
|
59fd1e9d1d | ||
|
b39be0d5a9 | ||
|
2458595367 | ||
|
6c77f27793 | ||
|
41e4d11d11 | ||
|
b1c7a1c5f2 | ||
|
70bced02ed | ||
|
0247cb7cd4 | ||
|
ebdde0bc4b | ||
|
6c04004f63 | ||
|
773f30af29 | ||
|
2b26c8112f | ||
|
ce0bd62f5c | ||
|
7cc4f3a20c | ||
|
b82e6b6f5b | ||
|
39137210cb | ||
|
d857a968f4 | ||
|
9b63de7db6 | ||
|
44267b59d8 | ||
|
6685cd0002 | ||
|
2ab1abfd26 | ||
|
8b2da2c224 | ||
|
9b14e7dab0 | ||
|
3e4d5c7990 | ||
|
486ba3c3bd | ||
|
238358c6df | ||
|
230c36c6aa | ||
|
7604ff2629 | ||
|
99c1436dc9 | ||
|
de4e5e4e3b | ||
|
5b74db0e15 | ||
|
1a53d8f88a | ||
|
6335e5c697 | ||
|
d34132e62f | ||
|
5d0d538c25 | ||
|
5bb5032fda | ||
|
183ec634ee | ||
|
ba250504b9 | ||
|
6058ffcd54 | ||
|
85f1c797f6 | ||
|
fc5af9e47f | ||
|
b030bfce35 | ||
|
656e495d51 | ||
|
be57aadba6 | ||
|
5ec879ace7 | ||
|
2c624c22fe | ||
|
28793041d7 | ||
|
9485c65f6d | ||
|
5abc3858a2 | ||
|
f0bf464a37 | ||
|
28b487d1ae | ||
|
25cebcee2a | ||
|
e861bb3861 | ||
|
5fa13d4609 | ||
|
a46a62b12b | ||
|
3b523e30f3 | ||
|
0e6995a96b | ||
|
2cc0b085fb | ||
|
d039cd620b | ||
|
f99001cd7d | ||
|
b1d426ce67 | ||
|
787b53a66c | ||
|
39ce220cb6 | ||
|
15bcddc996 | ||
|
08a46615c7 | ||
|
99d94682de | ||
|
af5d1494a9 | ||
|
bf07e81417 | ||
|
61859152d8 | ||
|
8d8a3b5dff | ||
|
08b72e8d99 | ||
|
72a19c3a00 | ||
|
574b48d8e4 | ||
|
d3e46ee9cb | ||
|
9d0d941591 | ||
|
0e808e122a | ||
|
79f4f38d15 | ||
|
049a863e14 | ||
|
3f8935c3d0 | ||
|
787cb7fcd8 | ||
|
bdb6182f0a | ||
|
7b0521df53 | ||
|
8581a58e5b | ||
|
f164fd6785 | ||
|
4d326eae7d | ||
|
3f234f5b6f | ||
|
87484730de | ||
|
fa1b977962 | ||
|
bd38ba4b6b | ||
|
8071303f52 | ||
|
b14cc9cb4f | ||
|
447ad9aa3a | ||
|
c108e118da | ||
|
9cdd67da85 | ||
|
751cbce3f6 | ||
|
7993cbcc72 | ||
|
1b10394e06 | ||
|
ef81c051c9 | ||
|
93ef26559c | ||
|
cae022d6e4 | ||
|
44d9ae1929 | ||
|
b2c4db065f | ||
|
8118d08727 | ||
|
63213a7b4e | ||
|
78e4df7c5e | ||
|
6605c16fc8 | ||
|
b5b6a81af0 | ||
|
38c57d52fb | ||
|
50b883773f | ||
|
58e6955b44 | ||
|
dd5c3db93b | ||
|
5ff74ecae8 | ||
|
1acb1d9dae | ||
|
9b0fe34e20 | ||
|
e30b880270 | ||
|
3b31a5e394 | ||
|
8c29617e0b | ||
|
883702e813 | ||
|
0f78eb65fe | ||
|
533a042d00 | ||
|
76206d9ebf | ||
|
ab6c6ef7f3 | ||
|
a213b514a3 | ||
|
fb8f9bfe52 | ||
|
087d22af38 | ||
|
1ecae7d44c | ||
|
3dd05c7b21 | ||
|
d39106b3e4 | ||
|
06db4a2b53 | ||
|
333bf05da9 | ||
|
e64257b90d | ||
|
d119b0d759 | ||
|
88e3cf9535 | ||
|
1ae8baefca | ||
|
9ce3546d05 | ||
|
0b5f181a36 | ||
|
fbcdcf56e8 | ||
|
af174b874e | ||
|
ad7f0d4ba2 | ||
|
11a459ba96 | ||
|
aac405cc66 | ||
|
37d7bee82a | ||
|
dae0b4b0b0 | ||
|
b5a8e93cec | ||
|
01c9f11ed5 | ||
|
dada63fd3d | ||
|
ce7098fb52 | ||
|
f64cef2627 | ||
|
322efb6b21 | ||
|
09027207f7 | ||
|
15805ff38b | ||
|
b868aa7566 | ||
|
530d68ba19 | ||
|
00bd66ef46 | ||
|
56eb64d3c0 | ||
|
65e28a90a7 | ||
|
be231055ce | ||
|
60efb7a293 | ||
|
ef08b655d1 | ||
|
370cce41da | ||
|
d32fb84543 | ||
|
aa1df67f48 | ||
|
5706dff093 | ||
|
6c10e225bc | ||
|
16d65c0669 | ||
|
b28143d4fb | ||
|
1525190354 | ||
|
ac98308152 | ||
|
fb063f0f65 | ||
|
7a98d83fc3 | ||
|
f42974dd9a | ||
|
a61fa058e9 | ||
|
2f440200c8 | ||
|
7f173da1e5 | ||
|
0ad8fb87cb | ||
|
ff7ec964f2 | ||
|
8d86ee202a | ||
|
1ec094bfaf | ||
|
6caab22f23 | ||
|
ecfd1ded9a | ||
|
f16d93f3b9 | ||
|
644898eabc | ||
|
8921ba2fc5 | ||
|
42cca551db | ||
|
4e8460f1ae | ||
|
6a0875ca2f | ||
|
d5f35dfb80 | ||
|
1a04669a7b | ||
|
3c62e78556 | ||
|
f9baa4f622 | ||
|
9ae56e03e7 | ||
|
3cbe61fa41 | ||
|
06744d6927 | ||
|
b32a578573 | ||
|
ab54e2b40e | ||
|
28cfdd48b9 | ||
|
7bcb832680 | ||
|
9b8f92e3a1 | ||
|
107c806352 | ||
|
5f162133fe | ||
|
aeee09cc6a | ||
|
27cdb74865 | ||
|
5f765e9208 | ||
|
94009cecd7 | ||
|
e7a2d1299b | ||
|
8f5ba0e4fd | ||
|
9d6b441ec5 | ||
|
401d5b7194 | ||
|
8cb1e8771f | ||
|
05e597056b | ||
|
0f42f7579c | ||
|
525455a9ea | ||
|
6e17af6dd7 | ||
|
f00a8a2783 | ||
|
6e8db87995 | ||
|
c0b8d974a6 | ||
|
0ca0dacb59 | ||
|
8e25267615 | ||
|
f9d9f33b7a | ||
|
2aa8482961 | ||
|
acea2e9ad8 | ||
|
1d931b46c0 |
13
.github/dependabot.yml
vendored
Normal file
13
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
# Workflow files stored in the default location of `.github/workflows`. (You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.)
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
98
.github/workflows/linux-gcc-musl.yml
vendored
Normal file
98
.github/workflows/linux-gcc-musl.yml
vendored
Normal file
@ -0,0 +1,98 @@
|
||||
name: Linux, gcc+musl
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64]
|
||||
include:
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
musl: musl-dev
|
||||
cross_compile: x86_64-linux-musl-
|
||||
|
||||
steps:
|
||||
- name: Install toolchain
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install ${{ matrix.musl }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
mkdir -p $HOME/.local/bin
|
||||
for i in ld as ar ranlib objcopy; do
|
||||
ln -s /usr/bin/${i} $HOME/.local/bin/${{ matrix.cross_compile }}${i};
|
||||
done
|
||||
make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.cross_compile }}
|
||||
|
||||
- name: Generate binary information
|
||||
run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: |
|
||||
./${{ matrix.dir }}/apps/*
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-24.04
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
140
.github/workflows/linux-gcc.yml
vendored
Normal file
140
.github/workflows/linux-gcc.yml
vendored
Normal file
@ -0,0 +1,140 @@
|
||||
name: Linux, gcc
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [ia32, x64, aa64, arm, riscv64, mips64]
|
||||
include:
|
||||
- arch: ia32
|
||||
dir: ia32
|
||||
gcc: multilib
|
||||
cross_compile:
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
gcc: multilib
|
||||
cross_compile:
|
||||
- arch: aa64
|
||||
dir: aarch64
|
||||
gcc: aarch64-linux-gnu
|
||||
cross_compile: aarch64-linux-gnu-
|
||||
- arch: arm
|
||||
dir: arm
|
||||
gcc: arm-linux-gnueabihf
|
||||
cross_compile: arm-linux-gnueabihf-
|
||||
- arch: riscv64
|
||||
dir: riscv64
|
||||
gcc: riscv64-linux-gnu
|
||||
cross_compile: riscv64-linux-gnu-
|
||||
- arch: mips64
|
||||
dir: mips64el
|
||||
gcc: mips64el-linux-gnuabi64
|
||||
cross_compile: mips64el-linux-gnuabi64-
|
||||
# - arch: loongarch64
|
||||
# dir: loongarch64
|
||||
# gcc: loongarch64-linux-gnu
|
||||
# cross_compile: loongarch64-linux-gnu-
|
||||
|
||||
steps:
|
||||
- name: Install toolchain
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-${{ matrix.gcc }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build
|
||||
run: make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.cross_compile }}
|
||||
|
||||
- name: Generate binary information
|
||||
run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: |
|
||||
./${{ matrix.dir }}/apps/*
|
||||
tests:
|
||||
runs-on: ubuntu-24.04
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32, aa64, arm, riscv64]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
- arch: ia32
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: i386
|
||||
qemu_opts: -M pc
|
||||
fw_base: OVMF
|
||||
- arch: aa64
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: aarch64
|
||||
qemu_opts: -M virt -cpu cortex-a57
|
||||
fw_base: AAVMF
|
||||
- arch: arm
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: arm
|
||||
qemu_opts: -M virt -cpu cortex-a15
|
||||
fw_base: AAVMF
|
||||
- arch: riscv64
|
||||
pkg: qemu-system-riscv64
|
||||
qemu_arch: riscv64
|
||||
qemu_opts: -M virt,pflash0=pflash0
|
||||
fw_base: QEMU_EFI
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
if [ "$UEFI_ARCH" = "riscv64" ]; then\
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -blockdev node-name=pflash0,driver=file,read-only=on,filename=${{ matrix.fw_base }}.fd -drive format=raw,file=fat:rw:image,id=drv1 -device virtio-blk-device,drive=drv1"
|
||||
else \
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image"
|
||||
fi
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
92
.github/workflows/linux-llvm.yml
vendored
Normal file
92
.github/workflows/linux-llvm.yml
vendored
Normal file
@ -0,0 +1,92 @@
|
||||
name: Linux, LLVM
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64]
|
||||
include:
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
gcc: multilib
|
||||
cross_compile:
|
||||
|
||||
steps:
|
||||
- name: Install toolchain
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install gcc-${{ matrix.gcc }} clang lld
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build
|
||||
run: make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.cross_compile }} CC=clang LD=ld.lld
|
||||
|
||||
- name: Generate binary information
|
||||
run: readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: |
|
||||
./${{ matrix.dir }}/apps/*
|
||||
tests:
|
||||
runs-on: ubuntu-24.04
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
96
.github/workflows/linux-mingw.yml
vendored
Normal file
96
.github/workflows/linux-mingw.yml
vendored
Normal file
@ -0,0 +1,96 @@
|
||||
name: Linux, MinGW
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32]
|
||||
include:
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
pkg: gcc-mingw-w64-x86-64
|
||||
tuple: x86_64-w64-mingw32-
|
||||
- arch: ia32
|
||||
dir: ia32
|
||||
pkg: gcc-mingw-w64-i686
|
||||
tuple: i686-w64-mingw32-
|
||||
|
||||
steps:
|
||||
- name: Checkout repository and submodules
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Install gcc toolchain
|
||||
run: sudo apt install ${{ matrix.pkg }}
|
||||
|
||||
- name: Build
|
||||
run: make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.tuple }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: ./${{ matrix.dir }}/apps/*.efi
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
- arch: ia32
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: i386
|
||||
qemu_opts: -M pc
|
||||
fw_base: OVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image -nodefaults -nographic -serial stdio -net none"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
121
.github/workflows/macos-gcc.yml
vendored
Normal file
121
.github/workflows/macos-gcc.yml
vendored
Normal file
@ -0,0 +1,121 @@
|
||||
name: macOS, gcc
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: macos-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [ia32, x64, aa64, arm]
|
||||
include:
|
||||
- arch: ia32
|
||||
dir: ia32
|
||||
cross_compile: i686-elf-
|
||||
toolchain: i686-elf-gcc
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
cross_compile: x86_64-elf-
|
||||
toolchain: x86_64-elf-gcc
|
||||
- arch: aa64
|
||||
dir: aarch64
|
||||
cross_compile: aarch64-elf-
|
||||
toolchain: aarch64-elf-gcc
|
||||
- arch: arm
|
||||
dir: arm
|
||||
cross_compile: arm-none-eabi-
|
||||
toolchain: arm-none-eabi-gcc
|
||||
|
||||
|
||||
steps:
|
||||
- name: Install toolchain
|
||||
run: |
|
||||
brew install ${{ matrix.toolchain }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
make ARCH=${{ matrix.arch }} CROSS_COMPILE=${{ matrix.cross_compile }}
|
||||
|
||||
- name: Generate binary information
|
||||
run: ${{ matrix.cross_compile }}readelf -a ./${{ matrix.dir }}/apps/ctors_dtors_priority_test.so > ./${{ matrix.dir }}/apps/readelf.txt
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: |
|
||||
./${{ matrix.dir }}/apps/*
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-24.04
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [ia32, x64, aa64, arm]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
- arch: ia32
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: i386
|
||||
qemu_opts: -M pc
|
||||
fw_base: OVMF
|
||||
- arch: aa64
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: aarch64
|
||||
qemu_opts: -M virt -cpu cortex-a57
|
||||
fw_base: AAVMF
|
||||
- arch: arm
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: arm
|
||||
qemu_opts: -M virt -cpu cortex-a15
|
||||
fw_base: AAVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -nodefaults -nographic -serial stdio -net none -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
107
.github/workflows/windows-mingw.yml
vendored
Normal file
107
.github/workflows/windows-mingw.yml
vendored
Normal file
@ -0,0 +1,107 @@
|
||||
name: Windows, MinGW
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32]
|
||||
include:
|
||||
- arch: x64
|
||||
dir: x86_64
|
||||
sys: mingw64
|
||||
env: x86_64
|
||||
- arch: ia32
|
||||
dir: ia32
|
||||
sys: mingw32
|
||||
env: i686
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
|
||||
steps:
|
||||
- name: Install MinGW
|
||||
uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{ matrix.sys }}
|
||||
update: true
|
||||
install: >-
|
||||
mingw-w64-${{ matrix.env }}-toolchain
|
||||
base-devel
|
||||
git
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Build
|
||||
run: make
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: ./${{ matrix.dir }}/apps/*.efi
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
- arch: ia32
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: i386
|
||||
qemu_opts: -M pc
|
||||
fw_base: OVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image -nodefaults -nographic -serial stdio -net none"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
102
.github/workflows/windows-vs2022.yml
vendored
Normal file
102
.github/workflows/windows-vs2022.yml
vendored
Normal file
@ -0,0 +1,102 @@
|
||||
name: Windows, VS2022
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: windows-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32, aa64, arm]
|
||||
conf: [Debug, Release]
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Add MSBuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
with:
|
||||
msbuild-architecture: x64
|
||||
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: msbuild ./gnu-efi.sln /m /p:Configuration=${{ matrix.conf }},Platform=${{ matrix.arch }}
|
||||
|
||||
- name: Upload artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
if: ${{ matrix.conf == 'Release' }}
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
path: ./${{ matrix.arch }}/${{ matrix.conf }}/*.efi
|
||||
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
needs: build
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [x64, ia32, aa64, arm]
|
||||
include:
|
||||
- arch: x64
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: x86_64
|
||||
qemu_opts: -M q35
|
||||
fw_base: OVMF
|
||||
- arch: ia32
|
||||
pkg: qemu-system-x86
|
||||
qemu_arch: i386
|
||||
qemu_opts: -M pc
|
||||
fw_base: OVMF
|
||||
- arch: aa64
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: aarch64
|
||||
qemu_opts: -M virt -cpu cortex-a57
|
||||
fw_base: AAVMF
|
||||
- arch: arm
|
||||
pkg: qemu-system-arm
|
||||
qemu_arch: arm
|
||||
qemu_opts: -M virt -cpu cortex-a15
|
||||
fw_base: AAVMF
|
||||
|
||||
steps:
|
||||
- name: Set up Linux environment
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y --no-install-recommends install ${{ matrix.pkg }}
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.arch }}
|
||||
|
||||
- name: Download UEFI firmware
|
||||
run: |
|
||||
fw_arch=$(echo ${{ matrix.arch }} | tr a-z A-Z)
|
||||
fw_zip=${{ matrix.fw_base }}-${fw_arch}.zip
|
||||
curl -O https://efi.akeo.ie/${{ matrix.fw_base }}/${fw_zip}
|
||||
7z x ${fw_zip}
|
||||
rm ${fw_zip}
|
||||
|
||||
- name: Download UEFI Shell
|
||||
run: |
|
||||
curl -L -O https://github.com/pbatard/UEFI-Shell/releases/download/23H2/UEFI-Shell-2.2-23H2-RELEASE.iso
|
||||
mkdir ./image
|
||||
7z x -o./image *.iso
|
||||
rm *.iso
|
||||
|
||||
- name: Run tests
|
||||
run: |
|
||||
export UEFI_ARCH=${{ matrix.arch }}
|
||||
export UEFI_DIR=./image
|
||||
export QEMU_CMD="qemu-system-${{ matrix.qemu_arch }} ${{ matrix.qemu_opts }} -L . -drive if=pflash,format=raw,unit=0,file=${{ matrix.fw_base }}.fd,readonly=on -drive format=raw,file=fat:rw:image -nodefaults -nographic -serial stdio -net none"
|
||||
./tests/gen_tests.sh ./tests/test_list.txt
|
||||
./tests/run_tests.sh
|
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@ -0,0 +1,7 @@
|
||||
*.efi
|
||||
*.efi.debug
|
||||
*.o
|
||||
*.a
|
||||
*.so
|
||||
*.tar.*
|
||||
*.tar
|
13
.vs/apps/AllocPages.vcxproj
Normal file
13
.vs/apps/AllocPages.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{DFA0BA98-D0BA-4176-9A34-B5BA6355B1DE}</ProjectGuid>
|
||||
<RootNamespace>AllocPages</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>AllocPages</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\AllocPages.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/AllocPages.vcxproj.filters
Normal file
18
.vs/apps/AllocPages.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\AllocPages.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/FreePages.vcxproj
Normal file
13
.vs/apps/FreePages.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{627A0AFB-B9A9-4FC9-9D6B-4D9E227A0666}</ProjectGuid>
|
||||
<RootNamespace>FreePages</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>FreePages</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\FreePages.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/FreePages.vcxproj.filters
Normal file
18
.vs/apps/FreePages.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\FreePages.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
45
.vs/apps/_gen_vcxproj.ps1
Normal file
45
.vs/apps/_gen_vcxproj.ps1
Normal file
@ -0,0 +1,45 @@
|
||||
$Source = "AllocPages"
|
||||
$EfiArchName = @{
|
||||
"x64" = "x64"
|
||||
"Win32" = "ia32"
|
||||
"ARM64" = "aa64"
|
||||
"ARM" = "arm"
|
||||
}
|
||||
$i = 0
|
||||
$sln = (Get-Content ..\..\gnu-efi.sln) -as [collections.arraylist]
|
||||
Get-ChildItem "..\..\apps" -Filter *.c |
|
||||
Foreach-Object {
|
||||
if ($_.BaseName -ne $Source) {
|
||||
$guid = [guid]::NewGuid().ToString().ToUpper()
|
||||
Write-Host $guid = $_.BaseName
|
||||
copy "$Source.vcxproj" "$($_.BaseName).vcxproj"
|
||||
copy "$Source.vcxproj.filters" "$($_.BaseName).vcxproj.filters"
|
||||
copy "$Source.vcxproj.user" "$($_.BaseName).vcxproj.user"
|
||||
(Get-Content "$($_.BaseName).vcxproj").Replace("DFA0BA98-D0BA-4176-9A34-B5BA6355B1DE", $guid).Replace($Source, $_.BaseName) | Set-Content "$($_.BaseName).vcxproj"
|
||||
(Get-Content "$($_.BaseName).vcxproj.filters").Replace($Source, $_.BaseName) | Set-Content "$($_.BaseName).vcxproj.filters"
|
||||
$line = 14 + 5 * $i
|
||||
$sln.insert($line,"Project(""{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}"") = ""$($_.BaseName)"", "".vs\apps\$($_.BaseName).vcxproj"", ""{$guid}""")
|
||||
$line++
|
||||
$sln.insert($line," ProjectSection(ProjectDependencies) = postProject")
|
||||
$line++
|
||||
$sln.insert($line," {3135D563-9596-4584-9ED6-616ADEC52974} = {3135D563-9596-4584-9ED6-616ADEC52974}")
|
||||
$line++
|
||||
$sln.insert($line," EndProjectSection")
|
||||
$line++
|
||||
$sln.insert($line,"EndProject")
|
||||
$line++
|
||||
$line += 44 + 16 * $i
|
||||
foreach ($Build in @("Debug", "Release")) {
|
||||
foreach ($Arch in @("ARM64", "ARM", "Win32", "x64")) {
|
||||
foreach ($Cfg in @("ActiveCfg", "Build.0")) {
|
||||
$sln.insert($line, " {$guid}.$Build|$($EfiArchName.$Arch).$Cfg = $Build|$Arch")
|
||||
$line++
|
||||
}
|
||||
}
|
||||
}
|
||||
$line += 6 + $i
|
||||
$sln.insert($line, " {$guid} = {DF105116-5A3A-4D48-AB1D-7221690ED545}")
|
||||
$i++
|
||||
}
|
||||
}
|
||||
$sln | Set-Content ..\..\gnu-efi.sln
|
13
.vs/apps/bltgrid.vcxproj
Normal file
13
.vs/apps/bltgrid.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7FD7832D-F7C7-4B3F-9B6D-8A48BDC74E6C}</ProjectGuid>
|
||||
<RootNamespace>bltgrid</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>bltgrid</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\bltgrid.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/bltgrid.vcxproj.filters
Normal file
18
.vs/apps/bltgrid.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\bltgrid.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
385
.vs/apps/common.props
Normal file
385
.vs/apps/common.props
Normal file
@ -0,0 +1,385 @@
|
||||
<Project>
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)ia32\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)aa64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)ia32\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<TargetExt>.efi</TargetExt>
|
||||
<GenerateManifest>false</GenerateManifest>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)aa64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<AdditionalDependencies>efilib.lib;libcmtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<AdditionalDependencies>efilib.lib;libcmtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<AdditionalDependencies>efilib.lib;libcmtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<AdditionalDependencies>efilib.lib;libcmtd.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalDependencies>efilib.lib;libcmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalDependencies>efilib.lib;libcmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalDependencies>efilib.lib;libcmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<DisableSpecificWarnings>4091</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi- %(AdditionalOptions)</AdditionalOptions>
|
||||
</ClCompile>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
</Lib>
|
||||
<ProjectReference>
|
||||
<LinkLibraryDependencies>true</LinkLibraryDependencies>
|
||||
</ProjectReference>
|
||||
<Link>
|
||||
<DataExecutionPrevention>false</DataExecutionPrevention>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
<EntryPointSymbol>efi_main</EntryPointSymbol>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<AdditionalDependencies>efilib.lib;libcmt.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalLibraryDirectories>$(OutDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RandomizedBaseAddress />
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
13
.vs/apps/debughook.vcxproj
Normal file
13
.vs/apps/debughook.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{090590E4-A94D-477A-8512-42522BDDFE0C}</ProjectGuid>
|
||||
<RootNamespace>debughook</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>debughook</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\debughook.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/debughook.vcxproj.filters
Normal file
18
.vs/apps/debughook.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\debughook.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
53
.vs/apps/drv0.vcxproj
Normal file
53
.vs/apps/drv0.vcxproj
Normal file
@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{ED1B23FB-FCCA-4ED7-9E99-EEAAD9F2FB7F}</ProjectGuid>
|
||||
<RootNamespace>drv0</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>drv0</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Link>
|
||||
<SubSystem>EFI Boot Service Driver</SubSystem>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\drv0.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/drv0.vcxproj.filters
Normal file
18
.vs/apps/drv0.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\drv0.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/drv0_use.vcxproj
Normal file
13
.vs/apps/drv0_use.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3947DB96-3A01-4F8C-B7C1-2C4D6C00D640}</ProjectGuid>
|
||||
<RootNamespace>drv0_use</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>drv0_use</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\drv0_use.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/drv0_use.vcxproj.filters
Normal file
18
.vs/apps/drv0_use.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\drv0_use.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/exit.vcxproj
Normal file
13
.vs/apps/exit.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{80BD2830-EF30-4110-97BA-1B9A7B855996}</ProjectGuid>
|
||||
<RootNamespace>exit</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>exit</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\exit.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/exit.vcxproj.filters
Normal file
18
.vs/apps/exit.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\exit.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/lfbgrid.vcxproj
Normal file
13
.vs/apps/lfbgrid.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7C059723-3CD2-484B-8064-238CE7A437BD}</ProjectGuid>
|
||||
<RootNamespace>lfbgrid</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>lfbgrid</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\lfbgrid.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/lfbgrid.vcxproj.filters
Normal file
18
.vs/apps/lfbgrid.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\lfbgrid.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/modelist.vcxproj
Normal file
13
.vs/apps/modelist.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{5AD238D9-79AA-4166-BC86-EF759EA45BAB}</ProjectGuid>
|
||||
<RootNamespace>modelist</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>modelist</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\modelist.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/modelist.vcxproj.filters
Normal file
18
.vs/apps/modelist.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\modelist.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/printenv.vcxproj
Normal file
13
.vs/apps/printenv.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{731CD95E-7CCD-495F-9456-E2D71357C807}</ProjectGuid>
|
||||
<RootNamespace>printenv</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>printenv</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\printenv.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/printenv.vcxproj.filters
Normal file
18
.vs/apps/printenv.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\printenv.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/route80h.vcxproj
Normal file
13
.vs/apps/route80h.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{6F1EB89D-8968-4C3B-9F77-B23788F2D8C1}</ProjectGuid>
|
||||
<RootNamespace>route80h</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>route80h</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\route80h.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/route80h.vcxproj.filters
Normal file
18
.vs/apps/route80h.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\route80h.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/setdbg.vcxproj
Normal file
13
.vs/apps/setdbg.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{5D8EA8B2-C75F-4E3A-B0BC-E6B77AC77FF5}</ProjectGuid>
|
||||
<RootNamespace>setdbg</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>setdbg</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\setdbg.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/setdbg.vcxproj.filters
Normal file
18
.vs/apps/setdbg.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\setdbg.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/setjmp.vcxproj
Normal file
13
.vs/apps/setjmp.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{8EC47C20-B7C3-4B82-8B06-967A15C7B323}</ProjectGuid>
|
||||
<RootNamespace>setjmp</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>setjmp</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\setjmp.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/setjmp.vcxproj.filters
Normal file
18
.vs/apps/setjmp.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\setjmp.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t.vcxproj
Normal file
13
.vs/apps/t.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{9BA1F692-0824-442E-B700-69C3D85D64EE}</ProjectGuid>
|
||||
<RootNamespace>t</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t.vcxproj.filters
Normal file
18
.vs/apps/t.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t2.vcxproj
Normal file
13
.vs/apps/t2.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{DCB81D4D-15B8-440D-A757-5B0036C0F4F6}</ProjectGuid>
|
||||
<RootNamespace>t2</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t2</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t2.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t2.vcxproj.filters
Normal file
18
.vs/apps/t2.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t2.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t3.vcxproj
Normal file
13
.vs/apps/t3.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{AFF91400-F772-419A-9463-D9900B43C666}</ProjectGuid>
|
||||
<RootNamespace>t3</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t3</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t3.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t3.vcxproj.filters
Normal file
18
.vs/apps/t3.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t3.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t4.vcxproj
Normal file
13
.vs/apps/t4.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3428718B-4B7E-48F5-8D15-B9F3E3CFF38E}</ProjectGuid>
|
||||
<RootNamespace>t4</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t4</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t4.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t4.vcxproj.filters
Normal file
18
.vs/apps/t4.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t4.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t5.vcxproj
Normal file
13
.vs/apps/t5.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{7F52AAA4-2071-49D6-A783-529D3CB5AF61}</ProjectGuid>
|
||||
<RootNamespace>t5</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t5</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t5.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t5.vcxproj.filters
Normal file
18
.vs/apps/t5.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t5.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t6.vcxproj
Normal file
13
.vs/apps/t6.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{0AE45092-20C3-4999-BFDC-77F2D0FDFF60}</ProjectGuid>
|
||||
<RootNamespace>t6</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t6</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t6.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t6.vcxproj.filters
Normal file
18
.vs/apps/t6.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t6.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t7.vcxproj
Normal file
13
.vs/apps/t7.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{04D2685F-8150-47E0-BC10-338D2D6B804C}</ProjectGuid>
|
||||
<RootNamespace>t7</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t7</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t7.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t7.vcxproj.filters
Normal file
18
.vs/apps/t7.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t7.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/t8.vcxproj
Normal file
13
.vs/apps/t8.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{6C664A44-BC53-4225-A14B-D969D4EED647}</ProjectGuid>
|
||||
<RootNamespace>t8</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>t8</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t8.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/t8.vcxproj.filters
Normal file
18
.vs/apps/t8.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\t8.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/tcc.vcxproj
Normal file
13
.vs/apps/tcc.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{6E45A33B-E4A0-48D4-81AE-ACFD46FDB1CA}</ProjectGuid>
|
||||
<RootNamespace>tcc</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>tcc</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\tcc.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/tcc.vcxproj.filters
Normal file
18
.vs/apps/tcc.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\tcc.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
13
.vs/apps/unsetdbg.vcxproj
Normal file
13
.vs/apps/unsetdbg.vcxproj
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(SolutionDir)\.vs\apps\common.props" />
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{06089797-265A-4FF5-838E-25374C1F0159}</ProjectGuid>
|
||||
<RootNamespace>unsetdbg</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>unsetdbg</ProjectName>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\unsetdbg.c" />
|
||||
</ItemGroup>
|
||||
</Project>
|
18
.vs/apps/unsetdbg.vcxproj.filters
Normal file
18
.vs/apps/unsetdbg.vcxproj.filters
Normal file
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\apps\unsetdbg.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
430
.vs/efilib.vcxproj
Normal file
430
.vs/efilib.vcxproj
Normal file
@ -0,0 +1,430 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|ARM">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|ARM64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|ARM64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>ARM64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{3135D563-9596-4584-9ED6-616ADEC52974}</ProjectGuid>
|
||||
<RootNamespace>gnuefi</RootNamespace>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<ProjectName>efilib</ProjectName>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup>
|
||||
<PreferredToolArchitecture>x64</PreferredToolArchitecture>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'" Label="Configuration">
|
||||
<ConfigurationType>StaticLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v143</PlatformToolset>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<OutDir>$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<OutDir>$(SolutionDir)ia32\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<OutDir>$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<OutDir>$(SolutionDir)aa64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<OutDir>$(SolutionDir)x64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<OutDir>$(SolutionDir)ia32\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<OutDir>$(SolutionDir)arm\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<OutDir>$(SolutionDir)aa64\$(Configuration)\</OutDir>
|
||||
<IntDir>$(OutDir)$(ProjectName)\</IntDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\inc</AdditionalIncludeDirectories>
|
||||
<ExceptionHandling>false</ExceptionHandling>
|
||||
<CompileAs>CompileAsC</CompileAs>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<DisableSpecificWarnings>4312</DisableSpecificWarnings>
|
||||
<BufferSecurityCheck>false</BufferSecurityCheck>
|
||||
<WholeProgramOptimization>false</WholeProgramOptimization>
|
||||
<AdditionalOptions>/Oi-</AdditionalOptions>
|
||||
<PreprocessorDefinitions>%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Lib>
|
||||
<SubSystem>EFI Application</SubSystem>
|
||||
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||
</Lib>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\lib\aarch64\initplat.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\aarch64\math.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\arm\initplat.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\arm\math.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\boxdraw.c" />
|
||||
<ClCompile Include="..\lib\cmdline.c" />
|
||||
<ClCompile Include="..\lib\console.c" />
|
||||
<ClCompile Include="..\lib\crc.c" />
|
||||
<ClCompile Include="..\lib\data.c" />
|
||||
<ClCompile Include="..\lib\debug.c" />
|
||||
<ClCompile Include="..\lib\dpath.c" />
|
||||
<ClCompile Include="..\lib\error.c" />
|
||||
<ClCompile Include="..\lib\event.c" />
|
||||
<ClCompile Include="..\lib\exit.c" />
|
||||
<ClCompile Include="..\lib\guid.c" />
|
||||
<ClCompile Include="..\lib\hand.c" />
|
||||
<ClCompile Include="..\lib\hw.c" />
|
||||
<ClCompile Include="..\lib\ia32\initplat.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\ia32\math.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\init.c" />
|
||||
<ClCompile Include="..\lib\lock.c" />
|
||||
<ClCompile Include="..\lib\misc.c" />
|
||||
<ClCompile Include="..\lib\print.c" />
|
||||
<ClCompile Include="..\lib\runtime\efirtlib.c" />
|
||||
<ClCompile Include="..\lib\runtime\rtdata.c" />
|
||||
<ClCompile Include="..\lib\runtime\rtlock.c" />
|
||||
<ClCompile Include="..\lib\runtime\rtstr.c" />
|
||||
<ClCompile Include="..\lib\runtime\vm.c" />
|
||||
<ClCompile Include="..\lib\smbios.c" />
|
||||
<ClCompile Include="..\lib\sread.c" />
|
||||
<ClCompile Include="..\lib\str.c" />
|
||||
<ClCompile Include="..\lib\x86_64\initplat.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\x86_64\math.c">
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</ExcludedFromBuild>
|
||||
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</ExcludedFromBuild>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
126
.vs/efilib.vcxproj.filters
Normal file
126
.vs/efilib.vcxproj.filters
Normal file
@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\arm">
|
||||
<UniqueIdentifier>{20c8e9bd-0fa8-46d3-b825-e3eebd64ab3d}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\x86_64">
|
||||
<UniqueIdentifier>{87122940-e80f-416d-a840-5e32f703f3ff}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\ia32">
|
||||
<UniqueIdentifier>{e6e3d25a-4fce-4036-bef9-3cfbafc4baaf}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="Source Files\aarch64">
|
||||
<UniqueIdentifier>{cf7e7031-77e5-4827-9aa6-f996fc4b3d06}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\lib\console.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\print.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\init.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\str.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\guid.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\misc.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\boxdraw.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\smbios.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\crc.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\data.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\debug.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\dpath.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\event.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\exit.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\hand.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\hw.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\lock.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\sread.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\cmdline.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\runtime\rtlock.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\runtime\efirtlib.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\runtime\rtstr.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\runtime\vm.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\runtime\rtdata.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\error.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\arm\math.c">
|
||||
<Filter>Source Files\arm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\x86_64\math.c">
|
||||
<Filter>Source Files\x86_64</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\ia32\math.c">
|
||||
<Filter>Source Files\ia32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\x86_64\initplat.c">
|
||||
<Filter>Source Files\x86_64</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\ia32\initplat.c">
|
||||
<Filter>Source Files\ia32</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\arm\initplat.c">
|
||||
<Filter>Source Files\arm</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\aarch64\initplat.c">
|
||||
<Filter>Source Files\aarch64</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\lib\aarch64\math.c">
|
||||
<Filter>Source Files\aarch64</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
339
LICENSE
Normal file
339
LICENSE
Normal file
@ -0,0 +1,339 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
303
Make.defaults
Executable file
303
Make.defaults
Executable file
@ -0,0 +1,303 @@
|
||||
# -*- makefile -*-
|
||||
# Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P.
|
||||
# Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
# Contributed by Stephane Eranian <eranian@hpl.hp.com>
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials
|
||||
# provided with the distribution.
|
||||
# * Neither the name of Hewlett-Packard Co. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
|
||||
TOPDIR ?= $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||
|
||||
#
|
||||
# Variables below overridable from command-line:
|
||||
# make VARNAME=value ...
|
||||
#
|
||||
|
||||
#
|
||||
# Where to install the package. GNU-EFI will create and access
|
||||
# lib and include under the root
|
||||
#
|
||||
DESTDIR ?= /
|
||||
ifeq ($(origin INSTALLROOT),undefined)
|
||||
INSTALLROOT = $(DESTDIR)
|
||||
endif
|
||||
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
stripped = $(subst $(space),/,$(strip $(subst /,$(space),$(1))))
|
||||
unstripped = $(subst $(space),/,$(subst /,$(space),$(1)))
|
||||
is_absolute = $(subst $(call stripped,$(1)),$(empty),$(call unstripped,$(1)))
|
||||
|
||||
override INSTALLROOT:=$(if $(call is_absolute,$(INSTALLROOT)),,$(TOPDIR)/)$(INSTALLROOT)
|
||||
|
||||
PREFIX := /usr/local
|
||||
EXEC_PREFIX := $(PREFIX)
|
||||
LIBDIR := $(EXEC_PREFIX)/lib
|
||||
INCLUDEDIR := $(PREFIX)/include
|
||||
INSTALL := install
|
||||
|
||||
# Compilation tools
|
||||
HOSTCC := $(prefix)gcc
|
||||
CC := $(prefix)$(CROSS_COMPILE)gcc
|
||||
AS := $(prefix)$(CROSS_COMPILE)as
|
||||
LD := $(prefix)$(CROSS_COMPILE)ld
|
||||
AR := $(prefix)$(CROSS_COMPILE)ar
|
||||
RANLIB := $(prefix)$(CROSS_COMPILE)ranlib
|
||||
OBJCOPY := $(prefix)$(CROSS_COMPILE)objcopy
|
||||
|
||||
# Set verbose or nonverbose output similarly to automake's silent rules.
|
||||
# Default is nonverbose, but, just like with automake, it can be disabled
|
||||
# with: 'make V=1'
|
||||
ifneq ($(V),1)
|
||||
HIDE=@
|
||||
ECHO=echo
|
||||
else
|
||||
HIDE=
|
||||
ECHO=true
|
||||
endif
|
||||
|
||||
# Host/target identification
|
||||
OS := $(shell uname -s)
|
||||
USING_APPLE ?= $(shell echo $(OS) | grep -q 'Darwin' && echo 1 || echo 0)
|
||||
USING_FREEBSD ?= $(shell echo $(OS) | grep -q 'FreeBSD' && echo 1 || echo 0)
|
||||
|
||||
# FreeBSD uses clang with no gcc symlink
|
||||
ifeq ($(USING_FREEBSD),1)
|
||||
override HOSTCC := $(prefix)clang
|
||||
endif
|
||||
|
||||
HOSTARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||
ARCH ?= $(shell $(HOSTCC) -dumpmachine | cut -f1 -d- | sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||
|
||||
# Get ARCH from the compiler if cross compiling
|
||||
ifneq ($(CROSS_COMPILE),)
|
||||
override ARCH := $(shell $(CC) -dumpmachine | cut -f1 -d-| sed -e s,i[3456789]86,ia32, -e 's,armv[67].*,arm,' )
|
||||
endif
|
||||
|
||||
# FreeBSD (and possibly others) reports amd64 instead of x86_64
|
||||
ifeq ($(ARCH),amd64)
|
||||
override ARCH := x86_64
|
||||
endif
|
||||
|
||||
# Allow UEFI shorthands to be specified for the arch
|
||||
ifeq ($(ARCH),x64)
|
||||
override ARCH := x86_64
|
||||
endif
|
||||
ifeq ($(ARCH),mips64)
|
||||
override ARCH := mips64el
|
||||
endif
|
||||
|
||||
GCCVERSION := $(shell $(CC) -dumpversion | sed -e 's/-win32/.0/' | cut -f1 -d.)
|
||||
GCCMINOR := $(shell $(CC) -dumpversion | sed -e 's/-win32/.0/' | cut -f2 -d.)
|
||||
USING_CLANG := $(shell $(CC) -v 2>&1 | grep -q 'clang version' && echo clang || echo 0)
|
||||
NO_GLIBC ?= 0
|
||||
|
||||
# Rely on GCC MS ABI support?
|
||||
GCCNEWENOUGH := $(shell ( [ $(GCCVERSION) -gt "4" ] \
|
||||
|| ( [ $(GCCVERSION) -eq "4" ] \
|
||||
&& [ $(GCCMINOR) -ge "7" ] ) ) \
|
||||
&& echo 1)
|
||||
|
||||
PART_ONE = $(shell echo "$(1)" | cut -f1 -d.)
|
||||
PART_TWO = $(shell echo "$(1)" | cut -f2 -d.)
|
||||
|
||||
IS_NEW_ENOUGH = $(shell ( [ $(call PART_ONE,$(1)) -gt "$(2)" ] \
|
||||
|| ( [ $(call PART_ONE,$(1)) -eq "$(2)" ] \
|
||||
&& [ $(call PART_TWO,$(1)) -ge "$(3)" ] ) ) \
|
||||
&& echo 1)
|
||||
|
||||
#
|
||||
# Where to build the package
|
||||
#
|
||||
OBJDIR := $(TOPDIR)/$(ARCH)
|
||||
|
||||
#
|
||||
# Variables below derived from variables above
|
||||
#
|
||||
|
||||
# Arch-specific compilation flags
|
||||
CPPFLAGS += -DCONFIG_$(ARCH)
|
||||
|
||||
CFLAGS += -Wno-error=pragmas
|
||||
|
||||
ifeq ($(ARCH),ia64)
|
||||
CFLAGS += -mfixed-range=f32-f127
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),ia32)
|
||||
CFLAGS += -mno-mmx -mno-sse
|
||||
ifeq ($(HOSTARCH),x86_64)
|
||||
ARCH3264 = -m32
|
||||
endif
|
||||
endif
|
||||
|
||||
# Set ISO C mode
|
||||
CPPFLAGS += -std=c11
|
||||
|
||||
ifeq ($(ARCH),x86_64)
|
||||
ifeq ($(GCCNEWENOUGH),1)
|
||||
CPPFLAGS += -DGNU_EFI_USE_MS_ABI
|
||||
ifneq ($(USING_CLANG),clang)
|
||||
CPPFLAGS += -maccumulate-outgoing-args
|
||||
endif
|
||||
endif
|
||||
|
||||
CFLAGS += -mno-red-zone
|
||||
ifeq ($(HOSTARCH),ia32)
|
||||
ARCH3264 = -m64
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq (,$(filter $(ARCH),ia32 x86_64))
|
||||
# Disable AVX, if the compiler supports that.
|
||||
CC_CAN_DISABLE_AVX=$(shell $(CC) -Werror -c -o /dev/null -xc -mno-avx - </dev/null >/dev/null 2>&1 && echo 1)
|
||||
ifeq ($(CC_CAN_DISABLE_AVX), 1)
|
||||
CFLAGS += -mno-avx
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),mips64el)
|
||||
CFLAGS += -march=mips64r2
|
||||
ARCH3264 = -mabi=64
|
||||
endif
|
||||
|
||||
#
|
||||
# Set HAVE_EFI_OBJCOPY if objcopy understands --target efi-[app|bsdrv|rtdrv],
|
||||
# otherwise we need to compose the PE/COFF header using the assembler
|
||||
#
|
||||
|
||||
OBJCOPY_VERSION := $(shell $(OBJCOPY) --version | head -n 1 | awk '{print $$(NF)}')
|
||||
|
||||
ifneq ($(ARCH),arm)
|
||||
ifneq ($(ARCH),mips64el)
|
||||
export HAVE_EFI_OBJCOPY=y
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),riscv64)
|
||||
ifneq ($(call IS_NEW_ENOUGH,$(OBJCOPY_VERSION),2,42),1)
|
||||
export SYSTEM_HAS_EFI_OBJCOPY ?= 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),aarch64)
|
||||
ifneq ($(call IS_NEW_ENOUGH,$(OBJCOPY_VERSION),2,38),1)
|
||||
export SYSTEM_HAS_EFI_OBJCOPY ?= 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),ia32)
|
||||
ifeq ($(USING_APPLE),1)
|
||||
export SYSTEM_HAS_EFI_OBJCOPY ?= 0
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(HAVE_EFI_OBJCOPY),y)
|
||||
export SYSTEM_HAS_EFI_OBJCOPY ?= 1
|
||||
else
|
||||
export SYSTEM_HAS_EFI_OBJCOPY ?= 0
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(USING_APPLE),1)
|
||||
CFLAGS += -D__GNU_EFI_NO_GLIBC
|
||||
endif
|
||||
|
||||
ifeq ($(NO_GLIBC),1)
|
||||
CFLAGS += -D__GNU_EFI_NO_GLIBC
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH),arm)
|
||||
CFLAGS += -marm
|
||||
endif
|
||||
|
||||
ifneq (,$(filter $(ARCH),aarch64 arm loongarch64))
|
||||
LDFLAGS += -z common-page-size=4096
|
||||
LDFLAGS += -z max-page-size=4096
|
||||
endif
|
||||
|
||||
# Generic compilation flags
|
||||
INCDIR += -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) \
|
||||
-I$(TOPDIR)/inc/protocol
|
||||
|
||||
# Only enable -fPIE for non MinGW compilers (unneeded on MinGW)
|
||||
GCCMACHINE := $(shell $(CC) -dumpmachine)
|
||||
IS_MINGW32 := $(findstring mingw32, $(GCCMACHINE))
|
||||
ifeq ($(IS_MINGW32),)
|
||||
CFLAGS += -fPIE
|
||||
endif
|
||||
|
||||
ifeq ($(USING_FREEBSD),1)
|
||||
CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Werror \
|
||||
-fno-strict-aliasing \
|
||||
-ffreestanding -fno-stack-protector
|
||||
else
|
||||
CFLAGS += $(ARCH3264) -g -O2 -Wall -Wextra -Wno-pointer-sign -Werror \
|
||||
-fno-strict-aliasing \
|
||||
-ffreestanding -fno-stack-protector -fno-stack-check \
|
||||
$(if $(findstring 0,$(USING_CLANG)),-Wno-error=maybe-uninitialized,) \
|
||||
$(if $(findstring 0,$(USING_CLANG)),-fno-merge-all-constants,)
|
||||
endif
|
||||
|
||||
# Force DWARF 4 on LLVM
|
||||
# Otherwise readelf becomes very unhappy
|
||||
ifeq ($(USING_CLANG),clang)
|
||||
CFLAGS += -gdwarf-4
|
||||
endif
|
||||
|
||||
# Force hard float (for library mismatch)
|
||||
ifeq ($(ARCH),arm)
|
||||
ifeq ($(USING_APPLE),1)
|
||||
CFLAGS += -mfloat-abi=hard -mfpu=vfpv2
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(V),1)
|
||||
ARFLAGS := rDv
|
||||
else
|
||||
ARFLAGS := rD
|
||||
endif
|
||||
ASFLAGS += $(ARCH3264)
|
||||
LDFLAGS += -nostdlib
|
||||
ifeq ($(IS_MINGW32),)
|
||||
LDFLAGS += --warn-common --no-undefined --fatal-warnings \
|
||||
--build-id=sha1
|
||||
ifeq ($(USING_APPLE),0)
|
||||
LDFLAGS += -z norelro -z nocombreloc
|
||||
endif
|
||||
else
|
||||
LDFLAGS += -Wl,--warn-common -Wl,--no-undefined -Wl,--fatal-warnings \
|
||||
-Wl,--build-id=sha1
|
||||
endif
|
||||
|
||||
ifneq ($(ARCH),arm)
|
||||
export LIBGCC=$(shell $(CC) $(CFLAGS) $(ARCH3264) -print-libgcc-file-name)
|
||||
endif
|
@ -34,13 +34,54 @@
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
|
||||
.SECONDARY:
|
||||
|
||||
CHAR_SUBSYSTEM=$(subst 0x,\x,$(SUBSYSTEM))
|
||||
|
||||
ifeq ($(IS_MINGW32),)
|
||||
%.efi: %.so
|
||||
$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .dynsym -j .rel \
|
||||
-j .rela -j .reloc --target=$(FORMAT) $*.so $@
|
||||
@$(ECHO) " OBJCOPY $(notdir $@)"
|
||||
$(HIDE)$(OBJCOPY) -j .text -j .sdata -j .data -j .dynamic -j .rodata -j .rel \
|
||||
-j .rela -j .rel.* -j .rela.* -j .rel* -j .rela* \
|
||||
-j .areloc -j .reloc $(FORMAT) $*.so $@
|
||||
ifeq ($(ARCH),riscv64)
|
||||
ifeq ($(SYSTEM_HAS_EFI_OBJCOPY),0)
|
||||
$(HIDE)/bin/echo -ne "$(CHAR_SUBSYSTEM)" | dd of=$@ bs=1 seek=156 count=1 conv=notrunc status=none
|
||||
endif
|
||||
endif
|
||||
|
||||
%.efi.debug: %.so
|
||||
@$(ECHO) " OBJCOPY $(notdir $@)"
|
||||
$(HIDE)$(OBJCOPY) -j .debug_info -j .debug_abbrev -j .debug_aranges \
|
||||
-j .debug_line -j .debug_str -j .debug_ranges \
|
||||
-j .note.gnu.build-id \
|
||||
$(FORMAT) $*.so $@
|
||||
|
||||
%.so: %.o
|
||||
$(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
|
||||
@$(ECHO) " LD $(notdir $@)"
|
||||
$(HIDE)$(LD) $(LDFLAGS) $^ -o $@ $(LOADLIBES)
|
||||
else
|
||||
%.efi: %.o
|
||||
@$(ECHO) " CCLD $(notdir $@)"
|
||||
$(HIDE)$(CC) $(LDFLAGS) $< -o $@ $(LOADLIBES)
|
||||
endif
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
@$(ECHO) " CC $(notdir $@)"
|
||||
$(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
|
||||
%.s: %.c
|
||||
@$(ECHO) " CC $(notdir $@)"
|
||||
$(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -S $< -o $@
|
||||
|
||||
%.i: %.c
|
||||
@$(ECHO) " CPP $(notdir $@)"
|
||||
$(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
|
||||
|
||||
%.o: %.S
|
||||
@$(ECHO) " CC $(notdir $@)"
|
||||
$(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -c $< -o $@
|
||||
|
||||
%.s: %.S
|
||||
@$(ECHO) " CPP $(notdir $@)"
|
||||
$(HIDE)$(CC) $(INCDIR) $(CFLAGS) $(CPPFLAGS) -E $< -o $@
|
138
Makefile
Normal file
138
Makefile
Normal file
@ -0,0 +1,138 @@
|
||||
#
|
||||
# Copyright (C) 1999-2007 Hewlett-Packard Co.
|
||||
# Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
# Contributed by Stephane Eranian <eranian@hpl.hp.com>
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials
|
||||
# provided with the distribution.
|
||||
# * Neither the name of Hewlett-Packard Co. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
#
|
||||
|
||||
export VERSION = 4.0.0
|
||||
|
||||
MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
SRCDIR = $(dir $(MKFILE_PATH))
|
||||
|
||||
VPATH = $(SRCDIR)
|
||||
|
||||
include $(SRCDIR)/Make.defaults
|
||||
|
||||
SUBDIRS = lib inc apps
|
||||
ifeq ($(IS_MINGW32),)
|
||||
SUBDIRS += gnuefi
|
||||
endif
|
||||
|
||||
all: check_gcc $(SUBDIRS)
|
||||
|
||||
ifeq ($(IS_MINGW32),)
|
||||
gnuefi: lib
|
||||
apps: gnuefi
|
||||
else
|
||||
apps: lib
|
||||
endif
|
||||
|
||||
mkvars:
|
||||
@echo AR=$(AR)
|
||||
@echo ARCH=$(ARCH)
|
||||
@echo ARCH3264=$(ARCH3264)
|
||||
@echo AS=$(AS)
|
||||
@echo ASFLAGS=$(ASFLAGS)
|
||||
@echo CC=$(CC)
|
||||
@echo CFLAGS=$(CFLAGS)
|
||||
@echo CPPFLAGS=$(CPPFLAGS)
|
||||
@echo GCCMINOR=$(GCCMINOR)
|
||||
@echo GCCNEWENOUGH=$(GCCNEWENOUGH)
|
||||
@echo GCCVERSION=$(GCCVERSION)
|
||||
@echo HOSTARCH=$(HOSTARCH)
|
||||
@echo INCDIR=$(INCDIR)
|
||||
@echo INSTALL=$(INSTALL)
|
||||
@echo INSTALLROOT=$(INSTALLROOT)
|
||||
@echo LD=$(LD)
|
||||
@echo LDFLAGS=$(LDFLAGS)
|
||||
@echo LIBDIR=$(LIBDIR)
|
||||
@echo OBJCOPY=$(OBJCOPY)
|
||||
@echo OS=$(OS)
|
||||
@echo prefix=$(prefix)
|
||||
@echo PREFIX=$(PREFIX)
|
||||
@echo RANLIB=$(RANLIB)
|
||||
@echo SRCDIR=$(SRCDIR)
|
||||
@echo TOPDIR=$(TOPDIR)
|
||||
|
||||
$(SUBDIRS):
|
||||
mkdir -p $(OBJDIR)/$@
|
||||
$(MAKE) -C $(OBJDIR)/$@ -f $(SRCDIR)/$@/Makefile SRCDIR=$(SRCDIR)/$@ ARCH=$(ARCH)
|
||||
|
||||
clean:
|
||||
@rm -vrf *~
|
||||
@set -e ; for d in $(SUBDIRS); do \
|
||||
if [ -d $(OBJDIR)/$$d ]; then \
|
||||
$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d clean; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
install:
|
||||
@set -e ; for d in $(SUBDIRS); do \
|
||||
mkdir -p $(OBJDIR)/$$d; \
|
||||
$(MAKE) -C $(OBJDIR)/$$d -f $(SRCDIR)/$$d/Makefile SRCDIR=$(SRCDIR)/$$d install; done
|
||||
|
||||
.PHONY: $(SUBDIRS) clean depend
|
||||
|
||||
#
|
||||
# on both platforms you must use gcc 3.0 or higher
|
||||
#
|
||||
check_gcc:
|
||||
ifeq ($(GCC_VERSION),2)
|
||||
@echo "you need to use a version of gcc >= 3.0, you are using `$(CC) --version`"
|
||||
@exit 1
|
||||
endif
|
||||
|
||||
include $(SRCDIR)/Make.rules
|
||||
|
||||
test-archive:
|
||||
@rm -rf /tmp/gnu-efi-$(VERSION) /tmp/gnu-efi-$(VERSION)-tmp
|
||||
@mkdir -p /tmp/gnu-efi-$(VERSION)-tmp
|
||||
@git archive --format=tar $(shell git branch | awk '/^*/ { print $$2 }') | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; tar x )
|
||||
@git diff | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; patch -s -p1 -b -z .gitdiff )
|
||||
@mv /tmp/gnu-efi-$(VERSION)-tmp/ /tmp/gnu-efi-$(VERSION)/
|
||||
@dir=$$PWD; cd /tmp; tar -c --bzip2 -f $$dir/gnu-efi-$(VERSION).tar.bz2 gnu-efi-$(VERSION)
|
||||
@rm -rf /tmp/gnu-efi-$(VERSION)
|
||||
@echo "The archive is in gnu-efi-$(VERSION).tar.bz2"
|
||||
|
||||
tag:
|
||||
git tag $(VERSION) refs/heads/master
|
||||
|
||||
archive: tag
|
||||
@rm -rf /tmp/gnu-efi-$(VERSION) /tmp/gnu-efi-$(VERSION)-tmp
|
||||
@mkdir -p /tmp/gnu-efi-$(VERSION)-tmp
|
||||
@git archive --format=tar $(VERSION) | ( cd /tmp/gnu-efi-$(VERSION)-tmp/ ; tar x )
|
||||
@mv /tmp/gnu-efi-$(VERSION)-tmp/ /tmp/gnu-efi-$(VERSION)/
|
||||
@dir=$$PWD; cd /tmp; tar -c --bzip2 -f $$dir/gnu-efi-$(VERSION).tar.bz2 gnu-efi-$(VERSION)
|
||||
@rm -rf /tmp/gnu-efi-$(VERSION)
|
||||
@echo "The archive is in gnu-efi-$(VERSION).tar.bz2"
|
||||
|
@ -1,18 +1,19 @@
|
||||
-------------------------------------------------
|
||||
Building EFI Applications Using the GNU Toolchain
|
||||
-------------------------------------------------
|
||||
-------------------------------------------------
|
||||
Building EFI Applications Using the GNU Toolchain
|
||||
-------------------------------------------------
|
||||
|
||||
David Mosberger <davidm@hpl.hp.com>
|
||||
David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
23 September 1999
|
||||
23 September 1999
|
||||
|
||||
|
||||
Copyright (c) 1999-2007 Hewlett-Packard Co.
|
||||
Copyright (c) 2006-2010 Intel Co.
|
||||
Copyright (c) 1999-2007 Hewlett-Packard Co.
|
||||
|
||||
Last update: 04/09/2007
|
||||
Copyright (c) 2006-2010 Intel Co.
|
||||
|
||||
* Introduction
|
||||
Last update (DD/MM/YYYY): 19/08/2024
|
||||
|
||||
# Introduction
|
||||
|
||||
This document has two parts: the first part describes how to develop
|
||||
EFI applications for IA-64,x86 and x86_64 using the GNU toolchain and the EFI
|
||||
@ -22,75 +23,63 @@ environment works.
|
||||
|
||||
|
||||
|
||||
* Part 1: Developing EFI Applications
|
||||
# Part 1: Developing EFI Applications
|
||||
|
||||
|
||||
** Prerequisites:
|
||||
## Prerequisites:
|
||||
|
||||
To develop x86 and x86_64 EFI applications, the following tools are needed:
|
||||
To develop EFI applications, the following tools are needed:
|
||||
|
||||
- gcc-3.0 or newer (gcc 2.7.2 is NOT sufficient!)
|
||||
As of gnu-efi-3.0b, the Redhat 8.0 toolchain is known to work,
|
||||
but the Redhat 9.0 toolchain is not currently supported.
|
||||
- A C11 compiler: gcc, clang (Supported since 4.0) or MSVC (Supported since 4.0)
|
||||
|
||||
- A version of "objcopy" that supports EFI applications. To
|
||||
check if your version includes EFI support, issue the
|
||||
command:
|
||||
- A version of "objcopy" that supports EFI applications (if using a GNU based toolchain).
|
||||
To check if your version includes EFI support, issue the
|
||||
command: `objcopy --help`
|
||||
|
||||
objcopy --help
|
||||
Verify that the line "supported targets" contains the string
|
||||
"efi-app-ia32" and "efi-app-x86_64" (for x86 and x64 respectively)
|
||||
and that the "-j" option accepts wildcards.
|
||||
The binutils release binutils-2.24 supports Intel64 EFI and
|
||||
accepts wildcard section names.
|
||||
|
||||
and verify that the line "supported targets" contains the
|
||||
string "efi-app-ia32" and "efi-app-x86_64". The binutils release
|
||||
binutils-2.17.50.0.14 supports Intel64 EFI.
|
||||
|
||||
- For debugging purposes, it's useful to have a version of
|
||||
"objdump" that supports EFI applications as well. This
|
||||
allows inspect and disassemble EFI binaries.
|
||||
|
||||
To develop IA-64 EFI applications, the following tools are needed:
|
||||
|
||||
- A version of gcc newer than July 30th 1999 (older versions
|
||||
had problems with generating position independent code).
|
||||
As of gnu-efi-3.0b, gcc-3.1 is known to work well.
|
||||
|
||||
- A version of "objcopy" that supports EFI applications. To
|
||||
check if your version includes EFI support, issue the
|
||||
command:
|
||||
|
||||
objcopy --help
|
||||
|
||||
and verify that the line "supported targets" contains the
|
||||
string "efi-app-ia64".
|
||||
|
||||
- For debugging purposes, it's useful to have a version of
|
||||
- For debugging purposes, it's useful to have a version of
|
||||
"objdump" that supports EFI applications as well. This
|
||||
allows inspect and disassemble EFI binaries.
|
||||
Alternatively, use dumpbin on Windows from Visual Studio
|
||||
Development Tools, by launching it through Developer Command
|
||||
Prompt for Visual Studio.
|
||||
|
||||
|
||||
** Directory Structure
|
||||
## Directory Structure
|
||||
|
||||
This EFI development environment contains the following
|
||||
subdirectories:
|
||||
|
||||
inc: This directory contains the EFI-related include files. The
|
||||
- inc: This directory contains the EFI-related include files. The
|
||||
files are taken from Intel's EFI source distribution, except
|
||||
that various fixes were applied to make it compile with the
|
||||
GNU toolchain.
|
||||
|
||||
lib: This directory contains the source code for Intel's EFI library.
|
||||
- lib: This directory contains the source code for Intel's EFI library.
|
||||
Again, the files are taken from Intel's EFI source
|
||||
distribution, with changes to make them compile with the GNU
|
||||
toolchain.
|
||||
|
||||
gnuefi: This directory contains the glue necessary to convert ELF64
|
||||
- gnuefi: This directory contains the glue necessary to convert ELF64
|
||||
binaries to EFI binaries. Various runtime code bits, such as
|
||||
a self-relocator are included as well. This code has been
|
||||
contributed by the Hewlett-Packard Company and is distributed
|
||||
under the GNU GPL.
|
||||
|
||||
apps: This directory contains a few simple EFI test apps.
|
||||
- apps: This directory contains a few simple EFI test apps.
|
||||
|
||||
** Setup
|
||||
- licenses: This directory contains the supplementary license files applicable to this project
|
||||
|
||||
The main license is found in LICENSE
|
||||
|
||||
- docs: This directory contains some additional notices about building with gnu-efi
|
||||
|
||||
## Setup
|
||||
|
||||
It is necessary to edit the Makefile in the directory containing this
|
||||
README file before EFI applications can be built. Specifically, you
|
||||
@ -104,7 +93,7 @@ x86_64 and "ia64" for IA-64). For convenience, this can also be done from
|
||||
the make command line (e.g., "make ARCH=ia64").
|
||||
|
||||
|
||||
** Building
|
||||
## Building
|
||||
|
||||
To build the sample EFI applications provided in subdirectory "apps",
|
||||
simply invoke "make" in the toplevel directory (the directory
|
||||
@ -113,7 +102,7 @@ gnuefi/libgnuefi.a first and then all the EFI applications such as a
|
||||
apps/t6.efi.
|
||||
|
||||
|
||||
** Running
|
||||
## Running
|
||||
|
||||
Just copy the EFI application (e.g., apps/t6.efi) to the EFI
|
||||
filesystem, boot EFI, and then select "Invoke EFI application" to run
|
||||
@ -122,7 +111,7 @@ Intel-provided "nshell" application and then invoke your test binary
|
||||
via the command line interface that "nshell" provides.
|
||||
|
||||
|
||||
** Writing Your Own EFI Application
|
||||
## Writing Your Own EFI Application
|
||||
|
||||
Suppose you have your own EFI application in a file called
|
||||
"apps/myefiapp.c". To get this application built by the GNU EFI build
|
||||
@ -149,7 +138,7 @@ described in Intel's EFI documentation, except for two differences:
|
||||
ensures appropriate parameter passing for the architecture.
|
||||
|
||||
|
||||
* Part 2: Inner Workings
|
||||
# Part 2: Inner Workings
|
||||
|
||||
WARNING: This part contains all the gory detail of how the GNU EFI
|
||||
toolchain works. Normal users do not have to worry about such
|
||||
@ -174,16 +163,14 @@ and each has there own subsystem id and are identical otherwise. At
|
||||
present, the GNU EFI build environment supports the building of EFI
|
||||
applications only, though it would be trivial to generate drivers, as
|
||||
the only difference is the subsystem id. For more details on PE32+,
|
||||
see the spec at
|
||||
|
||||
http://msdn.microsoft.com/library/specs/msdn_pecoff.htm.
|
||||
see the [Specification](https://learn.microsoft.com/en-us/windows/win32/debug/pe-format).
|
||||
|
||||
In theory, converting a suitable ELF64 binary to PE32+ is easy and
|
||||
could be accomplished with the "objcopy" utility by specifying option
|
||||
--target=efi-app-ia32 (x86) or --target=efi-app-ia64 (IA-64). But
|
||||
life never is that easy, so here some complicating factors:
|
||||
|
||||
(1) COFF sections are very different from ELF sections.
|
||||
1. COFF sections are very different from ELF sections.
|
||||
|
||||
ELF binaries distinguish between program headers and sections.
|
||||
The program headers describe the memory segments that need to
|
||||
@ -194,7 +181,7 @@ life never is that easy, so here some complicating factors:
|
||||
(4KB for EFI), whereas ELF allows sections at arbitrary
|
||||
addresses and with arbitrary sizes.
|
||||
|
||||
(2) EFI binaries should be relocatable.
|
||||
2. EFI binaries should be relocatable.
|
||||
|
||||
Since EFI binaries are executed in physical mode, EFI cannot
|
||||
guarantee that a given binary can be loaded at its preferred
|
||||
@ -203,10 +190,10 @@ life never is that easy, so here some complicating factors:
|
||||
address and then relocate the binary using the contents of the
|
||||
.reloc section.
|
||||
|
||||
(3) On IA-64, the EFI entry point needs to point to a function
|
||||
3. On IA-64, the EFI entry point needs to point to a function
|
||||
descriptor, not to the code address of the entry point.
|
||||
|
||||
(4) The EFI specification assumes that wide characters use UNICODE
|
||||
4. The EFI specification assumes that wide characters use UNICODE
|
||||
encoding.
|
||||
|
||||
ANSI C does not specify the size or encoding that a wide
|
||||
@ -219,7 +206,7 @@ In the following sections, we address how the GNU EFI build
|
||||
environment addresses each of these issues.
|
||||
|
||||
|
||||
** (1) Accommodating COFF Sections
|
||||
## (1) Accommodating COFF Sections
|
||||
|
||||
In order to satisfy the COFF constraint of page-sized and page-aligned
|
||||
sections, the GNU EFI build environment uses the special linker script
|
||||
@ -230,18 +217,24 @@ and page sized.These eight sections are used to group together the much
|
||||
greater number of sections that are typically present in ELF object files.
|
||||
Specifically:
|
||||
|
||||
.hash
|
||||
Collects the ELF .hash info (this section _must_ be the first
|
||||
section in order to build a shared object file; the section is
|
||||
not actually loaded or used at runtime).
|
||||
- .text
|
||||
|
||||
.text
|
||||
Collects all sections containing executable code.
|
||||
|
||||
.data
|
||||
Collects read-only and read-write data, literal string data,
|
||||
global offset tables, the uninitialized data segment (bss) and
|
||||
various other sections containing data.
|
||||
- .data
|
||||
|
||||
Collects read-write data, literal string data,
|
||||
global offset tables, the uninitialized data segment (bss)
|
||||
and various other sections containing data.
|
||||
|
||||
The reason the uninitialized data is placed in this section is
|
||||
that the EFI loader appears to be unable to handle sections
|
||||
that are allocated but not loaded from the binary.
|
||||
|
||||
- .rodata
|
||||
|
||||
Collects read-only data to retain the correct memory
|
||||
permissions
|
||||
|
||||
The reason read-only data is placed here instead of the in
|
||||
.text is to make it possible to disassemble the .text section
|
||||
@ -249,17 +242,34 @@ Specifically:
|
||||
EFI binaries execute in physical mode, differences in page
|
||||
protection do not matter.
|
||||
|
||||
The reason the uninitialized data is placed in this section is
|
||||
that the EFI loader appears to be unable to handle sections
|
||||
that are allocated but not loaded from the binary.
|
||||
- .dynamic, .rela, .rel, .reloc, .areloc
|
||||
|
||||
.dynamic, .dynsym, .rela, .rel, .reloc
|
||||
These sections contains the dynamic information necessary to
|
||||
self-relocate the binary (see below).
|
||||
|
||||
|
||||
### Unnecessary sections:
|
||||
|
||||
- .hash (and/or .gnu.hash)
|
||||
|
||||
Collects the ELF .hash info (this section _must_ be the first
|
||||
section in order to build a shared object file; the section is
|
||||
not actually loaded or used at runtime).
|
||||
|
||||
GNU binutils provides a mechanism to generate different hash info
|
||||
via --hash-style=<sysv|gnu|both> option. In this case output
|
||||
shared object will contain .hash section, .gnu.hash section or
|
||||
both. In order to generate correct output linker script preserves
|
||||
both types of hash sections.
|
||||
|
||||
- .dynsym, .symtab
|
||||
|
||||
The symbol tables used for ELF debugging
|
||||
|
||||
|
||||
A couple of more points worth noting about the linker script:
|
||||
|
||||
o On IA-64, the global pointer symbol (__gp) needs to be placed such
|
||||
- On IA-64, the global pointer symbol (__gp) needs to be placed such
|
||||
that the _entire_ EFI binary can be addressed using the signed
|
||||
22-bit offset that the "addl" instruction affords. Specifically,
|
||||
this means that __gp should be placed at ImageBase + 0x200000.
|
||||
@ -269,17 +279,17 @@ A couple of more points worth noting about the linker script:
|
||||
to be addressable in this fashion, grep the assembly files in
|
||||
directory gnuefi for the string "@gprel".
|
||||
|
||||
o The link address (ImageBase) of the binary is (arbitrarily) set to
|
||||
- The link address (ImageBase) of the binary is (arbitrarily) set to
|
||||
zero. This could be set to something larger to increase the chance
|
||||
of EFI being able to load the binary without requiring relocation.
|
||||
However, a start address of 0 makes debugging a wee bit easier
|
||||
(great for those of us who can add, but not subtract... ;-).
|
||||
|
||||
o The relocation related sections (.dynamic, .rel, .rela, .reloc)
|
||||
- The relocation related sections (.dynamic, .rel, .rela, .reloc)
|
||||
cannot be placed inside .data because some tools in the GNU
|
||||
toolchain rely on the existence of these sections.
|
||||
|
||||
o Some sections in the ELF binary intentionally get dropped when
|
||||
- Some sections in the ELF binary intentionally get dropped when
|
||||
building the EFI binary. Particularly noteworthy are the dynamic
|
||||
relocation sections for the .plabel and .reloc sections. It would
|
||||
be _wrong_ to include these sections in the EFI binary because it
|
||||
@ -287,10 +297,10 @@ A couple of more points worth noting about the linker script:
|
||||
the EFI loader and once by the self-relocator; see below for a
|
||||
description of the latter). Specifically, only the sections
|
||||
mentioned with the -j option in the final "objcopy" command are
|
||||
retained in the EFI binary (see apps/Makefile).
|
||||
retained in the EFI binary (see Make.rules).
|
||||
|
||||
|
||||
** (2) Building Relocatable Binaries
|
||||
## (2) Building Relocatable Binaries
|
||||
|
||||
ELF binaries are normally linked for a fixed load address and are thus
|
||||
not relocatable. The only kind of ELF object that is relocatable are
|
||||
@ -302,13 +312,13 @@ normally require relocation of the global offset table.
|
||||
The approach to building relocatable binaries in the GNU EFI build
|
||||
environment is to:
|
||||
|
||||
(a) build an ELF shared object
|
||||
1. build an ELF shared object
|
||||
|
||||
(b) link it together with a self-relocator that takes care of
|
||||
2. link it together with a self-relocator that takes care of
|
||||
applying the dynamic relocations that may be present in the
|
||||
ELF shared object
|
||||
|
||||
(c) convert the resulting image to an EFI binary
|
||||
3. convert the resulting image to an EFI binary
|
||||
|
||||
The self-relocator is of course architecture dependent. The x86
|
||||
version can be found in gnuefi/reloc_ia32.c, the x86_64 version
|
||||
@ -343,12 +353,12 @@ and the application recompiled. An easy way to count the number of
|
||||
function descriptors required by an EFI application is to run the
|
||||
command:
|
||||
|
||||
objdump --dynamic-reloc example.so | fgrep FPTR64 | wc -l
|
||||
`objdump --dynamic-reloc example.so | fgrep FPTR64 | wc -l`
|
||||
|
||||
assuming "example" is the name of the desired EFI application.
|
||||
|
||||
|
||||
** (3) Creating the Function Descriptor for the IA-64 EFI Binaries
|
||||
## (3) Creating the Function Descriptor for the IA-64 EFI Binaries
|
||||
|
||||
As mentioned above, the IA-64 PE32+ format assumes that the entry
|
||||
point of the binary is a function descriptor. A function descriptors
|
||||
@ -383,9 +393,9 @@ its own section so that the objcopy program can recognize it and can
|
||||
create the correct directory entries in the PE32+ binary.
|
||||
|
||||
|
||||
** (4) Convenient and Portable Generation of UNICODE String Literals
|
||||
## (4) Convenient and Portable Generation of UNICODE String Literals
|
||||
|
||||
As of gnu-efi-3.0, we make use (and somewhat abuse) the gcc option
|
||||
From gnu-efi-3.0, we made use (and somewhat abused) the gcc option
|
||||
that forces wide characters (WCHAR_T) to use short integers (2 bytes)
|
||||
instead of integers (4 bytes). This way we match the Unicode character
|
||||
size. By abuse, we mean that we rely on the fact that the regular ASCII
|
||||
@ -395,4 +405,7 @@ to just use them interchangeably.
|
||||
|
||||
The gcc option to force short wide characters is : -fshort-wchar
|
||||
|
||||
* * * The End * * *
|
||||
We have since defined CHAR16 to be char16_t which allows us to use the C11
|
||||
'u' string literals instead hence avoiding abuse of short wide characters
|
||||
|
||||
***The End***
|
18
SECURITY.md
Normal file
18
SECURITY.md
Normal file
@ -0,0 +1,18 @@
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
| Version | Supported |
|
||||
| ------- | ------------------ |
|
||||
| 4.0.x | :white_check_mark: |
|
||||
| 3.0.x | :x: |
|
||||
| 3.0a | :x: |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please provide:
|
||||
1. Details of how the EFI binary was produced
|
||||
2. Where the vulnerability is found in gnu-efi's source code (if known)
|
||||
3. Steps to (re-)produce the vulnerability
|
||||
|
||||
[Report here](https://github.com/ncroxon/gnu-efi/security/advisories/new)
|
184
apps/AllocPages.c
Normal file
184
apps/AllocPages.c
Normal file
@ -0,0 +1,184 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Jerry Hoemann <jerry.hoemann@hp.com>
|
||||
*
|
||||
*
|
||||
* Application to allocate memory at EFI. Syntax of command
|
||||
* mimics the EFI Boot Service "AllocatePages."
|
||||
*
|
||||
* See UEFI spec 2.3, Section 6.2.
|
||||
*
|
||||
*
|
||||
|
||||
|
||||
|
||||
|
||||
FS1:\> memmap
|
||||
Type Start End #pages Attributes
|
||||
BS_Code 0000000000000000-0000000000000FFF 0000000000000001 000000000000000F
|
||||
Available 0000000000001000-000000000008DFFF 000000000000008D 000000000000000F
|
||||
Reserved 000000000008E000-000000000008FFFF 0000000000000002 000000000000000F
|
||||
Available 0000000000090000-000000000009FFFF 0000000000000010 000000000000000F
|
||||
Available 0000000000100000-000000000FFFFFFF 000000000000FF00 000000000000000F
|
||||
BS_Code 0000000010000000-0000000010061FFF 0000000000000062 000000000000000F
|
||||
Available 0000000010062000-000000005CDFFFFF 000000000004CD9E 000000000000000F
|
||||
ACPI_NVS 000000005CE00000-000000005DDFFFFF 0000000000001000 000000000000000F
|
||||
BS_Data 000000005DE00000-000000005DFFFFFF 0000000000000200 000000000000000F
|
||||
Available 000000005E000000-000000005EF1CFFF 0000000000000F1D 000000000000000F
|
||||
BS_Data 000000005EF1D000-00000000709FBFFF 0000000000011ADF 000000000000000F
|
||||
Available 00000000709FC000-00000000710E3FFF 00000000000006E8 000000000000000F
|
||||
LoaderCode 00000000710E4000-00000000711FEFFF 000000000000011B 000000000000000F
|
||||
Available 00000000711FF000-0000000071901FFF 0000000000000703 000000000000000F
|
||||
BS_Code 0000000071902000-00000000721FEFFF 00000000000008FD 000000000000000F
|
||||
|
||||
|
||||
Example to allocat 5 pages type BootCode at address 20000000 (hex)
|
||||
|
||||
|
||||
FS1:\> AllocPages.efi 2 3 5 20000000
|
||||
AllocatePage: __AllocType__ __MemType__ __NumPages__ [__Addr__]
|
||||
__AllocType__ {0,1,2} -- Any, MaxAddr, Addr
|
||||
__MemType__ {0..13}, Reserved ==0, LCode==1, LData==2, BSCode==3, BSData==4, ...
|
||||
__NumPages__ {0..F000000}
|
||||
[__Addr__] 0... 3FFFFFFFFFFF
|
||||
All numbers in hex no leading 0x
|
||||
|
||||
AllocatPage(2,3,5,20000000)
|
||||
|
||||
|
||||
Example to allocat 5 pages type BootCode at address 30000000 (hex)
|
||||
|
||||
|
||||
FS1:\> AllocPages.efi 2 3 5 30000000
|
||||
AllocatePage: __AllocType__ __MemType__ __NumPages__ [__Addr__]
|
||||
__AllocType__ {0,1,2} -- Any, MaxAddr, Addr
|
||||
__MemType__ {0..13}, Reserved ==0, LCode==1, LData==2, BSCode==3, BSData==4, ...
|
||||
__NumPages__ {0..F000000}
|
||||
[__Addr__] 0... 3FFFFFFFFFFF
|
||||
All numbers in hex no leading 0x
|
||||
|
||||
|
||||
|
||||
FS1:\> memmap
|
||||
Type Start End #pages Attributes
|
||||
BS_Code 0000000000000000-0000000000000FFF 0000000000000001 000000000000000F
|
||||
Available 0000000000001000-000000000008DFFF 000000000000008D 000000000000000F
|
||||
Reserved 000000000008E000-000000000008FFFF 0000000000000002 000000000000000F
|
||||
Available 0000000000090000-000000000009FFFF 0000000000000010 000000000000000F
|
||||
Available 0000000000100000-000000000FFFFFFF 000000000000FF00 000000000000000F
|
||||
BS_Code 0000000010000000-0000000010061FFF 0000000000000062 000000000000000F
|
||||
Available 0000000010062000-000000001FFFFFFF 000000000000FF9E 000000000000000F
|
||||
BS_Code 0000000020000000-0000000020004FFF 0000000000000005 000000000000000F
|
||||
Available 0000000020005000-000000002FFFFFFF 000000000000FFFB 000000000000000F
|
||||
BS_Code 0000000030000000-0000000030004FFF 0000000000000005 000000000000000F
|
||||
Available 0000000030005000-000000005CDFFFFF 000000000002CDFB 000000000000000F
|
||||
ACPI_NVS 000000005CE00000-000000005DDFFFFF 0000000000001000 000000000000000F
|
||||
BS_Data 000000005DE00000-000000005DFFFFFF 0000000000000200 000000000000000F
|
||||
Available 000000005E000000-000000005EF1CFFF 0000000000000F1D 000000000000000F
|
||||
BS_Data 000000005EF1D000-00000000709FBFFF 0000000000011ADF 000000000000000F
|
||||
Available 00000000709FC000-00000000710E3FFF 00000000000006E8 000000000000000F
|
||||
LoaderCode 00000000710E4000-00000000711FEFFF 000000000000011B 000000000000000F
|
||||
Available 00000000711FF000-0000000071901FFF 0000000000000703 000000000000000F
|
||||
BS_Code 0000000071902000-00000000721FEFFF 00000000000008FD 000000000000000F
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
|
||||
#define MAX_NUM_PAGES 0x000000000F000000
|
||||
#define MAX_ADDR ((1ULL << 46) - 1)
|
||||
|
||||
|
||||
#ifdef DEBUG
|
||||
#undef DEBUG
|
||||
#endif
|
||||
#define DEBUG 0
|
||||
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
|
||||
EFI_STATUS efi_status;
|
||||
CHAR16 **argv;
|
||||
INTN argc;
|
||||
INTN err = 0;
|
||||
#if DEBUG
|
||||
INTN c = 0;
|
||||
#endif
|
||||
INTN AllocType = -1;
|
||||
INTN MemType = -1;
|
||||
INTN NumPages = -1;
|
||||
EFI_PHYSICAL_ADDRESS Addr = 0;
|
||||
|
||||
InitializeLib(image, systab);
|
||||
|
||||
Print(u"AllocatePage: __AllocType__ __MemType__ __NumPages__ [__Addr__]\n");
|
||||
Print(u"__AllocType__ {0,1,2} -- Any, MaxAddr, Addr\n");
|
||||
Print(u"__MemType__ {0..13}, Reserved ==0, LCode==1, LData==2, BSCode==3, BSData==4, ...\n");
|
||||
Print(u"__NumPages__ {0..%x}\n", MAX_NUM_PAGES);
|
||||
Print(u"[__Addr__] 0... %llx\n", MAX_ADDR);
|
||||
Print(u"All numbers in hex no leading 0x\n");
|
||||
Print(u"\n");
|
||||
|
||||
#if DEBUG
|
||||
Print(u"Now get argc/argv\n");
|
||||
#endif
|
||||
argc = GetShellArgcArgv(image, &argv);
|
||||
#if DEBUG
|
||||
Print(u"argc = %d\n", argc);
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
for (c = 0; c < argc; c++ ) {
|
||||
Print(u"argv[%d] = <%s>\n", c, argv[c]);
|
||||
}
|
||||
#endif
|
||||
if ( (argc < 4) || (argc > 5) ) {
|
||||
Print(u"Wrong argument count\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
AllocType = xtoi(argv[1]);
|
||||
MemType = xtoi(argv[2]);
|
||||
NumPages = xtoi(argv[3]);
|
||||
if ( argc == 5 ) Addr = xtoi(argv[4]);
|
||||
|
||||
if ( (AllocType < 0) || (AllocType > 2)) {
|
||||
Print(u"Invalid AllocType\n");
|
||||
err++;
|
||||
}
|
||||
if ( (MemType < 0) || (MemType > 13) ) {
|
||||
Print(u"Invalid MemType\n");
|
||||
err++;
|
||||
}
|
||||
if ( (NumPages < 0) || (NumPages > MAX_NUM_PAGES) ) {
|
||||
Print(u"Inavlid NumPages\n");
|
||||
err++;
|
||||
}
|
||||
if ( Addr > MAX_ADDR ) {
|
||||
Print(u"Inavlid Address\n");
|
||||
err++;
|
||||
}
|
||||
if ( err ) {
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
Print(u"AllocatPage(%d,%d,%d,%lx)\n", AllocType, MemType, NumPages, Addr);
|
||||
|
||||
efi_status = uefi_call_wrapper(BS->AllocatePages, 4, AllocType, MemType, NumPages, &Addr);
|
||||
|
||||
if ( EFI_ERROR(efi_status) ) {
|
||||
Print(u"Allocate Pages Failed: %d\n", efi_status);
|
||||
return efi_status;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
145
apps/FreePages.c
Normal file
145
apps/FreePages.c
Normal file
@ -0,0 +1,145 @@
|
||||
|
||||
|
||||
/*
|
||||
* Copyright (C) 2013 Jerry Hoemann <jerry.hoemann@hp.com>
|
||||
*
|
||||
* Application to allocate memory at EFI. Syntax of command
|
||||
* mimics the EFI Boot Service "FreePages."
|
||||
*
|
||||
* See UEFI spec 2.3, Section 6.2.
|
||||
*
|
||||
|
||||
Example freeing a 5 page BS_Code setment at address: 0000000020000000 (hex)
|
||||
|
||||
|
||||
FS1:\> memmap
|
||||
Type Start End #pages Attributes
|
||||
BS_Code 0000000000000000-0000000000000FFF 0000000000000001 000000000000000F
|
||||
Available 0000000000001000-000000000008DFFF 000000000000008D 000000000000000F
|
||||
Reserved 000000000008E000-000000000008FFFF 0000000000000002 000000000000000F
|
||||
Available 0000000000090000-000000000009FFFF 0000000000000010 000000000000000F
|
||||
Available 0000000000100000-000000000FFFFFFF 000000000000FF00 000000000000000F
|
||||
BS_Code 0000000010000000-0000000010061FFF 0000000000000062 000000000000000F
|
||||
Available 0000000010062000-000000001FFFFFFF 000000000000FF9E 000000000000000F
|
||||
BS_Code 0000000020000000-0000000020004FFF 0000000000000005 000000000000000F
|
||||
Available 0000000020005000-000000005DDFFFFF 000000000003DDFB 000000000000000F
|
||||
BS_Data 000000005DE00000-000000005DFFFFFF 0000000000000200 000000000000000F
|
||||
Available 000000005E000000-000000006DE7CFFF 000000000000FE7D 000000000000000F
|
||||
ACPI_NVS 000000006DE7D000-000000006EE7CFFF 0000000000001000 000000000000000F
|
||||
BS_Data 000000006EE7D000-00000000709FBFFF 0000000000001B7F 000000000000000F
|
||||
Available 00000000709FC000-00000000710E3FFF 00000000000006E8 000000000000000F
|
||||
|
||||
|
||||
FS1:\> FreePages 0000000020000000 5
|
||||
FreePages: __PhysAddr__ __PgCnt__
|
||||
__PhysAddr__ 0... 3FFFFFFFFFFF
|
||||
__PgCnt__ [0..F000000]
|
||||
All numbers hex w/ no leading 0x
|
||||
|
||||
FreePages(20000000,5)
|
||||
|
||||
|
||||
|
||||
FS1:\> memmap
|
||||
Type Start End #pages Attributes
|
||||
BS_Code 0000000000000000-0000000000000FFF 0000000000000001 000000000000000F
|
||||
Available 0000000000001000-000000000008DFFF 000000000000008D 000000000000000F
|
||||
Reserved 000000000008E000-000000000008FFFF 0000000000000002 000000000000000F
|
||||
Available 0000000000090000-000000000009FFFF 0000000000000010 000000000000000F
|
||||
Available 0000000000100000-000000000FFFFFFF 000000000000FF00 000000000000000F
|
||||
BS_Code 0000000010000000-0000000010061FFF 0000000000000062 000000000000000F
|
||||
Available 0000000010062000-000000005DDFFFFF 000000000004DD9E 000000000000000F
|
||||
BS_Data 000000005DE00000-000000005DFFFFFF 0000000000000200 000000000000000F
|
||||
Available 000000005E000000-000000006DE7CFFF 000000000000FE7D 000000000000000F
|
||||
ACPI_NVS 000000006DE7D000-000000006EE7CFFF 0000000000001000 000000000000000F
|
||||
BS_Data 000000006EE7D000-00000000709FBFFF 0000000000001B7F 000000000000000F
|
||||
Available 00000000709FC000-00000000710E3FFF 00000000000006E8 000000000000000F
|
||||
|
||||
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
/*
|
||||
* FreePages: __PhysAddr__ __PgCnt__
|
||||
*
|
||||
*/
|
||||
|
||||
#define MAX_NUM_PAGES 0x000000000F000000
|
||||
|
||||
#define MAX_ADDR ((1ULL << 46) - 1)
|
||||
|
||||
#ifdef DEBUG
|
||||
#undef DEBUG
|
||||
#endif
|
||||
#define DEBUG 0
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
|
||||
EFI_STATUS efi_status;
|
||||
CHAR16 **argv;
|
||||
INTN argc = 0;
|
||||
#if DEBUG
|
||||
INTN c = 0;
|
||||
#endif
|
||||
INTN err = 0;
|
||||
|
||||
INTN PgCnt = -1;
|
||||
EFI_PHYSICAL_ADDRESS PhysAddr = 0;
|
||||
|
||||
InitializeLib(image, systab);
|
||||
|
||||
Print(u"FreePages: __PhysAddr__ __PgCnt__\n");
|
||||
Print(u"__PhysAddr__ 0... %llx\n", MAX_ADDR);
|
||||
Print(u"__PgCnt__ [0..%lx]\n", MAX_NUM_PAGES);
|
||||
Print(u"All numbers hex w/ no leading 0x\n");
|
||||
Print(u"\n");
|
||||
|
||||
#if DEBUG
|
||||
Print(u"Now parse argc/argv\n");
|
||||
#endif
|
||||
argc = GetShellArgcArgv(image, &argv);
|
||||
#if DEBUG
|
||||
Print(u"argc = %d\n", argc);
|
||||
#endif
|
||||
|
||||
#if DEBUG
|
||||
for (c = 0; c < argc; c++ ) {
|
||||
Print(u"argv[%d] = <%s>\n", c, argv[c]);
|
||||
}
|
||||
#endif
|
||||
if (argc != 3) {
|
||||
Print(u"Invalid argument count\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
PhysAddr = xtoi(argv[1]);
|
||||
PgCnt = xtoi(argv[2]);
|
||||
|
||||
if ( (PgCnt < 0) || (PgCnt > MAX_NUM_PAGES) ) {
|
||||
Print(u"Inavlid PgCnt\n");
|
||||
err++;
|
||||
}
|
||||
if ( PhysAddr > MAX_ADDR ) {
|
||||
Print(u"Inavlid Address\n");
|
||||
err++;
|
||||
}
|
||||
if ( err ) {
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
Print(u"FreePages(%lx,%d)\n", PhysAddr, PgCnt);
|
||||
|
||||
efi_status = uefi_call_wrapper(BS->FreePages, 2, PhysAddr, PgCnt);
|
||||
|
||||
if ( EFI_ERROR(efi_status) ) {
|
||||
Print(u"Free Pages Failed: %d\n", efi_status);
|
||||
return efi_status;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -37,33 +37,96 @@
|
||||
SRCDIR = .
|
||||
|
||||
VPATH = $(SRCDIR)
|
||||
TOPDIR = $(SRCDIR)/..
|
||||
|
||||
include $(SRCDIR)/../Make.defaults
|
||||
|
||||
TOPDIR = $(SRCDIR)/..
|
||||
|
||||
CDIR=$(TOPDIR)/..
|
||||
LINUX_HEADERS = /usr/src/sys/build
|
||||
APPSDIR = $(LIBDIR)/gnuefi/apps
|
||||
CPPFLAGS += -D__KERNEL__ -I$(LINUX_HEADERS)/include
|
||||
CRTOBJS = ../gnuefi/crt0-efi-$(ARCH).o
|
||||
|
||||
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_efi.lds
|
||||
ifeq ($(ARCH),x86_64)
|
||||
ifneq (,$(findstring FreeBSD,$(OS)))
|
||||
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds
|
||||
endif
|
||||
ifneq ($(HAVE_EFI_OBJCOPY),)
|
||||
ifeq ($(SYSTEM_HAS_EFI_OBJCOPY),0)
|
||||
CRT0_LOCAL = -local
|
||||
LDS_LOCAL = _local
|
||||
endif
|
||||
endif
|
||||
|
||||
LDFLAGS += -T $(LDSCRIPT) -shared -Bsymbolic -L../lib -L../gnuefi $(CRTOBJS)
|
||||
LOADLIBES = -lefi -lgnuefi $(shell $(CC) $(ARCH3264) -print-libgcc-file-name)
|
||||
FORMAT = efi-app-$(ARCH)
|
||||
ifeq ($(IS_MINGW32),)
|
||||
# The CRT0 libs are only needed for non MinGW platforms
|
||||
CRT0_LIBS = -lgnuefi
|
||||
endif
|
||||
|
||||
TARGETS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi printenv.efi t7.efi tcc.efi
|
||||
ifneq ($(CRT0_LIBS),)
|
||||
CRTOBJS = $(TOPDIR)/$(ARCH)/gnuefi/crt0-efi-$(ARCH)$(CRT0_LOCAL).o
|
||||
|
||||
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_efi$(LDS_LOCAL).lds
|
||||
ifeq ($(USING_FREEBSD),1)
|
||||
LDSCRIPT = $(TOPDIR)/gnuefi/elf_$(ARCH)_fbsd_efi.lds
|
||||
endif
|
||||
LDFLAGS += -L$(TOPDIR)/$(ARCH)/lib -L$(TOPDIR)/$(ARCH)/gnuefi $(CRTOBJS)
|
||||
LOADLIBES += -T $(LDSCRIPT)
|
||||
endif
|
||||
|
||||
LDFLAGS += -shared -Bsymbolic -L$(TOPDIR)/$(ARCH)/lib
|
||||
|
||||
LOADLIBES += -lefi $(CRT0_LIBS)
|
||||
LOADLIBES += $(LIBGCC)
|
||||
|
||||
TARGET_APPS = t.efi t2.efi t3.efi t4.efi t5.efi t6.efi t7.efi t8.efi \
|
||||
tcc.efi printenv.efi modelist.efi route80h.efi drv0_use.efi \
|
||||
AllocPages.efi exit.efi FreePages.efi bltgrid.efi \
|
||||
lfbgrid.efi setdbg.efi unsetdbg.efi old_ABI.efi
|
||||
ifeq ($(IS_MINGW32),)
|
||||
TARGET_APPS += setjmp.efi debughook.efi debughook.efi.debug \
|
||||
ctors_test.efi ctors_dtors_priority_test.efi
|
||||
endif
|
||||
|
||||
ifeq ($(USING_FREEBSD),0)
|
||||
TARGET_BSDRIVERS = drv0.efi
|
||||
else
|
||||
TARGET_BSDRIVERS =
|
||||
endif
|
||||
TARGET_RTDRIVERS =
|
||||
|
||||
SUBSYSTEM := 0xa
|
||||
$(TARGET_BSDRIVERS): SUBSYSTEM = 0xb
|
||||
$(TARGET_RTDRIVERS): SUBSYSTEM = 0xc
|
||||
|
||||
ifeq ($(SYSTEM_HAS_EFI_OBJCOPY),1)
|
||||
|
||||
FORMAT := -O efi-app-$(ARCH)
|
||||
$(TARGET_BSDRIVERS): FORMAT=-O efi-bsdrv-$(ARCH)
|
||||
$(TARGET_RTDRIVERS): FORMAT=-O efi-rtdrv-$(ARCH)
|
||||
|
||||
ifneq ($(IS_MINGW32),)
|
||||
LDFLAGS += -s -Wl,-dll -Wl,--subsystem,$(SUBSYSTEM)
|
||||
ifeq ($(ARCH),ia32)
|
||||
LDFLAGS += -e _efi_main
|
||||
else
|
||||
LDFLAGS += -e efi_main
|
||||
endif
|
||||
endif
|
||||
|
||||
else
|
||||
|
||||
FORMAT := -O binary
|
||||
LDFLAGS += --defsym=EFI_SUBSYSTEM=$(SUBSYSTEM)
|
||||
|
||||
endif
|
||||
|
||||
TARGETS = $(TARGET_APPS) $(TARGET_BSDRIVERS) $(TARGET_RTDRIVERS)
|
||||
|
||||
all: $(TARGETS)
|
||||
|
||||
ctors_test.so : ctors_fns.o ctors_test.o
|
||||
|
||||
clean:
|
||||
rm -f $(TARGETS) *~ *.o *.so
|
||||
@rm -vf $(TARGETS) *~ *.o *.so
|
||||
|
||||
install:
|
||||
mkdir -p $(INSTALLROOT)$(APPSDIR)
|
||||
$(INSTALL) -m 644 $(TARGETS) $(INSTALLROOT)$(APPSDIR)
|
||||
|
||||
.PHONY: install
|
||||
|
133
apps/bltgrid.c
Normal file
133
apps/bltgrid.c
Normal file
@ -0,0 +1,133 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
extern EFI_GUID GraphicsOutputProtocol;
|
||||
|
||||
static void
|
||||
fill_boxes(UINT32 *PixelBuffer, UINT32 Width, UINT32 Height)
|
||||
{
|
||||
UINT32 y, x = 0;
|
||||
/*
|
||||
* This assums BGRR, but it doesn't really matter; we pick red and
|
||||
* green so it'll just be blue/green if the pixel format is backwards.
|
||||
*/
|
||||
EFI_GRAPHICS_OUTPUT_BLT_PIXEL Red = {0, 0, 0xff, 0},
|
||||
Green = {0, 0xff, 0, 0},
|
||||
*Color;
|
||||
|
||||
for (y = 0; y < Height; y++) {
|
||||
Color = ((y / 32) % 2 == 0) ? &Red : &Green;
|
||||
for (x = 0; x < Width; x++) {
|
||||
if (x % 32 == 0 && x != 0)
|
||||
Color = (Color == &Red) ? &Green : &Red;
|
||||
PixelBuffer[y * Width + x] = *(UINT32 *)Color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||
{
|
||||
int i, imax;
|
||||
EFI_STATUS rc;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
||||
UINTN NumPixels;
|
||||
UINT32 *PixelBuffer;
|
||||
UINT32 BufferSize;
|
||||
|
||||
if (gop->Mode) {
|
||||
imax = gop->Mode->MaxMode;
|
||||
} else {
|
||||
Print(u"gop->Mode is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < imax; i++) {
|
||||
UINTN SizeOfInfo;
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
||||
&info);
|
||||
if (rc == EFI_NOT_STARTED) {
|
||||
Print(u"gop->QueryMode() returned %r\n", rc);
|
||||
Print(u"Trying to start GOP with SetMode().\n");
|
||||
rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
||||
gop->Mode ? gop->Mode->Mode : 0);
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
||||
&SizeOfInfo, &info);
|
||||
}
|
||||
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"%d: Bad response from QueryMode: %r (%d)\n",
|
||||
i, rc, rc);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
||||
continue;
|
||||
|
||||
NumPixels = (UINTN)info->VerticalResolution
|
||||
* (UINTN)info->HorizontalResolution;
|
||||
BufferSize = (UINT32)(NumPixels * sizeof(UINT32));
|
||||
|
||||
PixelBuffer = AllocatePool(BufferSize);
|
||||
if (!PixelBuffer) {
|
||||
Print(u"Allocation of 0x%08lx bytes failed.\n",
|
||||
sizeof(UINT32) * NumPixels);
|
||||
return;
|
||||
}
|
||||
|
||||
fill_boxes(PixelBuffer,
|
||||
info->HorizontalResolution, info->VerticalResolution);
|
||||
|
||||
uefi_call_wrapper(gop->Blt, 10, gop,
|
||||
(EFI_GRAPHICS_OUTPUT_BLT_PIXEL *)PixelBuffer,
|
||||
EfiBltBufferToVideo,
|
||||
0, 0, 0, 0,
|
||||
info->HorizontalResolution,
|
||||
info->VerticalResolution,
|
||||
0);
|
||||
FreePool(PixelBuffer);
|
||||
return;
|
||||
}
|
||||
Print(u"Never found the active video mode?\n");
|
||||
}
|
||||
|
||||
static EFI_STATUS
|
||||
SetWatchdog(UINTN seconds)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
rc = uefi_call_wrapper(BS->SetWatchdogTimer, 4, seconds, 0x1ffff,
|
||||
0, NULL);
|
||||
if (EFI_ERROR(rc)) {
|
||||
CHAR16 Buffer[64];
|
||||
StatusToString(Buffer, rc);
|
||||
Print(u"Bad response from QueryMode: %s (%d)\n", Buffer, rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
|
||||
|
||||
InitializeLib(image_handle, systab);
|
||||
|
||||
SetWatchdog(10);
|
||||
|
||||
rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"Could not locate GOP: %r\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (!gop) {
|
||||
Print(u"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
draw_boxes(gop);
|
||||
|
||||
SetWatchdog(0);
|
||||
return EFI_SUCCESS;
|
||||
}
|
29
apps/ctors_dtors_priority_test.c
Normal file
29
apps/ctors_dtors_priority_test.c
Normal file
@ -0,0 +1,29 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
// 101 in init_array, 65434 in ctors
|
||||
static void __attribute__((constructor(101))) EFI_NO_TAIL_CALL ctors101() {
|
||||
Print(u"1) ctor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in init_array, 101 in ctors
|
||||
static void __attribute__((constructor(65434))) EFI_NO_TAIL_CALL ctors65434() {
|
||||
Print(u"2) ctor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 101 in fini_array, 65434 in dtors
|
||||
static void __attribute__((destructor(101))) EFI_NO_TAIL_CALL dtors101() {
|
||||
Print(u"4) dtor with lower numbered priority \r\n");
|
||||
}
|
||||
|
||||
// 65434 in fini_array, 101 in dtors
|
||||
static void __attribute__((destructor(65434))) EFI_NO_TAIL_CALL dtors65434() {
|
||||
Print(u"3) dtor with higher numbered priority \r\n");
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
Print(u"Main function \r\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
26
apps/ctors_fns.c
Normal file
26
apps/ctors_fns.c
Normal file
@ -0,0 +1,26 @@
|
||||
/*
|
||||
* ctors.c
|
||||
* Copyright 2019 Peter Jones <pjones@redhat.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
int constructed_value = 0;
|
||||
|
||||
static void __attribute__((__constructor__)) EFI_NO_TAIL_CALL ctor(void)
|
||||
{
|
||||
Print(u"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||
constructed_value = 1;
|
||||
Print(u"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||
}
|
||||
|
||||
static void __attribute__((__destructor__)) EFI_NO_TAIL_CALL dtor(void)
|
||||
{
|
||||
Print(u"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||
constructed_value = 0;
|
||||
Print(u"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||
}
|
||||
|
||||
// vim:fenc=utf-8:tw=75:noet
|
20
apps/ctors_test.c
Normal file
20
apps/ctors_test.c
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* ctors_test.c
|
||||
* Copyright 2019 Peter Jones <pjones@redhat.com>
|
||||
*
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
extern int constructed_value;
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
Print(u"%a:%d:%a() constructed_value:%d\n", __FILE__, __LINE__, __func__, constructed_value);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
// vim:fenc=utf-8:tw=75:noet
|
91
apps/debughook.c
Normal file
91
apps/debughook.c
Normal file
@ -0,0 +1,91 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_STATUS
|
||||
GetVariableAttr(CHAR16 *var, UINT8 **data, UINTN *len, EFI_GUID owner,
|
||||
UINT32 *attributes)
|
||||
{
|
||||
EFI_STATUS efi_status;
|
||||
|
||||
*len = 0;
|
||||
|
||||
efi_status = uefi_call_wrapper(RT->GetVariable, 5, var, &owner,
|
||||
NULL, len, NULL);
|
||||
if (efi_status != EFI_BUFFER_TOO_SMALL)
|
||||
return efi_status;
|
||||
|
||||
*data = AllocateZeroPool(*len);
|
||||
if (!*data)
|
||||
return EFI_OUT_OF_RESOURCES;
|
||||
|
||||
efi_status = uefi_call_wrapper(RT->GetVariable, 5, var, &owner,
|
||||
attributes, len, *data);
|
||||
|
||||
if (efi_status != EFI_SUCCESS) {
|
||||
FreePool(*data);
|
||||
*data = NULL;
|
||||
}
|
||||
return efi_status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
GetVariable(CHAR16 *var, UINT8 **data, UINTN *len, EFI_GUID owner)
|
||||
{
|
||||
return GetVariableAttr(var, data, len, owner, NULL);
|
||||
}
|
||||
|
||||
EFI_GUID DUMMY_GUID =
|
||||
{0x55aad538, 0x8f82, 0x4e2a, {0xa4,0xf0,0xbe, 0x59, 0x13, 0xb6, 0x5f, 0x1e}};
|
||||
|
||||
static EFI_OPTNONE void
|
||||
DebugHook(void)
|
||||
{
|
||||
EFI_GUID guid = DUMMY_GUID;
|
||||
UINT8 *data = NULL;
|
||||
UINTN dataSize = 0;
|
||||
EFI_STATUS efi_status;
|
||||
register volatile unsigned long long x = 0;
|
||||
extern char _text, _data;
|
||||
|
||||
if (x)
|
||||
return;
|
||||
|
||||
efi_status = GetVariable(u"DUMMY_DEBUG", &data, &dataSize, guid);
|
||||
if (EFI_ERROR(efi_status)) {
|
||||
return;
|
||||
}
|
||||
|
||||
Print(u"add-symbol-file /usr/lib/debug/boot/efi/debughook.debug "
|
||||
u"0x%08x -s .data 0x%08x\n", &_text, &_data);
|
||||
|
||||
Print(u"Pausing for debugger attachment.\n");
|
||||
Print(u"To disable this, remove the EFI variable DUMMY_DEBUG-%g .\n",
|
||||
&guid);
|
||||
x = 1;
|
||||
while (x++) {
|
||||
/* Make this so it can't /totally/ DoS us. */
|
||||
#if defined(__x86_64__) || defined(__i386__) || defined(__i686__)
|
||||
if (x > 4294967294ULL)
|
||||
break;
|
||||
__asm__ __volatile__("pause");
|
||||
#elif defined(__aarch64__)
|
||||
if (x > 1000)
|
||||
break;
|
||||
__asm__ __volatile__("wfi");
|
||||
#else
|
||||
if (x > 12000)
|
||||
break;
|
||||
uefi_call_wrapper(BS->Stall, 1, 5000);
|
||||
#endif
|
||||
}
|
||||
x = 1;
|
||||
}
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
InitializeLib(image, systab);
|
||||
DebugHook();
|
||||
return EFI_SUCCESS;
|
||||
}
|
191
apps/drv0.c
Normal file
191
apps/drv0.c
Normal file
@ -0,0 +1,191 @@
|
||||
/*
|
||||
* Copyright (C) 2013 David Decotigny <decot@googlers.com>
|
||||
*
|
||||
* Sample EFI shell session, together with drv0_use.efi:
|
||||
*
|
||||
* # Loading first instance:
|
||||
*
|
||||
* fs0:\> load drv0.efi
|
||||
* Driver instance loaded successfully.
|
||||
* load: Image fs0:\drv0.efi loaded at 2FD7C000 - Success
|
||||
*
|
||||
* # Testing 1st instance:
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Playing with driver instance 0...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 1 time(s).
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Playing with driver instance 0...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 2 time(s).
|
||||
*
|
||||
* # Loading another instance:
|
||||
*
|
||||
* fs0:\> load drv0.efi
|
||||
* Driver instance loaded successfully.
|
||||
* load: Image fs0:\drv0.efi loaded at 2FD6D000 - Success
|
||||
*
|
||||
* # Using both instances:
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Playing with driver instance 0...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 3 time(s).
|
||||
* Playing with driver instance 1...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 1 time(s).
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Playing with driver instance 0...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 4 time(s).
|
||||
* Playing with driver instance 1...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 2 time(s).
|
||||
*
|
||||
* # Removing 1st instance:
|
||||
*
|
||||
* fs0:\> dh
|
||||
* Handle dump
|
||||
* 1: Image(DxeCore)
|
||||
* [...]
|
||||
* 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi)
|
||||
* 7A: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi)
|
||||
*
|
||||
* fs0:\> unload 79
|
||||
* 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi)
|
||||
* Unload driver image (y/n)? y
|
||||
* Driver instance unloaded.
|
||||
* unload: Success
|
||||
*
|
||||
* # Only 2nd instance remaining:
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Playing with driver instance 0...
|
||||
* Hello Sample UEFI Driver!
|
||||
* Hello was called 3 time(s).
|
||||
*
|
||||
* # Removing 2nd/last instance:
|
||||
*
|
||||
* fs0:\> dh
|
||||
* Handle dump
|
||||
* 1: Image(DxeCore)
|
||||
* [...]
|
||||
* 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi)
|
||||
*
|
||||
* fs0:\> unload 79
|
||||
* 79: Image(\/drv0.efi) ImageDevPath (..A,0x800,0x17F7DF)/\/drv0.efi)
|
||||
* Unload driver image (y/n)? y
|
||||
* Driver instance unloaded.
|
||||
* unload: Success
|
||||
*
|
||||
* # Expect error: no other drv0 instance left
|
||||
*
|
||||
* fs0:\> drv0_use.efi
|
||||
* Error looking up handles for proto: 14
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
#include "drv0.h"
|
||||
|
||||
|
||||
static const EFI_GUID GnuEfiAppsDrv0ProtocolGuid
|
||||
= GNU_EFI_APPS_DRV0_PROTOCOL_GUID;
|
||||
|
||||
static struct {
|
||||
GNU_EFI_APPS_DRV0_PROTOCOL Proto;
|
||||
UINTN Counter;
|
||||
} InternalGnuEfiAppsDrv0ProtocolData;
|
||||
|
||||
|
||||
static
|
||||
EFI_STATUS
|
||||
EFI_FUNCTION
|
||||
Drv0SayHello(
|
||||
IN const CHAR16 *HelloWho
|
||||
)
|
||||
{
|
||||
if (! HelloWho)
|
||||
return EFI_INVALID_PARAMETER;
|
||||
|
||||
Print(u"Hello %s!\n", HelloWho);
|
||||
InternalGnuEfiAppsDrv0ProtocolData.Counter ++;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
EFI_STATUS
|
||||
EFI_FUNCTION
|
||||
Drv0GetNumberOfHello(
|
||||
OUT UINTN *NumberOfHello
|
||||
)
|
||||
{
|
||||
if (! NumberOfHello)
|
||||
return EFI_INVALID_PARAMETER;
|
||||
|
||||
*NumberOfHello = InternalGnuEfiAppsDrv0ProtocolData.Counter;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
static
|
||||
EFI_STATUS
|
||||
EFI_FUNCTION
|
||||
Drv0Unload(IN EFI_HANDLE ImageHandle)
|
||||
{
|
||||
LibUninstallProtocolInterfaces(ImageHandle,
|
||||
&GnuEfiAppsDrv0ProtocolGuid,
|
||||
&InternalGnuEfiAppsDrv0ProtocolData.Proto,
|
||||
NULL);
|
||||
Print(u"Driver instance unloaded.\n", ImageHandle);
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SysTab)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_LOADED_IMAGE *LoadedImage = NULL;
|
||||
|
||||
InitializeLib(ImageHandle, SysTab);
|
||||
|
||||
/* Initialize global protocol definition + data */
|
||||
InternalGnuEfiAppsDrv0ProtocolData.Proto.SayHello
|
||||
= (GNU_EFI_APPS_DRV0_SAY_HELLO) Drv0SayHello;
|
||||
InternalGnuEfiAppsDrv0ProtocolData.Proto.GetNumberOfHello
|
||||
= (GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO) Drv0GetNumberOfHello;
|
||||
InternalGnuEfiAppsDrv0ProtocolData.Counter = 0;
|
||||
|
||||
/* Grab handle to this image: we'll attach our proto instance to it */
|
||||
Status = uefi_call_wrapper(BS->OpenProtocol, 6,
|
||||
ImageHandle, &LoadedImageProtocol,
|
||||
(void**)&LoadedImage, ImageHandle,
|
||||
NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Could not open loaded image protocol: %d\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Attach our proto to the current driver image */
|
||||
Status = LibInstallProtocolInterfaces(
|
||||
&ImageHandle, &GnuEfiAppsDrv0ProtocolGuid,
|
||||
&InternalGnuEfiAppsDrv0ProtocolData.Proto, NULL);
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Error registering driver instance: %d\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* Register Unload callback, used to unregister current protocol
|
||||
* instance from system */
|
||||
LoadedImage->Unload = (EFI_IMAGE_UNLOAD)Drv0Unload;
|
||||
|
||||
Print(u"Driver instance loaded successfully.\n");
|
||||
return EFI_SUCCESS; /* at this point, this instance stays resident
|
||||
* until image is unloaded, eg. with shell's unload,
|
||||
* ExitBootServices() */
|
||||
}
|
35
apps/drv0.h
Normal file
35
apps/drv0.h
Normal file
@ -0,0 +1,35 @@
|
||||
#ifndef _GNU_EFI_APPS_DRV0_H_
|
||||
#define _GNU_EFI_APPS_DRV0_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* UEFI naming conventions */
|
||||
#define GNU_EFI_APPS_DRV0_PROTOCOL_GUID \
|
||||
{ 0xe4dcafd0, 0x586c, 0x4b3d, {0x86, 0xe7, 0x28, 0xde, 0x7f, 0xcc, 0x04, 0xb9} }
|
||||
|
||||
INTERFACE_DECL(_GNU_EFI_APPS_DRV0_PROTOCOL);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GNU_EFI_APPS_DRV0_SAY_HELLO) (
|
||||
IN const CHAR16 *HelloWho
|
||||
);
|
||||
|
||||
typedef
|
||||
EFI_STATUS
|
||||
(EFIAPI *GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO) (
|
||||
OUT UINTN *NumberOfHello
|
||||
);
|
||||
|
||||
typedef struct _GNU_EFI_APPS_DRV0_PROTOCOL {
|
||||
GNU_EFI_APPS_DRV0_SAY_HELLO SayHello;
|
||||
GNU_EFI_APPS_DRV0_GET_NUMBER_OF_HELLO GetNumberOfHello;
|
||||
} GNU_EFI_APPS_DRV0_PROTOCOL;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
79
apps/drv0_use.c
Normal file
79
apps/drv0_use.c
Normal file
@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (C) 2013 David Decotigny <decot@googlers.com>
|
||||
*
|
||||
* See drv0.c for an example session.
|
||||
*/
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
#include "drv0.h"
|
||||
|
||||
|
||||
static EFI_GUID GnuEfiAppsDrv0ProtocolGuid
|
||||
= GNU_EFI_APPS_DRV0_PROTOCOL_GUID;
|
||||
|
||||
|
||||
static
|
||||
EFI_STATUS
|
||||
PlayWithGnuEfiAppsDrv0Protocol(IN EFI_HANDLE DrvHandle) {
|
||||
EFI_STATUS Status;
|
||||
GNU_EFI_APPS_DRV0_PROTOCOL *drv = NULL;
|
||||
UINTN NumberOfHello = 0;
|
||||
|
||||
Status = uefi_call_wrapper(BS->OpenProtocol, 6,
|
||||
DrvHandle,
|
||||
&GnuEfiAppsDrv0ProtocolGuid,
|
||||
(void**)&drv,
|
||||
DrvHandle,
|
||||
NULL,
|
||||
EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Cannot open proto: %d\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
Status = uefi_call_wrapper(drv->SayHello, 2, u"Sample UEFI Driver");
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Cannot call SayHello: %d\n", Status);
|
||||
}
|
||||
|
||||
Status = uefi_call_wrapper(drv->GetNumberOfHello, 2, &NumberOfHello);
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Cannot call GetNumberOfHello: %d\n", Status);
|
||||
} else {
|
||||
Print(u"Hello was called %d time(s).\n", NumberOfHello);
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE Image, EFI_SYSTEM_TABLE *SysTab)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EFI_HANDLE *Handles = NULL;
|
||||
UINTN i, NoHandles = 0;
|
||||
|
||||
InitializeLib(Image, SysTab);
|
||||
|
||||
Status = LibLocateHandle(ByProtocol, &GnuEfiAppsDrv0ProtocolGuid,
|
||||
NULL, &NoHandles, &Handles);
|
||||
if (EFI_ERROR(Status)) {
|
||||
Print(u"Error looking up handles for proto: %d\n", Status);
|
||||
return Status;
|
||||
}
|
||||
|
||||
for (i = 0 ; i < NoHandles ; ++i)
|
||||
{
|
||||
Print(u"Playing with driver instance %d...\n", i);
|
||||
Status = PlayWithGnuEfiAppsDrv0Protocol(Handles[i]);
|
||||
if (EFI_ERROR(Status))
|
||||
Print(u"Error playing with instance %d, skipping\n", i);
|
||||
}
|
||||
|
||||
if (Handles)
|
||||
FreePool(Handles);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
12
apps/exit.c
Normal file
12
apps/exit.c
Normal file
@ -0,0 +1,12 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
InitializeLib(image_handle, systab);
|
||||
|
||||
Exit(EFI_SUCCESS, 0, NULL);
|
||||
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
188
apps/lfbgrid.c
Normal file
188
apps/lfbgrid.c
Normal file
@ -0,0 +1,188 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
extern EFI_GUID GraphicsOutputProtocol;
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#if defined(_M_X64) || defined (_M_ARM64)
|
||||
#define __SIZEOF_POINTER__ 8
|
||||
#elif defined(_M_IX86) || defined(_M_ARM)
|
||||
#define __SIZEOF_POINTER__ 4
|
||||
#else
|
||||
#error "Unknown arch"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define be32_to_cpu(x) __builtin_bswap32(x)
|
||||
#else
|
||||
static inline UINT32 be32_to_cpu(const UINT32 x) {
|
||||
return ((x >> 24) & 0x000000FFUL) | ((x << 24) & 0xFF000000UL) |
|
||||
((x >> 8) & 0x0000FF00UL) | ((x << 8) & 0x00FF0000UL);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
fill_boxes(UINT32 *PixelBuffer, UINT32 Width, UINT32 Height, UINT32 Pitch,
|
||||
EFI_GRAPHICS_PIXEL_FORMAT Format, EFI_PIXEL_BITMASK Info )
|
||||
{
|
||||
UINT32 Red, Green;
|
||||
UINT32 y, x, color;
|
||||
|
||||
switch(Format) {
|
||||
case PixelRedGreenBlueReserved8BitPerColor:
|
||||
Red = be32_to_cpu(0xff000000);
|
||||
Green = be32_to_cpu(0x00ff0000);
|
||||
break;
|
||||
case PixelBlueGreenRedReserved8BitPerColor:
|
||||
Red = be32_to_cpu(0x0000ff00);
|
||||
Green = be32_to_cpu(0x00ff0000);
|
||||
break;
|
||||
case PixelBitMask:
|
||||
Red = Info.RedMask;
|
||||
Green = Info.GreenMask;
|
||||
break;
|
||||
case PixelBltOnly:
|
||||
return;
|
||||
default:
|
||||
Print(u"Invalid pixel format\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (y = 0; y < Height; y++) {
|
||||
color = ((y / 32) % 2 == 0) ? Red : Green;
|
||||
for (x = 0; x < Width; x++) {
|
||||
if (x % 32 == 0 && x != 0)
|
||||
color = (color == Red) ? Green : Red;
|
||||
PixelBuffer[y * Pitch + x] = color;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
draw_boxes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||
{
|
||||
int i, imax;
|
||||
EFI_STATUS rc;
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
||||
UINTN NumPixels;
|
||||
UINT32 *PixelBuffer;
|
||||
UINT32 CopySize, BufferSize;
|
||||
#if __SIZEOF_POINTER__ == 8
|
||||
UINT64 FrameBufferAddr;
|
||||
#elif __SIZEOF_POINTER__ == 4
|
||||
UINT32 FrameBufferAddr;
|
||||
#else
|
||||
#error YOUR ARCH HERE
|
||||
#endif
|
||||
|
||||
if (gop->Mode) {
|
||||
imax = gop->Mode->MaxMode;
|
||||
} else {
|
||||
Print(u"gop->Mode is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < imax; i++) {
|
||||
UINTN SizeOfInfo;
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
||||
&info);
|
||||
if (rc == EFI_NOT_STARTED) {
|
||||
Print(u"gop->QueryMode() returned %r\n", rc);
|
||||
Print(u"Trying to start GOP with SetMode().\n");
|
||||
rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
||||
gop->Mode ? gop->Mode->Mode : 0);
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
||||
&SizeOfInfo, &info);
|
||||
}
|
||||
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"%d: Bad response from QueryMode: %r (%d)\n",
|
||||
i, rc, rc);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (CompareMem(info, gop->Mode->Info, sizeof (*info)))
|
||||
continue;
|
||||
|
||||
NumPixels = (UINTN)info->VerticalResolution
|
||||
* (UINTN)info->PixelsPerScanLine;
|
||||
BufferSize = (UINT32)(NumPixels * sizeof(UINT32));
|
||||
if (BufferSize == gop->Mode->FrameBufferSize) {
|
||||
CopySize = BufferSize;
|
||||
} else {
|
||||
CopySize = BufferSize < gop->Mode->FrameBufferSize ?
|
||||
BufferSize : (UINT32)gop->Mode->FrameBufferSize;
|
||||
Print(u"height * pitch * pixelsize = %lu buf fb size is %lu; using %lu\n",
|
||||
BufferSize, gop->Mode->FrameBufferSize, CopySize);
|
||||
}
|
||||
|
||||
PixelBuffer = AllocatePool(BufferSize);
|
||||
if (!PixelBuffer) {
|
||||
Print(u"Allocation of 0x%08lx bytes failed.\n",
|
||||
sizeof(UINT32) * NumPixels);
|
||||
return;
|
||||
}
|
||||
|
||||
fill_boxes(PixelBuffer, info->HorizontalResolution,
|
||||
info->VerticalResolution, info->PixelsPerScanLine,
|
||||
info->PixelFormat, info->PixelInformation);
|
||||
|
||||
if (info->PixelFormat == PixelBltOnly) {
|
||||
Print(u"No linear framebuffer on this device.\n");
|
||||
return;
|
||||
}
|
||||
#if __SIZEOF_POINTER__ == 8
|
||||
FrameBufferAddr = (UINT64)gop->Mode->FrameBufferBase;
|
||||
#elif __SIZEOF_POINTER__ == 4
|
||||
FrameBufferAddr = (UINT32)(UINT64)gop->Mode->FrameBufferBase;
|
||||
#else
|
||||
#error YOUR ARCH HERE
|
||||
#endif
|
||||
|
||||
CopyMem((VOID *)FrameBufferAddr, PixelBuffer, CopySize);
|
||||
return;
|
||||
}
|
||||
Print(u"Never found the active video mode?\n");
|
||||
}
|
||||
|
||||
static EFI_STATUS
|
||||
SetWatchdog(UINTN seconds)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
rc = uefi_call_wrapper(BS->SetWatchdogTimer, 4, seconds, 0x1ffff,
|
||||
0, NULL);
|
||||
if (EFI_ERROR(rc)) {
|
||||
CHAR16 Buffer[64];
|
||||
StatusToString(Buffer, rc);
|
||||
Print(u"Bad response from QueryMode: %s (%d)\n", Buffer, rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
|
||||
|
||||
InitializeLib(image_handle, systab);
|
||||
|
||||
SetWatchdog(10);
|
||||
|
||||
rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"Could not locate GOP: %r\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (!gop) {
|
||||
Print(u"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
draw_boxes(gop);
|
||||
|
||||
SetWatchdog(0);
|
||||
return EFI_SUCCESS;
|
||||
}
|
108
apps/modelist.c
Normal file
108
apps/modelist.c
Normal file
@ -0,0 +1,108 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
extern EFI_GUID GraphicsOutputProtocol;
|
||||
|
||||
static void
|
||||
print_modes(EFI_GRAPHICS_OUTPUT_PROTOCOL *gop)
|
||||
{
|
||||
int i, imax;
|
||||
EFI_STATUS rc;
|
||||
|
||||
if (gop->Mode) {
|
||||
imax = gop->Mode->MaxMode;
|
||||
Print(u"GOP reports MaxMode %d\n", imax);
|
||||
} else {
|
||||
Print(u"gop->Mode is NULL\n");
|
||||
imax = 1;
|
||||
}
|
||||
|
||||
for (i = 0; i < imax; i++) {
|
||||
EFI_GRAPHICS_OUTPUT_MODE_INFORMATION *info;
|
||||
UINTN SizeOfInfo;
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i, &SizeOfInfo,
|
||||
&info);
|
||||
if (rc == EFI_NOT_STARTED) {
|
||||
Print(u"gop->QueryMode() returned %r\n", rc);
|
||||
Print(u"Trying to start GOP with SetMode().\n");
|
||||
rc = uefi_call_wrapper(gop->SetMode, 2, gop,
|
||||
gop->Mode ? gop->Mode->Mode : 0);
|
||||
rc = uefi_call_wrapper(gop->QueryMode, 4, gop, i,
|
||||
&SizeOfInfo, &info);
|
||||
}
|
||||
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"%d: Bad response from QueryMode: %r (%d)\n",
|
||||
i, rc, rc);
|
||||
continue;
|
||||
}
|
||||
Print(u"%c%d: %dx%d ",
|
||||
(gop->Mode &&
|
||||
CompareMem(info,gop->Mode->Info,sizeof(*info)) == 0
|
||||
) ? '*' : ' ',
|
||||
i, info->HorizontalResolution, info->VerticalResolution);
|
||||
switch(info->PixelFormat) {
|
||||
case PixelRedGreenBlueReserved8BitPerColor:
|
||||
Print(u"RGBR");
|
||||
break;
|
||||
case PixelBlueGreenRedReserved8BitPerColor:
|
||||
Print(u"BGRR");
|
||||
break;
|
||||
case PixelBitMask:
|
||||
Print(u"R:%08x G:%08x B:%08x X:%08x",
|
||||
info->PixelInformation.RedMask,
|
||||
info->PixelInformation.GreenMask,
|
||||
info->PixelInformation.BlueMask,
|
||||
info->PixelInformation.ReservedMask);
|
||||
break;
|
||||
case PixelBltOnly:
|
||||
Print(u"(blt only)");
|
||||
break;
|
||||
default:
|
||||
Print(u"(Invalid pixel format)");
|
||||
break;
|
||||
}
|
||||
Print(u" pitch %d\n", info->PixelsPerScanLine);
|
||||
}
|
||||
}
|
||||
|
||||
static EFI_STATUS
|
||||
SetWatchdog(UINTN seconds)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
rc = uefi_call_wrapper(BS->SetWatchdogTimer, 4, seconds, 0x1ffff,
|
||||
0, NULL);
|
||||
if (EFI_ERROR(rc)) {
|
||||
CHAR16 Buffer[64];
|
||||
StatusToString(Buffer, rc);
|
||||
Print(u"Bad response from QueryMode: %s (%d)\n", Buffer, rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
EFI_GRAPHICS_OUTPUT_PROTOCOL *gop;
|
||||
|
||||
InitializeLib(image_handle, systab);
|
||||
|
||||
SetWatchdog(10);
|
||||
|
||||
rc = LibLocateProtocol(&GraphicsOutputProtocol, (void **)&gop);
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(u"Could not locate GOP: %r\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (!gop) {
|
||||
Print(u"LocateProtocol(GOP, &gop) returned %r but GOP is NULL\n", rc);
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
print_modes(gop);
|
||||
|
||||
SetWatchdog(0);
|
||||
return EFI_SUCCESS;
|
||||
}
|
33
apps/old_ABI.c
Normal file
33
apps/old_ABI.c
Normal file
@ -0,0 +1,33 @@
|
||||
#define GNU_EFI_3_0_COMPAT
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
/* EFI_TIMESTAMP_PROTOCOL */
|
||||
#define TEST_GUID { 0xafbfde41, 0x2e6e, 0x4262,\
|
||||
{ 0xba, 0x65, 0x62, 0xb9, 0x23, 0x6e, 0x54, 0x95 }}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image EFI_UNUSED, EFI_SYSTEM_TABLE *systab EFI_UNUSED)
|
||||
{
|
||||
|
||||
CHAR16 *Dest = 0;
|
||||
EFI_UNUSED CHAR16 *Copy = 0;
|
||||
UINTN test_str_size = 0;
|
||||
CONST CHAR16 *test_str = u"Hello World!";
|
||||
|
||||
test_str_size = StrSize(test_str);
|
||||
Dest = AllocatePool(test_str_size);
|
||||
CopyMem(Dest, test_str, test_str_size);
|
||||
Copy = ReallocatePool(Dest, test_str_size, test_str_size+10);
|
||||
Print(u"Done CopyMem and ReallocatePool!\r\n");
|
||||
|
||||
EFI_GUID a = TEST_GUID;
|
||||
EFI_GUID b = TEST_GUID;
|
||||
if (CompareGuid(&a, &b) == 0) {
|
||||
Print(u"CompareGuid ok!\r\n");
|
||||
} else {
|
||||
Print(u"CompareGuid fail!\r\n");
|
||||
}
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -14,10 +14,10 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
name[0] = 0;
|
||||
vendor = NullGuid;
|
||||
|
||||
Print(L"GUID Variable Name Value\n");
|
||||
Print(L"=================================== ==================== ========\n");
|
||||
Print(u"GUID Variable Name Value\n");
|
||||
Print(u"=================================== ==================== ========\n");
|
||||
|
||||
StrCpy(fmt, L"%.-35g %.-20s %s\n");
|
||||
StrCpy(fmt, u"%.-35g %.-20s %s\n");
|
||||
while (1) {
|
||||
size = sizeof(name);
|
||||
status = uefi_call_wrapper(RT->GetNextVariableName, 3, &size, name, &vendor);
|
136
apps/route80h.c
Normal file
136
apps/route80h.c
Normal file
@ -0,0 +1,136 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
/* this example program changes the Reserved Page Route (RPR) bit on ICH10's General
|
||||
* Control And Status Register (GCS) from LPC to PCI. In practical terms, it routes
|
||||
* outb to port 80h to the PCI bus. */
|
||||
|
||||
#define GCS_OFFSET_ADDR 0x3410
|
||||
#define GCS_RPR_SHIFT 2
|
||||
#define GCS_RPR_PCI 1
|
||||
#define GCS_RPR_LPC 0
|
||||
|
||||
#define VENDOR_ID_INTEL 0x8086
|
||||
#define DEVICE_ID_LPCIF 0x3a16
|
||||
#define DEVICE_ID_COUGARPOINT_LPCIF 0x1c56
|
||||
|
||||
static EFI_HANDLE ImageHandle;
|
||||
|
||||
typedef struct {
|
||||
uint16_t vendor_id; /* 00-01 */
|
||||
uint16_t device_id; /* 02-03 */
|
||||
char pad[0xEB]; /* 04-EF */
|
||||
uint32_t rcba; /* F0-F3 */
|
||||
uint32_t reserved[3]; /* F4-FF */
|
||||
} lpcif_t;
|
||||
|
||||
static inline void set_bit(volatile uint32_t *flag, int bit, int value)
|
||||
{
|
||||
uint32_t val = *flag;
|
||||
Print(u"current value is 0x%2x\n", val);
|
||||
|
||||
if (value) {
|
||||
val |= (1 << bit);
|
||||
} else {
|
||||
val &= ~(1 << bit);
|
||||
}
|
||||
Print(u"setting value to 0x%2x\n", val);
|
||||
*flag = val;
|
||||
val = *flag;
|
||||
Print(u"new value is 0x%2x\n", val);
|
||||
}
|
||||
|
||||
static int is_device(EFI_PCI_IO *pciio, uint16_t vendor_id, uint16_t device_id)
|
||||
{
|
||||
lpcif_t lpcif;
|
||||
EFI_STATUS rc;
|
||||
|
||||
rc = uefi_call_wrapper(pciio->Pci.Read, 5, pciio, EfiPciIoWidthUint16, 0, 2, &lpcif);
|
||||
if (EFI_ERROR(rc))
|
||||
return 0;
|
||||
|
||||
if (vendor_id == lpcif.vendor_id && device_id == lpcif.device_id)
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static EFI_STATUS find_pci_device(uint16_t vendor_id, uint16_t device_id,
|
||||
EFI_PCI_IO **pciio)
|
||||
{
|
||||
EFI_STATUS rc;
|
||||
EFI_HANDLE *Handles;
|
||||
UINTN NoHandles, i;
|
||||
|
||||
if (!pciio)
|
||||
return EFI_INVALID_PARAMETER;
|
||||
|
||||
rc = LibLocateHandle(ByProtocol, &PciIoProtocol, NULL, &NoHandles,
|
||||
&Handles);
|
||||
if (EFI_ERROR(rc))
|
||||
return rc;
|
||||
|
||||
for (i = 0; i < NoHandles; i++) {
|
||||
void *pciio_tmp = NULL;
|
||||
rc = uefi_call_wrapper(BS->OpenProtocol, 6, Handles[i],
|
||||
&PciIoProtocol, &pciio_tmp, ImageHandle,
|
||||
NULL, EFI_OPEN_PROTOCOL_GET_PROTOCOL);
|
||||
if (EFI_ERROR(rc))
|
||||
continue;
|
||||
*pciio = pciio_tmp;
|
||||
if (!is_device(*pciio, vendor_id, device_id)) {
|
||||
*pciio = NULL;
|
||||
continue;
|
||||
}
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
InitializeLib(image_handle, systab);
|
||||
EFI_PCI_IO *pciio = NULL;
|
||||
lpcif_t lpcif;
|
||||
EFI_STATUS rc = EFI_SUCCESS;
|
||||
struct {
|
||||
uint16_t vendor;
|
||||
uint16_t device;
|
||||
} devices[] = {
|
||||
{ VENDOR_ID_INTEL, DEVICE_ID_LPCIF },
|
||||
{ VENDOR_ID_INTEL, DEVICE_ID_COUGARPOINT_LPCIF },
|
||||
{ 0, 0 }
|
||||
};
|
||||
int i;
|
||||
|
||||
ImageHandle = image_handle;
|
||||
for (i = 0; devices[i].vendor != 0; i++) {
|
||||
rc = find_pci_device(devices[i].vendor, devices[i].device, &pciio);
|
||||
if (EFI_ERROR(rc))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (rc == EFI_NOT_FOUND) {
|
||||
Print(u"Device not found.\n");
|
||||
return rc;
|
||||
} else if (EFI_ERROR(rc)) {
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = uefi_call_wrapper(pciio->Pci.Read, 5, pciio, EfiPciIoWidthUint32,
|
||||
EFI_FIELD_OFFSET(lpcif_t, rcba), 1, &lpcif.rcba);
|
||||
if (EFI_ERROR(rc))
|
||||
return rc;
|
||||
if (!(lpcif.rcba & 1)) {
|
||||
Print(u"rcrb is not mapped, cannot route port 80h\n");
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
lpcif.rcba &= ~1UL;
|
||||
|
||||
Print(u"rcba: 0x%8x\n", lpcif.rcba, lpcif.rcba);
|
||||
set_bit((uint32_t *)(intptr_t)(lpcif.rcba + GCS_OFFSET_ADDR),
|
||||
GCS_RPR_SHIFT, GCS_RPR_PCI);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
37
apps/setdbg.c
Normal file
37
apps/setdbg.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_GUID GRUB_EFI_GRUB_VARIABLE_GUID = {0x91376aff,0xcba6,0x42be,{0x94,0x9d,0x06,0xfd,0xe8,0x11,0x28,0xe8}};
|
||||
EFI_GUID SHIM_GUID = {0x605dab50,0xe046,0x4300,{0xab,0xb6,0x3d,0xd8,0x10,0xdd,0x8b,0x23}};
|
||||
|
||||
char grubenv[] = "# GRUB Environment Block\n\
|
||||
debug=tcp,http,net\n\
|
||||
####################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################";
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
EFI_STATUS status;
|
||||
InitializeLib(image, systab);
|
||||
#if 0
|
||||
UINT8 data = 1;
|
||||
|
||||
status = RT->SetVariable(u"SHIM_DEBUG", &SHIM_GUID,
|
||||
EFI_VARIABLE_NON_VOLATILE |
|
||||
EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
sizeof(data), &data);
|
||||
if (EFI_ERROR(status))
|
||||
Print(u"SetVariable failed: %r\n", status);
|
||||
#endif
|
||||
|
||||
status = RT->SetVariable(u"GRUB_ENV", &SHIM_GUID,
|
||||
EFI_VARIABLE_NON_VOLATILE |
|
||||
EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
sizeof(grubenv)-1, grubenv);
|
||||
if (EFI_ERROR(status))
|
||||
Print(u"SetVariable(GRUB_ENV) failed: %r\n", status);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
32
apps/setjmp.c
Normal file
32
apps/setjmp.c
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
#include <efisetjmp.h>
|
||||
|
||||
EFI_STATUS
|
||||
efi_main(
|
||||
EFI_HANDLE image_handle,
|
||||
EFI_SYSTEM_TABLE *systab
|
||||
)
|
||||
{
|
||||
jmp_buf env;
|
||||
int rc;
|
||||
|
||||
InitializeLib(image_handle, systab);
|
||||
rc = setjmp(env);
|
||||
Print(u"setjmp() = %d\n", rc);
|
||||
|
||||
if (rc == 3) {
|
||||
Print(u"3 worked\n");
|
||||
longjmp(env, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (rc == 1) {
|
||||
Print(u"0 got to be one yay\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
longjmp(env, 3);
|
||||
return 0;
|
||||
}
|
@ -20,8 +20,8 @@ efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
|
||||
|
||||
InitializeLib(image_handle, systab);
|
||||
conout = systab->ConOut;
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, (CHAR16 *)L"Hello World!\n\r");
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, a2u("Hello World!\n\r"));
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, (CHAR16 *)u"Hello World!\r\n");
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, a2u("Hello World!\r\n"));
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -6,8 +6,9 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
SIMPLE_TEXT_OUTPUT_INTERFACE *conout;
|
||||
|
||||
InitializeLib(image, systab);
|
||||
conout = systab->ConOut;
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, L"Hello World!\n\r");
|
||||
uefi_call_wrapper(conout->OutputString, 2, conout, u"Hello World!\r\n");
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -16,19 +16,19 @@ efi_main(
|
||||
InitializeLib(image_handle, systab);
|
||||
PoolAllocationType = 2; /* klooj */
|
||||
|
||||
Print(L"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
|
||||
Print(u"Hello World! (0xd=0x%x, 13=%d)\n", 13, 13);
|
||||
|
||||
Print(L"before InitializeLib(): PoolAllocationType=%d\n",
|
||||
Print(u"before InitializeLib(): PoolAllocationType=%d\n",
|
||||
pat);
|
||||
|
||||
Print(L" after InitializeLib(): PoolAllocationType=%d\n",
|
||||
Print(u" after InitializeLib(): PoolAllocationType=%d\n",
|
||||
PoolAllocationType);
|
||||
|
||||
/*
|
||||
* Locate loaded_image_handle instance.
|
||||
*/
|
||||
|
||||
Print(L"BS->HandleProtocol() ");
|
||||
Print(u"BS->HandleProtocol() ");
|
||||
|
||||
efi_status = uefi_call_wrapper(
|
||||
BS->HandleProtocol,
|
||||
@ -38,31 +38,31 @@ efi_main(
|
||||
&void_li_p);
|
||||
li = void_li_p;
|
||||
|
||||
Print(L"%xh (%r)\n", efi_status, efi_status);
|
||||
Print(u"%xh (%r)\n", efi_status, efi_status);
|
||||
|
||||
if (efi_status != EFI_SUCCESS) {
|
||||
return efi_status;
|
||||
}
|
||||
|
||||
Print(L" li: %xh\n", li);
|
||||
Print(u" li: %xh\n", li);
|
||||
|
||||
if (!li) {
|
||||
return EFI_UNSUPPORTED;
|
||||
}
|
||||
|
||||
Print(L" li->Revision: %xh\n", li->Revision);
|
||||
Print(L" li->ParentHandle: %xh\n", li->ParentHandle);
|
||||
Print(L" li->SystemTable: %xh\n", li->SystemTable);
|
||||
Print(L" li->DeviceHandle: %xh\n", li->DeviceHandle);
|
||||
Print(L" li->FilePath: %xh\n", li->FilePath);
|
||||
Print(L" li->Reserved: %xh\n", li->Reserved);
|
||||
Print(L" li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
|
||||
Print(L" li->LoadOptions: %xh\n", li->LoadOptions);
|
||||
Print(L" li->ImageBase: %xh\n", li->ImageBase);
|
||||
Print(L" li->ImageSize: %xh\n", li->ImageSize);
|
||||
Print(L" li->ImageCodeType: %xh\n", li->ImageCodeType);
|
||||
Print(L" li->ImageDataType: %xh\n", li->ImageDataType);
|
||||
Print(L" li->Unload: %xh\n", li->Unload);
|
||||
Print(u" li->Revision: %xh\n", li->Revision);
|
||||
Print(u" li->ParentHandle: %xh\n", li->ParentHandle);
|
||||
Print(u" li->SystemTable: %xh\n", li->SystemTable);
|
||||
Print(u" li->DeviceHandle: %xh\n", li->DeviceHandle);
|
||||
Print(u" li->FilePath: %xh\n", li->FilePath);
|
||||
Print(u" li->Reserved: %xh\n", li->Reserved);
|
||||
Print(u" li->LoadOptionsSize: %xh\n", li->LoadOptionsSize);
|
||||
Print(u" li->LoadOptions: %xh\n", li->LoadOptions);
|
||||
Print(u" li->ImageBase: %xh\n", li->ImageBase);
|
||||
Print(u" li->ImageSize: %xh\n", li->ImageSize);
|
||||
Print(u" li->ImageCodeType: %xh\n", li->ImageCodeType);
|
||||
Print(u" li->ImageDataType: %xh\n", li->ImageDataType);
|
||||
Print(u" li->Unload: %xh\n", li->Unload);
|
||||
|
||||
#if 0
|
||||
typedef struct {
|
@ -6,8 +6,9 @@ efi_main (EFI_HANDLE *image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
UINTN index;
|
||||
|
||||
uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut, L"Hello application started\r\n");
|
||||
uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut, L"\r\n\r\n\r\nHit any key to exit\r\n");
|
||||
InitializeLib(image, systab);
|
||||
uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut, u"Hello application started\r\n");
|
||||
uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut, u"\r\n\r\n\r\nHit any key to exit\r\n");
|
||||
uefi_call_wrapper(systab->BootServices->WaitForEvent, 3, 1, &systab->ConIn->WaitForKey, &index);
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -5,9 +5,9 @@ EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
InitializeLib(image, systab);
|
||||
Print(L"HelloLib application started\n");
|
||||
Print(L"\n\n\nHit any key to exit this image\n");
|
||||
Print(u"HelloLib application started\n");
|
||||
Print(u"\n\n\nHit any key to exit this image\n");
|
||||
WaitForSingleEvent(ST->ConIn->WaitForKey, 0);
|
||||
uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, L"\n\n");
|
||||
uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, u"\n\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -25,19 +25,19 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
&LoadedImageProtocol,
|
||||
(void **) &loaded_image);
|
||||
if (EFI_ERROR(status)) {
|
||||
Print(L"handleprotocol: %r\n", status);
|
||||
Print(u"handleprotocol: %r\n", status);
|
||||
}
|
||||
|
||||
#if 0
|
||||
BS->HandleProtocol(loaded_image->DeviceHandle, &DevicePathProtocol, (void **) &dev_path);
|
||||
|
||||
Print(L"Image device : %s\n", DevicePathToStr(dev_path));
|
||||
Print(L"Image file : %s\n", DevicePathToStr(loaded_image->FilePath));
|
||||
Print(u"Image device : %s\n", DevicePathToStr(dev_path));
|
||||
Print(u"Image file : %s\n", DevicePathToStr(loaded_image->FilePath));
|
||||
#endif
|
||||
Print(L"Image base : %lx\n", loaded_image->ImageBase);
|
||||
Print(L"Image size : %lx\n", loaded_image->ImageSize);
|
||||
Print(L"Load options size : %lx\n", loaded_image->LoadOptionsSize);
|
||||
Print(L"Load options : %s\n", loaded_image->LoadOptions);
|
||||
Print(u"Image base : %lx\n", loaded_image->ImageBase);
|
||||
Print(u"Image size : %lx\n", loaded_image->ImageSize);
|
||||
Print(u"Load options size : %lx\n", loaded_image->LoadOptionsSize);
|
||||
Print(u"Load options : %s\n", loaded_image->LoadOptions);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -9,17 +9,17 @@ efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
|
||||
InitializeLib(image, systab);
|
||||
|
||||
Print(L"HelloLib application started\n");
|
||||
Print(u"HelloLib application started\n");
|
||||
|
||||
Print(L"\n\n\nHit any key to exit this image\n");
|
||||
Print(u"\n\n\nHit any key to exit this image\n");
|
||||
WaitForSingleEvent(ST->ConIn->WaitForKey, 0);
|
||||
|
||||
uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, L"\n\n");
|
||||
uefi_call_wrapper(ST->ConOut->OutputString, 2, ST->ConOut, u"\n\n");
|
||||
|
||||
efi_status = uefi_call_wrapper(ST->ConIn->ReadKeyStroke, 2, ST->ConIn, &efi_input_key);
|
||||
|
||||
Print(L"ScanCode: %xh UnicodeChar: %xh\n",
|
||||
efi_input_key.ScanCode, efi_input_key.UnicodeChar);
|
||||
Print(u"ScanCode: %xh UnicodeChar: %xh CallRtStatus: %x\n",
|
||||
efi_input_key.ScanCode, efi_input_key.UnicodeChar, efi_status);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
19
apps/t8.c
Normal file
19
apps/t8.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
|
||||
{
|
||||
INTN Argc, i;
|
||||
CHAR16 **Argv;
|
||||
|
||||
InitializeLib(ImageHandle, SystemTable);
|
||||
Argc = GetShellArgcArgv(ImageHandle, &Argv);
|
||||
|
||||
Print(u"Hello World, started with Argc=%d\n", Argc);
|
||||
for (i = 0 ; i < Argc ; ++i)
|
||||
Print(u" Argv[%d] = '%s'\n", i, Argv[i]);
|
||||
|
||||
Print(u"Bye.\n");
|
||||
return EFI_SUCCESS;
|
||||
}
|
@ -5,14 +5,7 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
#ifdef __x86_64__
|
||||
#include <x86_64/pe.h>
|
||||
#include <x86_64/efibind.h>
|
||||
#endif
|
||||
|
||||
#if 0
|
||||
asm volatile("out %0,%1" : : "a" ((uint8_t)a), "dN" (0x80));
|
||||
|
||||
extern void dump_stack(void);
|
||||
asm( ".globl dump_stack\n"
|
||||
"dump_stack:\n"
|
||||
@ -25,15 +18,15 @@ void dump_stack_helper(uint64_t rsp_val)
|
||||
uint64_t *rsp = (uint64_t *)rsp_val;
|
||||
int x;
|
||||
|
||||
Print(L"%%rsp: 0x%08x%08x stack:\r\n",
|
||||
Print(u"%%rsp: 0x%08x%08x stack:\r\n",
|
||||
(rsp_val & 0xffffffff00000000) >>32,
|
||||
rsp_val & 0xffffffff);
|
||||
for (x = 0; x < 8; x++) {
|
||||
Print(L"%08x: ", ((uint64_t)rsp) & 0xffffffff);
|
||||
Print(L"%016x ", *rsp++);
|
||||
Print(L"%016x ", *rsp++);
|
||||
Print(L"%016x ", *rsp++);
|
||||
Print(L"%016x\r\n", *rsp++);
|
||||
Print(u"%08x: ", ((uint64_t)rsp) & 0xffffffff);
|
||||
Print(u"%016x ", *rsp++);
|
||||
Print(u"%016x ", *rsp++);
|
||||
Print(u"%016x ", *rsp++);
|
||||
Print(u"%016x\r\n", *rsp++);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -331,110 +324,106 @@ efi_main (EFI_HANDLE *image, EFI_SYSTEM_TABLE *systab)
|
||||
InitializeLib(image, systab);
|
||||
PoolAllocationType = 2; /* klooj */
|
||||
|
||||
#ifndef __x86_64__
|
||||
uefi_call_wrapper(systab->ConOut->OutputString, 2, systab->ConOut,
|
||||
L"This test is only valid on x86_64\n");
|
||||
return EFI_UNSUPPORTED;
|
||||
#ifdef __x86_64__
|
||||
__asm__ volatile("out %0,%1" : : "a" ((uint8_t)0x14), "dN" (0x80));
|
||||
#endif
|
||||
|
||||
asm volatile("out %0,%1" : : "a" ((uint8_t)0x14), "dN" (0x80));
|
||||
|
||||
Print(L"Hello\r\n");
|
||||
Print(u"Hello\n");
|
||||
rc = test_failure();
|
||||
if (EFI_ERROR(rc)) {
|
||||
Print(L"Returning Failure works\n");
|
||||
Print(u"Returning Failure works\n");
|
||||
} else {
|
||||
Print(L"Returning failure doesn't work.\r\n");
|
||||
Print(L"%%rax was 0x%016x, should have been 0x%016x\n",
|
||||
Print(u"Returning failure doesn't work.\n");
|
||||
Print(u"%%rax was 0x%016x, should have been 0x%016x\n",
|
||||
rc, EFI_UNSUPPORTED);
|
||||
return EFI_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
rc = test_call0();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"0 args works just fine here.\r\n");
|
||||
Print(u"0 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"0 args failed: 0x%016x\n", rc);
|
||||
Print(u"0 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call1();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"1 arg works just fine here.\r\n");
|
||||
Print(u"1 arg works just fine here.\n");
|
||||
} else {
|
||||
Print(L"1 arg failed: 0x%016x\n", rc);
|
||||
Print(u"1 arg failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call2();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"2 args works just fine here.\r\n");
|
||||
Print(u"2 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"2 args failed: 0x%016x\n", rc);
|
||||
Print(u"2 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call3();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"3 args works just fine here.\r\n");
|
||||
Print(u"3 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"3 args failed: 0x%016x\n", rc);
|
||||
Print(u"3 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call4();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"4 args works just fine here.\r\n");
|
||||
Print(u"4 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"4 args failed: 0x%016x\n", rc);
|
||||
Print(u"4 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call5();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"5 args works just fine here.\r\n");
|
||||
Print(u"5 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"5 args failed: 0x%016x\n", rc);
|
||||
Print(u"5 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call6();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"6 args works just fine here.\r\n");
|
||||
Print(u"6 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"6 args failed: 0x%016x\n", rc);
|
||||
Print(u"6 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call7();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"7 args works just fine here.\r\n");
|
||||
Print(u"7 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"7 args failed: 0x%016x\n", rc);
|
||||
Print(u"7 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call8();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"8 args works just fine here.\r\n");
|
||||
Print(u"8 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"8 args failed: 0x%016x\n", rc);
|
||||
Print(u"8 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call9();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"9 args works just fine here.\r\n");
|
||||
Print(u"9 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"9 args failed: 0x%016x\n", rc);
|
||||
Print(u"9 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
rc = test_call10();
|
||||
if (!EFI_ERROR(rc)) {
|
||||
Print(L"10 args works just fine here.\r\n");
|
||||
Print(u"10 args works just fine here.\n");
|
||||
} else {
|
||||
Print(L"10 args failed: 0x%016x\n", rc);
|
||||
Print(u"10 args failed: 0x%016x\n", rc);
|
||||
return rc;
|
||||
}
|
||||
|
37
apps/unsetdbg.c
Normal file
37
apps/unsetdbg.c
Normal file
@ -0,0 +1,37 @@
|
||||
#include <efi.h>
|
||||
#include <efilib.h>
|
||||
|
||||
EFI_GUID GRUB_EFI_GRUB_VARIABLE_GUID = {0x91376aff,0xcba6,0x42be,{0x94,0x9d,0x06,0xfd,0xe8,0x11,0x28,0xe8}};
|
||||
EFI_GUID SHIM_GUID = {0x605dab50,0xe046,0x4300,{0xab,0xb6,0x3d,0xd8,0x10,0xdd,0x8b,0x23}};
|
||||
|
||||
char grubenv[] = "# GRUB Environment Block\n\
|
||||
debug=all\n\
|
||||
#############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################";
|
||||
|
||||
EFI_STATUS
|
||||
efi_main (EFI_HANDLE image, EFI_SYSTEM_TABLE *systab)
|
||||
{
|
||||
EFI_STATUS status;
|
||||
UINT8 data = 1;
|
||||
InitializeLib(image, systab);
|
||||
|
||||
status = RT->SetVariable(u"SHIM_DEBUG", &SHIM_GUID,
|
||||
EFI_VARIABLE_NON_VOLATILE |
|
||||
EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
0, &data);
|
||||
if (EFI_ERROR(status))
|
||||
Print(u"SetVariable failed: %r\n", status);
|
||||
|
||||
#if 0
|
||||
status = RT->SetVariable(u"GRUB_ENV", &SHIM_GUID,
|
||||
EFI_VARIABLE_NON_VOLATILE |
|
||||
EFI_VARIABLE_BOOTSERVICE_ACCESS |
|
||||
EFI_VARIABLE_RUNTIME_ACCESS,
|
||||
sizeof(grubenv)-1, grubenv);
|
||||
if (EFI_ERROR(status))
|
||||
Print(u"SetVariable(GRUB_ENV) failed: %r\n", status);
|
||||
#endif
|
||||
|
||||
return EFI_SUCCESS;
|
||||
}
|
26
docs/README.ABI.md
Normal file
26
docs/README.ABI.md
Normal file
@ -0,0 +1,26 @@
|
||||
1) When using gnu-efi 4.0 with an application which was written
|
||||
for gnu-efi 3.0, it may be required to set the `GNU_EFI_3_0_COMPAT` compile flag
|
||||
this changes the default versions of some changed functions back to their prior
|
||||
versions
|
||||
|
||||
This currently includes the following functions:
|
||||
- ReallocatePool
|
||||
|
||||
Inputs were re-ordered
|
||||
|
||||
- CopyMem
|
||||
|
||||
Source is no longer marked as constant
|
||||
|
||||
CopyMemC is introduced as a helper function when using a constant source input
|
||||
|
||||
- CompareGuid
|
||||
|
||||
Function now returns BOOLEAN instead of INTN
|
||||
Return codes are now reversed
|
||||
|
||||
**Will break at runtime - likely causing opposite output to expected**
|
||||
|
||||
2) Applications which haven't been updated in a while may also be missing the
|
||||
required `.rodata` section which contains needed read-only data which will prevent
|
||||
any binary missing this section from running correctly
|
19
docs/README.elilo.md
Normal file
19
docs/README.elilo.md
Normal file
@ -0,0 +1,19 @@
|
||||
|
||||
# IMPORTANT information related to the gnu-efi package
|
||||
----------------------------------------------------
|
||||
June 2001
|
||||
|
||||
As of version 3.0, the gnu-efi package is now split in two different packages:
|
||||
|
||||
- gnu-efi-X.y: contains the EFI library, include files and crt0.
|
||||
|
||||
- elilo-X.y : contains the ELILO bootloader.
|
||||
|
||||
Note that X.y don't need to match for both packages. However elilo-3.x
|
||||
requires at least gnu-efi-3.0. EFI support for x86_64 is provided in
|
||||
gnu-efi-3.0d.
|
||||
|
||||
Both packages can be downloaded from:
|
||||
|
||||
- [gnu-efi](https://github.com/ncroxon/gnu-efi)
|
||||
- [elilo](https://sourceforge.net/projects/elilo/)
|
32
docs/README.git.md
Normal file
32
docs/README.git.md
Normal file
@ -0,0 +1,32 @@
|
||||
# README.git
|
||||
|
||||
Generating releases on GitHub is a very simple process;
|
||||
|
||||
## Set version in repo
|
||||
1) Edit the file "Makefile". Changing the "VERSION" line to the new version.
|
||||
2) Do a "git commit" just for the version number change.
|
||||
|
||||
## Create new release
|
||||
1) Go to the [GitHub release page](https://github.com/ncroxon/gnu-efi/releases/new)
|
||||
2) Enter the version number in the tag field, selecting "create tag on publish"
|
||||
|
||||
**Ignore GitHub's suggestion of prefixing the version with a "v"**
|
||||
3) Set previous tag manually
|
||||
|
||||
- Last stable for stable releases
|
||||
- Last alpha/beta for alpha/beta releases
|
||||
|
||||
**Ensures GitHub sets the Full Changelog to be between the last release in the cycle**
|
||||
**and not the start of the repository**
|
||||
4) Add a release title - use the version number
|
||||
|
||||
**Otherwise GitHub will add the last commit name as the title**
|
||||
5) ***OPTIONAL***
|
||||
Add a release description *and/or* a list of pull requests and contributors via "Generate release notes"
|
||||
6) For alpha/beta versions, set it to be a pre-release
|
||||
7) Release the new version
|
||||
8) GitHub will automatically generate a GZ compressed TAR file and a ZIP file of the repo
|
||||
|
||||
|
||||
|
||||
|
19
docs/README.packaging.md
Normal file
19
docs/README.packaging.md
Normal file
@ -0,0 +1,19 @@
|
||||
# Packaging gnu-efi
|
||||
|
||||
## Set variables per distro configuration
|
||||
|
||||
make should be called with the following variables:
|
||||
|
||||
- PREFIX (defaults to `/usr/local`)(`%{_prefix}` on RPM distros)
|
||||
- EXEC_PREFIX (*optional*) (defaults to `$PREFIX`) (`%{_exec_prefix}` on RPM distros)
|
||||
- LIBDIR (defaults to `$EXEC_PREFIX/lib`) (`%{_libdir}` on RPM distros)
|
||||
- INCLUDEDIR (*optional*) (defaults to `$PREFIX/include`) (`%{_includedir}` on RPM distros)
|
||||
- LINUX_HEADERS (*optional*) (**build only**) - location of Linux kernel header files (defaults to `/usr/src/sys/build`)
|
||||
- DESTDIR (**install only**) - installation output directory (`%{buildroot}` on RPM distros - included in `%make_install`)
|
||||
|
||||
Currently, these variables unless stated will need to be set for both build and installation stages.
|
||||
|
||||
Those without optional markers I heavily suggest you to set them otherwise files may be located in the wrong directory
|
||||
for the architecture which you are building for
|
||||
|
||||
*The related RPM variables are included here for cross referencing purposes*
|
@ -1,279 +0,0 @@
|
||||
2012-09-21 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Change from Peter Jones <pjones@redhat.com>
|
||||
- EFI Block I/O protocol versions 2 and 3 provide more information
|
||||
regarding physical disk layout, including alingment offset at the
|
||||
beginning of the disk ("LowestAlignedLba"), logical block size
|
||||
("LogicalBlocksPerPhysicalBlock"), and optimal block transfer size
|
||||
("OptimalTransferLengthGranularity").
|
||||
* Release 3.0r
|
||||
|
||||
2012-04-30 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Change from Matt Fleming <matt.fleming@intel.com>
|
||||
- The .reloc section is now 4096-byte boundary for x86_64.
|
||||
Without this patch the .reloc section will not adhere to
|
||||
the alignment value in the FileAlignment field (512 bytes by
|
||||
default) of the PE/COFF header. This results in a signed
|
||||
executable failing to boot in a secure boot environment.
|
||||
* Release 3.0q
|
||||
|
||||
2011-12-12 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Changes from Fenghua Yu <fenghua.yu@intel.com>
|
||||
- This fixes redefined types compilation failure for tcc.c on x86_64 machines.
|
||||
* Release 3.0p
|
||||
|
||||
2011-11-15 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Changes from Darren Hart <dvhart@linux.intel.com>
|
||||
- Conditionally assign toolchain binaries to allow overriding them.
|
||||
- Force a dependency on lib for gnuefi.
|
||||
* Release 3.0n
|
||||
|
||||
2011-08-23 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Changes from Peter Jones <pjones@redhat.com>
|
||||
- Add guarantee 16-byte stack alignment on x86_64.
|
||||
- Add routine to make callbacks work.
|
||||
- Add apps/tcc.efi to test calling convention.
|
||||
* Release 3.0m
|
||||
|
||||
2011-07-22 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Changed Makefiles from GPL to BSD.
|
||||
* Changes from Peter Jones <pjones@redhat.com>
|
||||
- Add ifdefs for ia64 to mirror ia32 and x86-64 so that
|
||||
one can build with GCC.
|
||||
- Add headers for PciIo.
|
||||
- Add the UEFI 2.x bits for EFI_BOOT_SERVICES
|
||||
- Add an ignore for .note.GNU-stack section in X86-64 linker maps.
|
||||
* Release 3.0l
|
||||
|
||||
2011-04-07 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Change license from GPL to BSD.
|
||||
* Release 3.0j
|
||||
|
||||
2009-09-12 Julien BLACHE <jb@jblache.org>
|
||||
* Add support for FreeBSD.
|
||||
* Release 3.0i
|
||||
|
||||
2009-09-11 Julien BLACHE <jb@jblache.org>
|
||||
* Fix elf_ia32_efi.lds linker script to be compatible with the new
|
||||
linker behaviour. Patch from the RedHat bugzilla 492183.
|
||||
|
||||
2009-06-18 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Release 3.0h
|
||||
|
||||
2008-11-06 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Fix to not having any relocations at all.
|
||||
|
||||
2008-09-18 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Use LIBDIR in makefiles
|
||||
* Add setjmp/longjmp
|
||||
* Fixes incorrect section attribute in crt0-efi-ia32.S
|
||||
* Adds value EfiResetShutdown to enum EFI_RESET_TYPE
|
||||
* Fixes a RAW warning in reloc_ia64.S
|
||||
* Adds the USB HCI device path structure in the headers
|
||||
patches were supplied by Peter Jones @ RedHat
|
||||
|
||||
2008-02-22 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* Added '-mno-red-zone' to x68_64 compiles.
|
||||
Patch provided by Mats Andersson.
|
||||
|
||||
2008-01-23 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* release 3.0e to support x86_64
|
||||
EFI calling convention, the stack should be aligned in 16 bytes
|
||||
to make it possible to use SSE2 in EFI boot services.
|
||||
This patch fixes this issue. Patch provided by Huang Ying from Intel.
|
||||
|
||||
2007-05-11 Nigel Croxon <nigel.croxon@hp.com>
|
||||
* release 3.0d to support x86_64 from Chandramouli Narayanan
|
||||
from Intel and based on 3.0c-1
|
||||
|
||||
2006-03-21 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* merged patch to support gcc-4.1 submitted by
|
||||
Raymund Will from Novell/SuSE
|
||||
|
||||
2006-03-20 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* updated ia-64 and ia-32 linker scripts to
|
||||
match latest gcc. The new gcc may put functions in
|
||||
.text* sections. patch submitted by H.J. Lu from Intel.
|
||||
|
||||
2004-11-19 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* added patch to ignore .eh_frame section for IA-32. Patch
|
||||
submitted by Jim Wilson
|
||||
|
||||
2004-09-23 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* added patch to discard unwind sections, newer toolchains
|
||||
complained about them. Patch submitted by Jesse Barnes from SGI.
|
||||
|
||||
2003-09-29 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* updated elf_ia64_efi.lds to reflect new data sections
|
||||
created by gcc-3.3. Patch provided by Andreas Schwab from Suse.
|
||||
|
||||
2003-06-20 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* updated elf_ia64_efi.lds and elf_ia32_efi.lds to include
|
||||
new types data sections produced by recent version of gcc-3.x
|
||||
|
||||
2002-02-22 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* release 3.0a
|
||||
* modified both IA-64 and IA-32 loader scripts to add support for the
|
||||
new .rodata sections names (such as rodata.str2.8). Required
|
||||
for new versions of gcc3.x.
|
||||
|
||||
2001-06-20 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* release 3.0
|
||||
* split gnu-efi package in two different packages: the libary+include+crt and the bootloader.
|
||||
* removed W2U() hack and related files to get from wide-char to unicode.
|
||||
* Use -fshort-wchar option for unicode.
|
||||
* restructured Makefiles now install under INSTALLROOT.
|
||||
|
||||
2001-04-06 Stephane Eranian <eranian@hpl.hp.com>
|
||||
|
||||
* incorporated patches from David and Michael Johnston at Intel
|
||||
to get the package to compile for IA-32 linux target.
|
||||
|
||||
* Fixed ELILO to compile for Ia-32 (does not execute yet, though):
|
||||
Makefile and start_kernel() function.
|
||||
|
||||
2001-04-06 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* Fixed config.c to
|
||||
get the timeout directive to do something. implemented the global
|
||||
root= directive.
|
||||
|
||||
* Fix the efi_main() to deal with the -C option properly
|
||||
|
||||
2001-04-05 Stephane Eranian <eranian@hpl.hp.com>
|
||||
|
||||
* update efi library to latest EFI toolkit 1.02 as distributed
|
||||
by Intel. Fixed header + library files to compile with GCC
|
||||
|
||||
* merged ELI and LILO (as of gnu-efi-1.1) together, mostly
|
||||
taking the config file feature of ELI.
|
||||
|
||||
* renamed LILO to ELILO to make the distinction
|
||||
|
||||
* restructured code to make it easier to understand and maintain
|
||||
|
||||
* fixed FPSWA driver checking and loading: we try all possible
|
||||
files and let the driver itself figure out if it is the most
|
||||
recent.
|
||||
* added support for compression (gzip) but keep support for plain
|
||||
ELF image. ELILO autodetects the format
|
||||
|
||||
* change the way the kernel is invoked. Now we call it in
|
||||
physical memory mode. This breaks the dependency between the
|
||||
kernel code and the loader. No more lilo_start.c madness.
|
||||
|
||||
* changed the way the boot_params are passed. We don't use the
|
||||
ZERO_PAGE_ADDR trick anymore. Instead we use EFI runtime memory.
|
||||
The address of the structure is passed to the kernel in r28
|
||||
by our convention.
|
||||
|
||||
* released as gnu-efi-2.0
|
||||
|
||||
2001-04-03 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/reloc_ia32.c (_relocate): Change return type from "void"
|
||||
to "int". Return error status if relocation fails for some
|
||||
reason.
|
||||
|
||||
* gnuefi/elf_ia32_efi.lds: Drop unneeded ".rel.reloc" section.
|
||||
|
||||
* gnuefi/crt0-efi-ia32.S (_start): Exit if _relocate() returns with
|
||||
non-zero exit status.
|
||||
|
||||
* inc/ia32/efibind.h [__GNUC__]: Force 8-byte alignment for 64-bit
|
||||
types as that is what EFI appears to be expecting, despite the
|
||||
"#pragma pack()" at the beginning of the file!
|
||||
|
||||
2001-03-29 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/reloc_ia32.c: Add a couple of defines to work around
|
||||
libc/efilib collision on uint64_t et al.
|
||||
(_relocate): Use ELF32_R_TYPE() instead of ELFW(R_TYPE)().
|
||||
|
||||
* gnuefi/crt0-efi-ia32.S (dummy): Add a dummy relocation entry.
|
||||
|
||||
2001-03-29 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/reloc_ia32.c: Add a couple of defines to work around
|
||||
libc/efilib collision on uint64_t et al.
|
||||
(_relocate): Use ELF32_R_TYPE() instead of ELFW(R_TYPE)().
|
||||
|
||||
* gnuefi/crt0-efi-ia32.S (dummy): Add a dummy relocation entry.
|
||||
|
||||
2000-10-26 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/elf_ia64_efi.lds: Mention .rela.sdata.
|
||||
|
||||
* Make.defaults (CFLAGS): Remove -nostdinc flags so we can pick
|
||||
up the C compiler's stdarg.h.
|
||||
|
||||
* inc/stdarg.h: Remove this file. It's not correct for gcc (nor
|
||||
most other optimizing compilers).
|
||||
|
||||
2000-10-10 Stephane Eranian <eranian@hpl.hp.com>
|
||||
|
||||
* cleaned up the error message and printing of those.
|
||||
* added support to load the FPSWA from a file in case support is not
|
||||
present in the firmware already
|
||||
* fixed split_args() to do the right thing when you have leading spaces
|
||||
before kernel name
|
||||
* changed the argify() function to rely on \0 instead of LoadOptionSize
|
||||
as the field seems to be broken with current firmware
|
||||
* bumped version to 1.0
|
||||
|
||||
2000-10-04 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/reloc_ia64.S: Reserve space for up to 750 function descriptors.
|
||||
|
||||
* gnuefi/elf_ia64_efi.lds: Add .sdata section for small data and
|
||||
put __gp in the "middle" of it.
|
||||
|
||||
* gnuefi/crt0-efi-ia64.S (_start): Use movl/add to load
|
||||
gp-relative addresses that could be out of the range of the addl
|
||||
offset.
|
||||
* gnuefi/reloc_ia64.S (_relocate): Ditto.
|
||||
|
||||
* apps/Makefile: Remove standard rules and include Make.rules instead.
|
||||
* lilo/Makefile: Ditto.
|
||||
|
||||
* Make.rules: New file.
|
||||
|
||||
2000-08-04 Stephane Eranian <eranian@hpl.hp.com>
|
||||
* released version 0.9
|
||||
* incorporated ACPI changes for Asuza by NEC < kouchi@hpc.bs1.fc.nec.co.jp>
|
||||
* added support for initrd (-i option) original ELI code from Bill Nottingham <notting@redhat.com>)
|
||||
* lots of cleanups
|
||||
* got rid of #ifdef LILO_DEBUG and uses macro instead
|
||||
* fix a few extra memory leaks in create_boot_params()
|
||||
* added exit capability just before starting the kernel
|
||||
|
||||
2000-06-22 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* gnuefi/elf_ia64_efi.lds: Add .srodata, .ctors, .IA64.unwind,
|
||||
.IA64.unwind_info to .data section and .rela.ctors to .rela
|
||||
section.
|
||||
|
||||
2000-04-03 David Mosberger <davidm@hpl.hp.com>
|
||||
|
||||
* lilo/lilo.c (LILO_VERSION): Up version number to 0.9.
|
||||
|
||||
* gnuefi/elf_ia64_efi.lds: Include .IA_64.unwind and
|
||||
.IA_64.unwind_info in .data segment to avoid EFI load error
|
||||
"ImageAddress: pointer outside of image" error due to the .dynsym
|
||||
relocations against these sections.
|
||||
|
||||
* ChangeLog: Moved from lilo/ChangeLogs.
|
||||
|
||||
* gnuefi/reloc_ia64.S: fixed typo: .space directive had constant
|
||||
100 hardcoded instead of using MAX_FUNCTION_DESCRIPTORS
|
||||
macro. Duh.
|
||||
|
||||
Fri Mar 17 15:19:18 PST 2000 Stephane Eranian <eranian@hpl.hp.com>
|
||||
|
||||
* Released 0.8
|
||||
* replace the getopt.c with new version free with better license
|
||||
* created a documentation file
|
||||
* fix a couple of memory leaks
|
||||
* code cleanups
|
||||
* created a separate directory for lilo in the gnu-efi package.
|
||||
* added support for the BOOT_IMAGE argument to kernel
|
||||
* default is to build natively now
|
@ -1,80 +0,0 @@
|
||||
#
|
||||
# Copyright (c) 1999-2007 Hewlett-Packard Development Company, L.P.
|
||||
# Contributed by David Mosberger <davidm@hpl.hp.com>
|
||||
# Contributed by Stephane Eranian <eranian@hpl.hp.com>
|
||||
#
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# * Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials
|
||||
# provided with the distribution.
|
||||
# * Neither the name of Hewlett-Packard Co. nor the names of its
|
||||
# contributors may be used to endorse or promote products derived
|
||||
# from this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
||||
# BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
# OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||
# TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
# THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
# SUCH DAMAGE.
|
||||
# #
|
||||
|
||||
#
|
||||
# Where to install the package. GNU-EFI will create and access
|
||||
# lib and include under the root
|
||||
#
|
||||
INSTALLROOT=/usr/local
|
||||
LIBDIR=lib
|
||||
|
||||
TOPDIR := $(shell if [ "$$PWD" != "" ]; then echo $$PWD; else pwd; fi)
|
||||
|
||||
HOSTARCH = $(shell uname -m | sed s,i[3456789]86,ia32,)
|
||||
ARCH := $(shell uname -m | sed s,i[3456789]86,ia32,)
|
||||
OS = $(shell uname -s)
|
||||
INCDIR = -I$(SRCDIR) -I$(TOPDIR)/inc -I$(TOPDIR)/inc/$(ARCH) -I$(TOPDIR)/inc/protocol
|
||||
CPPFLAGS = -DCONFIG_$(ARCH)
|
||||
CFLAGS = $(ARCH3264) -O2 -fpic -Wall -fshort-wchar -fno-strict-aliasing -fno-merge-constants
|
||||
ASFLAGS = $(ARCH3264)
|
||||
LDFLAGS = -nostdlib
|
||||
INSTALL = install
|
||||
prefix = /usr/bin/
|
||||
|
||||
CC := $(prefix)gcc
|
||||
AS := $(prefix)as
|
||||
LD := $(prefix)ld
|
||||
AR := $(prefix)ar
|
||||
RANLIB := $(prefix)ranlib
|
||||
OBJCOPY := $(prefix)objcopy
|
||||
|
||||
ifeq ($(ARCH),ia64)
|
||||
CFLAGS += -mfixed-range=f32-f127
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH), ia32)
|
||||
ifeq ($(HOSTARCH), x86_64)
|
||||
ARCH3264 = -m32
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH), x86_64)
|
||||
CFLAGS += -mno-red-zone
|
||||
LIBDIR = lib
|
||||
ifeq ($(HOSTARCH), ia32)
|
||||
ARCH3264 = -m64
|
||||
endif
|
||||
endif
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user