add icedtea with jamvm

This commit is contained in:
Mario Fetka 2012-01-20 20:39:48 +01:00
parent fb76201cf3
commit d6ca3ea094
20 changed files with 4678 additions and 0 deletions

1273
dev-java/icedtea/ChangeLog Normal file

File diff suppressed because it is too large Load Diff

27
dev-java/icedtea/Manifest Normal file
View File

@ -0,0 +1,27 @@
AUX 0-sharkllvm30-targetselect-138450.patch 717 RMD160 eab3954a679335b036d99cf572a61d670b92f1d5 SHA1 fd5546b2598f4be6d9c3220e49281793d0622c60 SHA256 732bd7df8ac43b708e21920d4c389de4f0ad1c8eaca1ee3c6dce5e4bb536b1de
AUX 2-sharkllvm30-PHI-128537-Call-ArrayRef-135265-v2.patch 10317 RMD160 c85e9810489cf52011473eff1eb18acb0fcceb53 SHA1 984b6bb3bccf4c1cf19fc9f13b63ae8b8eb02738 SHA256 b59cdebc0022a6824ba353d71bcac490dded8c8881961d6430164e46eee9f8bc
AUX 3-sharkllvm30-MCJIT-v3.patch 1630 RMD160 d0f58680b5f3dc1ae1e46acc3fc7ae39e7a28426 SHA1 6bdcc863a17c4471fe859dd50c5dff9fb44317b1 SHA256 899e3dae68f4d930ac06097860e9e4fe9ac1ffe149d20774bd680ae31e59ff71
AUX disable_werror.patch 516 RMD160 fbfd860044ce6441cf097cee025aaa42320e3b61 SHA1 a7736228b86961d282645a2ea13ffd4f3ce8e666 SHA256 10cd9805b5986d502f47840adc2ec6030f380d86edb09447a1552de162207ad4
AUX fontconfig.Gentoo.properties.src 15602 RMD160 d5ae1cb403072b630c126a908d14b5b462e1514f SHA1 04af30bfae3decf6fdb51187a07bf75fb04a83f0 SHA256 d48a9b43d82f45425464e985955f3f3700738a98c0dc97ab7577230ca11fe647
AUX generate-cacerts.pl 11051 RMD160 9b874c62ffa0afe16353f1e7b32f124f1d31356f SHA1 65e55b84506ecf14711db0996eccf3cfba2fe9e3 SHA256 6ee6fb155e3fa85d0a7e9015b53ebd55948c6599d100fdb69b574b6d11f73433
AUX icedtea-6.1.10.4_1-sharkllvm30-de-const-type-135375.patch 23047 RMD160 62eddf0f20377ea5cdff06cd2bbc17b279096e6e SHA1 bb10d8a9d1c8a5fb03e13fb33cc84c760656d4f4 SHA256 e6b2a95e630944b1dce3b5dd9c0836c956303daf287f46a59831bdaa89da4a4b
AUX icedtea-6.1.10.4_pax_kernel_support.patch 4152 RMD160 a1800e5985d90db6e4827b0bea784cb034962c69 SHA1 625177d004e57cad81d522d1436aaa33dba45a6a SHA256 4a6f3462e9dd47dcc5941dd67a56bbd9ea874dca2a94566f0f38c2d241efeb74
AUX icedtea-6.1.10.4_separate_shark_target.patch 8216 RMD160 9af7e9d9681fd396542e7df492af9c310d0e2e3c SHA1 846b9169784d270f9174da4ecf7910b844e483f1 SHA256 7311bab084a285bbe427976be25e309ac190e13b094b028e47fbb90c3f7e836b
AUX icedtea-6.1.10.4_shark_jvm_rpath.patch 527 RMD160 b2985002e5ee6d340ff5cc34e11a01af120de780 SHA1 3a2f96bac78d11247ec122388223d978f8f5b210 SHA256 28e9df24b57f6a7b4a6244f1e6674ec53bc9860cd57d331048bf37bc3787fca5
AUX icedtea-7.2.0_1-sharkllvm30-de-const-type-135375.patch 23111 RMD160 ee816b392f2b216b27a2538cc507012fac6be458 SHA1 531acd398982ec26d569aecbac4b709be8b98aa1 SHA256 bffb46db3d6cda438ceae07bd09fb56726192138186ae207338a4c231b6b6f90
AUX icedtea-7.2.0_pax_kernel_support.patch 6511 RMD160 ca6ff5d7f8c1157558af28ef631ed4fd5f67f901 SHA1 538bb29bc10978ae14114cfed525c3905e808984 SHA256 4771937bbb89a92fd77dc5e5945231ae511f284fa368648bb7aa34e0fb48ba9e
AUX icedtea-7.2.0_separate_shark_target.patch 6102 RMD160 345e82048f81ff94b761dbb5fad820a76c3c5c02 SHA1 bbecab3ab3100cf51a9cab5d441d022a8e485660 SHA256 71ae48dc24239ac0710ac5496f2c8fa060eaeb66a9849f4f9477e52181d13e28
AUX icedtea-7.2.0_shark_jvm_rpath.patch 527 RMD160 e35de06007a540250ea3af3602468b8c7088271b SHA1 c95aa536269d0b7ffec3ae3f9694f47bdf633bf6 SHA256 f86ab366bf715b0871e03be2df9d8c84ee41213b6bae783e942cc02a0154e8b8
AUX icedtea-7.2.0_shark_llvm_flags.patch 1180 RMD160 7c412f8ac37c0b2281d0f477894981cd04684c72 SHA1 a47e87374276b727dfae1d32778ce6fc976a73a3 SHA256 494ceb93461f52e2a081989f6455fdbfe8785d43df6c9cfd88527aa63cd1085d
AUX icedtea.env 1074 RMD160 6806fd80d619c54f6ab50255c12ee2a9920ad72f SHA1 4ddbddd4464fcf11fad45426ba0430818747249d SHA256 b4ad677dede5c06785db6540d51a9dbe6401e894f03857f5b14dbf6bdf9a33a8
DIST 4549072ab2de.tar.gz 4210747 RMD160 e4bd1f089e622e48bbb67c56352a0e9c789c6485 SHA1 0dd6440d9dea578324b6fec0ee28c38f97982855 SHA256 ec097ce96f047abbaeab4faab752c121d29f08bdeae358038a0b7cde03361d07
DIST f0f676c5a2c6.tar.gz 8506038 RMD160 e00e7b602758eaa6cfdd04b109d99694ce2ae94c SHA1 bdc450f5a1b75b2445c960f43dbc7f605042a3c8 SHA256 aaa322239c181e50a61ec71869843eee7a0a82a9b80f113d32faf2a59d7ba5c4
DIST icedtea6-1.10.5.tar.gz 6831721 RMD160 24e3c22dafaba9aac21b84643127c2e92f1dc2dd SHA1 ba260275bcfbbbaff153c99b066d2f4ba7a12270 SHA256 7d0f9e833a42b6af308a34d432431f0528a2efa52d7837aa446d1c4c27161a0c
DIST jamvm-310c491ddc14e92a6ffff27030a1a1821e6395a8.tar.gz 293833 RMD160 b34f4684e0c918c36d9fb9316a4ae7737b712296 SHA1 60d5782ccb9707699f9dfbfcf647a5c862ef4691 SHA256 b5174f59371017087139fd43d51074ad837ae29340220206ca06769c8329881a
DIST jaxp144_01.zip 5964803 RMD160 6844ae747a7e7de289ce263ed06050a512416aec SHA1 4f11f9525a83e7842cbd14cc47d967abde093c27 SHA256 d72c2e27a479e7e78e0141cfcf3a9c5dbc5677495bd21b2d52dce85d21322186
DIST jdk6-jaf-b20.zip 71243 RMD160 40b49d12c39b7010ee917eb671f3c38cd16f271c SHA1 69a54373e169bd7b04a45de6a310a199260424b9 SHA256 78c7b5c9d6271e88ee46abadd018a61f1e9645f8936cc8df1617e5f4f5074012
DIST jdk6-jaxws-b20.zip 5513069 RMD160 47b2d4fe528d770391e8926299df45cc6f68e9b5 SHA1 08366a70c9e2baa516afc77bb69f9e108e906aa9 SHA256 0c460583898b968a58bf88eb53f90a0e34369e2562d65fb3a143512dfcaeb3eb
DIST openjdk-6-src-b22-28_feb_2011.tar.gz 45279689 RMD160 2b8f92cdb4d7dd3eb3cbb800a73e1666ee4bf5b1 SHA1 65a60153adbc8bc47fb95bb2b588a9a0b8701c95 SHA256 14a097d45b8c040e984be164a8cefbf22040a9ad57474fe87dd8cf2d0b08328b
EBUILD icedtea-6.1.10.5.ebuild 11120 RMD160 cfafaba488bdb7b29ec8074892042c3681cd35ea SHA1 63f2f4306bab4dea98f691d54940d29dd4e98ba2 SHA256 483e8a578bdc367affd0cbf89792083c057cc350dd02687839a6cb26efb4aa87
MISC ChangeLog 55586 RMD160 b77c3bcc1cc5d0213e82869e2a0591948dc504f3 SHA1 ae0ee6199659bc07d013b0eb4b201812557b0d81 SHA256 4ba5ba5882a03bcd8a07586174c582441f1f226ce603b1bb3de6e8500dd18372
MISC metadata.xml 1841 RMD160 e11dc49cd85ae8e5cbd0008d9717db3d9cce10bb SHA1 8ea7ea30c8d75f6f5466da706ad06f6e9663d6c0 SHA256 730fb8505320e831f218a0968037a3f6c42e2a0f83d3467b45d7d99a4b8ec591

View File

@ -0,0 +1,19 @@
Taken from:
http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000399.html
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp 2011-08-30 19:28:01.875227001 +0000
+++ openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp 2011-08-30 19:30:16.885227001 +0000
@@ -51,7 +51,11 @@
#else
#include <llvm/System/Threading.h>
#endif
+#if SHARK_LLVM_VERSION >= 30
+#include <llvm/Support/TargetSelect.h>
+#else
#include <llvm/Target/TargetSelect.h>
+#endif
#include <llvm/Type.h>
#include <llvm/ExecutionEngine/JITMemoryManager.h>
#include <llvm/Support/CommandLine.h>

View File

@ -0,0 +1,218 @@
Taken from:
http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000399.html
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-08-31 11:33:05.404964248 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-08-31 11:33:11.164992604 +0200
@@ -1000,9 +1000,9 @@
builder()->SetInsertPoint(done);
PHINode *result;
if (is_long)
- result = builder()->CreatePHI(SharkType::jlong_type(), "result");
+ result = builder()->CreatePHI(SharkType::jlong_type(), 0, "result");
else
- result = builder()->CreatePHI(SharkType::jint_type(), "result");
+ result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
result->addIncoming(special_result, special_case);
result->addIncoming(general_result, general_case);
@@ -1105,7 +1105,7 @@
builder()->CreateBr(done);
builder()->SetInsertPoint(done);
- PHINode *result = builder()->CreatePHI(SharkType::jint_type(), "result");
+ PHINode *result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
result->addIncoming(LLVMValue::jint_constant(-1), lt);
result->addIncoming(LLVMValue::jint_constant(0), eq);
result->addIncoming(LLVMValue::jint_constant(1), gt);
@@ -1152,7 +1152,7 @@
builder()->CreateBr(done);
builder()->SetInsertPoint(done);
- PHINode *result = builder()->CreatePHI(SharkType::jint_type(), "result");
+ PHINode *result = builder()->CreatePHI(SharkType::jint_type(), 0, "result");
result->addIncoming(LLVMValue::jint_constant(-1), lt);
result->addIncoming(LLVMValue::jint_constant(0), eq);
result->addIncoming(LLVMValue::jint_constant(1), gt);
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-08-31 11:33:05.404964248 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-08-31 13:59:28.604517829 +0200
@@ -465,7 +465,7 @@
LLVMValue::bit_constant((flags & BARRIER_STORESTORE) ? 1 : 0),
LLVMValue::bit_constant(1)};
- return CreateCall(memory_barrier(), args, args + 5);
+ return CreateCall(memory_barrier(), llvm::makeArrayRef(args));
}
CallInst* SharkBuilder::CreateMemset(Value* dst,
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkIntrinsics.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkIntrinsics.cpp 2011-07-05 20:31:05.000000000 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkIntrinsics.cpp 2011-08-31 11:33:11.200992924 +0200
@@ -171,7 +171,7 @@
builder()->CreateBr(done);
builder()->SetInsertPoint(done);
- PHINode *phi = builder()->CreatePHI(a->getType(), "result");
+ PHINode *phi = builder()->CreatePHI(a->getType(), 0, "result");
phi->addIncoming(a, return_a);
phi->addIncoming(b, return_b);
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-08-31 11:33:05.408964281 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-08-31 13:58:49.448323631 +0200
@@ -149,7 +149,7 @@
builder()->CreateBr(merge);
builder()->SetInsertPoint(merge);
- phi = builder()->CreatePHI(box_type, "boxed_object");
+ phi = builder()->CreatePHI(box_type, 0, "boxed_object");
phi->addIncoming(ConstantPointerNull::get(box_type), null);
phi->addIncoming(box, not_null);
box = phi;
@@ -213,7 +213,7 @@
PointerType::getUnqual(
FunctionType::get(return_type, param_types, false)));
Value *result = builder()->CreateCall(
- native_function, param_values.begin(), param_values.end());
+ native_function, llvm::makeArrayRef(param_values));
// Start the transition back to _thread_in_Java
CreateSetThreadState(_thread_in_native_trans);
@@ -305,7 +305,7 @@
builder()->CreateBr(merge);
builder()->SetInsertPoint(merge);
- PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), "result");
+ PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), 0, "result");
phi->addIncoming(LLVMValue::null(), null);
phi->addIncoming(unboxed_result, not_null);
result = phi;
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp 2011-07-05 20:31:05.000000000 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.hpp 2011-08-31 11:33:11.204992936 +0200
@@ -290,7 +290,7 @@
int exception_action) {
decache_for_VM_call();
stack()->CreateSetLastJavaFrame();
- llvm::CallInst *res = builder()->CreateCall(callee, args_start, args_end);
+ llvm::CallInst *res = builder()->CreateCall(callee, llvm::makeArrayRef(args_start, args_end));
stack()->CreateResetLastJavaFrame();
cache_after_VM_call();
if (exception_action & EAM_CHECK) {
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkState.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkState.cpp 2011-07-05 20:31:05.000000000 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkState.cpp 2011-08-31 11:33:11.204992936 +0200
@@ -131,7 +131,7 @@
Value *this_method = this->method();
Value *other_method = other->method();
if (this_method != other_method) {
- PHINode *phi = builder()->CreatePHI(SharkType::methodOop_type(), "method");
+ PHINode *phi = builder()->CreatePHI(SharkType::methodOop_type(), 0, "method");
phi->addIncoming(this_method, this_block);
phi->addIncoming(other_method, other_block);
set_method(phi);
@@ -142,7 +142,7 @@
Value *other_oop_tmp = other->oop_tmp();
if (this_oop_tmp != other_oop_tmp) {
assert(this_oop_tmp && other_oop_tmp, "can't merge NULL with non-NULL");
- PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), "oop_tmp");
+ PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), 0, "oop_tmp");
phi->addIncoming(this_oop_tmp, this_block);
phi->addIncoming(other_oop_tmp, other_block);
set_oop_tmp(phi);
@@ -287,7 +287,7 @@
char name[18];
// Method
- set_method(builder()->CreatePHI(SharkType::methodOop_type(), "method"));
+ set_method(builder()->CreatePHI(SharkType::methodOop_type(), 0, "method"));
// Local variables
for (int i = 0; i < max_locals(); i++) {
@@ -307,7 +307,7 @@
case T_ARRAY:
snprintf(name, sizeof(name), "local_%d_", i);
value = SharkValue::create_phi(
- type, builder()->CreatePHI(SharkType::to_stackType(type), name));
+ type, builder()->CreatePHI(SharkType::to_stackType(type), 0, name));
break;
case T_ADDRESS:
@@ -345,7 +345,7 @@
case T_ARRAY:
snprintf(name, sizeof(name), "stack_%d_", i);
value = SharkValue::create_phi(
- type, builder()->CreatePHI(SharkType::to_stackType(type), name));
+ type, builder()->CreatePHI(SharkType::to_stackType(type), 0, name));
break;
case T_ADDRESS:
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-08-31 11:33:05.412964300 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-08-31 11:33:11.204992936 +0200
@@ -1180,7 +1180,7 @@
builder()->CreateBr(loop);
builder()->SetInsertPoint(loop);
PHINode *itable_entry_addr = builder()->CreatePHI(
- SharkType::intptr_type(), "itable_entry_addr");
+ SharkType::intptr_type(), 0, "itable_entry_addr");
itable_entry_addr->addIncoming(itable_start, loop_entry);
Value *itable_entry = builder()->CreateIntToPtr(
@@ -1526,7 +1526,7 @@
// First merge
builder()->SetInsertPoint(merge1);
PHINode *nonnull_result = builder()->CreatePHI(
- SharkType::jint_type(), "nonnull_result");
+ SharkType::jint_type(), 0, "nonnull_result");
nonnull_result->addIncoming(
LLVMValue::jint_constant(IC_IS_INSTANCE), is_instance);
nonnull_result->addIncoming(
@@ -1537,7 +1537,7 @@
// Second merge
builder()->SetInsertPoint(merge2);
PHINode *result = builder()->CreatePHI(
- SharkType::jint_type(), "result");
+ SharkType::jint_type(), 0, "result");
result->addIncoming(LLVMValue::jint_constant(IC_IS_NULL), null_block);
result->addIncoming(nonnull_result, nonnull_block);
@@ -1713,7 +1713,7 @@
builder()->SetInsertPoint(initialize);
if (tlab_object) {
PHINode *phi = builder()->CreatePHI(
- SharkType::oop_type(), "fast_object");
+ SharkType::oop_type(), 0, "fast_object");
phi->addIncoming(tlab_object, got_tlab);
phi->addIncoming(heap_object, got_heap);
fast_object = phi;
@@ -1773,7 +1773,7 @@
builder()->SetInsertPoint(push_object);
}
if (fast_object) {
- PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), "object");
+ PHINode *phi = builder()->CreatePHI(SharkType::oop_type(), 0, "object");
phi->addIncoming(fast_object, got_fast);
phi->addIncoming(slow_object, got_slow);
object = phi;
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkValue.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkValue.cpp 2011-07-05 20:31:05.000000000 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkValue.cpp 2011-08-31 11:33:11.204992936 +0200
@@ -233,7 +233,7 @@
assert(type() == other->type(), "should be");
assert(zero_checked() == other->zero_checked(), "should be");
- PHINode *phi = builder->CreatePHI(SharkType::to_stackType(type()), name);
+ PHINode *phi = builder->CreatePHI(SharkType::to_stackType(type()), 0, name);
phi->addIncoming(this->generic_value(), this_block);
phi->addIncoming(other->generic_value(), other_block);
return SharkValue::create_generic(type(), phi, zero_checked());

View File

@ -0,0 +1,38 @@
Taken from:
http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000399.html
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/sharkCompiler.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkCompiler.cpp 2011-08-31 11:39:35.630899283 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkCompiler.cpp 2011-08-31 16:10:00.459354097 +0200
@@ -72,6 +72,9 @@
// Initialize the native target
InitializeNativeTarget();
+ // MCJIT require a native AsmPrinter
+ InitializeNativeTargetAsmPrinter();
+
// Create the two contexts which we'll use
_normal_context = new SharkContext("normal");
_native_context = new SharkContext("native");
@@ -113,6 +116,7 @@
builder.setJITMemoryManager(memory_manager());
builder.setEngineKind(EngineKind::JIT);
builder.setErrorStr(&ErrorMsg);
+ builder.setUseMCJIT(true);
_execution_engine = builder.create();
if (!execution_engine()) {
Index: icedtea6-shark-llvm-3.0/openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp 2011-08-31 14:40:04.392596214 +0200
+++ openjdk/hotspot/src/share/vm/shark/llvmHeaders.hpp 2011-08-31 14:41:27.569008721 +0200
@@ -60,7 +60,7 @@
#include <llvm/ExecutionEngine/JITMemoryManager.h>
#include <llvm/Support/CommandLine.h>
#if SHARK_LLVM_VERSION >= 27
-#include <llvm/ExecutionEngine/JIT.h>
+#include <llvm/ExecutionEngine/MCJIT.h>
#include <llvm/ADT/StringMap.h>
#include <llvm/Support/Debug.h>
#if SHARK_LLVM_VERSION >= 29

View File

@ -0,0 +1,15 @@
Author: Ralph Sennhauser <sera@gentoo.org>
Disables -Werror so shark builds with llvm-3.0 on amd64
--- openjdk/hotspot/make/linux/makefiles/gcc.make 2011-12-12 09:38:55.995256804 +0100
+++ openjdk/hotspot/make/linux/makefiles/gcc.make 2011-12-12 10:26:07.670560007 +0100
@@ -123,7 +123,7 @@
endif
# Compiler warnings are treated as errors
-WARNINGS_ARE_ERRORS = -Werror
+WARNINGS_ARE_ERRORS =
# Except for a few acceptable ones
# Since GCC 4.3, -Wconversion has changed its meanings to warn these implicit

View File

@ -0,0 +1,385 @@
#
#
# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
# published by the Free Software Foundation. Oracle designates this
# particular file as subject to the "Classpath" exception as provided
# by Oracle in the LICENSE file that accompanied this code.
#
# This code 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
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
#
# Version
version=1
# Component Font Mappings
dialog.plain.latin-1=DejaVu Sans
dialog.plain.japanese-x0208=Sazanami Gothic
dialog.plain.korean=Baekmuk Gulim
dialog.plain.chinese-big5=AR PL ShanHeiSun Uni
dialog.plain.chinese-gb18030=AR PL ShanHeiSun Uni
dialog.plain.bengali=Lohit Bengali
dialog.plain.gujarati=Lohit Gujarati
dialog.plain.hindi=Lohit Hindi
dialog.plain.malayalam=Lohit Malayalam
dialog.plain.oriya=Lohit Oriya
dialog.plain.punjabi=Lohit Punjabi
dialog.plain.tamil=Lohit Tamil
dialog.plain.telugu=Lohit Telugu
dialog.plain.sinhala=LKLUG
dialog.bold.latin-1=DejaVu Sans Bold
dialog.bold.japanese-x0208=Sazanami Gothic
dialog.bold.korean=Baekmuk Gulim
dialog.bold.chinese-big5=AR PL ShanHeiSun Uni
dialog.bold.chinese-gb18030=AR PL ShanHeiSun Uni
dialog.bold.bengali=Lohit Bengali
dialog.bold.gujarati=Lohit Gujarati
dialog.bold.hindi=Lohit Hindi
dialog.bold.malayalam=Lohit Malayalam
dialog.bold.oriya=Lohit Oriya
dialog.bold.punjabi=Lohit Punjabi
dialog.bold.tamil=Lohit Tamil
dialog.bold.telugu=Lohit Telugu
dialog.bold.sinhala=LKLUG
dialog.italic.latin-1=DejaVu Sans Oblique
dialog.italic.japanese-x0208=Sazanami Gothic
dialog.italic.korean=Baekmuk Gulim
dialog.italic.chinese-big5=AR PL ShanHeiSun Uni
dialog.italic.chinese-gb18030=AR PL ShanHeiSun Uni
dialog.italic.bengali=Lohit Bengali
dialog.italic.gujarati=Lohit Gujarati
dialog.italic.hindi=Lohit Hindi
dialog.italic.malayalam=Lohit Malayalam
dialog.italic.oriya=Lohit Oriya
dialog.italic.punjabi=Lohit Punjabi
dialog.italic.tamil=Lohit Tamil
dialog.italic.telugu=Lohit Telugu
dialog.italic.sinhala=LKLUG
dialog.bolditalic.latin-1=DejaVu Sans Bold Oblique
dialog.bolditalic.japanese-x0208=Sazanami Gothic
dialog.bolditalic.korean=Baekmuk Gulim
dialog.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
dialog.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
dialog.bolditalic.bengali=Lohit Bengali
dialog.bolditalic.gujarati=Lohit Gujarati
dialog.bolditalic.hindi=Lohit Hindi
dialog.bolditalic.malayalam=Lohit Malayalam
dialog.bolditalic.oriya=Lohit Oriya
dialog.bolditalic.punjabi=Lohit Punjabi
dialog.bolditalic.tamil=Lohit Tamil
dialog.bolditalic.telugu=Lohit Telugu
dialog.bolditalic.sinhala=LKLUG
sansserif.plain.latin-1=DejaVu Sans
sansserif.plain.japanese-x0208=Sazanami Gothic
sansserif.plain.korean=Baekmuk Gulim
sansserif.plain.chinese-big5=AR PL ShanHeiSun Uni
sansserif.plain.chinese-gb18030=AR PL ShanHeiSun Uni
sansserif.plain.bengali=Lohit Bengali
sansserif.plain.gujarati=Lohit Gujarati
sansserif.plain.hindi=Lohit Hindi
sansserif.plain.malayalam=Lohit Malayalam
sansserif.plain.oriya=Lohit Oriya
sansserif.plain.punjabi=Lohit Punjabi
sansserif.plain.tamil=Lohit Tamil
sansserif.plain.telugu=Lohit Telugu
sansserif.plain.sinhala=LKLUG
sansserif.bold.latin-1=DejaVu Sans Bold
sansserif.bold.japanese-x0208=Sazanami Gothic
sansserif.bold.korean=Baekmuk Gulim
sansserif.bold.chinese-big5=AR PL ShanHeiSun Uni
sansserif.bold.chinese-gb18030=AR PL ShanHeiSun Uni
sansserif.bold.bengali=Lohit Bengali
sansserif.bold.gujarati=Lohit Gujarati
sansserif.bold.hindi=Lohit Hindi
sansserif.bold.malayalam=Lohit Malayalam
sansserif.bold.oriya=Lohit Oriya
sansserif.bold.punjabi=Lohit Punjabi
sansserif.bold.tamil=Lohit Tamil
sansserif.bold.telugu=Lohit Telugu
sansserif.bold.sinhala=LKLUG
sansserif.italic.latin-1=DejaVu Sans Oblique
sansserif.italic.japanese-x0208=Sazanami Gothic
sansserif.italic.korean=Baekmuk Gulim
sansserif.italic.chinese-big5=AR PL ShanHeiSun Uni
sansserif.italic.chinese-gb18030=AR PL ShanHeiSun Uni
sansserif.italic.bengali=Lohit Bengali
sansserif.italic.gujarati=Lohit Gujarati
sansserif.italic.hindi=Lohit Hindi
sansserif.italic.malayalam=Lohit Malayalam
sansserif.italic.oriya=Lohit Oriya
sansserif.italic.punjabi=Lohit Punjabi
sansserif.italic.tamil=Lohit Tamil
sansserif.italic.telugu=Lohit Telugu
sansserif.italic.sinhala=LKLUG
sansserif.bolditalic.latin-1=DejaVu Sans Bold Oblique
sansserif.bolditalic.japanese-x0208=Sazanami Gothic
sansserif.bolditalic.korean=Baekmuk Gulim
sansserif.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
sansserif.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
sansserif.bolditalic.bengali=Lohit Bengali
sansserif.bolditalic.gujarati=Lohit Gujarati
sansserif.bolditalic.hindi=Lohit Hindi
sansserif.bolditalic.malayalam=Lohit Malayalam
sansserif.bolditalic.oriya=Lohit Oriya
sansserif.bolditalic.punjabi=Lohit Punjabi
sansserif.bolditalic.tamil=Lohit Tamil
sansserif.bolditalic.telugu=Lohit Telugu
sansserif.bolditalic.sinhala=LKLUG
serif.plain.latin-1=DejaVu Serif
serif.plain.japanese-x0208=Sazanami Mincho
serif.plain.korean=Baekmuk Batang
serif.plain.chinese-big5=AR PL ZenKai Uni
serif.plain.chinese-gb18030=AR PL ZenKai Uni
serif.plain.bengali=Lohit Bengali
serif.plain.gujarati=Lohit Gujarati
serif.plain.hindi=Lohit Hindi
serif.plain.malayalam=Lohit Malayalam
serif.plain.oriya=Lohit Oriya
serif.plain.punjabi=Lohit Punjabi
serif.plain.tamil=Lohit Tamil
serif.plain.telugu=Lohit Telugu
serif.plain.sinhala=LKLUG
serif.bold.latin-1=DejaVu Serif Bold
serif.bold.japanese-x0208=Sazanami Mincho
serif.bold.korean=Baekmuk Batang
serif.bold.chinese-big5=AR PL ZenKai Uni
serif.bold.chinese-gb18030=AR PL ZenKai Uni
serif.bold.bengali=Lohit Bengali
serif.bold.gujarati=Lohit Gujarati
serif.bold.hindi=Lohit Hindi
serif.bold.malayalam=Lohit Malayalam
serif.bold.oriya=Lohit Oriya
serif.bold.punjabi=Lohit Punjabi
serif.bold.tamil=Lohit Tamil
serif.bold.telugu=Lohit Telugu
serif.bold.sinhala=LKLUG
serif.italic.latin-1=DejaVu Serif Oblique
serif.italic.japanese-x0208=Sazanami Mincho
serif.italic.korean=Baekmuk Batang
serif.italic.chinese-big5=AR PL ZenKai Uni
serif.italic.chinese-gb18030=AR PL ZenKai Uni
serif.italic.bengali=Lohit Bengali
serif.italic.gujarati=Lohit Gujarati
serif.italic.hindi=Lohit Hindi
serif.italic.malayalam=Lohit Malayalam
serif.italic.oriya=Lohit Oriya
serif.italic.punjabi=Lohit Punjabi
serif.italic.tamil=Lohit Tamil
serif.italic.telugu=Lohit Telugu
serif.italic.sinhala=LKLUG
serif.bolditalic.latin-1=DejaVu Serif Bold Oblique
serif.bolditalic.japanese-x0208=Sazanami Mincho
serif.bolditalic.korean=Baekmuk Batang
serif.bolditalic.chinese-big5=AR PL ZenKai Uni
serif.bolditalic.chinese-gb18030=AR PL ZenKai Uni
serif.bolditalic.bengali=Lohit Bengali
serif.bolditalic.gujarati=Lohit Gujarati
serif.bolditalic.hindi=Lohit Hindi
serif.bolditalic.malayalam=Lohit Malayalam
serif.bolditalic.oriya=Lohit Oriya
serif.bolditalic.punjabi=Lohit Punjabi
serif.bolditalic.tamil=Lohit Tamil
serif.bolditalic.telugu=Lohit Telugu
serif.bolditalic.sinhala=LKLUG
monospaced.plain.latin-1=DejaVu Sans Mono
monospaced.plain.japanese-x0208=Sazanami Gothic
monospaced.plain.korean=Baekmuk Gulim
monospaced.plain.chinese-big5=AR PL ShanHeiSun Uni
monospaced.plain.chinese-gb18030=AR PL ShanHeiSun Uni
monospaced.plain.bengali=Lohit Bengali
monospaced.plain.gujarati=Lohit Gujarati
monospaced.plain.hindi=Lohit Hindi
monospaced.plain.malayalam=Lohit Malayalam
monospaced.plain.oriya=Lohit Oriya
monospaced.plain.punjabi=Lohit Punjabi
monospaced.plain.tamil=Lohit Tamil
monospaced.plain.telugu=Lohit Telugu
monospaced.plain.sinhala=LKLUG
monospaced.bold.latin-1=DejaVu Sans Mono Bold
monospaced.bold.japanese-x0208=Sazanami Gothic
monospaced.bold.korean=Baekmuk Gulim
monospaced.bold.chinese-big5=AR PL ShanHeiSun Uni
monospaced.bold.chinese-gb18030=AR PL ShanHeiSun Uni
monospaced.bold.bengali=Lohit Bengali
monospaced.bold.gujarati=Lohit Gujarati
monospaced.bold.hindi=Lohit Hindi
monospaced.bold.malayalam=Lohit Malayalam
monospaced.bold.oriya=Lohit Oriya
monospaced.bold.punjabi=Lohit Punjabi
monospaced.bold.tamil=Lohit Tamil
monospaced.bold.telugu=Lohit Telugu
monospaced.bold.sinhala=LKLUG
monospaced.italic.latin-1=DejaVu Sans Mono Oblique
monospaced.italic.japanese-x0208=Sazanami Gothic
monospaced.italic.korean=Baekmuk Gulim
monospaced.italic.chinese-big5=AR PL ShanHeiSun Uni
monospaced.italic.chinese-gb18030=AR PL ShanHeiSun Uni
monospaced.italic.bengali=Lohit Bengali
monospaced.italic.gujarati=Lohit Gujarati
monospaced.italic.hindi=Lohit Hindi
monospaced.italic.malayalam=Lohit Malayalam
monospaced.italic.oriya=Lohit Oriya
monospaced.italic.punjabi=Lohit Punjabi
monospaced.italic.tamil=Lohit Tamil
monospaced.italic.telugu=Lohit Telugu
monospaced.italic.sinhala=LKLUG
monospaced.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
monospaced.bolditalic.japanese-x0208=Sazanami Gothic
monospaced.bolditalic.korean=Baekmuk Gulim
monospaced.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
monospaced.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
monospaced.bolditalic.bengali=Lohit Bengali
monospaced.bolditalic.gujarati=Lohit Gujarati
monospaced.bolditalic.hindi=Lohit Hindi
monospaced.bolditalic.malayalam=Lohit Malayalam
monospaced.bolditalic.oriya=Lohit Oriya
monospaced.bolditalic.punjabi=Lohit Punjabi
monospaced.bolditalic.tamil=Lohit Tamil
monospaced.bolditalic.telugu=Lohit Telugu
monospaced.bolditalic.sinhala=LKLUG
dialoginput.plain.latin-1=DejaVu Sans Mono
dialoginput.plain.japanese-x0208=Sazanami Gothic
dialoginput.plain.korean=Baekmuk Gulim
dialoginput.plain.chinese-big5=AR PL ShanHeiSun Uni
dialoginput.plain.chinese-gb18030=AR PL ShanHeiSun Uni
dialoginput.plain.bengali=Lohit Bengali
dialoginput.plain.gujarati=Lohit Gujarati
dialoginput.plain.hindi=Lohit Hindi
dialoginput.plain.malayalam=Lohit Malayalam
dialoginput.plain.oriya=Lohit Oriya
dialoginput.plain.punjabi=Lohit Punjabi
dialoginput.plain.tamil=Lohit Tamil
dialoginput.plain.telugu=Lohit Telugu
dialoginput.plain.sinhala=LKLUG
dialoginput.bold.latin-1=DejaVu Sans Mono Bold
dialoginput.bold.japanese-x0208=Sazanami Gothic
dialoginput.bold.korean=Baekmuk Gulim
dialoginput.bold.chinese-big5=AR PL ShanHeiSun Uni
dialoginput.bold.chinese-gb18030=AR PL ShanHeiSun Uni
dialoginput.bold.bengali=Lohit Bengali
dialoginput.bold.gujarati=Lohit Gujarati
dialoginput.bold.hindi=Lohit Hindi
dialoginput.bold.malayalam=Lohit Malayalam
dialoginput.bold.oriya=Lohit Oriya
dialoginput.bold.punjabi=Lohit Punjabi
dialoginput.bold.tamil=Lohit Tamil
dialoginput.bold.telugu=Lohit Telugu
dialoginput.bold.sinhala=LKLUG
dialoginput.italic.latin-1=DejaVu Sans Mono Oblique
dialoginput.italic.japanese-x0208=Sazanami Gothic
dialoginput.italic.korean=Baekmuk Gulim
dialoginput.italic.chinese-big5=AR PL ShanHeiSun Uni
dialoginput.italic.chinese-gb18030=AR PL ShanHeiSun Uni
dialoginput.italic.bengali=Lohit Bengali
dialoginput.italic.gujarati=Lohit Gujarati
dialoginput.italic.hindi=Lohit Hindi
dialoginput.italic.malayalam=Lohit Malayalam
dialoginput.italic.oriya=Lohit Oriya
dialoginput.italic.punjabi=Lohit Punjabi
dialoginput.italic.tamil=Lohit Tamil
dialoginput.italic.telugu=Lohit Telugu
dialoginput.italic.sinhala=LKLUG
dialoginput.bolditalic.latin-1=DejaVu Sans Mono Bold Oblique
dialoginput.bolditalic.japanese-x0208=Sazanami Gothic
dialoginput.bolditalic.korean=Baekmuk Gulim
dialoginput.bolditalic.chinese-big5=AR PL ShanHeiSun Uni
dialoginput.bolditalic.chinese-gb18030=AR PL ShanHeiSun Uni
dialoginput.bolditalic.bengali=Lohit Bengali
dialoginput.bolditalic.gujarati=Lohit Gujarati
dialoginput.bolditalic.hindi=Lohit Hindi
dialoginput.bolditalic.malayalam=Lohit Malayalam
dialoginput.bolditalic.oriya=Lohit Oriya
dialoginput.bolditalic.punjabi=Lohit Punjabi
dialoginput.bolditalic.tamil=Lohit Tamil
dialoginput.bolditalic.telugu=Lohit Telugu
dialoginput.bolditalic.sinhala=LKLUG
# Search Sequences
sequence.allfonts=latin-1
sequence.allfonts.Big5=chinese-big5,latin-1
sequence.allfonts.x-euc-jp-linux=japanese-x0208,latin-1
sequence.allfonts.EUC-KR=korean,latin-1
sequence.allfonts.GB18030=chinese-gb18030,latin-1
sequence.fallback=chinese-big5,chinese-gb18030,japanese-x0208,korean,bengali,gujarati,hindi,oriya,punjabi,malayalam,tamil,telugu,sinhala
# Font File Names
# media-fonts/dejavu
filename.DejaVu_Sans=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSans.ttf
filename.DejaVu_Sans_Bold=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSans-Bold.ttf
filename.DejaVu_Sans_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSans-Oblique.ttf
filename.DejaVu_Sans_Bold_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf
filename.DejaVu_Sans_Mono=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSansMono.ttf
filename.DejaVu_Sans_Mono_Bold=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSansMono-Bold.ttf
filename.DejaVu_Sans_Mono_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSansMono-Oblique.ttf
filename.DejaVu_Sans_Mono_Bold_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSansMono-BoldOblique.ttf
filename.DejaVu_Serif=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSerif.ttf
filename.DejaVu_Serif_Bold=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf
filename.DejaVu_Serif_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSerif-Oblique.ttf
filename.DejaVu_Serif_Bold_Oblique=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/dejavu/DejaVuSerif-BoldOblique.ttf
# media-fonts/sazanami
filename.Sazanami_Gothic=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/sazanami/sazanami-gothic.ttf
filename.Sazanami_Mincho=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/sazanami/sazanami-mincho.ttf
# media-fonts/arphicfonts
filename.AR_PL_ShanHeiSun_Uni=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/uming.ttc
filename.AR_PL_ZenKai_Uni=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/ukai.ttc
# media-fonts/baekmuk-fonts
filename.Baekmuk_Gulim=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/baekmuk-fonts/gulim.ttf
filename.Baekmuk_Batang=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/baekmuk-fonts/batang.ttf
# media-fonts/lohit-fonts
filename.Lohit_Bengali=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_bn.ttf
filename.Lohit_Gujarati=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_gu.ttf
filename.Lohit_Hindi=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_hi.ttf
filename.Lohit_Kannda=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_kn.ttf
filename.Lohit_Malayalam=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_ml.ttf
filename.Lohit_Oriya=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_or.ttf
filename.Lohit_Punjabi=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_pa.ttf
filename.Lohit_Tamil=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_ta.ttf
filename.Lohit_Telugu=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/indic/lohit_te.ttf
# media-fonts/lklug
filename.LKLUG=@GENTOO_PORTAGE_EPREFIX@/usr/share/fonts/lklug/lklug.ttf

View File

@ -0,0 +1,358 @@
#!/usr/bin/perl
# Copyright (C) 2007, 2008 Red Hat, Inc.
#
# 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.
# generate-cacerts.pl generates a JKS keystore named 'cacerts' from
# OpenSSL's certificate bundle using OpenJDK's keytool.
# First extract each of OpenSSL's bundled certificates into its own
# aliased filename.
# Downloaded from http://cvs.fedoraproject.org/viewvc/rpms/ca-certificates/F-12/generate-cacerts.pl?revision=1.2
# Check and prevention of duplicate aliases added by Vlastimil Babka <caster@gentoo.org>
$file = $ARGV[1];
open(CERTS, $file);
@certs = <CERTS>;
close(CERTS);
$pem_file_count = 0;
$in_cert_block = 0;
$write_current_cert = 1;
foreach $cert (@certs)
{
if ($cert =~ /Issuer: /)
{
$_ = $cert;
if ($cert =~ /personal-freemail/)
{
$cert_alias = "thawtepersonalfreemailca";
}
elsif ($cert =~ /personal-basic/)
{
$cert_alias = "thawtepersonalbasicca";
}
elsif ($cert =~ /personal-premium/)
{
$cert_alias = "thawtepersonalpremiumca";
}
elsif ($cert =~ /server-certs/)
{
$cert_alias = "thawteserverca";
}
elsif ($cert =~ /premium-server/)
{
$cert_alias = "thawtepremiumserverca";
}
elsif ($cert =~ /Class 1 Public Primary Certification Authority$/)
{
$cert_alias = "verisignclass1ca";
}
elsif ($cert =~ /Class 1 Public Primary Certification Authority - G2/)
{
$cert_alias = "verisignclass1g2ca";
}
elsif ($cert =~
/VeriSign Class 1 Public Primary Certification Authority - G3/)
{
$cert_alias = "verisignclass1g3ca";
}
elsif ($cert =~ /Class 2 Public Primary Certification Authority$/)
{
$cert_alias = "verisignclass2ca";
}
elsif ($cert =~ /Class 2 Public Primary Certification Authority - G2/)
{
$cert_alias = "verisignclass2g2ca";
}
elsif ($cert =~
/VeriSign Class 2 Public Primary Certification Authority - G3/)
{
$cert_alias = "verisignclass2g3ca";
}
elsif ($cert =~ /Class 3 Public Primary Certification Authority$/)
{
$cert_alias = "verisignclass3ca";
}
# Version 1 of Class 3 Public Primary Certification Authority
# - G2 is added. Version 3 is excluded. See below.
elsif ($cert =~
/VeriSign Class 3 Public Primary Certification Authority - G3/)
{
$cert_alias = "verisignclass3g3ca";
}
elsif ($cert =~
/RSA Data Security.*Secure Server Certification Authority/)
{
$cert_alias = "verisignserverca";
}
elsif ($cert =~ /GTE CyberTrust Global Root/)
{
$cert_alias = "gtecybertrustglobalca";
}
elsif ($cert =~ /Baltimore CyberTrust Root/)
{
$cert_alias = "baltimorecybertrustca";
}
elsif ($cert =~ /www.entrust.net\/Client_CA_Info\/CPS/)
{
$cert_alias = "entrustclientca";
}
elsif ($cert =~ /www.entrust.net\/GCCA_CPS/)
{
$cert_alias = "entrustglobalclientca";
}
elsif ($cert =~ /www.entrust.net\/CPS_2048/)
{
$cert_alias = "entrust2048ca";
}
elsif ($cert =~ /www.entrust.net\/CPS /)
{
$cert_alias = "entrustsslca";
}
elsif ($cert =~ /www.entrust.net\/SSL_CPS/)
{
$cert_alias = "entrustgsslca";
}
elsif ($cert =~ /The Go Daddy Group/)
{
$cert_alias = "godaddyclass2ca";
}
elsif ($cert =~ /Starfield Class 2 Certification Authority/)
{
$cert_alias = "starfieldclass2ca";
}
elsif ($cert =~ /ValiCert Class 2 Policy Validation Authority/)
{
$cert_alias = "valicertclass2ca";
}
elsif ($cert =~ /GeoTrust Global CA$/)
{
$cert_alias = "geotrustglobalca";
}
elsif ($cert =~ /Equifax Secure Certificate Authority/)
{
$cert_alias = "equifaxsecureca";
}
elsif ($cert =~ /Equifax Secure eBusiness CA-1/)
{
$cert_alias = "equifaxsecureebusinessca1";
}
elsif ($cert =~ /Equifax Secure eBusiness CA-2/)
{
$cert_alias = "equifaxsecureebusinessca2";
}
elsif ($cert =~ /Equifax Secure Global eBusiness CA-1/)
{
$cert_alias = "equifaxsecureglobalebusinessca1";
}
elsif ($cert =~ /Sonera Class1 CA/)
{
$cert_alias = "soneraclass1ca";
}
elsif ($cert =~ /Sonera Class2 CA/)
{
$cert_alias = "soneraclass2ca";
}
elsif ($cert =~ /AAA Certificate Services/)
{
$cert_alias = "comodoaaaca";
}
elsif ($cert =~ /AddTrust Class 1 CA Root/)
{
$cert_alias = "addtrustclass1ca";
}
elsif ($cert =~ /AddTrust External CA Root/)
{
$cert_alias = "addtrustexternalca";
}
elsif ($cert =~ /AddTrust Qualified CA Root/)
{
$cert_alias = "addtrustqualifiedca";
}
elsif ($cert =~ /UTN-USERFirst-Hardware/)
{
$cert_alias = "utnuserfirsthardwareca";
}
elsif ($cert =~ /UTN-USERFirst-Client Authentication and Email/)
{
$cert_alias = "utnuserfirstclientauthemailca";
}
elsif ($cert =~ /UTN - DATACorp SGC/)
{
$cert_alias = "utndatacorpsgcca";
}
elsif ($cert =~ /UTN-USERFirst-Object/)
{
$cert_alias = "utnuserfirstobjectca";
}
elsif ($cert =~ /America Online Root Certification Authority 1/)
{
$cert_alias = "aolrootca1";
}
elsif ($cert =~ /DigiCert Assured ID Root CA/)
{
$cert_alias = "digicertassuredidrootca";
}
elsif ($cert =~ /DigiCert Global Root CA/)
{
$cert_alias = "digicertglobalrootca";
}
elsif ($cert =~ /DigiCert High Assurance EV Root CA/)
{
$cert_alias = "digicerthighassuranceevrootca";
}
elsif ($cert =~ /GlobalSign Root CA$/)
{
$cert_alias = "globalsignca";
}
elsif ($cert =~ /GlobalSign Root CA - R2/)
{
$cert_alias = "globalsignr2ca";
}
elsif ($cert =~ /Elektronik.*Kas.*2005/)
{
$cert_alias = "extra-elektronikkas2005";
}
elsif ($cert =~ /Elektronik/)
{
$cert_alias = "extra-elektronik2005";
}
# Mozilla does not provide these certificates:
# baltimorecodesigningca
# gtecybertrust5ca
# trustcenterclass2caii
# trustcenterclass4caii
# trustcenteruniversalcai
else
{
# Generate an alias using the OU and CN attributes of the
# Issuer field if both are present, otherwise use only the
# CN attribute. The Issuer field must have either the OU
# or the CN attribute.
$_ = $cert;
if ($cert =~ /OU=/)
{
s/Issuer:.*?OU=//;
# Remove other occurrences of OU=.
s/OU=.*CN=//;
# Remove CN= if there were not other occurrences of OU=.
s/CN=//;
s/\/emailAddress.*//;
s/Certificate Authority/ca/g;
s/Certification Authority/ca/g;
}
elsif ($cert =~ /CN=/)
{
s/Issuer:.*CN=//;
s/\/emailAddress.*//;
s/Certificate Authority/ca/g;
s/Certification Authority/ca/g;
}
s/\W//g;
tr/A-Z/a-z/;
$cert_alias = "extra-$_";
}
while (-e "$cert_alias.pem")
{
$cert_alias = "$cert_alias" . "_";
}
}
# When it attempts to parse:
#
# Class 3 Public Primary Certification Authority - G2, Version 3
#
# keytool says:
#
# #2: ObjectId: 1.3.6.1.5.5.7.1.1 Criticality=false
# Unparseable AuthorityInfoAccess extension due to
# java.io.IOException: Invalid encoding of URI
#
# If we do not exclude this file
# openjdk/jdk/test/lib/security/cacerts/VerifyCACerts.java fails
# on this cert, printing:
#
# Couldn't verify: java.security.SignatureException: Signature
# does not match.
#
elsif ($cert =~
/A6:0F:34:C8:62:6C:81:F6:8B:F7:7D:A9:F6:67:58:8A:90:3F:7D:36/)
{
$write_current_cert = 0;
$pem_file_count--;
}
elsif ($cert eq "-----BEGIN CERTIFICATE-----\n")
{
if ($in_cert_block != 0)
{
die "$file is malformed.";
}
$in_cert_block = 1;
if ($write_current_cert == 1)
{
$pem_file_count++;
if (-e "$cert_alias.pem")
{
print "$cert_alias";
die "already exists"
}
open(PEM, ">$cert_alias.pem");
print PEM $cert;
}
}
elsif ($cert eq "-----END CERTIFICATE-----\n")
{
$in_cert_block = 0;
if ($write_current_cert == 1)
{
print PEM $cert;
close(PEM);
}
$write_current_cert = 1
}
else
{
if ($in_cert_block == 1 && $write_current_cert == 1)
{
print PEM $cert;
}
}
}
# Check that the correct number of .pem files were produced.
@pem_files = <*.pem>;
if (@pem_files != $pem_file_count)
{
print "$pem_file_count";
die "Number of .pem files produced does not match".
" number of certs read from $file.";
}
# Now store each cert in the 'cacerts' file using keytool.
$certs_written_count = 0;
foreach $pem_file (@pem_files)
{
system "$ARGV[0] -noprompt -import".
" -alias `basename $pem_file .pem`".
" -keystore cacerts -storepass 'changeit' -file $pem_file";
unlink($pem_file);
$certs_written_count++;
}
# Check that the correct number of certs were added to the keystore.
if ($certs_written_count != $pem_file_count)
{
die "Number of certs added to keystore does not match".
" number of certs read from $file.";
}

View File

@ -0,0 +1,577 @@
Taken from:
http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000399.html
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-08-30 21:15:49.115227000 +0000
@@ -1040,8 +1040,8 @@
object = builder()->CreateInlineOop(field->holder());
BasicType basic_type = field->type()->basic_type();
- const Type *stack_type = SharkType::to_stackType(basic_type);
- const Type *field_type = SharkType::to_arrayType(basic_type);
+ Type *stack_type = SharkType::to_stackType(basic_type);
+ Type *field_type = SharkType::to_arrayType(basic_type);
Value *addr = builder()->CreateAddressOfStructEntry(
object, in_ByteSize(field->offset_in_bytes()),
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-08-30 21:15:49.315227000 +0000
@@ -47,14 +47,14 @@
// Helpers for accessing structures
Value* SharkBuilder::CreateAddressOfStructEntry(Value* base,
ByteSize offset,
- const Type* type,
+ Type* type,
const char* name) {
return CreateBitCast(CreateStructGEP(base, in_bytes(offset)), type, name);
}
LoadInst* SharkBuilder::CreateValueOfStructEntry(Value* base,
ByteSize offset,
- const Type* type,
+ Type* type,
const char* name) {
return CreateLoad(
CreateAddressOfStructEntry(
@@ -71,7 +71,7 @@
}
Value* SharkBuilder::CreateArrayAddress(Value* arrayoop,
- const Type* element_type,
+ Type* element_type,
int element_bytes,
ByteSize base_offset,
Value* index,
@@ -114,7 +114,7 @@
// Helpers for creating intrinsics and external functions.
-const Type* SharkBuilder::make_type(char type, bool void_ok) {
+Type* SharkBuilder::make_type(char type, bool void_ok) {
switch (type) {
// Primitive types
case 'c':
@@ -159,14 +159,14 @@
}
}
-const FunctionType* SharkBuilder::make_ftype(const char* params,
+FunctionType* SharkBuilder::make_ftype(const char* params,
const char* ret) {
- std::vector<const Type*> param_types;
+ std::vector<Type*> param_types;
for (const char* c = params; *c; c++)
param_types.push_back(make_type(*c, false));
assert(strlen(ret) == 1, "should be");
- const Type *return_type = make_type(*ret, true);
+ Type *return_type = make_type(*ret, true);
return FunctionType::get(return_type, param_types, false);
}
@@ -565,7 +565,7 @@
Value* SharkBuilder::CreateInlineData(void* data,
size_t size,
- const Type* type,
+ Type* type,
const char* name) {
return CreateIntToPtr(
code_buffer_address(code_buffer()->inline_data(data, size)),
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp 2011-08-30 19:52:46.735227001 +0000
@@ -57,18 +57,18 @@
public:
llvm::Value* CreateAddressOfStructEntry(llvm::Value* base,
ByteSize offset,
- const llvm::Type* type,
+ llvm::Type* type,
const char *name = "");
llvm::LoadInst* CreateValueOfStructEntry(llvm::Value* base,
ByteSize offset,
- const llvm::Type* type,
+ llvm::Type* type,
const char *name = "");
// Helpers for accessing arrays.
public:
llvm::LoadInst* CreateArrayLength(llvm::Value* arrayoop);
llvm::Value* CreateArrayAddress(llvm::Value* arrayoop,
- const llvm::Type* element_type,
+ llvm::Type* element_type,
int element_bytes,
ByteSize base_offset,
llvm::Value* index,
@@ -85,8 +85,8 @@
// Helpers for creating intrinsics and external functions.
private:
- static const llvm::Type* make_type(char type, bool void_ok);
- static const llvm::FunctionType* make_ftype(const char* params,
+ static llvm::Type* make_type(char type, bool void_ok);
+ static llvm::FunctionType* make_ftype(const char* params,
const char* ret);
llvm::Value* make_function(const char* name,
const char* params,
@@ -211,7 +211,7 @@
}
llvm::Value* CreateInlineData(void* data,
size_t size,
- const llvm::Type* type,
+ llvm::Type* type,
const char* name = "");
// Helpers for creating basic blocks.
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp 2011-08-30 19:52:46.735227001 +0000
@@ -230,7 +230,7 @@
}
Value* SharkOSREntryCacher::CreateAddressOfOSRBufEntry(int offset,
- const Type* type) {
+ Type* type) {
Value *result = builder()->CreateStructGEP(osr_buf(), offset);
if (type != SharkType::intptr_type())
result = builder()->CreateBitCast(result, PointerType::getUnqual(type));
@@ -254,12 +254,12 @@
}
}
-void SharkDecacher::write_value_to_frame(const Type* type,
+void SharkDecacher::write_value_to_frame(Type* type,
Value* value,
int offset) {
builder()->CreateStore(value, stack()->slot_addr(offset, type));
}
-Value* SharkCacher::read_value_from_frame(const Type* type, int offset) {
+Value* SharkCacher::read_value_from_frame(Type* type, int offset) {
return builder()->CreateLoad(stack()->slot_addr(offset, type));
}
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp 2011-08-30 19:52:46.745227001 +0000
@@ -192,7 +192,7 @@
// Writer helper
protected:
- void write_value_to_frame(const llvm::Type* type,
+ void write_value_to_frame(llvm::Type* type,
llvm::Value* value,
int offset);
};
@@ -321,7 +321,7 @@
// Writer helper
protected:
- llvm::Value* read_value_from_frame(const llvm::Type* type, int offset);
+ llvm::Value* read_value_from_frame(llvm::Type* type, int offset);
};
class SharkJavaCallCacher : public SharkCacher {
@@ -422,7 +422,7 @@
// Helper
private:
- llvm::Value* CreateAddressOfOSRBufEntry(int offset, const llvm::Type* type);
+ llvm::Value* CreateAddressOfOSRBufEntry(int offset, llvm::Type* type);
};
#endif // SHARE_VM_SHARK_SHARKCACHEDECACHE_HPP
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkContext.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkContext.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkContext.cpp 2011-08-30 19:52:46.745227001 +0000
@@ -76,7 +76,7 @@
_zeroStack_type = PointerType::getUnqual(
ArrayType::get(jbyte_type(), sizeof(ZeroStack)));
- std::vector<const Type*> params;
+ std::vector<Type*> params;
params.push_back(methodOop_type());
params.push_back(intptr_type());
params.push_back(thread_type());
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkContext.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkContext.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkContext.hpp 2011-08-30 19:55:03.425227001 +0000
@@ -68,118 +68,118 @@
module()->getFunctionList().push_back(function);
}
llvm::Constant* get_external(const char* name,
- const llvm::FunctionType* sig) {
+ llvm::FunctionType* sig) {
return module()->getOrInsertFunction(name, sig);
}
// Basic types
private:
- const llvm::Type* _void_type;
- const llvm::IntegerType* _bit_type;
- const llvm::IntegerType* _jbyte_type;
- const llvm::IntegerType* _jshort_type;
- const llvm::IntegerType* _jint_type;
- const llvm::IntegerType* _jlong_type;
- const llvm::Type* _jfloat_type;
- const llvm::Type* _jdouble_type;
+ llvm::Type* _void_type;
+ llvm::IntegerType* _bit_type;
+ llvm::IntegerType* _jbyte_type;
+ llvm::IntegerType* _jshort_type;
+ llvm::IntegerType* _jint_type;
+ llvm::IntegerType* _jlong_type;
+ llvm::Type* _jfloat_type;
+ llvm::Type* _jdouble_type;
public:
- const llvm::Type* void_type() const {
+ llvm::Type* void_type() const {
return _void_type;
}
- const llvm::IntegerType* bit_type() const {
+ llvm::IntegerType* bit_type() const {
return _bit_type;
}
- const llvm::IntegerType* jbyte_type() const {
+ llvm::IntegerType* jbyte_type() const {
return _jbyte_type;
}
- const llvm::IntegerType* jshort_type() const {
+ llvm::IntegerType* jshort_type() const {
return _jshort_type;
}
- const llvm::IntegerType* jint_type() const {
+ llvm::IntegerType* jint_type() const {
return _jint_type;
}
- const llvm::IntegerType* jlong_type() const {
+ llvm::IntegerType* jlong_type() const {
return _jlong_type;
}
- const llvm::Type* jfloat_type() const {
+ llvm::Type* jfloat_type() const {
return _jfloat_type;
}
- const llvm::Type* jdouble_type() const {
+ llvm::Type* jdouble_type() const {
return _jdouble_type;
}
- const llvm::IntegerType* intptr_type() const {
+ llvm::IntegerType* intptr_type() const {
return LP64_ONLY(jlong_type()) NOT_LP64(jint_type());
}
// Compound types
private:
- const llvm::PointerType* _itableOffsetEntry_type;
- const llvm::PointerType* _jniEnv_type;
- const llvm::PointerType* _jniHandleBlock_type;
- const llvm::PointerType* _klass_type;
- const llvm::PointerType* _methodOop_type;
- const llvm::ArrayType* _monitor_type;
- const llvm::PointerType* _oop_type;
- const llvm::PointerType* _thread_type;
- const llvm::PointerType* _zeroStack_type;
- const llvm::FunctionType* _entry_point_type;
- const llvm::FunctionType* _osr_entry_point_type;
+ llvm::PointerType* _itableOffsetEntry_type;
+ llvm::PointerType* _jniEnv_type;
+ llvm::PointerType* _jniHandleBlock_type;
+ llvm::PointerType* _klass_type;
+ llvm::PointerType* _methodOop_type;
+ llvm::ArrayType* _monitor_type;
+ llvm::PointerType* _oop_type;
+ llvm::PointerType* _thread_type;
+ llvm::PointerType* _zeroStack_type;
+ llvm::FunctionType* _entry_point_type;
+ llvm::FunctionType* _osr_entry_point_type;
public:
- const llvm::PointerType* itableOffsetEntry_type() const {
+ llvm::PointerType* itableOffsetEntry_type() const {
return _itableOffsetEntry_type;
}
- const llvm::PointerType* jniEnv_type() const {
+ llvm::PointerType* jniEnv_type() const {
return _jniEnv_type;
}
- const llvm::PointerType* jniHandleBlock_type() const {
+ llvm::PointerType* jniHandleBlock_type() const {
return _jniHandleBlock_type;
}
- const llvm::PointerType* klass_type() const {
+ llvm::PointerType* klass_type() const {
return _klass_type;
}
- const llvm::PointerType* methodOop_type() const {
+ llvm::PointerType* methodOop_type() const {
return _methodOop_type;
}
- const llvm::ArrayType* monitor_type() const {
+ llvm::ArrayType* monitor_type() const {
return _monitor_type;
}
- const llvm::PointerType* oop_type() const {
+ llvm::PointerType* oop_type() const {
return _oop_type;
}
- const llvm::PointerType* thread_type() const {
+ llvm::PointerType* thread_type() const {
return _thread_type;
}
- const llvm::PointerType* zeroStack_type() const {
+ llvm::PointerType* zeroStack_type() const {
return _zeroStack_type;
}
- const llvm::FunctionType* entry_point_type() const {
+ llvm::FunctionType* entry_point_type() const {
return _entry_point_type;
}
- const llvm::FunctionType* osr_entry_point_type() const {
+ llvm::FunctionType* osr_entry_point_type() const {
return _osr_entry_point_type;
}
// Mappings
private:
- const llvm::Type* _to_stackType[T_CONFLICT];
- const llvm::Type* _to_arrayType[T_CONFLICT];
+ llvm::Type* _to_stackType[T_CONFLICT];
+ llvm::Type* _to_arrayType[T_CONFLICT];
private:
- const llvm::Type* map_type(const llvm::Type* const* table,
+ llvm::Type* map_type(llvm::Type* const* table,
BasicType type) const {
assert(type >= 0 && type < T_CONFLICT, "unhandled type");
- const llvm::Type* result = table[type];
+ llvm::Type* result = table[type];
assert(type != NULL, "unhandled type");
return result;
}
public:
- const llvm::Type* to_stackType(BasicType type) const {
+ llvm::Type* to_stackType(BasicType type) const {
return map_type(_to_stackType, type);
}
- const llvm::Type* to_arrayType(BasicType type) const {
+ llvm::Type* to_arrayType(BasicType type) const {
return map_type(_to_arrayType, type);
}
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-08-30 21:16:20.725227002 +0000
@@ -83,9 +83,9 @@
}
// Start building the argument list
- std::vector<const Type*> param_types;
+ std::vector<Type*> param_types;
std::vector<Value*> param_values;
- const PointerType *box_type = PointerType::getUnqual(SharkType::oop_type());
+ PointerType *box_type = PointerType::getUnqual(SharkType::oop_type());
// First argument is the JNIEnv
param_types.push_back(SharkType::jniEnv_type());
@@ -170,7 +170,7 @@
// fall through
default:
- const Type *param_type = SharkType::to_stackType(arg_type(i));
+ Type *param_type = SharkType::to_stackType(arg_type(i));
param_types.push_back(param_type);
param_values.push_back(
@@ -201,7 +201,7 @@
// Make the call
BasicType result_type = target()->result_type();
- const Type* return_type;
+ Type* return_type;
if (result_type == T_VOID)
return_type = SharkType::void_type();
else if (is_returning_oop())
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkStack.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkStack.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkStack.cpp 2011-08-30 19:52:46.745227001 +0000
@@ -163,7 +163,7 @@
}
Value* SharkStack::slot_addr(int offset,
- const Type* type,
+ Type* type,
const char* name) const {
bool needs_cast = type && type != SharkType::intptr_type();
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkStack.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkStack.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkStack.hpp 2011-08-30 19:52:46.755227001 +0000
@@ -204,7 +204,7 @@
// Addresses of things in the frame
public:
llvm::Value* slot_addr(int offset,
- const llvm::Type* type = NULL,
+ llvm::Type* type = NULL,
const char* name = "") const;
llvm::Value* monitor_addr(int index) const {
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-08-30 19:52:46.755227001 +0000
@@ -829,7 +829,7 @@
builder()->CreateArrayAddress(
array->jarray_value(), basic_type, index->jint_value()));
- const Type *stack_type = SharkType::to_stackType(basic_type);
+ Type *stack_type = SharkType::to_stackType(basic_type);
if (value->getType() != stack_type)
value = builder()->CreateIntCast(value, stack_type, basic_type != T_CHAR);
@@ -916,7 +916,7 @@
ShouldNotReachHere();
}
- const Type *array_type = SharkType::to_arrayType(basic_type);
+ Type *array_type = SharkType::to_arrayType(basic_type);
if (value->getType() != array_type)
value = builder()->CreateIntCast(value, array_type, basic_type != T_CHAR);
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkType.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkType.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkType.hpp 2011-08-30 19:52:46.755227001 +0000
@@ -40,82 +40,82 @@
// Basic types
public:
- static const llvm::Type* void_type() {
+ static llvm::Type* void_type() {
return context().void_type();
}
- static const llvm::IntegerType* bit_type() {
+ static llvm::IntegerType* bit_type() {
return context().bit_type();
}
- static const llvm::IntegerType* jbyte_type() {
+ static llvm::IntegerType* jbyte_type() {
return context().jbyte_type();
}
- static const llvm::IntegerType* jshort_type() {
+ static llvm::IntegerType* jshort_type() {
return context().jshort_type();
}
- static const llvm::IntegerType* jint_type() {
+ static llvm::IntegerType* jint_type() {
return context().jint_type();
}
- static const llvm::IntegerType* jlong_type() {
+ static llvm::IntegerType* jlong_type() {
return context().jlong_type();
}
- static const llvm::Type* jfloat_type() {
+ static llvm::Type* jfloat_type() {
return context().jfloat_type();
}
- static const llvm::Type* jdouble_type() {
+ static llvm::Type* jdouble_type() {
return context().jdouble_type();
}
- static const llvm::IntegerType* intptr_type() {
+ static llvm::IntegerType* intptr_type() {
return context().intptr_type();
}
// Compound types
public:
- static const llvm::PointerType* itableOffsetEntry_type() {
+ static llvm::PointerType* itableOffsetEntry_type() {
return context().itableOffsetEntry_type();
}
- static const llvm::PointerType* jniEnv_type() {
+ static llvm::PointerType* jniEnv_type() {
return context().jniEnv_type();
}
- static const llvm::PointerType* jniHandleBlock_type() {
+ static llvm::PointerType* jniHandleBlock_type() {
return context().jniHandleBlock_type();
}
- static const llvm::PointerType* klass_type() {
+ static llvm::PointerType* klass_type() {
return context().klass_type();
}
- static const llvm::PointerType* methodOop_type() {
+ static llvm::PointerType* methodOop_type() {
return context().methodOop_type();
}
- static const llvm::ArrayType* monitor_type() {
+ static llvm::ArrayType* monitor_type() {
return context().monitor_type();
}
- static const llvm::PointerType* oop_type() {
+ static llvm::PointerType* oop_type() {
return context().oop_type();
}
- static const llvm::PointerType* thread_type() {
+ static llvm::PointerType* thread_type() {
return context().thread_type();
}
- static const llvm::PointerType* zeroStack_type() {
+ static llvm::PointerType* zeroStack_type() {
return context().zeroStack_type();
}
- static const llvm::FunctionType* entry_point_type() {
+ static llvm::FunctionType* entry_point_type() {
return context().entry_point_type();
}
- static const llvm::FunctionType* osr_entry_point_type() {
+ static llvm::FunctionType* osr_entry_point_type() {
return context().osr_entry_point_type();
}
// Mappings
public:
- static const llvm::Type* to_stackType(BasicType type) {
+ static llvm::Type* to_stackType(BasicType type) {
return context().to_stackType(type);
}
- static const llvm::Type* to_stackType(ciType* type) {
+ static llvm::Type* to_stackType(ciType* type) {
return to_stackType(type->basic_type());
}
- static const llvm::Type* to_arrayType(BasicType type) {
+ static llvm::Type* to_arrayType(BasicType type) {
return context().to_arrayType(type);
}
- static const llvm::Type* to_arrayType(ciType* type) {
+ static llvm::Type* to_arrayType(ciType* type) {
return to_arrayType(type->basic_type());
}
};
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp 2011-08-30 20:23:51.805227002 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp 2011-08-30 20:24:26.455227000 +0000
@@ -91,7 +91,7 @@
bool is_osr() const {
return flow()->is_osr_flow();
}
- const llvm::FunctionType* entry_point_type() const {
+ llvm::FunctionType* entry_point_type() const {
if (is_osr())
return SharkType::osr_entry_point_type();
else

View File

@ -0,0 +1,143 @@
Author: Ralph Sennhaser <sera@gentoo.org>
The idea is to apply the pax markings before using a freshly built jdk. Be it
for running tests or building additonal vms or after bootstrap to build the
final jdk.
There are currently two types of pax markings with the userspace utilities
chpax and paxctl. Both types of pax marking are base on modifing the ELFs. A
third type based on xattrs is in development.
diff --git a/Makefile.am b/Makefile.am
index 82ef261..e17fa5f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -421,7 +421,7 @@ else
ICEDTEA_PATCHES += patches/nss-not-enabled-config.patch
endif
-if HAS_PAX
+if WITH_PAX
ICEDTEA_PATCHES += patches/no-test_gamma.patch
endif
@@ -450,7 +450,7 @@ ICEDTEA_ECJ_PATCHES += patches/ecj/cp40188-opengl.patch
endif
endif
-if !HAS_PAX
+if !WITH_PAX
ICEDTEA_ECJ_PATCHES += patches/ecj/no-test_gamma.patch
endif
@@ -1359,6 +1359,7 @@ stamps/icedtea.stamp: stamps/bootstrap-directory-symlink.stamp \
$(ICEDTEA_ENV) \
-C openjdk \
$(ICEDTEA_BUILD_TARGET)
+ $(abs_top_builddir)/pax-mark-vm $(BUILD_OUTPUT_DIR)/j2sdk-image
mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
mkdir -p $(BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR)
mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/ext
@@ -1586,6 +1587,7 @@ stamps/icedtea-ecj.stamp: stamps/bootstrap-directory-symlink-ecj.stamp \
$(ICEDTEA_ENV_ECJ) \
-C openjdk-ecj/ \
$(ICEDTEA_BUILD_TARGET)
+ $(abs_top_builddir)/pax-mark-vm $(ECJ_BUILD_OUTPUT_DIR)/j2sdk-image
@echo "ecj-poured IcedTea is served:" \
$(ECJ_BUILD_OUTPUT_DIR)
mkdir -p stamps
diff --git a/acinclude.m4 b/acinclude.m4
index 503131c..e80b209 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -1677,3 +1677,49 @@ AM_CONDITIONAL([CP39408_JAVAH], test x"${it_cv_cp39408_javah}" = "xyes")
AM_CONDITIONAL([CP40188_JAVAH], test x"${it_cv_cp40188_javah}" = "xyes")
AC_PROVIDE([$0])dnl
])
+
+AC_DEFUN_ONCE([IT_WITH_PAX],
+[
+ AC_MSG_CHECKING([for pax utility to use])
+ AC_ARG_WITH([pax],
+ [AS_HELP_STRING(--with-pax=COMMAND,the command used for pax marking)],
+ [
+ PAX_COMMAND=${withval}
+ if test "x${PAX_COMMAND}" = "xno"; then
+ PAX_COMMAND="not specified"
+ fi
+ ],
+ [
+ PAX_COMMAND="not specified"
+ ])
+ case "x${PAX_COMMAND}" in
+ xchpax)
+ case "${host_cpu}" in
+ i?86)
+ PAX_COMMAND_ARGS="-msp"
+ ;;
+ *)
+ PAX_COMMAND_ARGS="-m"
+ ;;
+ esac
+ ;;
+ xpaxctl)
+ case "${host_cpu}" in
+ i?86)
+ PAX_COMMAND_ARGS="-msp"
+ ;;
+ *)
+ PAX_COMMAND_ARGS="-m"
+ ;;
+ esac
+ ;;
+ *)
+ PAX_COMMAND="not specified"
+ PAX_COMMAND_ARGS="not specified"
+ ;;
+ esac
+ AM_CONDITIONAL(WITH_PAX, test "x${PAX_COMMAND}" != "xnot specified")
+ AC_MSG_RESULT(${PAX_COMMAND})
+ AC_SUBST(PAX_COMMAND)
+ AC_SUBST(PAX_COMMAND_ARGS)
+])
diff --git a/configure.ac b/configure.ac
index 580840e..f37ef68 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,7 +51,6 @@ IT_CHECK_GCC_VERSION
IT_CHECK_NUMBER_OF_PARALLEL_JOBS
IT_CP_SUPPORTS_REFLINK
IT_CAN_HARDLINK_TO_SOURCE_TREE
-IT_CHECK_FOR_PAX
IT_LOCATE_NSS
# Use xvfb-run if found to run gui tests (check-jdk).
@@ -189,6 +188,9 @@ IT_WITH_TZDATA_DIR
IT_GETDTDTYPE_CHECK
IT_JAVAH
+IT_WITH_PAX
+AC_CONFIG_FILES([pax-mark-vm], [chmod +x pax-mark-vm])
+
dnl pkgconfig cannot be used to find these headers and libraries.
AC_CHECK_HEADERS([cups/cups.h cups/ppd.h],[]
,[AC_MSG_ERROR("CUPS headers were not found -
diff --git a/pax-mark-vm.in b/pax-mark-vm.in
new file mode 100644
index 0000000..bdff735
--- /dev/null
+++ b/pax-mark-vm.in
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Taken from Gentoo's pax-utils.eclass
+list_paxables() {
+ file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
+}
+
+if test "@PAX_COMMAND@" != "not specified"; then
+ for paxable in `list_paxables "${1}"/bin/* "${1}"/jre/bin/*`; do
+ echo "PaX mark @PAX_COMMAND_ARGS@ ${paxable}"
+ @PAX_COMMAND@ @PAX_COMMAND_ARGS@ "${paxable}"
+ done
+fi

View File

@ -0,0 +1,217 @@
Author: Ralph Sennhauser <sera@gentoo.org>
Split out add-shark target.
This way the shark build will end up in shark instead of zero and java -zero
will work as expected. Ie. allows for easier setup of per app vm preferences
if desired. Also removes a bunch of conditionals which will simplify writing
jvm.cfg correctly without a full rebuild.
diff --git a/Makefile.am b/Makefile.am
index 82ef261..cfd0d6b 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1416,24 +1416,24 @@ clean-icedtea-debug:
rm -f stamps/icedtea-debug.stamp
stamps/icedtea-against-icedtea.stamp: stamps/icedtea.stamp \
- stamps/add-jamvm.stamp stamps/add-cacao.stamp stamps/add-zero.stamp \
+ stamps/add-jamvm.stamp stamps/add-cacao.stamp stamps/add-zero.stamp stamps/add-shark.stamp \
stamps/add-systemtap.stamp stamps/add-pulseaudio.stamp stamps/add-nss.stamp stamps/add-tzdata-support.stamp
mkdir -p stamps
touch stamps/icedtea-against-icedtea.stamp
-clean-icedtea-against-icedtea: clean-add-jamvm clean-add-zero clean-add-cacao \
+clean-icedtea-against-icedtea: clean-add-jamvm clean-add-zero clean-add-cacao clean-add-shark \
clean-add-systemtap clean-add-pulseaudio \
clean-add-nss clean-add-tzdata-support
rm -f stamps/icedtea-against-icedtea.stamp
stamps/icedtea-debug-against-icedtea.stamp: stamps/icedtea-debug.stamp \
- stamps/add-jamvm-debug.stamp stamps/add-cacao-debug.stamp \
+ stamps/add-jamvm-debug.stamp stamps/add-cacao-debug.stamp stamps/add-shark-debug.stamp \
stamps/add-zero-debug.stamp stamps/add-systemtap-debug.stamp stamps/add-pulseaudio-debug.stamp \
stamps/add-nss-debug.stamp stamps/add-tzdata-support-debug.stamp
mkdir -p stamps
touch stamps/icedtea-debug-against-icedtea.stamp
-clean-icedtea-debug-against-icedtea: clean-add-zero-debug \
+clean-icedtea-debug-against-icedtea: clean-add-zero-debug clean-add-zero-debug \
clean-add-jamvm-debug clean-add-cacao-debug clean-add-systemtap-debug \
clean-add-pulseaudio-debug clean-add-nss-debug clean-add-tzdata-support-debug
rm -f stamps/icedtea-debug-against-icedtea.stamp
@@ -1946,27 +1946,22 @@ clean-add-cacao-debug:
# configure script arguments, quoted in single quotes
CONFIGURE_ARGS = @CONFIGURE_ARGS@
ADD_ZERO_CONFIGURE_ARGS = \
- --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \
- --enable-zero
-if ADD_SHARK_BUILD
-ADD_ZERO_CONFIGURE_ARGS += \
- --enable-shark
-endif
-ADD_ZERO_CONFIGURE_ARGS += \
- --disable-docs \
$(filter-out '--with-jdk-home=% '--with-ecj=% \
'--with-java=% '--with-javah=% \
'--with-rmic=% '--with-additional-vms=% \
'--with-openjdk '--with-openjdk=% , \
$(CONFIGURE_ARGS)) \
$(if $(findstring --with-openjdk-src-zip=, $(CONFIGURE_ARGS)),, \
- --with-openjdk-src-zip=$(abs_top_builddir)/$(OPENJDK_SRC_ZIP))
+ --with-openjdk-src-zip=$(abs_top_builddir)/$(OPENJDK_SRC_ZIP)) \
+ --with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \
+ --disable-bootstrap \
+ --enable-zero \
+ --disable-docs
if WITH_ALT_HSBUILD
ADD_ZERO_CONFIGURE_ARGS += \
$(if $(findstring --with-hotspot-src-zip=, $(CONFIGURE_ARGS)),, \
--with-hotspot-src-zip=$(abs_top_builddir)/$(HOTSPOT_SRC_ZIP))
endif
-ADD_ZERO_CONFIGURE_ARGS += --disable-bootstrap
ADD_ZERO_EXTRA_BUILD_ENV = \
BUILD_LANGTOOLS=false ALT_LANGTOOLS_DIST=$(BUILD_OUTPUT_DIR)/langtools/dist \
@@ -2003,34 +1998,19 @@ if ADD_ZERO_BUILD
$(ADD_ZERO_EXTRA_BUILD_ENV) \
$(ARCH_PREFIX) $(MAKE) -C zerovm $(ICEDTEA_BUILD_TARGET)
-if ZERO_BUILD
- mkdir -p $(BUILD_JRE_ARCH_DIR)/shark
- cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
- $(BUILD_JRE_ARCH_DIR)/shark/
- printf -- '-shark KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-else
mkdir -p $(BUILD_JRE_ARCH_DIR)/zero
cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
$(BUILD_JRE_ARCH_DIR)/zero/
printf -- '-zero KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-if ADD_SHARK_BUILD
- printf -- '-shark ALIASED_TO -zero\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-else
- printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-endif
-endif
else
printf -- '-zero ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
endif
touch $@
clean-add-zero:
rm -rf $(BUILD_JRE_ARCH_DIR)/zero
- rm -rf $(BUILD_JRE_ARCH_DIR)/shark
rm -rf zerovm
sed -i 's#-zero KNOWN#-zero ERROR#' jvm.cfg
- sed -i 's#-shark KNOWN#-shark ERROR#' jvm.cfg
rm -f stamps/add-zero.stamp
stamps/add-zero-debug.stamp: stamps/icedtea-debug.stamp
@@ -2044,30 +2024,96 @@ if ADD_ZERO_BUILD
$(ADD_ZERO_EXTRA_BUILD_ENV) \
$(ARCH_PREFIX) $(MAKE) -C zerovm $(ICEDTEA_DEBUG_BUILD_TARGET)
-if ZERO_BUILD
- mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
- cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
- $(BUILD_DEBUG_JRE_ARCH_DIR)/shark/
- printf -- '-shark KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
-else
mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/zero
cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
$(BUILD_DEBUG_JRE_ARCH_DIR)/zero/
printf -- '-zero KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
-endif
else
printf -- '-zero ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-shark ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
endif
touch $@
clean-add-zero-debug:
rm -rf $(BUILD_DEBUG_JRE_ARCH_DIR)/zero
- rm -rf $(BUILD_JRE_ARCH_DIR)/shark
rm -rf zerovm
sed -i 's#-zero KNOWN#-zero ERROR#' jvm.cfg
- sed -i 's#-shark KNOWN#-shark ERROR#' jvm.cfg
rm -f stamps/add-zero-debug.stamp
+
+ADD_SHARK_CONFIGURE_ARGS = \
+ $(ADD_ZERO_CONFIGURE_ARGS) \
+ --enable-shark
+
+ADD_SHARK_EXTRA_BUILD_ENV = \
+ $(ADD_ZERO_EXTRA_BUILD_ENV)
+
+
+stamps/add-shark.stamp: stamps/icedtea.stamp
+if ADD_SHARK_BUILD
+ mkdir -p sharkvm
+
+ cd sharkvm && \
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(abs_top_srcdir)/configure $(ADD_SHARK_CONFIGURE_ARGS)
+
+ : # create directories which are expected by icedtea components,
+ : # implicitly assumed to be created by the jdk build.
+ mkdir -p $(patsubst $(abs_top_builddir)/%,$(abs_top_builddir)/sharkvm/%, \
+ $(ECJ_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) \
+ $(ECJ_BUILD_OUTPUT_DIR)/j2sdk-image/man/man1 \
+ $(ECJ_BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR) \
+ $(ECJ_BUILD_OUTPUT_DIR)/j2re-image/man/man1 \
+ $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) \
+ $(BUILD_OUTPUT_DIR)/j2sdk-image/man/man1 \
+ $(BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR) \
+ $(BUILD_OUTPUT_DIR)/j2re-image/man/man1 \
+ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR) \
+ $(DEBUG_BUILD_OUTPUT_DIR)/j2sdk-image/man/man1 \
+ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR) \
+ $(DEBUG_BUILD_OUTPUT_DIR)/j2re-image/man/man1)
+
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(MAKE) -C sharkvm $(ICEDTEA_BUILD_TARGET)
+
+ mkdir -p $(BUILD_JRE_ARCH_DIR)/shark
+ cp -a sharkvm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
+ $(BUILD_JRE_ARCH_DIR)/shark/
+ printf -- '-shark KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
+else
+ printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
+endif
+ touch $@
+
+clean-add-shark:
+ rm -rf $(BUILD_JRE_ARCH_DIR)/shark
+ rm -rf sharkvm
+ sed -i 's#-shark KNOWN#-shark ERROR#' jvm.cfg
+ rm -f stamps/add-shark.stamp
+
+stamps/add-shark-debug.stamp: stamps/icedtea-debug.stamp
+if ADD_SHARK_BUILD
+ mkdir -p sharkvm
+
+ cd sharkvm && \
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(abs_top_srcdir)/configure $(ADD_SHARK_CONFIGURE_ARGS)
+
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(MAKE) -C sharkvm $(ICEDTEA_DEBUG_BUILD_TARGET)
+
+ mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
+ cp -a shark/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
+ $(BUILD_DEBUG_JRE_ARCH_DIR)/shark/
+ printf -- '-shark KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
+else
+ printf -- '-shark ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
+endif
+ touch $@
+
+clean-add-shark-debug:
+ rm -rf $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
+ rm -rf sharkvm
+ sed -i 's#-shark KNOWN#-shark ERROR#' jvm.cfg
+ rm -f stamps/add-shark-debug.stamp
# end additional VMs

View File

@ -0,0 +1,16 @@
Author: Ralph Sennhauser <sera@gentoo.org>
The llvm libdir isn't in the default search path on Gentoo. Adding path explicitely.
diff --git a/configure.ac b/configure.ac
index 580840e..852f5a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -444,6 +444,7 @@ if test "x${SHARK_BUILD_TRUE}" = x || test "x${ADD_SHARK_BUILD_TRUE}" = x; then
LLVM_LDFLAGS="$LLVM_LDFLAGS$flag"
fi
done
+ LLVM_LDFLAGS="$LLVM_LDFLAGS -Wl,-rpath,$($LLVM_CONFIG --libdir)"
dnl LLVM_LIBS
LIBS_SAVED=$LIBS
LDFLAGS_SAVED=$LDFLAGS

View File

@ -0,0 +1,578 @@
Taken from:
http://mail.openjdk.java.net/pipermail/zero-dev/2011-August/000399.html
Adopted to icedtea-7
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBlock.cpp 2011-08-30 21:15:49.115227000 +0000
@@ -1040,8 +1040,8 @@
object = builder()->CreateInlineOop(field->holder());
BasicType basic_type = field->type()->basic_type();
- const Type *stack_type = SharkType::to_stackType(basic_type);
- const Type *field_type = SharkType::to_arrayType(basic_type);
+ Type *stack_type = SharkType::to_stackType(basic_type);
+ Type *field_type = SharkType::to_arrayType(basic_type);
Value *addr = builder()->CreateAddressOfStructEntry(
object, in_ByteSize(field->offset_in_bytes()),
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBuilder.cpp 2011-08-30 21:15:49.315227000 +0000
@@ -47,14 +47,14 @@
// Helpers for accessing structures
Value* SharkBuilder::CreateAddressOfStructEntry(Value* base,
ByteSize offset,
- const Type* type,
+ Type* type,
const char* name) {
return CreateBitCast(CreateStructGEP(base, in_bytes(offset)), type, name);
}
LoadInst* SharkBuilder::CreateValueOfStructEntry(Value* base,
ByteSize offset,
- const Type* type,
+ Type* type,
const char* name) {
return CreateLoad(
CreateAddressOfStructEntry(
@@ -71,7 +71,7 @@
}
Value* SharkBuilder::CreateArrayAddress(Value* arrayoop,
- const Type* element_type,
+ Type* element_type,
int element_bytes,
ByteSize base_offset,
Value* index,
@@ -114,7 +114,7 @@
// Helpers for creating intrinsics and external functions.
-const Type* SharkBuilder::make_type(char type, bool void_ok) {
+Type* SharkBuilder::make_type(char type, bool void_ok) {
switch (type) {
// Primitive types
case 'c':
@@ -159,14 +159,14 @@
}
}
-const FunctionType* SharkBuilder::make_ftype(const char* params,
+FunctionType* SharkBuilder::make_ftype(const char* params,
const char* ret) {
- std::vector<const Type*> param_types;
+ std::vector<Type*> param_types;
for (const char* c = params; *c; c++)
param_types.push_back(make_type(*c, false));
assert(strlen(ret) == 1, "should be");
- const Type *return_type = make_type(*ret, true);
+ Type *return_type = make_type(*ret, true);
return FunctionType::get(return_type, param_types, false);
}
@@ -565,7 +565,7 @@
Value* SharkBuilder::CreateInlineData(void* data,
size_t size,
- const Type* type,
+ Type* type,
const char* name) {
return CreateIntToPtr(
code_buffer_address(code_buffer()->inline_data(data, size)),
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkBuilder.hpp 2011-08-30 19:52:46.735227001 +0000
@@ -57,18 +57,18 @@
public:
llvm::Value* CreateAddressOfStructEntry(llvm::Value* base,
ByteSize offset,
- const llvm::Type* type,
+ llvm::Type* type,
const char *name = "");
llvm::LoadInst* CreateValueOfStructEntry(llvm::Value* base,
ByteSize offset,
- const llvm::Type* type,
+ llvm::Type* type,
const char *name = "");
// Helpers for accessing arrays.
public:
llvm::LoadInst* CreateArrayLength(llvm::Value* arrayoop);
llvm::Value* CreateArrayAddress(llvm::Value* arrayoop,
- const llvm::Type* element_type,
+ llvm::Type* element_type,
int element_bytes,
ByteSize base_offset,
llvm::Value* index,
@@ -85,8 +85,8 @@
// Helpers for creating intrinsics and external functions.
private:
- static const llvm::Type* make_type(char type, bool void_ok);
- static const llvm::FunctionType* make_ftype(const char* params,
+ static llvm::Type* make_type(char type, bool void_ok);
+ static llvm::FunctionType* make_ftype(const char* params,
const char* ret);
llvm::Value* make_function(const char* name,
const char* params,
@@ -211,7 +211,7 @@
}
llvm::Value* CreateInlineData(void* data,
size_t size,
- const llvm::Type* type,
+ llvm::Type* type,
const char* name = "");
// Helpers for creating basic blocks.
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.cpp 2011-08-30 19:52:46.735227001 +0000
@@ -230,7 +230,7 @@
}
Value* SharkOSREntryCacher::CreateAddressOfOSRBufEntry(int offset,
- const Type* type) {
+ Type* type) {
Value *result = builder()->CreateStructGEP(osr_buf(), offset);
if (type != SharkType::intptr_type())
result = builder()->CreateBitCast(result, PointerType::getUnqual(type));
@@ -254,12 +254,12 @@
}
}
-void SharkDecacher::write_value_to_frame(const Type* type,
+void SharkDecacher::write_value_to_frame(Type* type,
Value* value,
int offset) {
builder()->CreateStore(value, stack()->slot_addr(offset, type));
}
-Value* SharkCacher::read_value_from_frame(const Type* type, int offset) {
+Value* SharkCacher::read_value_from_frame(Type* type, int offset) {
return builder()->CreateLoad(stack()->slot_addr(offset, type));
}
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkCacheDecache.hpp 2011-08-30 19:52:46.745227001 +0000
@@ -192,7 +192,7 @@
// Writer helper
protected:
- void write_value_to_frame(const llvm::Type* type,
+ void write_value_to_frame(llvm::Type* type,
llvm::Value* value,
int offset);
};
@@ -321,7 +321,7 @@
// Writer helper
protected:
- llvm::Value* read_value_from_frame(const llvm::Type* type, int offset);
+ llvm::Value* read_value_from_frame(llvm::Type* type, int offset);
};
class SharkJavaCallCacher : public SharkCacher {
@@ -422,7 +422,7 @@
// Helper
private:
- llvm::Value* CreateAddressOfOSRBufEntry(int offset, const llvm::Type* type);
+ llvm::Value* CreateAddressOfOSRBufEntry(int offset, llvm::Type* type);
};
#endif // SHARE_VM_SHARK_SHARKCACHEDECACHE_HPP
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkContext.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkContext.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkContext.cpp 2011-08-30 19:52:46.745227001 +0000
@@ -76,7 +76,7 @@
_zeroStack_type = PointerType::getUnqual(
ArrayType::get(jbyte_type(), sizeof(ZeroStack)));
- std::vector<const Type*> params;
+ std::vector<Type*> params;
params.push_back(methodOop_type());
params.push_back(intptr_type());
params.push_back(thread_type());
Index: icedtea7-shark/openjdk/hotspot/src/share/vm/shark/sharkContext.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkContext.hpp 2011-09-29 00:13:07.000000000 +0200
+++ openjdk/hotspot/src/share/vm/shark/sharkContext.hpp 2011-12-12 12:49:57.481439513 +0100
@@ -68,118 +68,118 @@ class SharkContext : public llvm::LLVMCo
module()->getFunctionList().push_back(function);
}
llvm::Constant* get_external(const char* name,
- const llvm::FunctionType* sig) {
+ llvm::FunctionType* sig) {
return module()->getOrInsertFunction(name, sig);
}
// Basic types
private:
- const llvm::Type* _void_type;
- const llvm::IntegerType* _bit_type;
- const llvm::IntegerType* _jbyte_type;
- const llvm::IntegerType* _jshort_type;
- const llvm::IntegerType* _jint_type;
- const llvm::IntegerType* _jlong_type;
- const llvm::Type* _jfloat_type;
- const llvm::Type* _jdouble_type;
+ llvm::Type* _void_type;
+ llvm::IntegerType* _bit_type;
+ llvm::IntegerType* _jbyte_type;
+ llvm::IntegerType* _jshort_type;
+ llvm::IntegerType* _jint_type;
+ llvm::IntegerType* _jlong_type;
+ llvm::Type* _jfloat_type;
+ llvm::Type* _jdouble_type;
public:
- const llvm::Type* void_type() const {
+ llvm::Type* void_type() const {
return _void_type;
}
- const llvm::IntegerType* bit_type() const {
+ llvm::IntegerType* bit_type() const {
return _bit_type;
}
- const llvm::IntegerType* jbyte_type() const {
+ llvm::IntegerType* jbyte_type() const {
return _jbyte_type;
}
- const llvm::IntegerType* jshort_type() const {
+ llvm::IntegerType* jshort_type() const {
return _jshort_type;
}
- const llvm::IntegerType* jint_type() const {
+ llvm::IntegerType* jint_type() const {
return _jint_type;
}
- const llvm::IntegerType* jlong_type() const {
+ llvm::IntegerType* jlong_type() const {
return _jlong_type;
}
- const llvm::Type* jfloat_type() const {
+ llvm::Type* jfloat_type() const {
return _jfloat_type;
}
- const llvm::Type* jdouble_type() const {
+ llvm::Type* jdouble_type() const {
return _jdouble_type;
}
- const llvm::IntegerType* intptr_type() const {
+ llvm::IntegerType* intptr_type() const {
return LP64_ONLY(jlong_type()) NOT_LP64(jint_type());
}
// Compound types
private:
- const llvm::PointerType* _itableOffsetEntry_type;
- const llvm::PointerType* _jniEnv_type;
- const llvm::PointerType* _jniHandleBlock_type;
- const llvm::PointerType* _klass_type;
- const llvm::PointerType* _methodOop_type;
- const llvm::ArrayType* _monitor_type;
- const llvm::PointerType* _oop_type;
- const llvm::PointerType* _thread_type;
- const llvm::PointerType* _zeroStack_type;
- const llvm::FunctionType* _entry_point_type;
- const llvm::FunctionType* _osr_entry_point_type;
+ llvm::PointerType* _itableOffsetEntry_type;
+ llvm::PointerType* _jniEnv_type;
+ llvm::PointerType* _jniHandleBlock_type;
+ llvm::PointerType* _klass_type;
+ llvm::PointerType* _methodOop_type;
+ llvm::ArrayType* _monitor_type;
+ llvm::PointerType* _oop_type;
+ llvm::PointerType* _thread_type;
+ llvm::PointerType* _zeroStack_type;
+ llvm::FunctionType* _entry_point_type;
+ llvm::FunctionType* _osr_entry_point_type;
public:
- const llvm::PointerType* itableOffsetEntry_type() const {
+ llvm::PointerType* itableOffsetEntry_type() const {
return _itableOffsetEntry_type;
}
- const llvm::PointerType* jniEnv_type() const {
+ llvm::PointerType* jniEnv_type() const {
return _jniEnv_type;
}
- const llvm::PointerType* jniHandleBlock_type() const {
+ llvm::PointerType* jniHandleBlock_type() const {
return _jniHandleBlock_type;
}
- const llvm::PointerType* klass_type() const {
+ llvm::PointerType* klass_type() const {
return _klass_type;
}
- const llvm::PointerType* methodOop_type() const {
+ llvm::PointerType* methodOop_type() const {
return _methodOop_type;
}
- const llvm::ArrayType* monitor_type() const {
+ llvm::ArrayType* monitor_type() const {
return _monitor_type;
}
- const llvm::PointerType* oop_type() const {
+ llvm::PointerType* oop_type() const {
return _oop_type;
}
- const llvm::PointerType* thread_type() const {
+ llvm::PointerType* thread_type() const {
return _thread_type;
}
- const llvm::PointerType* zeroStack_type() const {
+ llvm::PointerType* zeroStack_type() const {
return _zeroStack_type;
}
- const llvm::FunctionType* entry_point_type() const {
+ llvm::FunctionType* entry_point_type() const {
return _entry_point_type;
}
- const llvm::FunctionType* osr_entry_point_type() const {
+ llvm::FunctionType* osr_entry_point_type() const {
return _osr_entry_point_type;
}
// Mappings
private:
- const llvm::Type* _to_stackType[T_CONFLICT];
- const llvm::Type* _to_arrayType[T_CONFLICT];
+ llvm::Type* _to_stackType[T_CONFLICT];
+ llvm::Type* _to_arrayType[T_CONFLICT];
private:
- const llvm::Type* map_type(const llvm::Type* const* table,
+ llvm::Type* map_type(llvm::Type* const* table,
BasicType type) const {
assert(type >= 0 && type < T_CONFLICT, "unhandled type");
- const llvm::Type* result = table[type];
+ llvm::Type* result = table[type];
assert(result != NULL, "unhandled type");
return result;
}
public:
- const llvm::Type* to_stackType(BasicType type) const {
+ llvm::Type* to_stackType(BasicType type) const {
return map_type(_to_stackType, type);
}
- const llvm::Type* to_arrayType(BasicType type) const {
+ llvm::Type* to_arrayType(BasicType type) const {
return map_type(_to_arrayType, type);
}
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkNativeWrapper.cpp 2011-08-30 21:16:20.725227002 +0000
@@ -83,9 +83,9 @@
}
// Start building the argument list
- std::vector<const Type*> param_types;
+ std::vector<Type*> param_types;
std::vector<Value*> param_values;
- const PointerType *box_type = PointerType::getUnqual(SharkType::oop_type());
+ PointerType *box_type = PointerType::getUnqual(SharkType::oop_type());
// First argument is the JNIEnv
param_types.push_back(SharkType::jniEnv_type());
@@ -170,7 +170,7 @@
// fall through
default:
- const Type *param_type = SharkType::to_stackType(arg_type(i));
+ Type *param_type = SharkType::to_stackType(arg_type(i));
param_types.push_back(param_type);
param_values.push_back(
@@ -201,7 +201,7 @@
// Make the call
BasicType result_type = target()->result_type();
- const Type* return_type;
+ Type* return_type;
if (result_type == T_VOID)
return_type = SharkType::void_type();
else if (is_returning_oop())
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkStack.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkStack.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkStack.cpp 2011-08-30 19:52:46.745227001 +0000
@@ -163,7 +163,7 @@
}
Value* SharkStack::slot_addr(int offset,
- const Type* type,
+ Type* type,
const char* name) const {
bool needs_cast = type && type != SharkType::intptr_type();
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkStack.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkStack.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkStack.hpp 2011-08-30 19:52:46.755227001 +0000
@@ -204,7 +204,7 @@
// Addresses of things in the frame
public:
llvm::Value* slot_addr(int offset,
- const llvm::Type* type = NULL,
+ llvm::Type* type = NULL,
const char* name = "") const;
llvm::Value* monitor_addr(int index) const {
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkTopLevelBlock.cpp 2011-08-30 19:52:46.755227001 +0000
@@ -829,7 +829,7 @@
builder()->CreateArrayAddress(
array->jarray_value(), basic_type, index->jint_value()));
- const Type *stack_type = SharkType::to_stackType(basic_type);
+ Type *stack_type = SharkType::to_stackType(basic_type);
if (value->getType() != stack_type)
value = builder()->CreateIntCast(value, stack_type, basic_type != T_CHAR);
@@ -916,7 +916,7 @@
ShouldNotReachHere();
}
- const Type *array_type = SharkType::to_arrayType(basic_type);
+ Type *array_type = SharkType::to_arrayType(basic_type);
if (value->getType() != array_type)
value = builder()->CreateIntCast(value, array_type, basic_type != T_CHAR);
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkType.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkType.hpp 2011-07-05 18:31:05.000000000 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkType.hpp 2011-08-30 19:52:46.755227001 +0000
@@ -40,82 +40,82 @@
// Basic types
public:
- static const llvm::Type* void_type() {
+ static llvm::Type* void_type() {
return context().void_type();
}
- static const llvm::IntegerType* bit_type() {
+ static llvm::IntegerType* bit_type() {
return context().bit_type();
}
- static const llvm::IntegerType* jbyte_type() {
+ static llvm::IntegerType* jbyte_type() {
return context().jbyte_type();
}
- static const llvm::IntegerType* jshort_type() {
+ static llvm::IntegerType* jshort_type() {
return context().jshort_type();
}
- static const llvm::IntegerType* jint_type() {
+ static llvm::IntegerType* jint_type() {
return context().jint_type();
}
- static const llvm::IntegerType* jlong_type() {
+ static llvm::IntegerType* jlong_type() {
return context().jlong_type();
}
- static const llvm::Type* jfloat_type() {
+ static llvm::Type* jfloat_type() {
return context().jfloat_type();
}
- static const llvm::Type* jdouble_type() {
+ static llvm::Type* jdouble_type() {
return context().jdouble_type();
}
- static const llvm::IntegerType* intptr_type() {
+ static llvm::IntegerType* intptr_type() {
return context().intptr_type();
}
// Compound types
public:
- static const llvm::PointerType* itableOffsetEntry_type() {
+ static llvm::PointerType* itableOffsetEntry_type() {
return context().itableOffsetEntry_type();
}
- static const llvm::PointerType* jniEnv_type() {
+ static llvm::PointerType* jniEnv_type() {
return context().jniEnv_type();
}
- static const llvm::PointerType* jniHandleBlock_type() {
+ static llvm::PointerType* jniHandleBlock_type() {
return context().jniHandleBlock_type();
}
- static const llvm::PointerType* klass_type() {
+ static llvm::PointerType* klass_type() {
return context().klass_type();
}
- static const llvm::PointerType* methodOop_type() {
+ static llvm::PointerType* methodOop_type() {
return context().methodOop_type();
}
- static const llvm::ArrayType* monitor_type() {
+ static llvm::ArrayType* monitor_type() {
return context().monitor_type();
}
- static const llvm::PointerType* oop_type() {
+ static llvm::PointerType* oop_type() {
return context().oop_type();
}
- static const llvm::PointerType* thread_type() {
+ static llvm::PointerType* thread_type() {
return context().thread_type();
}
- static const llvm::PointerType* zeroStack_type() {
+ static llvm::PointerType* zeroStack_type() {
return context().zeroStack_type();
}
- static const llvm::FunctionType* entry_point_type() {
+ static llvm::FunctionType* entry_point_type() {
return context().entry_point_type();
}
- static const llvm::FunctionType* osr_entry_point_type() {
+ static llvm::FunctionType* osr_entry_point_type() {
return context().osr_entry_point_type();
}
// Mappings
public:
- static const llvm::Type* to_stackType(BasicType type) {
+ static llvm::Type* to_stackType(BasicType type) {
return context().to_stackType(type);
}
- static const llvm::Type* to_stackType(ciType* type) {
+ static llvm::Type* to_stackType(ciType* type) {
return to_stackType(type->basic_type());
}
- static const llvm::Type* to_arrayType(BasicType type) {
+ static llvm::Type* to_arrayType(BasicType type) {
return context().to_arrayType(type);
}
- static const llvm::Type* to_arrayType(ciType* type) {
+ static llvm::Type* to_arrayType(ciType* type) {
return to_arrayType(type->basic_type());
}
};
Index: icedtea6-shark/openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp
===================================================================
--- openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp 2011-08-30 20:23:51.805227002 +0000
+++ openjdk/hotspot/src/share/vm/shark/sharkFunction.hpp 2011-08-30 20:24:26.455227000 +0000
@@ -91,7 +91,7 @@
bool is_osr() const {
return flow()->is_osr_flow();
}
- const llvm::FunctionType* entry_point_type() const {
+ llvm::FunctionType* entry_point_type() const {
if (is_osr())
return SharkType::osr_entry_point_type();
else

View File

@ -0,0 +1,202 @@
Author: Ralph Sennhaser <sera@gentoo.org>
The idea is to apply the pax markings before using a freshly built jdk. Be it
for running tests or building additonal vms or after bootstrap to build the
final jdk.
There are currently two types of pax markings with the userspace utilities
chpax and paxctl. Both types of pax marking are base on modifing the ELFs. A
third type based on xattrs is in development.
The embedded test_gamma.patch is taken from icedtea 2.0 itself.
diff --git a/Makefile.am b/Makefile.am
index 129edf2..158b149 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -279,6 +279,10 @@ else
ICEDTEA_PATCHES += patches/nss-not-enabled-config.patch
endif
+if WITH_PAX
+ICEDTEA_PATCHES += patches/test_gamma.patch
+endif
+
ICEDTEA_PATCHES += $(DISTRIBUTION_PATCHES)
# Bootstrapping patches
@@ -300,7 +304,6 @@ ICEDTEA_BOOT_PATCHES = \
patches/boot/jar.patch \
patches/boot/symbols.patch \
patches/boot/tobin.patch \
- patches/boot/test_gamma.patch \
patches/boot/tools.jar.patch \
patches/boot/jopt.patch \
patches/boot/jaxp-dependency.patch \
@@ -320,6 +323,10 @@ ICEDTEA_BOOT_PATCHES = \
patches/boot/ecj-autoboxing.patch \
patches/boot/xsltproc.patch
+if !WITH_PAX
+ICEDTEA_BOOT_PATCHES += patches/boot/test_gamma.patch
+endif
+
if CP39408_JAVAH
ICEDTEA_BOOT_PATCHES += patches/boot/pr39408.patch
endif
@@ -1612,6 +1619,7 @@ stamps/icedtea.stamp: stamps/bootstrap-directory-symlink-stage2.stamp \
$(ICEDTEA_ENV) \
-C openjdk/ \
$(ICEDTEA_BUILD_TARGET)
+ $(abs_top_builddir)/pax-mark-vm $(BUILD_OUTPUT_DIR)/j2sdk-image
mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/$(INSTALL_ARCH_DIR)
mkdir -p $(BUILD_OUTPUT_DIR)/j2re-image/lib/$(INSTALL_ARCH_DIR)
mkdir -p $(BUILD_OUTPUT_DIR)/j2sdk-image/jre/lib/ext
@@ -1765,6 +1773,7 @@ stamps/icedtea-boot.stamp: stamps/bootstrap-directory-symlink-stage1.stamp \
$(ICEDTEA_ENV_BOOT) \
-C openjdk-boot \
$(ICEDTEA_BUILD_TARGET)
+ $(abs_top_builddir)/pax-mark-vm $(BOOT_BUILD_OUTPUT_DIR)/j2sdk-image
@echo "Bootstrapped IcedTea is served:" \
$(BOOT_BUILD_OUTPUT_DIR)
mkdir -p stamps
diff --git a/acinclude.m4 b/acinclude.m4
index 5310d71..f08f1a9 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -2181,3 +2181,49 @@ rmdir tmp.$$
AM_CONDITIONAL([NO_BYTECODE7], test x"${it_cv_bytecode7}" = "xyes")
AC_PROVIDE([$0])dnl
])
+
+AC_DEFUN_ONCE([IT_WITH_PAX],
+[
+ AC_MSG_CHECKING([for pax utility to use])
+ AC_ARG_WITH([pax],
+ [AS_HELP_STRING(--with-pax=COMMAND,the command used for pax marking)],
+ [
+ PAX_COMMAND=${withval}
+ if test "x${PAX_COMMAND}" = "xno"; then
+ PAX_COMMAND="not specified"
+ fi
+ ],
+ [
+ PAX_COMMAND="not specified"
+ ])
+ case "x${PAX_COMMAND}" in
+ xchpax)
+ case "${host_cpu}" in
+ i?86)
+ PAX_COMMAND_ARGS="-msp"
+ ;;
+ *)
+ PAX_COMMAND_ARGS="-m"
+ ;;
+ esac
+ ;;
+ xpaxctl)
+ case "${host_cpu}" in
+ i?86)
+ PAX_COMMAND_ARGS="-msp"
+ ;;
+ *)
+ PAX_COMMAND_ARGS="-m"
+ ;;
+ esac
+ ;;
+ *)
+ PAX_COMMAND="not specified"
+ PAX_COMMAND_ARGS="not specified"
+ ;;
+ esac
+ AM_CONDITIONAL(WITH_PAX, test "x${PAX_COMMAND}" != "xnot specified")
+ AC_MSG_RESULT(${PAX_COMMAND})
+ AC_SUBST(PAX_COMMAND)
+ AC_SUBST(PAX_COMMAND_ARGS)
+])
diff --git a/configure.ac b/configure.ac
index e0b866b..7c665ef 100644
--- a/configure.ac
+++ b/configure.ac
@@ -146,6 +146,9 @@ IT_WITH_PROJECT
IT_ENABLE_HG
IT_WITH_TZDATA_DIR
+IT_WITH_PAX
+AC_CONFIG_FILES([pax-mark-vm], [chmod +x pax-mark-vm])
+
AC_PATH_TOOL([HG],[hg])
if test "x${enable_hg}" = "xyes"; then
if test "x${HG}" = x; then
diff --git a/patches/test_gamma.patch b/patches/test_gamma.patch
new file mode 100644
index 0000000..7e8d3d6
--- /dev/null
+++ b/patches/test_gamma.patch
@@ -0,0 +1,47 @@
+diff -Nru ../openjdk.orig/openjdk/hotspot/make/linux/Makefile openjdk/hotspot/make/linux/Makefile
+--- ../openjdk.orig/openjdk/hotspot/make/linux/Makefile 2009-10-30 17:37:07.000000000 +0000
++++ openjdk/hotspot/make/linux/Makefile 2009-10-30 17:45:40.000000000 +0000
+@@ -287,42 +287,36 @@
+
+ $(TARGETS_C2): $(SUBDIRS_C2)
+ cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_compiler2/$@ && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_TIERED): $(SUBDIRS_TIERED)
+ cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_tiered/$(patsubst %tiered,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_C1): $(SUBDIRS_C1)
+ cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_compiler1/$(patsubst %1,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_CORE): $(SUBDIRS_CORE)
+ cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(BUILDARCH)_core/$(patsubst %core,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_ZERO): $(SUBDIRS_ZERO)
+ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(VARIANTARCH)_zero/$(patsubst %zero,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
+ $(TARGETS_SHARK): $(SUBDIRS_SHARK)
+ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS)
+- cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && ./test_gamma
+ ifdef INSTALL
+ cd $(OSNAME)_$(VARIANTARCH)_shark/$(patsubst %shark,%,$@) && $(MAKE) $(MFLAGS) install
+ endif
+
diff --git a/pax-mark-vm.in b/pax-mark-vm.in
new file mode 100644
index 0000000..118bb61
--- /dev/null
+++ b/pax-mark-vm.in
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Taken from Gentoo's pax-utils.eclass
+list_paxables() {
+ file "$@" 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//'
+}
+
+if test "@PAX_COMMAND@" != "not specified"; then
+ for paxable in `list_paxables "${1}"/bin/* "${1}"/jre/bin/*`; do
+ echo "PaX mark @PAX_COMMAND_ARGS@ ${paxable}"
+ @PAX_COMMAND@ @PAX_COMMAND_ARGS@ "${paxable}"
+ done
+fi

View File

@ -0,0 +1,178 @@
Author: Ralph Sennhauser <sera@gentoo.org>
Split out add-shark target.
This way the shark build will end up in shark instead of zero and java -zero
will work as expected. Ie. allows for easier setup of per app vm preferences
if desired. Also removes a bunch of conditionals which will simplify writing
jvm.cfg correctly without a full rebuild.
diff --git a/Makefile.am b/Makefile.am
index 129edf2..fc4cc20 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1740,7 +1740,7 @@ clean-icedtea:
rm -f stamps/icedtea.stamp stamps/icedtea-debug.stamp
stamps/icedtea-stage2.stamp: stamps/icedtea.stamp stamps/add-cacao.stamp \
- stamps/add-zero.stamp stamps/add-jamvm.stamp
+ stamps/add-zero.stamp stamps/add-jamvm.stamp stamps/add-shark.stamp
mkdir -p stamps
touch $@
@@ -1748,7 +1748,8 @@ clean-icedtea-stage2: clean-add-jamvm
rm -f stamps/icedtea-stage2.stamp
stamps/icedtea-debug-stage2.stamp: stamps/icedtea-debug.stamp \
- stamps/add-cacao-debug.stamp stamps/add-zero-debug.stamp stamps/add-jamvm-debug.stamp
+ stamps/add-cacao-debug.stamp stamps/add-zero-debug.stamp stamps/add-jamvm-debug.stamp \
+ stamps/add-shark-debug.stamp
mkdir -p stamps
touch $@
@@ -2060,12 +2061,7 @@ clean-add-cacao-debug:
CONFIGURE_ARGS = @CONFIGURE_ARGS@
ADD_ZERO_CONFIGURE_ARGS = \
--with-jdk-home=$(BUILD_OUTPUT_DIR)/j2sdk-image \
- --disable-bootstrap --enable-zero
-if ADD_SHARK_BUILD
-ADD_ZERO_CONFIGURE_ARGS += \
- --enable-shark
-endif
-ADD_ZERO_CONFIGURE_ARGS += \
+ --disable-bootstrap --enable-zero \
--disable-docs \
$(filter-out '--with-jdk-home=% '--with-ecj=% \
'--with-java=% '--with-javah=% \
@@ -2096,32 +2092,20 @@ if ADD_ZERO_BUILD
$(ADD_ZERO_EXTRA_BUILD_ENV) \
$(ARCH_PREFIX) $(MAKE) -C zerovm ICEDTEA_BUILD_TARGET=hotspot icedtea-stage2
-if ZERO_BUILD
- mkdir -p $(BUILD_JRE_ARCH_DIR)/shark
- cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
- $(BUILD_JRE_ARCH_DIR)/shark/
- printf -- '-shark KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-zero ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-else
mkdir -p $(BUILD_JRE_ARCH_DIR)/zero
cp -a zerovm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
$(BUILD_JRE_ARCH_DIR)/zero/
printf -- '-zero KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
-endif
else
printf -- '-zero ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
endif
touch $@
clean-add-zero:
rm -rf $(BUILD_JRE_ARCH_DIR)/zero
- rm -rf $(BUILD_JRE_ARCH_DIR)/shark
rm -rf zerovm
if [ -e $(BUILD_JRE_ARCH_DIR)/jvm.cfg ] ; then \
sed -i 's#-zero KNOWN#-zero ERROR#' $(BUILD_JRE_ARCH_DIR)/jvm.cfg ; \
- sed -i 's#-shark KNOWN#-shark ERROR#' $(BUILD_JRE_ARCH_DIR)/jvm.cfg ; \
fi
rm -f stamps/add-zero.stamp
@@ -2137,33 +2121,88 @@ if ADD_ZERO_BUILD
$(ADD_ZERO_EXTRA_BUILD_ENV) \
$(ARCH_PREFIX) $(MAKE) -C zerovm ICEDTEA_DEBUG_BUILD_TARGET=hotspot icedtea-stage2
-if ZERO_BUILD
- mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
- cp -a zerovm/$(BUILD_OUTPUT_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
- $(BUILD_DEBUG_JRE_ARCH_DIR)/shark/
- printf -- '-shark KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
-else
mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/zero
cp -a zerovm/$(BUILD_OUTPUT_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
$(BUILD_DEBUG_JRE_ARCH_DIR)/zero/
printf -- '-zero KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
-endif
else
printf -- '-zero ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
- printf -- '-shark ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
endif
touch $@
clean-add-zero-debug:
rm -rf $(BUILD_DEBUG_JRE_ARCH_DIR)/zero
- rm -rf $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
rm -rf zerovm
if [ -e $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg ] ; then \
sed -i 's#-zero KNOWN#-zero ERROR#' $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg ; \
- sed -i 's#-shark KNOWN#-shark ERROR#' $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg ; \
fi
rm -f stamps/add-zero-debug.stamp
+ADD_SHARK_CONFIGURE_ARGS = \
+ $(ADD_ZERO_CONFIGURE_ARGS) \
+ --enable-shark
+
+ADD_SHARK_EXTRA_BUILD_ENV = \
+ $(ADD_ZERO_EXTRA_BUILD_ENV)
+
+stamps/add-shark.stamp: stamps/icedtea.stamp
+ mkdir -p stamps
+if ADD_SHARK_BUILD
+ mkdir -p sharkvm
+
+ cd sharkvm && \
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(abs_top_srcdir)/configure $(ADD_SHARK_CONFIGURE_ARGS)
+
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(MAKE) -C sharkvm ICEDTEA_BUILD_TARGET=hotspot icedtea-stage2
+
+ mkdir -p $(BUILD_JRE_ARCH_DIR)/shark
+ cp -a sharkvm/$(BUILD_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
+ $(BUILD_JRE_ARCH_DIR)/shark/
+ printf -- '-shark KNOWN\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
+else
+ printf -- '-shark ERROR\n' >> $(BUILD_JRE_ARCH_DIR)/jvm.cfg
+endif
+ touch $@
+
+clean-add-shark:
+ rm -rf $(BUILD_JRE_ARCH_DIR)/shark
+ rm -rf sharkvm
+ if [ -e $(BUILD_JRE_ARCH_DIR)/jvm.cfg ] ; then \
+ sed -i 's#-shark KNOWN#-shark ERROR#' $(BUILD_JRE_ARCH_DIR)/jvm.cfg ; \
+ fi
+ rm -f stamps/add-shark.stamp
+
+stamps/add-shark-debug.stamp: stamps/icedtea-debug.stamp
+ mkdir -p stamps
+if ADD_SHARK_BUILD
+ mkdir -p sharkvm
+
+ cd sharkvm && \
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(abs_top_srcdir)/configure $(ADD_SHARK_CONFIGURE_ARGS)
+
+ $(ADD_SHARK_EXTRA_BUILD_ENV) \
+ $(ARCH_PREFIX) $(MAKE) -C sharkvm ICEDTEA_DEBUG_BUILD_TARGET=hotspot icedtea-stage2
+
+ mkdir -p $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
+ cp -a sharkvm/$(BUILD_OUTPUT_DIR)/hotspot/import/jre/lib/$(INSTALL_ARCH_DIR)/server/* \
+ $(BUILD_DEBUG_JRE_ARCH_DIR)/shark/
+ printf -- '-shark KNOWN\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
+else
+ printf -- '-shark ERROR\n' >> $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg
+endif
+ touch $@
+
+clean-add-shark-debug:
+ rm -rf $(BUILD_DEBUG_JRE_ARCH_DIR)/shark
+ rm -rf sharkvm
+ if [ -e $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg ] ; then \
+ sed -i 's#-shark KNOWN#-shark ERROR#' $(BUILD_DEBUG_JRE_ARCH_DIR)/jvm.cfg ; \
+ fi
+ rm -f stamps/add-shark-debug.stamp
+
# end additional VMs
# jtreg

View File

@ -0,0 +1,16 @@
Author: Ralph Sennhauser <sera@gentoo.org>
The llvm libdir isn't in the default search path on Gentoo. Adding path explicitely.
diff --git a/configure.ac b/configure.ac
index e0b866b..4a10cf3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -405,6 +405,7 @@ if test "x${SHARK_BUILD_TRUE}" = x || test "x${ADD_SHARK_BUILD_TRUE}" = x; then
LLVM_LDFLAGS="$LLVM_LDFLAGS$flag"
fi
done
+ LLVM_LDFLAGS="$LLVM_LDFLAGS -Wl,-rpath,$($LLVM_CONFIG --libdir)"
dnl LLVM_LIBS
LIBS_SAVED=$LIBS
LDFLAGS_SAVED=$LDFLAGS

View File

@ -0,0 +1,38 @@
Author: Ralph Sennhauser <sera@gentoo.org>
This was fixed in openjdk6, this is a partial forward port of
http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=639
diff --git a/Makefile.am b/Makefile.am
index 129edf2..d77ac42 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -233,7 +233,8 @@ REWRITER_SRCS = $(top_srcdir)/rewriter/com/redhat/rewriter/ClassRewriter.java
# Patch list
-ICEDTEA_PATCHES =
+ICEDTEA_PATCHES = \
+ patches/shark-llvm-flags.patch
# Conditional patches
diff --git a/patches/shark-llvm-flags.patch b/patches/shark-llvm-flags.patch
new file mode 100644
index 0000000..3efcf7e
--- /dev/null
+++ b/patches/shark-llvm-flags.patch
@@ -0,0 +1,13 @@
+--- openjdk.orig/hotspot/make/linux/makefiles/launcher.make 2011-02-22 16:51:24.000000000 +0000
++++ openjdk/hotspot/make/linux/makefiles/launcher.make 2011-02-24 03:01:36.000000000 +0000
+@@ -52,6 +52,10 @@
+ LAUNCHER.o = launcher.o
+ LFLAGS_LAUNCHER += -L `pwd`
+ LIBS_LAUNCHER += -l$(JVM) $(LIBS)
++ ifeq ($(SHARK_BUILD), true)
++ LFLAGS_LAUNCHER += $(LLVM_LDFLAGS)
++ LIBS_LAUNCHER += $(LLVM_LIBS)
++ endif
+ endif
+
+ LINK_LAUNCHER = $(LINK.c)

View File

@ -0,0 +1,18 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/icedtea/files/icedtea.env,v 1.3 2011/11/28 15:29:59 sera Exp $
VERSION="IcedTea JDK @PV@"
JAVA_HOME="@GENTOO_PORTAGE_EPREFIX@/usr/@LIBDIR@/icedtea@SLOT@"
JDK_HOME="@GENTOO_PORTAGE_EPREFIX@/usr/@LIBDIR@/icedtea@SLOT@"
JAVAC="${JAVA_HOME}/bin/javac"
PATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin"
ROOTPATH="${JAVA_HOME}/bin:${JAVA_HOME}/jre/bin"
LDPATH="${JAVA_HOME}/jre/lib/@PLATFORM@/:${JAVA_HOME}/jre/lib/@PLATFORM@/native_threads/:${JAVA_HOME}/jre/lib/@PLATFORM@/xawt/:${JAVA_HOME}/jre/lib/@PLATFORM@/server/"
MANPATH="@GENTOO_PORTAGE_EPREFIX@/usr/@LIBDIR@/icedtea@SLOT@/man"
PROVIDES_TYPE="JDK JRE"
PROVIDES_VERSION="1.@SLOT@"
# Taken from sun.boot.class.path property
BOOTCLASSPATH="${JAVA_HOME}/jre/lib/resources.jar:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/jre/lib/jsse.jar:${JAVA_HOME}/jre/lib/jce.jar:${JAVA_HOME}/jre/lib/charsets.jar"
GENERATION="2"
ENV_VARS="JAVA_HOME JDK_HOME JAVAC PATH ROOTPATH LDPATH MANPATH"

View File

@ -0,0 +1,329 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: /var/cvsroot/gentoo-x86/dev-java/icedtea/icedtea-6.1.10.4-r3.ebuild,v 1.1 2011/12/02 12:27:17 sera Exp $
# Build written by Andrew John Hughes (gnu_andrew@member.fsf.org)
# *********************************************************
# * IF YOU CHANGE THIS EBUILD, CHANGE ICEDTEA-7.* AS WELL *
# *********************************************************
EAPI="4"
inherit autotools java-pkg-2 java-vm-2 pax-utils prefix versionator virtualx
ICEDTEA_PKG=${PN}$(replace_version_separator 1 -)
OPENJDK_BUILD="22"
OPENJDK_DATE="28_feb_2011"
OPENJDK_TARBALL="openjdk-6-src-b${OPENJDK_BUILD}-${OPENJDK_DATE}.tar.gz"
JAXP_TARBALL="jaxp144_01.zip"
JAXWS_TARBALL="jdk6-jaxws-b20.zip"
JAF_TARBALL="jdk6-jaf-b20.zip"
HOTSPOT_TARBALL="f0f676c5a2c6.tar.gz"
CACAO_TARBALL="4549072ab2de.tar.gz" # 30 Aug 2011
JAMVM_TARBALL="jamvm-310c491ddc14e92a6ffff27030a1a1821e6395a8.tar.gz" # 26 Sep 2011
DESCRIPTION="A harness to build OpenJDK using Free Software build tools and dependencies"
HOMEPAGE="http://icedtea.classpath.org"
SRC_URI="
http://icedtea.classpath.org/download/source/${ICEDTEA_PKG}.tar.gz
http://download.java.net/openjdk/jdk6/promoted/b${OPENJDK_BUILD}/${OPENJDK_TARBALL}
http://icedtea.classpath.org/download/drops/${JAXWS_TARBALL}
http://icedtea.classpath.org/download/drops/${JAF_TARBALL}
http://icedtea.classpath.org/download/drops/${JAXP_TARBALL}
hs20? ( http://hg.openjdk.java.net/hsx/hsx20/master/archive/${HOTSPOT_TARBALL} )
http://icedtea.classpath.org/download/drops/cacao/${CACAO_TARBALL}
http://icedtea.classpath.org/download/drops/jamvm/${JAMVM_TARBALL}"
LICENSE="Apache-1.1 Apache-2.0 GPL-1 GPL-2 GPL-2-with-linking-exception LGPL-2 MPL-1.0 MPL-1.1 public-domain W3C"
SLOT="6"
KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
IUSE="+X +alsa cjk +cups debug doc examples +hs20 javascript +jbootstrap +nsplugin
+nss pax_kernel pulseaudio +source systemtap test +webstart -zero"
# Ideally the following were optional at build time.
ALSA_COMMON_DEP="
>=media-libs/alsa-lib-1.0"
CUPS_COMMON_DEP="
>=net-print/cups-1.2.12"
X_COMMON_DEP="
dev-libs/glib
>=media-libs/freetype-2.3.5
>=x11-libs/gtk+-2.8:2
>=x11-libs/libX11-1.1.3
>=x11-libs/libXext-1.1.1
>=x11-libs/libXi-1.1.3
>=x11-libs/libXrender-0.9.4
>=x11-libs/libXtst-1.0.3"
X_DEPEND="
>=x11-libs/libXau-1.0.3
>=x11-libs/libXdmcp-1.0.2
>=x11-libs/libXinerama-1.0.2
>=x11-libs/libXp-1.0.0
x11-proto/inputproto
>=x11-proto/xextproto-7.1.1
x11-proto/xineramaproto
x11-proto/xproto"
# virtual/libffi is needed for Zero
COMMON_DEP="
>=media-libs/giflib-4.1.6
>=media-libs/libpng-1.2
>=sys-libs/zlib-1.2.3
virtual/jpeg
javascript? ( dev-java/rhino:1.6 )
nss? ( >=dev-libs/nss-3.12.5-r1 )
pulseaudio? ( >=media-sound/pulseaudio-0.9.11 )
systemtap? ( >=dev-util/systemtap-1 )
zero? ( virtual/libffi )
!amd64? ( !sparc? ( !x86? ( virtual/libffi ) ) )"
# media-fonts/lklug needs ppc ppc64 keywords
RDEPEND="${COMMON_DEP}
!dev-java/icedtea6
X? (
${X_COMMON_DEP}
media-fonts/dejavu
cjk? (
media-fonts/arphicfonts
media-fonts/baekmuk-fonts
!ppc? ( !ppc64? ( media-fonts/lklug ) )
media-fonts/lohit-fonts
media-fonts/sazanami
)
)
alsa? ( ${ALSA_COMMON_DEP} )
cups? ( ${CUPS_COMMON_DEP} )"
# Only ant-core-1.7.1-r2 and later properly respect environment variables.
# xalan/xerces: automatic code generation (also needed for Ant 1.8.0 to work properly)
# ca-certificates, perl and openssl are used for the cacerts keystore generation
# xext headers have two variants depending on version - bug #288855
# !eclipse-ecj-3.7 - bug #392587
# autoconf - as long as we use eautoreconf, version restrictions for bug #294918
DEPEND="${COMMON_DEP} ${ALSA_COMMON_DEP} ${CUPS_COMMON_DEP} ${X_COMMON_DEP}
|| (
>=dev-java/gcj-jdk-4.3
dev-java/icedtea-bin:6
dev-java/icedtea:6
)
app-arch/cpio
app-arch/zip
app-misc/ca-certificates
>=dev-java/ant-core-1.7.1-r2
dev-java/ant-nodeps
>=dev-java/xalan-2.7.0:0
>=dev-java/xerces-2.9.1:2
dev-lang/perl
dev-libs/openssl
dev-util/pkgconfig
sys-apps/lsb-release
|| ( >=sys-devel/autoconf-2.65:2.5 <sys-devel/autoconf-2.64:2.5 )
${X_DEPEND}
jbootstrap? (
|| ( <dev-java/eclipse-ecj-3.7 dev-java/ecj-gcj )
)
pax_kernel? ( sys-apps/paxctl )"
PDEPEND="webstart? ( dev-java/icedtea-web:6 )
nsplugin? ( dev-java/icedtea-web:6[nsplugin] )"
# a bit of hack so the VM switching is triggered without causing dependency troubles
JAVA_PKG_NV_DEPEND=">=virtual/jdk-1.5"
JAVA_PKG_WANT_SOURCE="1.5"
JAVA_PKG_WANT_TARGET="1.5"
pkg_setup() {
# quite a hack since java-config does not provide a way for a package
# to limit supported VM's for building and their preferred order
if [[ -n "${JAVA_PKG_FORCE_VM}" ]]; then
einfo "Honoring user-set JAVA_PKG_FORCE_VM"
elif has_version "<=dev-java/icedtea-6.1.10.4:6"; then
JAVA_PKG_FORCE_VM="icedtea6"
elif has_version ">dev-java/icedtea-6.1.10.4:6"; then
JAVA_PKG_FORCE_VM="icedtea-6"
elif has_version "<dev-java/icedtea-bin-6.1.10.4:6"; then
JAVA_PKG_FORCE_VM="icedtea6-bin"
elif has_version ">=dev-java/icedtea-bin-6.1.10.4:6"; then
JAVA_PKG_FORCE_VM="icedtea-bin-6"
elif has_version dev-java/gcj-jdk; then
JAVA_PKG_FORCE_VM="gcj-jdk"
else
die "Unable to find a supported VM for building"
fi
einfo "Forced vm ${JAVA_PKG_FORCE_VM}"
java-vm-2_pkg_setup
java-pkg-2_pkg_setup
}
src_unpack() {
unpack ${ICEDTEA_PKG}.tar.gz
mkdir "${S}" || die
}
java_prepare() {
# icedtea doesn't like some locales. #330433 #389717
export LANG="C" LC_ALL="C"
}
src_configure() {
local config bootstrap extra_vms
local vm=$(java-pkg_get-current-vm)
# IcedTea6 can't be built using IcedTea7; its class files are too new
if has "${vm}" icedtea6 icedtea-6 icedtea6-bin icedtea-bin-6; then
use jbootstrap && bootstrap=yes
elif has "${vm}" gcj-jdk; then
# gcj-jdk ensures ecj is present.
use jbootstrap || einfo "bootstrap forced on for ${vm}, ignoring use jbootstrap"
bootstrap=yes
else
eerror "IcedTea${SLOT} must be built with either a JDK based on GNU Classpath or an existing build of IcedTea${SLOT}."
die "Install a GNU Classpath JDK (gcj-jdk)"
fi
if [[ ${bootstrap} ]]; then
config="${config} --enable-bootstrap"
build_bootstrap_jdk=yes
# icedtea-6 javac wrapper requires to always have ecj if bootstrapping #392337
local ecj_jar="$(readlink "${EPREFIX}"/usr/share/eclipse-ecj/ecj.jar)"
# Don't use eclipse-ecj-3.7 #392587
local ecj_all=( "${EPREFIX}"/usr/share/{eclipse-ecj,ecj-gcj}-* )
ecj_all=( "${ecj_all[@]/*eclipse-ecj-3.7*/}" )
if ! has "${ecj_jar%/lib/ecj.jar}" "${ecj_all[@]}"; then
ecj_jar="${ecj_jar%/lib/ecj.jar}"
ewarn "${ecj_jar##*/} set as system ecj, can't use for bootstrap"
ewarn "Found usable: ${ecj_all[@]##*/}"
ewarn "using ${ecj_all##*/} instead"
ecj_jar="${ecj_all}"/lib/ecj.jar
fi
config="${config} --with-ecj-jar=${ecj_jar}"
else
config="${config} --disable-bootstrap"
fi
# Always use HotSpot as the primary VM if available. #389521 #368669 #357633 ...
# Otherwise use CACAO
if ! has "${ARCH}" amd64 sparc x86; then
config="${config} --enable-jamvm --with-jamvm-src-zip=${DISTDIR}/${JAMVM_TARBALL}"
fi
# OpenJDK-specific parallelism support. Bug #389791, #337827
# Implementation modified from waf-utils.eclass
# Note that "-j" is converted to "-j1" as the system doesn't support --load-average
local procs=$(echo -j1 ${MAKEOPTS} | sed -r "s/.*(-j\s*|--jobs=)([0-9]+).*/\2/" )
config="${config} --with-parallel-jobs=${procs}";
einfo "Configuring using --with-parallel-jobs=${procs}"
if use javascript ; then
config="${config} --with-rhino=$(java-pkg_getjar rhino:1.6 js.jar)"
else
config="${config} --without-rhino"
fi
if use hs20 ; then
config="${config} --with-hotspot-build=hs20 --with-hotspot-src-zip=${DISTDIR}/${HOTSPOT_TARBALL}"
fi
unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
ECONF_SOURCE="../${ICEDTEA_PKG}" econf ${config} \
--with-openjdk-src-zip="${DISTDIR}/${OPENJDK_TARBALL}" \
--with-jaxp-drop-zip="${DISTDIR}/${JAXP_TARBALL}" \
--with-jaxws-drop-zip="${DISTDIR}/${JAXWS_TARBALL}" \
--with-jaf-drop-zip="${DISTDIR}/${JAF_TARBALL}" \
--with-jdk-home="$(java-config -O)" \
--with-abs-install-dir=/usr/$(get_libdir)/icedtea${SLOT} \
$(use_enable !debug optimizations) \
$(use_enable doc docs) \
$(use_enable nss) \
$(use_enable pulseaudio pulse-java) \
$(use_enable systemtap)
}
src_compile() {
# Would use GENTOO_VM otherwise.
export ANT_RESPECT_JAVA_HOME=TRUE
# ant -diagnostics in Ant 1.8.0 fails without xerces-2 and xalan
# Load the least that's needed to avoid possible classpath collisions.
export ANT_TASKS="xerces-2 xalan ant-nodeps"
emake
}
src_test() {
# Use Xvfb for tests
unset DISPLAY
Xemake -j1 check
}
src_install() {
local dest="/usr/$(get_libdir)/icedtea${SLOT}"
local ddest="${ED}/${dest}"
dodir "${dest}"
dodoc "${WORKDIR}"/${ICEDTEA_PKG}/{README,NEWS,AUTHORS,THANKYOU}
dosym /usr/share/doc/${PF} /usr/share/doc/${PN}${SLOT}
cd openjdk.build/j2sdk-image || die
# doins can't handle symlinks.
cp -vRP bin include jre lib man "${ddest}" || die
dodoc ASSEMBLY_EXCEPTION THIRD_PARTY_README
if use doc; then
# java-pkg_dohtml needed for package-list #302654
java-pkg_dohtml -r ../docs/* || die
fi
if use examples; then
dodir "${dest}/share";
cp -vRP demo sample "${ddest}/share/" || die
fi
if use source; then
cp src.zip "${ddest}" || die
fi
# Fix the permissions.
find "${ddest}" \! -type l \( -perm /111 -exec chmod 755 {} \; -o -exec chmod 644 {} \; \) || die
# Needs to be done before generating cacerts
java-vm_set-pax-markings "${ddest}"
# We need to generate keystore - bug #273306
einfo "Generating cacerts file from certificates in ${EPREFIX}/usr/share/ca-certificates/"
mkdir "${T}/certgen" && cd "${T}/certgen" || die
cp "${FILESDIR}/generate-cacerts.pl" . && chmod +x generate-cacerts.pl || die
for c in "${EPREFIX}"/usr/share/ca-certificates/*/*.crt; do
openssl x509 -text -in "${c}" >> all.crt || die
done
./generate-cacerts.pl "${ddest}/bin/keytool" all.crt || die
cp -vRP cacerts "${ddest}/jre/lib/security/" || die
chmod 644 "${ddest}/jre/lib/security/cacerts" || die
# Bug 390663
cp "${FILESDIR}"/fontconfig.Gentoo.properties.src "${T}"/fontconfig.Gentoo.properties || die
eprefixify "${T}"/fontconfig.Gentoo.properties
insinto "${dest}"/jre/lib
doins "${T}"/fontconfig.Gentoo.properties
set_java_env "${FILESDIR}/icedtea.env"
}
pkg_preinst() {
if has_version "<=dev-java/icedtea-6.1.10.4:${SLOT}"; then
# portage would preserve the symlink otherwise, related to bug #384397
rm -f "${EROOT}/usr/lib/jvm/icedtea6"
elog "To unify the layout and simplify scripts, the identifier of Icedtea-6*"
elog "has changed from 'icedtea6' to 'icedtea-6' starting from version 6.1.10.4-r1"
elog "If you had icedtea6 as system VM, the change should be automatic, however"
elog "build VM settings in /etc/java-config-2/build/jdk.conf are not changed"
elog "and the same holds for any user VM settings. Sorry for the inconvenience."
fi
}

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<herd>java</herd>
<maintainer>
<email>gnu_andrew@member.fsf.org</email>
<name>Andrew John Hughes</name>
<description>Proxy Maintainer</description>
</maintainer>
<maintainer>
<email>caster@gentoo.org</email>
<name>Vlastimil Babka</name>
<description>Committer (CC me)</description>
</maintainer>
<longdescription>The IcedTea project provides a harness to build the source code from OpenJDK (http://openjdk.java.net) using Free Software build tools along with additional tools such as a browser plugin and Web Start support via NetX. </longdescription>
<use>
<flag name="cacao">Build additionally the CACAO virtual machine.</flag>
<flag name="hs16">Use the new version of HotSpot (16).</flag>
<flag name="hs19">Use the new version of HotSpot (19).</flag>
<flag name="hs20">Use the new version of HotSpot (20).</flag>
<flag name="jamvm">Build additionally the JamVM virtual machine.</flag>
<flag name="jbootstrap">If possible, recompile the final IcedTea executables with itself.</flag>
<flag name="nio2">Enable backport of NIO2 to OpenJDK6.</flag>
<flag name="nss">Enable NSS security provider support.</flag>
<flag name="nsplugin">Enable browser plugin (NPPlugin), requires also the webstart flag to be enabled.</flag>
<flag name="pax_kernel">Apply patch needed for pax enabled kernels.</flag>
<flag name="shark">Build additionally the Shark virtual machine.</flag>
<flag name="systemtap">Enable SystemTap probes in HotSpot.</flag>
<flag name="webstart">Enable Web Start support (via NetX).</flag>
<flag name="xrender">Enable support for using XRender with the AWT libraries.</flag>
<flag name="zero">Build additionally the Zero virtual machine.</flag>
</use>
</pkgmetadata>