Commit Graph
51 Commits
Author SHA1 Message Date
Dmitrii Kuvaiskii b79940aada [Makefiles] Make Graphene build on Clear Linux
Clear Linux ships with Glibc built with `-Wp,-DFORTIFY_SOURCE=2`.
This overwrites Graphene's `-UFORTIFY_SOURCE` because of the quirk
in how GCC applies arguments (first without Wp, then with Wp).
This commit updates Makefiles to use `-Wp,-UFORTIFY_SOURCE`.
2020-05-01 23:35:49 +00:00
Dmitrii Kuvaiskii 997d84c40e [LibOS] Add Glibc 2.31 (used in Ubuntu 20.04) 2020-03-17 21:57:11 +01:00
Dmitrii Kuvaiskii d0aef30b8c [LibOS] Remove malloc-arena-size patch; consolidate liblibos patch 2020-03-17 21:57:11 +01:00
Isaku Yamahata df358b8ba8 [Make] Consistently use $(RM) instead of rm -f 2020-02-12 01:09:21 +01:00
Isaku Yamahata 50bdec8a23 [LibOS,Pal] Move Makefile.Host under Scripts/ 2020-02-05 23:21:05 -08:00
Isaku Yamahata 35dd8c9423 [LibOS,Pal] Consolidate export DEBUG in Makefile.configs 2020-02-05 23:21:05 -08:00
Isaku Yamahata 0912f20ccf [LibOS,Pal] Unify the setting of CC and remove raw gcc invocations 2020-02-05 23:21:05 -08:00
Isaku Yamahata 732712e23e [LibOS,Pal] Move makefile libraries under Scripts/
This commit moves Makefile.configs, Makefile.rules, and Makefile.Test
under Scripts/ and adjusts their includes.
2020-02-05 23:21:04 -08:00
Simon Gaiser 9052837dfc [Make] Improve download handling
Instead of implementing downloading of external resources in every
Makefile again, use one script. This script adds the following
features:

 - Always check the download against a known SHA-256 hash.

 - Support caching of downloaded resources (set DL_CACHE=/some/dir).

 - Allow offline builds if all files are cached. If DL_OFFLINE=true the
   build will never attempt to download anything.
2020-02-05 00:41:10 +01:00
Simon Gaiser 7377a787bc [Makefile] Add distclean target
Before, there was no target that cleaned up downloaded sources. This
commit adds a distclean target to match the 'apps' Makefiles.
2020-02-04 01:15:08 +01:00
Wojtek Porczyk 101371683a [LibOS] Sanitize glibc build script
The academic-quality build script was supplanted by industry-grade
Makefile rule.

Also, glibc 2.19 is not supported, because it is not present in any
supported distro.
2019-12-02 18:50:13 +01:00
Isaku Yamahata 2cb174cd8e [LibOS] Eliminate GLIBC_DISABLE_VDSO and remove vdso-related patch to Glibc 2019-11-25 17:29:58 -08:00
Simon Gaiser 2d29f7aaeb [Makefile] Drop SGX_RUN
For detection of SGX/non-SGX (for example in regression tests) always
use the SGX environment variable. To generate launch/EINIT tokens use
the new 'sgx-tokens' Make target.
2019-09-27 12:38:14 +02:00
Simon Gaiser 13cac1df92 [Makefile] Fix missing cleans 2019-09-27 03:45:21 +02:00
Isaku Yamahata b82d838b7e [LibOS] Remove setting PARALELLMFLAGS for Glibc build
Previously, PARALLELMFLAGS variable caused warnings during Glibc build:
"-jN forced in submake: disabling jobserver mode". Since make supports
the jobserver such that passing -jN to parent make automatically allows
its child make to parallelize its jobs, we do not have to pass -j flags
to the child make.
2019-08-16 13:36:30 -07:00
Chia-Che Tsai dc8b63ce62 [Glibc] Update Glibc version to 2.23 and 2.27
Previously, Graphene supported Glibc version 2.19 only. This commit
adds support for Glibc v2.23 (default in Ubuntu 16.04) and Glibc
v2.27 (default in Ubuntu 18.04). The exact version can be chosen by
specifying GLIBC_VERSION during Graphene build. The default version
to be built is v2.27.

Note that for the best GDB experience it is advised to build Graphene
with the same Glibc version as installed on the host OS.
2019-08-15 13:30:53 -07:00
Isaku Yamahata 350b522263 [LibOS/Glibc] Remove Glibc modification which disabled vDSO
vDSO is supported by Graphene now, so this commit removes the
modification of Glibc which disabled vDSO in Graphene. Currently,
compile-time option GLIBC_DISABLE_VDSO is introduced to be able
to revert to the old behaviour (disabled by default).
2019-08-14 18:51:59 -07:00
Simon Gaiser 1ff85d10a3 [Makefile] Move building of tests to a separate target
Fixes #204.
2019-08-14 00:44:17 +02:00
Isaku Yamahata 2a54d1915b [LibOS] Remove PARALLELMFLAGS hack from buildglibc.py
Remove PARALLELMFLAGS replacing logic from buildglibc.py and instead use
$(MAKE) PARALLELMFLAGS="-j `nproc`"
2019-08-13 19:03:47 +02:00
Don Porter a0c208f71e [Makefiles] Enable parallel make in Jenkins, fix parallel make for SGX 2019-06-20 19:16:10 -07:00
Chia-Che Tsai 2f39783a33 [GLIBC] Fix the Makefile 2019-06-01 03:33:13 +02:00
Isaku Yamahata c2da06e3ed [LibOS] Remove USE_clone_FOR_fork and glibc patch for fork 2019-05-29 01:44:49 +02:00
Chia-Che Tsai 05a65c6188 [GLIBC] Move syscalldb implementation to a separate patch 2019-05-28 13:09:22 -04:00
Chia-Che Tsai c0c45bc679 [LibOS] Separate glibc patch and source files for liblibos 2019-05-24 20:42:22 +02:00
Chia-Che Tsai 1df0204555 [LibOS/Glibc] Separate Glibc patch for supporting ld.gold 2019-05-23 17:19:29 -07:00
Isaku Yamahata c806e5b437 [LibOS/glibc] Make fork-instead-of-clone patch optional
Previously, in-LibOS Glibc was patched to prefer fork()
over clone(!CLONE_VM) to spawn a new process. Now that
clone(!CLONE_VM) works correctly, this patch is not needed.
Thus, this Glibc patch is made optional.
2019-05-22 03:51:40 -07:00
Isaku Yamahata 10994e1b69 [Makefile] Use symlinks instead of cp to populate Runtime dir
Currently cp to Runtime dir is used. Sometimes it is confusing when
binaries are re-built under Pal or LibOS. Symlink is better, so use
it instead.
  - It's easy to understand where a file under Runtime dir comes from
  - It's easy to understand in which directory to run `make`
  - If cp is used, it's quite easy to test old binary under Runtime.

This patch create ln_sf rule and use it instead of cp and applies to
other recipe with cp.
In this context, creating symlink of glibc libraries is mess. This
patch also cleans it up to use Makefile instead of embedding the logic
into python script.

Signed-off-by: Isaku Yamahata <isaku.yamahata@gmail.com>
2019-04-26 02:47:38 +02:00
Isaku Yamahata 7ffe9ffe65 [LibOS/glibc] Add glibc dependencies to Makefile
Signed-off-by: Isaku Yamahata <isaku.yamahata@gmail.com>
2019-02-18 10:30:38 -05:00
Isaku Yamahata 36d243a045 [LibOS/shim/Makefile] Don't build glibc unnecessarily
Keep Success.build file by .SECONDARY instead of .INTERMEDIATE.
2019-02-11 19:50:27 +01:00
Isaku Yamahata 5a26186ed8 LibOS/Makefile: imporove handling of glibc patches
When glibc patches are updated, glibc won't be re-build.
This patch adds patches and Makefile as dependencies of glibc so that
when patches or Makefile are updated, glibc will be re-build.
2019-01-30 10:26:39 -05:00
Chia-Che Tsai 056ff6bfa9 [LibOS] Adding multiple mirrors for downloading glibc
Signed-off-by: Chia-Che Tsai <chiache@tamu.edu>
2018-12-03 20:54:39 -08:00
Michał Kowalczyk f14049316a [Build] Add make format target 2018-12-04 00:17:52 +01:00
Jat 6a1faf7874 gcc -dumpmachine returns x86_64-xxx-linux-gnu (#242)
This change normalizes the behavior of the Makefile in checking for the host system time, building across a wider range of systems.
2018-10-10 11:35:30 -07:00
Chia-Che Tsai 58e608793e Addressing GLIBC building issue with GCC 5/6/7/8 (#241) 2018-08-25 08:02:02 -07:00
Chia-Che Tsai 76cd8ed917 suppressing some glibc compilation warnings (#226) 2018-07-09 10:16:28 -07:00
Chia-Che Tsai 6e3c5aea56 deprecating .packed directories (#149)
.packed directories are originally created for testing on non-Linux platforms. The usage is mostly obsolete right now, and the binaries are completely out-dated. A better strategy would be to create a hook in the github to release binary packages.
2017-12-21 11:13:53 -05:00
Don Porter c844d24199 CI Improvements (#141)
Run CI in a Docker image

* Wait a second for lighttp and apache to fully initialize the socket

* Try to add a timeout for lmbench, which is prone to hanging (vfork)

* Set a timeout on gcc; one of the PRs is causing gcc hello to hang.  Also, to avoid interference, run apache test on 8001 by default.

* Update lmbench to ignore bin dir

* Do the faster tests first; fail earlier

* Get the IP addr properly for web server tests

* Some notes on flaky LTP tests to debug later.  Move a few that tend to heisenbugs off of the required list for now 

* Try to detect vma list corruption during the debug dump, lest it be infinite.

* Temporarily disable the lmbench vfork test (Issue #142).

* Catch some failures faster.

* Catch failures in apachebench

* Take apache out of the Linux host/Debug build CI for now, as it hangs consistently.  Filed issue #144 to track.
2017-12-09 16:34:56 -08:00
Michał Kowalczyk 3a24ad56d4 Add lacking .PHONY to Makefiles (#118) 2017-11-25 08:56:36 +00:00
Chia-Che Tsai 6eee338c70 avoiding repeating glibc compilation during one build 2017-02-11 09:57:02 -05:00
Chia-Che Tsai faaf84103e silent glibc compilation and redirect the log into a file 2017-02-11 09:37:19 -05:00
Don Porter 28585ad957 Fix build of python on SGX (#41) 2017-02-02 23:58:56 -05:00
Chia-Che Tsai 9aee3dcb69 new compilation logistic: always use the Runtime directory 2017-02-02 09:42:38 -05:00
Chia-Che Tsai 27ed3b2f6b - Fix calling convention issues in the glibc 2.19 patch
- Port gipc module to Linux kernel 4.3
- Simplify PAL signal handling
- Fix bug #4 (epoll-related syscalls)
- Fix bug #10
- Fix bug #14
- Merge pull request #18
2016-12-02 00:24:05 -05:00
Chia-Che Tsai 1a1e199c79 release v0.4beta
Release of Graphene SGX:
Supporting native Linux application in Intel SGX enclaves.
Most applications are supported. Some features may still be buggy.

Improving portability of Graphene:
Eliminating GCC-ism of the host-generic code.
Easier to port to non-Posix platform (e.g., Windows without Cygwin).
2016-07-19 19:45:55 -04:00
Chia-Che Tsai 1708e4af96 Bugfixes
'make install' to create a Runtime directory
2016-02-14 22:13:33 -05:00
Chia-Che Tsai b5586bbfc6 release v0.3
- Bugfixes in PAL and SHIM
- Improvement of migration scheme in SHIM, which largely speed up
  forking
- Upgrade glibc to 2.19
- FreeBSD port
- Support OpenJDK, python and R
2015-11-30 08:38:50 -05:00
Chia-Che Tsai bee9e6f390 pack up source code 2015-05-20 15:10:29 -04:00
Chia-Che Tsai 7f19f62f31 beta version 0.2
Plenty of bugfixes for Linux kernel later than 3.5 and Ubuntu later than 10.10.
More organized code to improve portability.
Regression tests for Pal to test completeness of implementation.
2015-05-20 14:15:52 -04:00
Chia-Che Tsai 328ca4af9b tons of bugfixes 2015-03-31 14:29:34 -04:00
Chia-Che Tsai 87475b75ad simplify building procedule 2015-02-23 13:26:56 -08:00