Skip to content

Commit

Permalink
Support intel-sdk-2.20 and dcap-1.17
Browse files Browse the repository at this point in the history
  • Loading branch information
volcano0dr committed Jul 26, 2023
1 parent f1776a7 commit 3c903bd
Show file tree
Hide file tree
Showing 17 changed files with 330 additions and 92 deletions.
2 changes: 1 addition & 1 deletion dockerfile/02_binutils.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
if [ $BINUTILS_DIST != "SELF_BUILT" ]
then
cd /root && \
wget https://download.01.org/intel-sgx/sgx-linux/2.17/as.ld.objdump.r4.tar.gz && \
wget https://download.01.org/intel-sgx/sgx-linux/2.20/as.ld.objdump.r4.tar.gz && \
tar xzf as.ld.objdump.r4.tar.gz && \
cp -r external/toolset/$BINUTILS_DIST/* /usr/bin/ && \
rm -rf ./external ./as.ld.objdump.r4.tar.gz
Expand Down
4 changes: 2 additions & 2 deletions dockerfile/03_sdk.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ else
cd /root && \
git clone --recursive https://github.com/intel/linux-sgx && \
cd linux-sgx && \
git checkout sgx_2.17.1 && \
git checkout sgx_2.20 && \
./download_prebuilt.sh && \
make -j "$(nproc)" sdk_install_pkg && \
echo -e 'no\n/opt' | ./linux/installer/bin/sgx_linux_x64_sdk_2.17.101.1.bin && \
echo -e 'no\n/opt' | ./linux/installer/bin/sgx_linux_x64_sdk_2.20.100.4.bin && \
echo 'source /opt/sgxsdk/environment' >> /root/.bashrc && \
cd /root && \
rm -rf /root/linux-sgx
Expand Down
6 changes: 3 additions & 3 deletions dockerfile/Dockerfile.1804.nightly
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ RUN bash /root/03_sdk.sh
# Sixth, PSW

ENV CODENAME bionic
ENV VERSION 2.17.100.3-bionic1
ENV DCAP_VERSION 1.14.100.3-bionic1
ENV VERSION 2.20.100.4-bionic1
ENV DCAP_VERSION 1.17.100.4-bionic1

COPY 04_psw.sh /root
RUN bash /root/04_psw.sh

# Seventh, Rust

ENV rust_toolchain nightly-2022-02-23
ENV rust_toolchain nightly-2022-10-22
COPY 05_rust.sh /root
RUN bash /root/05_rust.sh

Expand Down
12 changes: 4 additions & 8 deletions dockerfile/Dockerfile.2004.nightly
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,6 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt update && apt install -y unzip lsb-release debhelper cmake reprepro autoconf automake bison build-essential curl dpkg-dev expect flex gcc-8 gdb git git-core gnupg kmod libboost-system-dev libboost-thread-dev libcurl4-openssl-dev libiptcdata0-dev libjsoncpp-dev liblog4cpp5-dev libprotobuf-dev libssl-dev libtool libxml2-dev ocaml ocamlbuild pkg-config protobuf-compiler python texinfo uuid-dev vim wget software-properties-common && \
rm -rf /var/lib/apt/lists/*

#20.04 does have gcc-9
#ADD 01_gcc_8.sh /root
#RUN bash /root/01_gcc_8.sh

ENV BINUTILS_DIST="ubuntu20.04"
#ENV BINUTILS_DIST="SELF_BUILT"
ENV LD_LIBRARY_PATH=/usr/lib:/usr/local/lib
Expand All @@ -19,22 +15,22 @@ RUN bash /root/02_binutils.sh

#ENV SDK_DIST="SELF_BUILT"
ENV SDK_DIST="INTEL_BUILT"
ENV SDK_URL="https://download.01.org/intel-sgx/sgx-linux/2.17.1/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.17.101.1.bin"
ENV SDK_URL="https://download.01.org/intel-sgx/sgx-linux/2.20/distro/ubuntu20.04-server/sgx_linux_x64_sdk_2.20.100.4.bin"
ADD 03_sdk.sh /root
RUN bash /root/03_sdk.sh

# Sixth, PSW

ENV CODENAME focal
ENV VERSION 2.17.100.3-focal1
ENV DCAP_VERSION 1.14.100.3-focal1
ENV VERSION 2.20.100.4-focal1
ENV DCAP_VERSION 1.17.100.4-focal1

ADD 04_psw.sh /root
RUN bash /root/04_psw.sh

# Seventh, Rust

ENV rust_toolchain nightly-2022-02-23
ENV rust_toolchain nightly-2022-10-22
ADD 05_rust.sh /root
RUN bash /root/05_rust.sh

Expand Down
9 changes: 3 additions & 6 deletions dockerfile/Dockerfile.centos8.nightly
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,22 @@ RUN dnf group install -y 'Development Tools' && \
dnf --enablerepo=powertools install -y ocaml ocaml-ocamlbuild redhat-rpm-config openssl-devel wget rpm-build git cmake perl python2 libcurl-devel protobuf-devel && \
alternatives --set python /usr/bin/python2

#ADD 01_gcc_8.sh /root
#RUN bash /root/01_gcc_8.sh

ENV BINUTILS_DIST="centos8"

ADD 02_binutils.sh /root
RUN bash /root/02_binutils.sh

ENV SDK_DIST="INTEL_BUILT"
ENV SDK_URL="https://download.01.org/intel-sgx/sgx-linux/2.17.1/distro/centos-stream/sgx_linux_x64_sdk_2.17.101.1.bin"
ENV SDK_URL="https://download.01.org/intel-sgx/sgx-linux/2.20/distro/centos-stream/sgx_linux_x64_sdk_2.20.100.4.bin"
#ENV SDK_DIST="SELF_BUILT"
ADD 03_sdk.sh /root
RUN bash /root/03_sdk.sh

ENV PSW_REPO="https://download.01.org/intel-sgx/sgx-linux/2.17/distro/centos-stream/sgx_rpm_local_repo.tgz"
ENV PSW_REPO="https://download.01.org/intel-sgx/sgx-linux/2.20/distro/centos-stream/sgx_rpm_local_repo.tgz"
ADD 04_psw_rpm.sh /root
RUN bash /root/04_psw_rpm.sh

ENV rust_toolchain nightly-2022-02-23
ENV rust_toolchain nightly-2022-10-22
ADD 05_rust.sh /root
RUN bash /root/05_rust.sh

Expand Down
7 changes: 3 additions & 4 deletions samplecode/unit-test/enclave/src/test_exception.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,8 @@
// under the License..

use sgx_signal::exception::{register_exception, unregister};
use sgx_signal::ContinueType;
use sgx_signal::{ContinueType, ExceptionInfo};
use sgx_trts::enclave;
use sgx_types::sgx_exception_info_t;
use std::backtrace::{self, PrintFormat};
use std::panic;
use std::sync::atomic::{AtomicUsize, Ordering};
Expand Down Expand Up @@ -49,15 +48,15 @@ pub fn test_exception_handler() {
let status = Arc::new(AtomicUsize::new(2));
let handler1 = {
let status = Arc::clone(&status);
move |_info: &mut sgx_exception_info_t| {
move |_info: &mut ExceptionInfo| {
status.fetch_add(2, Ordering::Relaxed);
ContinueType::Search
}
};

let handler2 = {
let status = Arc::clone(&status);
move |_info: &mut sgx_exception_info_t| {
move |_info: &mut ExceptionInfo| {
status.store(1, Ordering::Relaxed);
ContinueType::Search
}
Expand Down
68 changes: 34 additions & 34 deletions samplecode/unit-test/enclave/src/test_fp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ pub fn test_fp64() {
let f = 3.7_f64;
let g = 3.0_f64;
let h = -3.7_f64;

assert_eq!(f.floor(), 3.0);
assert_eq!(g.floor(), 3.0);
assert_eq!(h.floor(), -4.0);
Expand All @@ -28,26 +28,26 @@ pub fn test_fp64() {
let g = 4.0_f64;
assert_eq!(f.ceil(), 4.0);
assert_eq!(g.ceil(), 4.0);

let f = 3.3_f64;
let g = -3.3_f64;
assert_eq!(f.round(), 3.0);
assert_eq!(g.round(), -3.0);

let f = 3.7_f64;
let g = 3.0_f64;
let h = -3.7_f64;
assert_eq!(f.trunc(), 3.0);
assert_eq!(g.trunc(), 3.0);
assert_eq!(h.trunc(), -3.0);

let x = 3.6_f64;
let y = -3.6_f64;
let abs_difference_x = (x.fract() - 0.6).abs();
let abs_difference_y = (y.fract() - (-0.6)).abs();
assert!(abs_difference_x < 1e-10);
assert!(abs_difference_y < 1e-10);

let x = 3.5_f64;
let y = -3.5_f64;
let abs_difference_x = (x.abs() - x).abs();
Expand All @@ -60,28 +60,28 @@ pub fn test_fp64() {
assert_eq!(f.signum(), 1.0);
assert_eq!(f64::NEG_INFINITY.signum(), -1.0);
assert!(f64::NAN.signum().is_nan());

let f = 3.5_f64;
assert_eq!(f.copysign(0.42), 3.5_f64);
assert_eq!(f.copysign(-0.42), -3.5_f64);
assert_eq!((-f).copysign(0.42), 3.5_f64);
assert_eq!((-f).copysign(-0.42), -3.5_f64);
assert!(f64::NAN.copysign(1.0).is_nan());

let m = 10.0_f64;
let x = 4.0_f64;
let b = 60.0_f64;
// 100.0
let abs_difference = (m.mul_add(x, b) - ((m * x) + b)).abs();
assert!(abs_difference < 1e-10);

let a: f64 = 7.0;
let b = 4.0;
assert_eq!(a.div_euclid(b), 1.0); // 7.0 > 4.0 * 1.0
assert_eq!((-a).div_euclid(b), -2.0); // -7.0 >= 4.0 * -2.0
assert_eq!(a.div_euclid(-b), -1.0); // 7.0 >= -4.0 * -1.0
assert_eq!((-a).div_euclid(-b), 2.0); // -7.0 >= -4.0 * 2.0

let a: f64 = 7.0;
let b = 4.0;
assert_eq!(a.rem_euclid(b), 3.0);
Expand All @@ -90,11 +90,11 @@ pub fn test_fp64() {
assert_eq!((-a).rem_euclid(-b), 1.0);
// limitation due to round-off error
assert!((-f64::EPSILON).rem_euclid(3.0) != 0.0);

let x = 2.0_f64;
let abs_difference = (x.powi(2) - (x * x)).abs();
assert!(abs_difference < 1e-10);

let x = 2.0_f64;
let abs_difference = (x.powf(2.0) - (x * x)).abs();
assert!(abs_difference < 1e-10);
Expand All @@ -104,77 +104,77 @@ pub fn test_fp64() {
let abs_difference = (positive.sqrt() - 2.0).abs();
assert!(abs_difference < 1e-10);
assert!(negative.sqrt().is_nan());

let one = 1.0_f64;
// e^1
let e = one.exp();
// ln(e) - 1 == 0
let abs_difference = (e.ln() - 1.0).abs();
assert!(abs_difference < 1e-10);

let f = 2.0_f64;
// 2^2 - 4 == 0
let abs_difference = (f.exp2() - 4.0).abs();
assert!(abs_difference < 1e-10);

let one = 1.0_f64;
// e^1
let e = one.exp();
// ln(e) - 1 == 0
let abs_difference = (e.ln() - 1.0).abs();
assert!(abs_difference < 1e-10);

let twenty_five = 25.0_f64;
// log5(25) - 2 == 0
let abs_difference = (twenty_five.log(5.0) - 2.0).abs();
assert!(abs_difference < 1e-10);

let four = 4.0_f64;
// log2(4) - 2 == 0
let abs_difference = (four.log2() - 2.0).abs();
assert!(abs_difference < 1e-10);

let hundred = 100.0_f64;
// log10(100) - 2 == 0
let abs_difference = (hundred.log10() - 2.0).abs();
assert!(abs_difference < 1e-10);

let x = 3.0_f64;
let y = -3.0_f64;
let abs_difference_x = (x.abs_sub(1.0) - 2.0).abs();
let abs_difference_y = (y.abs_sub(1.0) - 0.0).abs();
assert!(abs_difference_x < 1e-10);
assert!(abs_difference_y < 1e-10);

let x = 8.0_f64;
// x^(1/3) - 2 == 0
let abs_difference = (x.cbrt() - 2.0).abs();
assert!(abs_difference < 1e-10);

let x = 2.0_f64;
let y = 3.0_f64;
// sqrt(x^2 + y^2)
let abs_difference = (x.hypot(y) - (x.powi(2) + y.powi(2)).sqrt()).abs();
assert!(abs_difference < 1e-10);

let x = std::f64::consts::FRAC_PI_2;
let abs_difference = (x.sin() - 1.0).abs();
assert!(abs_difference < 1e-10);

let x = 2.0 * std::f64::consts::PI;
let abs_difference = (x.cos() - 1.0).abs();
assert!(abs_difference < 1e-10);

let f = std::f64::consts::FRAC_PI_2;
// asin(sin(pi/2))
let abs_difference = (f.sin().asin() - std::f64::consts::FRAC_PI_2).abs();
assert!(abs_difference < 1e-10);

let f = std::f64::consts::FRAC_PI_4;
// acos(cos(pi/4))
let abs_difference = (f.cos().acos() - std::f64::consts::FRAC_PI_4).abs();
assert!(abs_difference < 1e-10);

let f = 1.0_f64;
// atan(tan(1))
let abs_difference = (f.tan().atan() - 1.0).abs();
Expand All @@ -192,34 +192,34 @@ pub fn test_fp64() {
let abs_difference_2 = (y2.atan2(x2) - (3.0 * std::f64::consts::FRAC_PI_4)).abs();
assert!(abs_difference_1 < 1e-10);
assert!(abs_difference_2 < 1e-10);

let x = std::f64::consts::FRAC_PI_4;
let f = x.sin_cos();
let abs_difference_0 = (f.0 - x.sin()).abs();
let abs_difference_1 = (f.1 - x.cos()).abs();
assert!(abs_difference_0 < 1e-10);
assert!(abs_difference_1 < 1e-10);

let x = 1e-16_f64;
// for very small x, e^x is approximately 1 + x + x^2 / 2
let approx = x + x * x / 2.0;
let abs_difference = (x.exp_m1() - approx).abs();
assert!(abs_difference < 1e-20);

let x = 1e-16_f64;
// for very small x, ln(1 + x) is approximately x - x^2 / 2
let approx = x - x * x / 2.0;
let abs_difference = (x.ln_1p() - approx).abs();
assert!(abs_difference < 1e-20);

let e = std::f64::consts::E;
let x = 1.0_f64;
let f = x.sinh();
// Solving sinh() at 1 gives `(e^2-1)/(2e)`
let g = ((e * e) - 1.0) / (2.0 * e);
let abs_difference = (f - g).abs();
assert!(abs_difference < 1e-10);

let e = std::f64::consts::E;
let x = 1.0_f64;
let f = x.cosh();
Expand All @@ -228,25 +228,25 @@ pub fn test_fp64() {
let abs_difference = (f - g).abs();
// Same result
assert!(abs_difference < 1.0e-10);

let e = std::f64::consts::E;
let x = 1.0_f64;
let f = x.tanh();
// Solving tanh() at 1 gives `(1 - e^(-2))/(1 + e^(-2))`
let g = (1.0 - e.powi(-2)) / (1.0 + e.powi(-2));
let abs_difference = (f - g).abs();
assert!(abs_difference < 1.0e-10);

let x = 1.0_f64;
let f = x.sinh().asinh();
let abs_difference = (f - x).abs();
assert!(abs_difference < 1.0e-10);

let x = 1.0_f64;
let f = x.cosh().acosh();
let abs_difference = (f - x).abs();
assert!(abs_difference < 1.0e-10);

let e = std::f64::consts::E;
let f = e.tanh().atanh();
let abs_difference = (f - e).abs();
Expand Down
Loading

0 comments on commit 3c903bd

Please sign in to comment.