Update to 0.4.17 and rebase patches

Signed-off-by: Fabian Deutsch <fabiand@fedoraproject.org>
This commit is contained in:
Fabian Deutsch 2013-02-20 11:09:47 +01:00
parent 09028b5bee
commit 57eadd59c5
9 changed files with 135 additions and 346 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ orc-0.4.7.tar.gz
/orc-0.4.14.tar.gz
/orc-0.4.15.tar.gz
/orc-0.4.16.tar.gz
/orc-0.4.17.tar.gz

View File

@ -0,0 +1,56 @@
From 048ecb97881ad2763c34458eb705fedf09dcc5ff Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Tue, 4 Oct 2011 13:28:38 +0200
Subject: [PATCH 1/2] Use a subdirectory for temporary files.
This allows the a better integration with selinux, as the rule can use the path name and doesn't need globbing.
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
orc/orccodemem.c | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index f470be5..295a880 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -193,11 +193,27 @@ orc_code_chunk_free (OrcCodeChunk *chunk)
#ifdef HAVE_CODEMEM_MMAP
int
orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
- const char *dir, int force_unlink)
+ const char *basedir, int force_unlink)
{
int fd;
int n;
char *filename;
+ char *dir;
+ struct stat stat_p;
+
+ dir = malloc (strlen (basedir) + strlen ("/.orc") + 1);
+ sprintf (dir, "%s/.orc", basedir);
+
+ if (stat (dir, &stat_p) == -1 ||
+ !S_ISDIR (stat_p.st_mode))
+ {
+ n = mkdir (dir, S_IRWXU);
+ if (n < 0)
+ {
+ ORC_WARNING ("failed to create subdir");
+ return FALSE;
+ }
+ }
filename = malloc (strlen ("/orcexec..") +
strlen (dir) + 6 + 1);
@@ -211,6 +227,7 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
if (force_unlink || !_orc_compiler_flag_debug) {
unlink (filename);
}
+ free (dir);
free (filename);
n = ftruncate (fd, SIZE);
--
1.7.7.6

View File

@ -0,0 +1,65 @@
From bded311d32daa2339055341a7f1c1782ff39d047 Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Sun, 1 Jan 2012 21:41:04 +0100
Subject: [PATCH 2/2] Add compiler option for ENABLE_USER_CODEMEM.
This option disbales non-user-dependent path checking at compile time. If enabled, only paths corresponding to a user are checked.
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
configure.ac | 4 ++++
orc/Makefile.am | 3 +++
orc/orccodemem.c | 2 ++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 00e1916..4daee88 100644
--- a/configure.ac
+++ b/configure.ac
@@ -176,6 +176,10 @@ AM_CONDITIONAL(ENABLE_BACKEND_ARM, test "x$ENABLE_BACKEND_ARM" = "xyes")
AM_CONDITIONAL(ENABLE_BACKEND_C64X, test "x$ENABLE_BACKEND_C64X" = "xyes")
AM_CONDITIONAL(ENABLE_BACKEND_MIPS, test "x$ENABLE_BACKEND_MIPS" = "xyes")
+AC_ARG_ENABLE(user-codemem,
+ AC_HELP_STRING([--enable-user-codemem],[Force codemem allocation to be user dependent (default is no)]),
+ [], [enable_user_codemem=no])
+AM_CONDITIONAL(ENABLE_USER_CODEMEM, test "x$enable_user_codemem" = "xyes")
AC_DEFINE(ORC_EXPORTS, 1, [Defined for compiling internal code])
diff --git a/orc/Makefile.am b/orc/Makefile.am
index 26263e0..887d36b 100644
--- a/orc/Makefile.am
+++ b/orc/Makefile.am
@@ -9,6 +9,9 @@ liborc_@ORC_MAJORMINOR@_la_LDFLAGS = \
-no-undefined -export-symbols-regex 'orc_'
liborc_@ORC_MAJORMINOR@_la_CFLAGS = $(ORC_CFLAGS) \
-DORC_ENABLE_UNSTABLE_API
+if ENABLE_USER_CODEMEM
+liborc_@ORC_MAJORMINOR@_la_CFLAGS += -DORC_FORCE_USER_CODEMEM
+endif
liborc_@ORC_MAJORMINOR@_la_SOURCES = \
orc.c \
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index 295a880..4a91e3e 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -280,12 +280,14 @@ orc_code_region_allocate_codemem (OrcCodeRegion *region)
{
const char *tmpdir;
+#ifndef ORC_FORCE_USER_CODEMEM
tmpdir = getenv ("TMPDIR");
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
tmpdir, FALSE)) return;
if (orc_code_region_allocate_codemem_dual_map (region,
"/tmp", FALSE)) return;
+#endif
tmpdir = getenv ("XDG_RUNTIME_DIR");
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
--
1.7.7.6

View File

@ -1,40 +0,0 @@
From 4f813175b93ba44ba3f91cec28f8393d996ff918 Mon Sep 17 00:00:00 2001
From: David Schleef <ds@schleef.org>
Date: Thu, 13 Oct 2011 23:02:00 -0700
Subject: [PATCH] x86insn: quick fix for lack of nopl support
Geode (as well as others) don't have nopl. So don't use it
for alignment.
---
orc/orcx86insn.c | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/orc/orcx86insn.c b/orc/orcx86insn.c
index 659ebc5..78ca30d 100644
--- a/orc/orcx86insn.c
+++ b/orc/orcx86insn.c
@@ -520,12 +520,21 @@ orc_uint8 nop_codes[][16] = {
{ 0 /* MSVC wants something here */ },
{ 0x90 },
{ 0x66, 0x90 }, /* xchg %ax,%ax */
+#if 0
{ 0x0f, 0x1f, 0x00 }, /* nopl (%rax) */
{ 0x0f, 0x1f, 0x40, 0x00 }, /* nopl 0x0(%rax) */
{ 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopl 0x0(%rax,%rax,1) */
{ 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
{ 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax) */
{ 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax,%rax,1) */
+#else
+ { 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+#endif
{ 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
/* Forms of nopw %cs:0x0(%rax,%rax,1) */
{ 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 },
--
1.7.0.4

View File

@ -1,56 +0,0 @@
From 574ee1ee5025d9941e44238e846f6074fbdf2e87 Mon Sep 17 00:00:00 2001
From: David Schleef <ds@schleef.org>
Date: Sat, 15 Oct 2011 11:51:17 -0700
Subject: [PATCH] x86insn: switch to ultra-conservative nops
---
orc/orcx86insn.c | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/orc/orcx86insn.c b/orc/orcx86insn.c
index 78ca30d..33982e2 100644
--- a/orc/orcx86insn.c
+++ b/orc/orcx86insn.c
@@ -527,14 +527,6 @@ orc_uint8 nop_codes[][16] = {
{ 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
{ 0x0f, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax) */
{ 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopl 0x0(%rax,%rax,1) */
-#else
- { 0x90, 0x90, 0x90 },
- { 0x90, 0x90, 0x90, 0x90 },
- { 0x90, 0x90, 0x90, 0x90, 0x90 },
- { 0x66, 0x0f, 0x1f, 0x44, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
- { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
- { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
-#endif
{ 0x66, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 }, /* nopw 0x0(%rax,%rax,1) */
/* Forms of nopw %cs:0x0(%rax,%rax,1) */
{ 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00 },
@@ -546,6 +538,24 @@ orc_uint8 nop_codes[][16] = {
0x00, 0x00 },
{ 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x2e, 0x0f, 0x1f, 0x84, 0x00, 0x00,
0x00, 0x00, 0x00 },
+#else
+ { 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+ 0x90, },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+ 0x90, 0x90, },
+ { 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90,
+ 0x90, 0x90, 0x90, },
+#endif
};
void
--
1.7.0.4

View File

@ -1,176 +0,0 @@
From 30a9f48e8dd12f7b607d1dbc9a795f939208f5d6 Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Tue, 4 Oct 2011 13:28:38 +0200
Subject: [PATCH 1/4] Use a subdirectory for temporary files.
This allows the a better integration with selinux, as the rule can use the path name and doesn't need globbing.
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
orc/orccodemem.c | 18 +++++++++++++++++-
1 files changed, 17 insertions(+), 1 deletions(-)
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index f470be5..e125faa 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -193,11 +193,27 @@ orc_code_chunk_free (OrcCodeChunk *chunk)
#ifdef HAVE_CODEMEM_MMAP
int
orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
- const char *dir, int force_unlink)
+ const char *basedir, int force_unlink)
{
int fd;
int n;
char *filename;
+ char *dir;
+ struct stat stat_p;
+
+ dir = malloc (strlen (basedir) + strlen ("/.orc"));
+ sprintf (dir, "%s/.orc", basedir);
+
+ stat (dir, &stat_p);
+ if (!S_ISDIR (stat_p.st_mode))
+ {
+ n = mkdir (dir, S_IRWXU);
+ if (n < 0)
+ {
+ ORC_WARNING ("failed to create subdir");
+ return FALSE;
+ }
+ }
filename = malloc (strlen ("/orcexec..") +
strlen (dir) + 6 + 1);
--
1.7.7.5
From 2e35ab7bca7eef855b12eed26da9d543c8b225b6 Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Sun, 1 Jan 2012 21:25:28 +0100
Subject: [PATCH 2/4] orccodemem.c: Fix memory allocation and directory
existance.
Noted in https://bugzilla.redhat.com/show_bug.cgi?id=770602
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
orc/orccodemem.c | 6 +++---
1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index e125faa..be76472 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -201,11 +201,11 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
char *dir;
struct stat stat_p;
- dir = malloc (strlen (basedir) + strlen ("/.orc"));
+ dir = malloc (strlen (basedir) + strlen ("/.orc") + 1);
sprintf (dir, "%s/.orc", basedir);
- stat (dir, &stat_p);
- if (!S_ISDIR (stat_p.st_mode))
+ if (stat (dir, &stat_p) == -1 ||
+ !S_ISDIR (stat_p.st_mode))
{
n = mkdir (dir, S_IRWXU);
if (n < 0)
--
1.7.7.5
From 5a9009d4275fd40a0079a8bf44a7de31c2962bb0 Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Sun, 1 Jan 2012 21:41:04 +0100
Subject: [PATCH 3/4] Add compiler option for ENABLE_USER_CODEMEM.
This option disbales non-user-dependent path checking at compile time. If enabled, only paths corresponding to a user are checked.
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
configure.ac | 4 ++++
orc/Makefile.am | 3 +++
orc/orccodemem.c | 2 ++
3 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/configure.ac b/configure.ac
index 6637b8e..52edb5c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -164,6 +164,10 @@ AM_CONDITIONAL(ENABLE_BACKEND_NEON, test "x$ENABLE_BACKEND_NEON" = "xyes")
AM_CONDITIONAL(ENABLE_BACKEND_ARM, test "x$ENABLE_BACKEND_ARM" = "xyes")
AM_CONDITIONAL(ENABLE_BACKEND_C64X, test "x$ENABLE_BACKEND_C64X" = "xyes")
+AC_ARG_ENABLE(user-codemem,
+ AC_HELP_STRING([--enable-user-codemem],[Force codemem allocation to be user dependent (default is no)]),
+ [], [enable_user_codemem=no])
+AM_CONDITIONAL(ENABLE_USER_CODEMEM, test "x$enable_user_codemem" = "xyes")
AC_DEFINE(ORC_EXPORTS, 1, [Defined for compiling internal code])
diff --git a/orc/Makefile.am b/orc/Makefile.am
index 8f379e0..43e9028 100644
--- a/orc/Makefile.am
+++ b/orc/Makefile.am
@@ -9,6 +9,9 @@ liborc_@ORC_MAJORMINOR@_la_LDFLAGS = \
-no-undefined -export-symbols-regex 'orc_'
liborc_@ORC_MAJORMINOR@_la_CFLAGS = $(ORC_CFLAGS) \
-DORC_ENABLE_UNSTABLE_API
+if ENABLE_USER_CODEMEM
+liborc_@ORC_MAJORMINOR@_la_CFLAGS += -DORC_FORCE_USER_CODEMEM
+endif
liborc_@ORC_MAJORMINOR@_la_SOURCES = \
orc.c \
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index be76472..32c14f1 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -279,12 +279,14 @@ orc_code_region_allocate_codemem (OrcCodeRegion *region)
{
const char *tmpdir;
+#ifndef ORC_FORCE_USER_CODEMEM
tmpdir = getenv ("TMPDIR");
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
tmpdir, FALSE)) return;
if (orc_code_region_allocate_codemem_dual_map (region,
"/tmp", FALSE)) return;
+#endif
tmpdir = getenv ("XDG_RUNTIME_DIR");
if (tmpdir && orc_code_region_allocate_codemem_dual_map (region,
--
1.7.7.5
From 53f540b0856d0e5c03f3d65edcce8d909f204dd4 Mon Sep 17 00:00:00 2001
From: Fabian Deutsch <fabian.deutsch@gmx.de>
Date: Sat, 7 Jan 2012 22:37:08 +0100
Subject: [PATCH 4/4] orccodemem: Fix a small leak.
Signed-off-by: Fabian Deutsch <fabian.deutsch@gmx.de>
---
orc/orccodemem.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/orc/orccodemem.c b/orc/orccodemem.c
index 32c14f1..fc16ebc 100644
--- a/orc/orccodemem.c
+++ b/orc/orccodemem.c
@@ -227,6 +227,7 @@ orc_code_region_allocate_codemem_dual_map (OrcCodeRegion *region,
if (force_unlink || !_orc_compiler_flag_debug) {
unlink (filename);
}
+ free (dir);
free (filename);
n = ftruncate (fd, SIZE);
--
1.7.7.5

View File

@ -1,24 +1,19 @@
Name: orc
Version: 0.4.16
Release: 8%{?dist}
Version: 0.4.17
Release: 1%{?dist}
Summary: The Oil Run-time Compiler
Group: System Environment/Libraries
License: BSD
URL: http://code.entropywave.com/projects/orc/
URL: http://cgit.freedesktop.org/gstreamer/orc/
Source0: http://code.entropywave.com/download/orc/orc-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
BuildRequires: gtk-doc, libtool
Patch1: orc-no-nopl.patch
Patch2: orc-no-nopw.patch
# Upstream bug: https://bugs.freedesktop.org/show_bug.cgi?id=41446
Patch3: orc-subdir.patch
# Fix fallback when register allocation fails
Patch4: reg-alloc-fail.patch
# Upstream bugs: https://bugs.freedesktop.org/show_bug.cgi?id=41446
Patch1: 0001-Use-a-subdirectory-for-temporary-files.patch
Patch2: 0002-Add-compiler-option-for-ENABLE_USER_CODEMEM.patch
%description
Orc is a library and set of tools for compiling and executing
@ -60,10 +55,8 @@ The Orc compiler, to produce optimized code.
%prep
%setup -q
%patch1 -p1 -b .nopl
%patch2 -p1 -b .nopw
%patch3 -p1 -b .subdir
%patch4 -p1 -b .regalloc
%patch1 -p1 -b .subdir
%patch2 -p1 -b .condtmp
autoreconf -vif
@ -127,6 +120,10 @@ make check
%changelog
* Wed Feb 20 2013 Fabian Deutsch <fabiand@fedoraproject.org> - 0.4.17-1
- Update to latest upstream release
- Removed obsolete patches
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.4.16-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild

View File

@ -1,58 +0,0 @@
Fixes http://dev.laptop.org/ticket/12463
From b4f7fcaf99a4d952e59f2a9fa9286d24cc4b3a5a Mon Sep 17 00:00:00 2001
From: =?utf8?q?Sebastian=20Dr=C3=B6ge?= <sebastian.droege@collabora.co.uk>
Date: Thu, 10 Jan 2013 18:13:32 +0100
Subject: [PATCH] orccompiler: Allow fallback to backup/emulation if the
target specific register allocation fails
The OrcCode of the program wouldn't be filled with all required fields
if the register allocation happens to early.
---
orc/orccompiler.c | 16 +++++++---------
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/orc/orccompiler.c b/orc/orccompiler.c
index 68eb01e..2175206 100644
--- a/orc/orccompiler.c
+++ b/orc/orccompiler.c
@@ -254,12 +254,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
orc_compiler_rewrite_vars (compiler);
if (compiler->error) goto error;
- if (compiler->target) {
- orc_compiler_global_reg_alloc (compiler);
-
- orc_compiler_rewrite_vars2 (compiler);
- }
-
#if 0
{
ORC_ERROR("variables");
@@ -285,9 +279,6 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
}
}
#endif
-
- if (compiler->error) goto error;
-
program->orccode = orc_code_new ();
program->orccode->is_2d = program->is_2d;
@@ -323,6 +314,13 @@ orc_program_compile_full (OrcProgram *program, OrcTarget *target,
goto error;
}
+ if (compiler->target) {
+ orc_compiler_global_reg_alloc (compiler);
+
+ orc_compiler_rewrite_vars2 (compiler);
+ }
+ if (compiler->error) goto error;
+
orc_compiler_assign_rules (compiler);
if (compiler->error) goto error;
--
1.7.9.5

View File

@ -1 +1 @@
e482932e544c847761449b106ecbc483 orc-0.4.16.tar.gz
af1bf3dab9e69f3c36f389285e2a12a1 orc-0.4.17.tar.gz