This commit is contained in:
0
bsp/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load
Executable file → Normal file
0
bsp/buildroot/package/am33x-cm3/S93-am335x-pm-firmware-load
Executable file → Normal file
@@ -0,0 +1,35 @@
|
||||
makefiles: use pkgconf to get libs deps
|
||||
|
||||
LIBS lists library dependencies without taking into account static linking
|
||||
that need ordered listing and more libraries listed since differently from
|
||||
shared linking dependency is not transparent(i.e. -lcrypto could need
|
||||
-latomic etc.).
|
||||
|
||||
Replace -lcrypto with `pkg-config --libs libcrypto` command to be sure all
|
||||
needed libraries are listed during linking.
|
||||
|
||||
Signed-off-by: Giulio Benetti <giulio.benetti@micronovasrl.com>
|
||||
---
|
||||
diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk
|
||||
--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adbd.mk 2019-04-08 16:05:02.967710428 +0200
|
||||
+++ android-tools-4.2.2+git20130218/debian/makefiles/adbd.mk 2019-04-08 16:30:42.463084426 +0200
|
||||
@@ -44,7 +44,7 @@ CPPFLAGS+= -DADBD_NON_ANDROID
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/adbd
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/include
|
||||
|
||||
-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt
|
||||
+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto` -lcrypt
|
||||
|
||||
OBJS= $(patsubst %, %.o, $(basename $(SRCS)))
|
||||
|
||||
diff -urpN android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk android-tools-4.2.2+git20130218/debian/makefiles/adb.mk
|
||||
--- android-tools-4.2.2+git20130218.orig/debian/makefiles/adb.mk 2019-04-08 16:05:02.959701400 +0200
|
||||
+++ android-tools-4.2.2+git20130218/debian/makefiles/adb.mk 2019-04-08 16:31:06.529426250 +0200
|
||||
@@ -41,7 +41,7 @@ CPPFLAGS+= -DHAVE_TERMIO_H
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/adb
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/include
|
||||
|
||||
-LIBS+= -lc -lpthread -lz -lcrypto
|
||||
+LIBS+= -lc -lpthread -lz `pkg-config --libs libcrypto`
|
||||
|
||||
OBJS= $(SRCS:.c=.o)
|
||||
@@ -1,36 +0,0 @@
|
||||
Fix static linking of adb/adbd
|
||||
|
||||
Both adb and adbd use OpenSSL, which indirectly uses zlib. Since
|
||||
adb/adbd also use zlib directly -lz is included in the linker flags,
|
||||
but not at the right position to ensure that static linking works: to
|
||||
make it possible for OpenSSL symbols to see zlib symbols, -lz must
|
||||
appear after -lcrypto.
|
||||
|
||||
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
|
||||
|
||||
Index: b/debian/makefiles/adb.mk
|
||||
===================================================================
|
||||
--- a/debian/makefiles/adb.mk
|
||||
+++ b/debian/makefiles/adb.mk
|
||||
@@ -41,7 +41,7 @@
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/adb
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/include
|
||||
|
||||
-LIBS+= -lc -lpthread -lz -lcrypto
|
||||
+LIBS+= -lc -lpthread -lcrypto -lz
|
||||
|
||||
OBJS= $(SRCS:.c=.o)
|
||||
|
||||
Index: b/debian/makefiles/adbd.mk
|
||||
===================================================================
|
||||
--- a/debian/makefiles/adbd.mk
|
||||
+++ b/debian/makefiles/adbd.mk
|
||||
@@ -44,7 +44,7 @@
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/adbd
|
||||
CPPFLAGS+= -I$(SRCDIR)/core/include
|
||||
|
||||
-LIBS+= -lc -lpthread -lz -lcrypto -lcrypt
|
||||
+LIBS+= -lc -lpthread -lcrypto -lz -lcrypt
|
||||
|
||||
OBJS= $(patsubst %, %.o, $(basename $(SRCS)))
|
||||
|
||||
@@ -11,6 +11,8 @@ ANDROID_TOOLS_EXTRA_DOWNLOADS = android-tools_$(ANDROID_TOOLS_VERSION)-3ubuntu41
|
||||
HOST_ANDROID_TOOLS_EXTRA_DOWNLOADS = $(ANDROID_TOOLS_EXTRA_DOWNLOADS)
|
||||
ANDROID_TOOLS_LICENSE = Apache-2.0
|
||||
ANDROID_TOOLS_LICENSE_FILES = debian/copyright
|
||||
ANDROID_TOOLS_DEPENDENCIES = host-pkgconf
|
||||
HOST_ANDROID_TOOLS_DEPENDENCIES = host-pkgconf
|
||||
|
||||
# Extract the Debian tarball inside the sources
|
||||
define ANDROID_TOOLS_DEBIAN_EXTRACT
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# From http://archive.apache.org/dist/httpd/httpd-2.4.38.tar.bz2.sha256
|
||||
sha256 7dc65857a994c98370dc4334b260101a7a04be60e6e74a5c57a6dee1bc8f394a httpd-2.4.38.tar.bz2
|
||||
# From http://archive.apache.org/dist/httpd/httpd-2.4.39.tar.bz2.sha256
|
||||
sha256 b4ca9d05773aa59b54d66cd8f4744b945289f084d3be17d7981d1783a5decfa2 httpd-2.4.39.tar.bz2
|
||||
# Locally computed
|
||||
sha256 c49c0819a726b70142621715dae3159c47b0349c2bc9db079070f28dadac0229 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
APACHE_VERSION = 2.4.38
|
||||
APACHE_VERSION = 2.4.39
|
||||
APACHE_SOURCE = httpd-$(APACHE_VERSION).tar.bz2
|
||||
APACHE_SITE = http://archive.apache.org/dist/httpd
|
||||
APACHE_LICENSE = Apache-2.0
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Locally computed
|
||||
sha256 d74ba84ad92cd710eb071940e6057ef644d71864431d91aaafe0717a8939afc3 asterisk-16.1.1.tar.gz
|
||||
sha256 c022e9d5410ed94ab1aa51ba1e2a8b196f0dfa15bcd0bd545d06efee4c786578 asterisk-16.2.1.tar.gz
|
||||
|
||||
# sha1 from: http://downloads.asterisk.org/pub/telephony/sounds/releases
|
||||
# sha256 locally computed
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
ASTERISK_VERSION = 16.1.1
|
||||
ASTERISK_VERSION = 16.2.1
|
||||
# Use the github mirror: it's an official mirror maintained by Digium, and
|
||||
# provides tarballs, which the main Asterisk git tree (behind Gerrit) does not.
|
||||
ASTERISK_SITE = $(call github,asterisk,asterisk,$(ASTERISK_VERSION))
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
From e111def44a7df4624a4aa3f85fe98054bffb6b4f Mon Sep 17 00:00:00 2001
|
||||
From: Trent Lloyd <trent@lloyd.id.au>
|
||||
Date: Sat, 22 Dec 2018 09:06:07 +0800
|
||||
Subject: [PATCH] Drop legacy unicast queries from address not on local link
|
||||
|
||||
When handling legacy unicast queries, ensure that the source IP is
|
||||
inside a subnet on the local link, otherwise drop the packet.
|
||||
|
||||
Fixes #145
|
||||
Fixes #203
|
||||
CVE-2017-6519
|
||||
CVE-2018-100084
|
||||
|
||||
Backported from: e111def44a7df4624a4aa3f85fe98054bffb6b4f
|
||||
Signed-off-by: Artem Panfilov <panfilov.artyom@gmail.com>
|
||||
---
|
||||
avahi-core/server.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/avahi-core/server.c b/avahi-core/server.c
|
||||
index a2cb19a8..a2580e38 100644
|
||||
--- a/avahi-core/server.c
|
||||
+++ b/avahi-core/server.c
|
||||
@@ -930,6 +930,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
|
||||
|
||||
if (avahi_dns_packet_is_query(p)) {
|
||||
int legacy_unicast = 0;
|
||||
+ char t[AVAHI_ADDRESS_STR_MAX];
|
||||
|
||||
/* For queries EDNS0 might allow ARCOUNT != 0. We ignore the
|
||||
* AR section completely here, so far. Until the day we add
|
||||
@@ -947,6 +948,13 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
|
||||
legacy_unicast = 1;
|
||||
}
|
||||
|
||||
+ if (!is_mdns_mcast_address(dst_address) &&
|
||||
+ !avahi_interface_address_on_link(i, src_address)) {
|
||||
+
|
||||
+ avahi_log_debug("Received non-local unicast query from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
if (legacy_unicast)
|
||||
reflect_legacy_unicast_query_packet(s, p, i, src_address, port);
|
||||
|
||||
--
|
||||
2.19.1
|
||||
|
||||
54
bsp/buildroot/package/bash/0001-bash44-019.patch
Normal file
54
bsp/buildroot/package/bash/0001-bash44-019.patch
Normal file
@@ -0,0 +1,54 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-019
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-019
|
||||
|
||||
Bug-Reported-by: Kieran Grant <kieran.thehacker.grant@gmail.com>
|
||||
Bug-Reference-ID: <ec9071ae-efb1-9e09-5d03-e905daf2835c@gmail.com>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-02/msg00002.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
With certain values for PS1, especially those that wrap onto three or more
|
||||
lines, readline will miscalculate the number of invisible characters,
|
||||
leading to crashes and core dumps.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4.18/lib/readline/display.c 2016-07-28 14:49:33.000000000 -0400
|
||||
--- b/lib/readline/display.c 2018-02-03 19:19:35.000000000 -0500
|
||||
***************
|
||||
*** 772,776 ****
|
||||
wadjust = (newlines == 0)
|
||||
? prompt_invis_chars_first_line
|
||||
! : ((newlines == prompt_lines_estimate) ? wrap_offset : prompt_invis_chars_first_line);
|
||||
|
||||
/* fix from Darin Johnson <darin@acuson.com> for prompt string with
|
||||
--- b/788,794 ----
|
||||
wadjust = (newlines == 0)
|
||||
? prompt_invis_chars_first_line
|
||||
! : ((newlines == prompt_lines_estimate)
|
||||
! ? (wrap_offset - prompt_invis_chars_first_line)
|
||||
! : 0);
|
||||
|
||||
/* fix from Darin Johnson <darin@acuson.com> for prompt string with
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 18
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 19
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
181
bsp/buildroot/package/bash/0002-bash44-020.patch
Normal file
181
bsp/buildroot/package/bash/0002-bash44-020.patch
Normal file
@@ -0,0 +1,181 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-020
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-020
|
||||
|
||||
Bug-Reported-by: Graham Northup <northug@clarkson.edu>
|
||||
Bug-Reference-ID: <537530c3-61f0-349b-9de6-fa4e2487f428@clarkson.edu>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2017-02/msg00025.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
In circumstances involving long-running scripts that create and reap many
|
||||
processes, it is possible for the hash table bash uses to store exit
|
||||
statuses from asynchronous processes to develop loops. This patch fixes
|
||||
the loop causes and adds code to detect any future loops.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/jobs.c 2016-11-11 13:42:55.000000000 -0500
|
||||
--- b/jobs.c 2017-02-22 15:16:28.000000000 -0500
|
||||
***************
|
||||
*** 813,818 ****
|
||||
struct pidstat *ps;
|
||||
|
||||
! bucket = pshash_getbucket (pid);
|
||||
! psi = bgp_getindex ();
|
||||
ps = &bgpids.storage[psi];
|
||||
|
||||
--- b/796,815 ----
|
||||
struct pidstat *ps;
|
||||
|
||||
! /* bucket == existing chain of pids hashing to same value
|
||||
! psi = where were going to put this pid/status */
|
||||
!
|
||||
! bucket = pshash_getbucket (pid); /* index into pidstat_table */
|
||||
! psi = bgp_getindex (); /* bgpids.head, index into storage */
|
||||
!
|
||||
! /* XXX - what if psi == *bucket? */
|
||||
! if (psi == *bucket)
|
||||
! {
|
||||
! #ifdef DEBUG
|
||||
! internal_warning ("hashed pid %d (pid %d) collides with bgpids.head, skipping", psi, pid);
|
||||
! #endif
|
||||
! bgpids.storage[psi].pid = NO_PID; /* make sure */
|
||||
! psi = bgp_getindex (); /* skip to next one */
|
||||
! }
|
||||
!
|
||||
ps = &bgpids.storage[psi];
|
||||
|
||||
***************
|
||||
*** 842,845 ****
|
||||
--- b/839,843 ----
|
||||
{
|
||||
struct pidstat *ps;
|
||||
+ ps_index_t *bucket;
|
||||
|
||||
ps = &bgpids.storage[psi];
|
||||
***************
|
||||
*** 847,856 ****
|
||||
return;
|
||||
|
||||
! if (ps->bucket_next != NO_PID)
|
||||
bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev;
|
||||
! if (ps->bucket_prev != NO_PID)
|
||||
bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next;
|
||||
else
|
||||
! *(pshash_getbucket (ps->pid)) = ps->bucket_next;
|
||||
}
|
||||
|
||||
--- b/845,861 ----
|
||||
return;
|
||||
|
||||
! if (ps->bucket_next != NO_PIDSTAT)
|
||||
bgpids.storage[ps->bucket_next].bucket_prev = ps->bucket_prev;
|
||||
! if (ps->bucket_prev != NO_PIDSTAT)
|
||||
bgpids.storage[ps->bucket_prev].bucket_next = ps->bucket_next;
|
||||
else
|
||||
! {
|
||||
! bucket = pshash_getbucket (ps->pid);
|
||||
! *bucket = ps->bucket_next; /* deleting chain head in hash table */
|
||||
! }
|
||||
!
|
||||
! /* clear out this cell, just in case */
|
||||
! ps->pid = NO_PID;
|
||||
! ps->bucket_next = ps->bucket_prev = NO_PIDSTAT;
|
||||
}
|
||||
|
||||
***************
|
||||
*** 859,863 ****
|
||||
pid_t pid;
|
||||
{
|
||||
! ps_index_t psi;
|
||||
|
||||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0)
|
||||
--- b/864,868 ----
|
||||
pid_t pid;
|
||||
{
|
||||
! ps_index_t psi, orig_psi;
|
||||
|
||||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0)
|
||||
***************
|
||||
*** 865,871 ****
|
||||
|
||||
/* Search chain using hash to find bucket in pidstat_table */
|
||||
! for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next)
|
||||
! if (bgpids.storage[psi].pid == pid)
|
||||
! break;
|
||||
|
||||
if (psi == NO_PIDSTAT)
|
||||
--- b/870,883 ----
|
||||
|
||||
/* Search chain using hash to find bucket in pidstat_table */
|
||||
! for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next)
|
||||
! {
|
||||
! if (bgpids.storage[psi].pid == pid)
|
||||
! break;
|
||||
! if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */
|
||||
! {
|
||||
! internal_warning ("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next", psi);
|
||||
! return 0;
|
||||
! }
|
||||
! }
|
||||
|
||||
if (psi == NO_PIDSTAT)
|
||||
***************
|
||||
*** 905,909 ****
|
||||
pid_t pid;
|
||||
{
|
||||
! ps_index_t psi;
|
||||
|
||||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0)
|
||||
--- b/917,921 ----
|
||||
pid_t pid;
|
||||
{
|
||||
! ps_index_t psi, orig_psi;
|
||||
|
||||
if (bgpids.storage == 0 || bgpids.nalloc == 0 || bgpids.npid == 0)
|
||||
***************
|
||||
*** 911,917 ****
|
||||
|
||||
/* Search chain using hash to find bucket in pidstat_table */
|
||||
! for (psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next)
|
||||
! if (bgpids.storage[psi].pid == pid)
|
||||
! return (bgpids.storage[psi].status);
|
||||
|
||||
return -1;
|
||||
--- b/923,936 ----
|
||||
|
||||
/* Search chain using hash to find bucket in pidstat_table */
|
||||
! for (orig_psi = psi = *(pshash_getbucket (pid)); psi != NO_PIDSTAT; psi = bgpids.storage[psi].bucket_next)
|
||||
! {
|
||||
! if (bgpids.storage[psi].pid == pid)
|
||||
! return (bgpids.storage[psi].status);
|
||||
! if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */
|
||||
! {
|
||||
! internal_warning ("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next", psi);
|
||||
! return -1;
|
||||
! }
|
||||
! }
|
||||
|
||||
return -1;
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 19
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 20
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
61
bsp/buildroot/package/bash/0003-bash44-021.patch
Normal file
61
bsp/buildroot/package/bash/0003-bash44-021.patch
Normal file
@@ -0,0 +1,61 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-021
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-021
|
||||
|
||||
Bug-Reported-by: werner@suse.de
|
||||
Bug-Reference-ID: <201803281402.w2SE2VOa000476@noether.suse.de>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2018-03/msg00196.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
A SIGINT received inside a SIGINT trap handler can possibly cause the
|
||||
shell to loop.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-20180329/jobs.c 2018-02-11 18:07:22.000000000 -0500
|
||||
--- b/jobs.c 2018-04-02 14:24:21.000000000 -0400
|
||||
***************
|
||||
*** 2690,2694 ****
|
||||
if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
|
||||
{
|
||||
! old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
|
||||
waiting_for_child = 0;
|
||||
if (old_sigint_handler == SIG_IGN)
|
||||
--- b/2690,2704 ----
|
||||
if (job_control == 0 || (subshell_environment&SUBSHELL_COMSUB))
|
||||
{
|
||||
! SigHandler *temp_sigint_handler;
|
||||
!
|
||||
! temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
|
||||
! if (temp_sigint_handler == wait_sigint_handler)
|
||||
! {
|
||||
! #if defined (DEBUG)
|
||||
! internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
|
||||
! #endif
|
||||
! }
|
||||
! else
|
||||
! old_sigint_handler = temp_sigint_handler;
|
||||
waiting_for_child = 0;
|
||||
if (old_sigint_handler == SIG_IGN)
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 20
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 21
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
65
bsp/buildroot/package/bash/0004-bash44-022.patch
Normal file
65
bsp/buildroot/package/bash/0004-bash44-022.patch
Normal file
@@ -0,0 +1,65 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-022
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-022
|
||||
|
||||
Bug-Reported-by: Nuzhna Pomoshch <nuzhna_pomoshch@yahoo.com>
|
||||
Bug-Reference-ID: <1317167476.1492079.1495999776464@mail.yahoo.com>
|
||||
Bug-Reference-URL: https://lists.gnu.org/archive/html/bug-readline/2017-05/msg00005.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
There are cases where a failing readline command (e.g., delete-char at the end
|
||||
of a line) can cause a multi-character key sequence to `back up' and attempt
|
||||
to re-read some of the characters in the sequence.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/lib/readline/readline.c 2016-04-20 15:53:52.000000000 -0400
|
||||
--- b/lib/readline/readline.c 2018-05-26 17:19:00.000000000 -0400
|
||||
***************
|
||||
*** 1058,1062 ****
|
||||
r = _rl_dispatch (ANYOTHERKEY, m);
|
||||
}
|
||||
! else if (r && map[ANYOTHERKEY].function)
|
||||
{
|
||||
/* We didn't match (r is probably -1), so return something to
|
||||
--- b/1056,1060 ----
|
||||
r = _rl_dispatch (ANYOTHERKEY, m);
|
||||
}
|
||||
! else if (r < 0 && map[ANYOTHERKEY].function)
|
||||
{
|
||||
/* We didn't match (r is probably -1), so return something to
|
||||
***************
|
||||
*** 1070,1074 ****
|
||||
return -2;
|
||||
}
|
||||
! else if (r && got_subseq)
|
||||
{
|
||||
/* OK, back up the chain. */
|
||||
--- b/1068,1072 ----
|
||||
return -2;
|
||||
}
|
||||
! else if (r < 0 && got_subseq) /* XXX */
|
||||
{
|
||||
/* OK, back up the chain. */
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 21
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 22
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
56
bsp/buildroot/package/bash/0005-bash44-023.patch
Normal file
56
bsp/buildroot/package/bash/0005-bash44-023.patch
Normal file
@@ -0,0 +1,56 @@
|
||||
From https://ftp.gnu.org/gnu/bash/bash-4.4-patches/bash44-023
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
|
||||
BASH PATCH REPORT
|
||||
=================
|
||||
|
||||
Bash-Release: 4.4
|
||||
Patch-ID: bash44-023
|
||||
|
||||
Bug-Reported-by: Martijn Dekker <martijn@inlv.org>
|
||||
Bug-Reference-ID: <5326d6b9-2625-1d32-3e6e-ad1d15462c09@inlv.org>
|
||||
Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2016-11/msg00041.html
|
||||
|
||||
Bug-Description:
|
||||
|
||||
When sourcing a file from an interactive shell, setting the SIGINT handler
|
||||
to the default and typing ^C will cause the shell to exit.
|
||||
|
||||
Patch (apply with `patch -p0'):
|
||||
|
||||
*** bash-4.4-patched/builtins/trap.def 2016-01-25 13:32:38.000000000 -0500
|
||||
--- b/builtins/trap.def 2016-11-06 12:04:35.000000000 -0500
|
||||
***************
|
||||
*** 99,102 ****
|
||||
--- b/99,103 ----
|
||||
|
||||
extern int posixly_correct, subshell_environment;
|
||||
+ extern int sourcelevel, running_trap;
|
||||
|
||||
int
|
||||
***************
|
||||
*** 213,216 ****
|
||||
--- b/214,220 ----
|
||||
if (interactive)
|
||||
set_signal_handler (SIGINT, sigint_sighandler);
|
||||
+ /* special cases for interactive == 0 */
|
||||
+ else if (interactive_shell && (sourcelevel||running_trap))
|
||||
+ set_signal_handler (SIGINT, sigint_sighandler);
|
||||
else
|
||||
set_signal_handler (SIGINT, termsig_sighandler);
|
||||
*** bash-4.4/patchlevel.h 2016-06-22 14:51:03.000000000 -0400
|
||||
--- b/patchlevel.h 2016-10-01 11:01:28.000000000 -0400
|
||||
***************
|
||||
*** 26,30 ****
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 22
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
--- b/26,30 ----
|
||||
looks for to find the patch level (for the sccs version string). */
|
||||
|
||||
! #define PATCHLEVEL 23
|
||||
|
||||
#endif /* _PATCHLEVEL_H_ */
|
||||
@@ -0,0 +1,27 @@
|
||||
configure.ac: don't check for C++ compiler
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
|
||||
diff -durN beecrypt-4.2.1-orig/configure.ac beecrypt-4.2.1/configure.ac
|
||||
--- beecrypt-4.2.1-orig/configure.ac 2019-03-01 19:58:16.516117640 +0100
|
||||
+++ beecrypt-4.2.1/configure.ac 2019-03-01 21:10:17.707391803 +0100
|
||||
@@ -119,9 +119,6 @@
|
||||
|
||||
# Checks for C compiler and preprocessor
|
||||
AC_PROG_CC
|
||||
-AC_PROG_CPP
|
||||
-AC_PROG_CXX
|
||||
-AC_PROG_CXXCPP
|
||||
AM_PROG_AS
|
||||
AC_PROG_LD
|
||||
AC_PROG_LN_S
|
||||
@@ -133,9 +130,6 @@
|
||||
AC_LANG_PUSH(C)
|
||||
AC_OPENMP
|
||||
AC_LANG_POP(C)
|
||||
-AC_LANG_PUSH(C++)
|
||||
-AC_OPENMP
|
||||
-AC_LANG_POP(C++)
|
||||
|
||||
# Checks for compiler characteristics and flags
|
||||
if test "$ac_enable_expert_mode" = no; then
|
||||
@@ -0,0 +1,133 @@
|
||||
From ef49780d30d3ddc5735cfc32561b678a634fa72f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= <ondrej@sury.org>
|
||||
Date: Wed, 17 Apr 2019 15:22:27 +0200
|
||||
Subject: [PATCH] Replace atomic operations in bin/named/client.c with
|
||||
isc_refcount reference counting
|
||||
|
||||
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
|
||||
---
|
||||
bin/named/client.c | 18 +++++++-----------
|
||||
bin/named/include/named/interfacemgr.h | 5 +++--
|
||||
bin/named/interfacemgr.c | 7 +++++--
|
||||
3 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/bin/named/client.c b/bin/named/client.c
|
||||
index 845326abc0..29fecadca8 100644
|
||||
--- a/bin/named/client.c
|
||||
+++ b/bin/named/client.c
|
||||
@@ -402,12 +402,10 @@ tcpconn_detach(ns_client_t *client) {
|
||||
static void
|
||||
mark_tcp_active(ns_client_t *client, bool active) {
|
||||
if (active && !client->tcpactive) {
|
||||
- isc_atomic_xadd(&client->interface->ntcpactive, 1);
|
||||
+ isc_refcount_increment0(&client->interface->ntcpactive, NULL);
|
||||
client->tcpactive = active;
|
||||
} else if (!active && client->tcpactive) {
|
||||
- uint32_t old =
|
||||
- isc_atomic_xadd(&client->interface->ntcpactive, -1);
|
||||
- INSIST(old > 0);
|
||||
+ isc_refcount_decrement(&client->interface->ntcpactive, NULL);
|
||||
client->tcpactive = active;
|
||||
}
|
||||
}
|
||||
@@ -554,7 +552,7 @@ exit_check(ns_client_t *client) {
|
||||
if (client->mortal && TCP_CLIENT(client) &&
|
||||
client->newstate != NS_CLIENTSTATE_FREED &&
|
||||
!ns_g_clienttest &&
|
||||
- isc_atomic_xadd(&client->interface->ntcpaccepting, 0) == 0)
|
||||
+ isc_refcount_current(&client->interface->ntcpaccepting) == 0)
|
||||
{
|
||||
/* Nobody else is accepting */
|
||||
client->mortal = false;
|
||||
@@ -3328,7 +3326,6 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
isc_result_t result;
|
||||
ns_client_t *client = event->ev_arg;
|
||||
isc_socket_newconnev_t *nevent = (isc_socket_newconnev_t *)event;
|
||||
- uint32_t old;
|
||||
|
||||
REQUIRE(event->ev_type == ISC_SOCKEVENT_NEWCONN);
|
||||
REQUIRE(NS_CLIENT_VALID(client));
|
||||
@@ -3348,8 +3345,7 @@ client_newconn(isc_task_t *task, isc_event_t *event) {
|
||||
INSIST(client->naccepts == 1);
|
||||
client->naccepts--;
|
||||
|
||||
- old = isc_atomic_xadd(&client->interface->ntcpaccepting, -1);
|
||||
- INSIST(old > 0);
|
||||
+ isc_refcount_decrement(&client->interface->ntcpaccepting, NULL);
|
||||
|
||||
/*
|
||||
* We must take ownership of the new socket before the exit
|
||||
@@ -3480,8 +3476,8 @@ client_accept(ns_client_t *client) {
|
||||
* quota is tcp-clients plus the number of listening
|
||||
* interfaces plus 1.)
|
||||
*/
|
||||
- exit = (isc_atomic_xadd(&client->interface->ntcpactive, 0) >
|
||||
- (client->tcpactive ? 1 : 0));
|
||||
+ exit = (isc_refcount_current(&client->interface->ntcpactive) >
|
||||
+ (client->tcpactive ? 1U : 0U));
|
||||
if (exit) {
|
||||
client->newstate = NS_CLIENTSTATE_INACTIVE;
|
||||
(void)exit_check(client);
|
||||
@@ -3539,7 +3535,7 @@ client_accept(ns_client_t *client) {
|
||||
* listening for connections itself to prevent the interface
|
||||
* going dead.
|
||||
*/
|
||||
- isc_atomic_xadd(&client->interface->ntcpaccepting, 1);
|
||||
+ isc_refcount_increment0(&client->interface->ntcpaccepting, NULL);
|
||||
}
|
||||
|
||||
static void
|
||||
diff --git a/bin/named/include/named/interfacemgr.h b/bin/named/include/named/interfacemgr.h
|
||||
index 3535ef22a8..6e10f210fd 100644
|
||||
--- a/bin/named/include/named/interfacemgr.h
|
||||
+++ b/bin/named/include/named/interfacemgr.h
|
||||
@@ -45,6 +45,7 @@
|
||||
#include <isc/magic.h>
|
||||
#include <isc/mem.h>
|
||||
#include <isc/socket.h>
|
||||
+#include <isc/refcount.h>
|
||||
|
||||
#include <dns/result.h>
|
||||
|
||||
@@ -75,11 +76,11 @@ struct ns_interface {
|
||||
/*%< UDP dispatchers. */
|
||||
isc_socket_t * tcpsocket; /*%< TCP socket. */
|
||||
isc_dscp_t dscp; /*%< "listen-on" DSCP value */
|
||||
- int32_t ntcpaccepting; /*%< Number of clients
|
||||
+ isc_refcount_t ntcpaccepting; /*%< Number of clients
|
||||
ready to accept new
|
||||
TCP connections on this
|
||||
interface */
|
||||
- int32_t ntcpactive; /*%< Number of clients
|
||||
+ isc_refcount_t ntcpactive; /*%< Number of clients
|
||||
servicing TCP queries
|
||||
(whether accepting or
|
||||
connected) */
|
||||
diff --git a/bin/named/interfacemgr.c b/bin/named/interfacemgr.c
|
||||
index d9f6df5802..135533be6b 100644
|
||||
--- a/bin/named/interfacemgr.c
|
||||
+++ b/bin/named/interfacemgr.c
|
||||
@@ -386,8 +386,8 @@ ns_interface_create(ns_interfacemgr_t *mgr, isc_sockaddr_t *addr,
|
||||
* connections will be handled in parallel even though there is
|
||||
* only one client initially.
|
||||
*/
|
||||
- ifp->ntcpaccepting = 0;
|
||||
- ifp->ntcpactive = 0;
|
||||
+ isc_refcount_init(&ifp->ntcpaccepting, 0);
|
||||
+ isc_refcount_init(&ifp->ntcpactive, 0);
|
||||
|
||||
ifp->nudpdispatch = 0;
|
||||
|
||||
@@ -618,6 +618,9 @@ ns_interface_destroy(ns_interface_t *ifp) {
|
||||
|
||||
ns_interfacemgr_detach(&ifp->mgr);
|
||||
|
||||
+ isc_refcount_destroy(&ifp->ntcpactive);
|
||||
+ isc_refcount_destroy(&ifp->ntcpaccepting);
|
||||
+
|
||||
ifp->magic = 0;
|
||||
isc_mem_put(mctx, ifp, sizeof(*ifp));
|
||||
}
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Verified from https://ftp.isc.org/isc/bind9/9.11.5-P4/bind-9.11.5-P4.tar.gz.asc
|
||||
# with key BE0E9748B718253A28BB89FFF1B11BF05CF02E57
|
||||
sha256 7e8c08192bcbaeb6e9f2391a70e67583b027b90e8c4bc1605da6eb126edde434 bind-9.11.5-P4.tar.gz
|
||||
# Verified from https://ftp.isc.org/isc/bind9/9.11.6-P1/bind-9.11.6-P1.tar.gz.asc
|
||||
# with key 156890685EA0DF6A1371EF2017CC5DB1F0088407
|
||||
sha256 58ace2abb4d048b67abcdef0649ecd6cbd3b0652734a41a1d34f942d5500f8ef bind-9.11.6-P1.tar.gz
|
||||
sha256 cd02c93b8dcda794f55dfd1231828d69633072a98eee4874f9cf732d22d9dcde COPYRIGHT
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
BIND_VERSION = 9.11.5-P4
|
||||
BIND_VERSION = 9.11.6-P1
|
||||
BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION)
|
||||
# bind does not support parallel builds.
|
||||
BIND_MAKE = $(MAKE1)
|
||||
@@ -74,8 +74,11 @@ else
|
||||
BIND_CONF_OPTS += --with-openssl=no
|
||||
endif
|
||||
|
||||
# Used by dnssec-checkds and dnssec-coverage
|
||||
ifeq ($(BR2_PACKAGE_PYTHON)$(BR2_PACKAGE_PYTHON3),)
|
||||
# Used by dnssec-keymgr
|
||||
ifeq ($(BR2_PACKAGE_PYTHON_PLY),y)
|
||||
BIND_DEPENDENCIES += host-python-ply
|
||||
BIND_CONF_OPTS += --with-python=$(HOST_DIR)/usr/bin/python
|
||||
else
|
||||
BIND_CONF_OPTS += --with-python=no
|
||||
endif
|
||||
|
||||
|
||||
@@ -0,0 +1,294 @@
|
||||
From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001
|
||||
From: Max Filippov <jcmvbkbc@gmail.com>
|
||||
Date: Tue, 2 Apr 2019 14:32:42 -0700
|
||||
Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation
|
||||
|
||||
Loop opcode relaxation that uses addi/addmi doesn't work well with other
|
||||
relaxations that may cause code movement. Instead of encoding fixed loop
|
||||
end offset in the relaxed sequence use l32r or a pair of const16 to load
|
||||
loop end address. This way the address of the loop end gets a relocation
|
||||
record and it gets updated appropriately.
|
||||
|
||||
gas/
|
||||
2019-04-02 Max Filippov <jcmvbkbc@gmail.com>
|
||||
|
||||
* config/tc-xtensa.c (convert_frag_immed): Drop
|
||||
convert_frag_immed_finish_loop invocation.
|
||||
(convert_frag_immed_finish_loop): Drop declaration and
|
||||
definition.
|
||||
* config/xtensa-relax.c (widen_spec_list): Replace loop
|
||||
widening that uses addi/addmi with widening that uses l32r
|
||||
and const16.
|
||||
|
||||
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
||||
---
|
||||
gas/config/tc-xtensa.c | 120 ----------------------------------------------
|
||||
gas/config/xtensa-relax.c | 77 ++++++++++++++++++++---------
|
||||
2 files changed, 55 insertions(+), 142 deletions(-)
|
||||
|
||||
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
|
||||
index 3bdbbc931cfc..0cc06361cf6f 100644
|
||||
--- a/gas/config/tc-xtensa.c
|
||||
+++ b/gas/config/tc-xtensa.c
|
||||
@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP)
|
||||
static fixS *fix_new_exp_in_seg
|
||||
(segT, subsegT, fragS *, int, int, expressionS *, int,
|
||||
bfd_reloc_code_real_type);
|
||||
-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *);
|
||||
|
||||
static void
|
||||
convert_frag_immed (segT segP,
|
||||
@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP,
|
||||
}
|
||||
}
|
||||
|
||||
- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1)
|
||||
- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn);
|
||||
-
|
||||
if (expanded && is_direct_call_opcode (orig_tinsn.opcode))
|
||||
{
|
||||
/* Add an expansion note on the expanded instruction. */
|
||||
@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg,
|
||||
}
|
||||
|
||||
|
||||
-/* Relax a loop instruction so that it can span loop >256 bytes.
|
||||
-
|
||||
- loop as, .L1
|
||||
- .L0:
|
||||
- rsr as, LEND
|
||||
- wsr as, LBEG
|
||||
- addi as, as, lo8 (label-.L1)
|
||||
- addmi as, as, mid8 (label-.L1)
|
||||
- wsr as, LEND
|
||||
- isync
|
||||
- rsr as, LCOUNT
|
||||
- addi as, as, 1
|
||||
- .L1:
|
||||
- <<body>>
|
||||
- label:
|
||||
-*/
|
||||
-
|
||||
-static void
|
||||
-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn)
|
||||
-{
|
||||
- TInsn loop_insn;
|
||||
- TInsn addi_insn;
|
||||
- TInsn addmi_insn;
|
||||
- unsigned long target;
|
||||
- static xtensa_insnbuf insnbuf = NULL;
|
||||
- unsigned int loop_length, loop_length_hi, loop_length_lo;
|
||||
- xtensa_isa isa = xtensa_default_isa;
|
||||
- addressT loop_offset;
|
||||
- addressT addi_offset = 9;
|
||||
- addressT addmi_offset = 12;
|
||||
- fragS *next_fragP;
|
||||
- int target_count;
|
||||
-
|
||||
- if (!insnbuf)
|
||||
- insnbuf = xtensa_insnbuf_alloc (isa);
|
||||
-
|
||||
- /* Get the loop offset. */
|
||||
- loop_offset = get_expanded_loop_offset (tinsn->opcode);
|
||||
-
|
||||
- /* Validate that there really is a LOOP at the loop_offset. Because
|
||||
- loops are not bundleable, we can assume that the instruction will be
|
||||
- in slot 0. */
|
||||
- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0);
|
||||
- tinsn_immed_from_frag (&loop_insn, fragP, 0);
|
||||
-
|
||||
- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1);
|
||||
- addi_offset += loop_offset;
|
||||
- addmi_offset += loop_offset;
|
||||
-
|
||||
- gas_assert (tinsn->ntok == 2);
|
||||
- if (tinsn->tok[1].X_op == O_constant)
|
||||
- target = tinsn->tok[1].X_add_number;
|
||||
- else if (tinsn->tok[1].X_op == O_symbol)
|
||||
- {
|
||||
- /* Find the fragment. */
|
||||
- symbolS *sym = tinsn->tok[1].X_add_symbol;
|
||||
- gas_assert (S_GET_SEGMENT (sym) == segP
|
||||
- || S_GET_SEGMENT (sym) == absolute_section);
|
||||
- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op);
|
||||
- target = 0;
|
||||
- }
|
||||
-
|
||||
- loop_length = target - (fragP->fr_address + fragP->fr_fix);
|
||||
- loop_length_hi = loop_length & ~0x0ff;
|
||||
- loop_length_lo = loop_length & 0x0ff;
|
||||
- if (loop_length_lo >= 128)
|
||||
- {
|
||||
- loop_length_lo -= 256;
|
||||
- loop_length_hi += 256;
|
||||
- }
|
||||
-
|
||||
- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most
|
||||
- 32512. If the loop is larger than that, then we just fail. */
|
||||
- if (loop_length_hi > 32512)
|
||||
- as_bad_where (fragP->fr_file, fragP->fr_line,
|
||||
- _("loop too long for LOOP instruction"));
|
||||
-
|
||||
- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0);
|
||||
- gas_assert (addi_insn.opcode == xtensa_addi_opcode);
|
||||
-
|
||||
- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0);
|
||||
- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode);
|
||||
-
|
||||
- set_expr_const (&addi_insn.tok[2], loop_length_lo);
|
||||
- tinsn_to_insnbuf (&addi_insn, insnbuf);
|
||||
-
|
||||
- fragP->tc_frag_data.is_insn = TRUE;
|
||||
- xtensa_insnbuf_to_chars
|
||||
- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0);
|
||||
-
|
||||
- set_expr_const (&addmi_insn.tok[2], loop_length_hi);
|
||||
- tinsn_to_insnbuf (&addmi_insn, insnbuf);
|
||||
- xtensa_insnbuf_to_chars
|
||||
- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0);
|
||||
-
|
||||
- /* Walk through all of the frags from here to the loop end
|
||||
- and mark them as no_transform to keep them from being modified
|
||||
- by the linker. If we ever have a relocation for the
|
||||
- addi/addmi of the difference of two symbols we can remove this. */
|
||||
-
|
||||
- target_count = 0;
|
||||
- for (next_fragP = fragP; next_fragP != NULL;
|
||||
- next_fragP = next_fragP->fr_next)
|
||||
- {
|
||||
- next_fragP->tc_frag_data.is_no_transform = TRUE;
|
||||
- if (next_fragP->tc_frag_data.is_loop_target)
|
||||
- target_count++;
|
||||
- if (target_count == 2)
|
||||
- break;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
|
||||
/* A map that keeps information on a per-subsegment basis. This is
|
||||
maintained during initial assembly, but is invalid once the
|
||||
diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c
|
||||
index cb296ed85ed2..daf15d52c259 100644
|
||||
--- a/gas/config/xtensa-relax.c
|
||||
+++ b/gas/config/xtensa-relax.c
|
||||
@@ -87,13 +87,7 @@
|
||||
when the first and second operands are not the same as specified
|
||||
by the "| %at!=%as" precondition clause.
|
||||
{"l32i %at,%as,%imm | %at!=%as",
|
||||
- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"}
|
||||
-
|
||||
- There is special case for loop instructions here, but because we do
|
||||
- not currently have the ability to represent the difference of two
|
||||
- symbols, the conversion requires special code in the assembler to
|
||||
- write the operands of the addi/addmi pair representing the
|
||||
- difference of the old and new loop end label. */
|
||||
+ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */
|
||||
|
||||
#include "as.h"
|
||||
#include "xtensa-isa.h"
|
||||
@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] =
|
||||
{"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16",
|
||||
"const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"},
|
||||
|
||||
- /* This is only PART of the loop instruction. In addition,
|
||||
- hardcoded into its use is a modification of the final operand in
|
||||
- the instruction in bytes 9 and 12. */
|
||||
- {"loop %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ /* Widening loops with literals. */
|
||||
+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "loop %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "beqz %as,%label;"
|
||||
+ "bltz %as,%label;"
|
||||
+ "loopgtz %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "beqz %as,%label;"
|
||||
+ "loopnez %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+
|
||||
+ /* Widening loops with const16. */
|
||||
+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"loop %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"beqz %as,%label;"
|
||||
"bltz %as,%label;"
|
||||
"loopgtz %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
- {"loopnez %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"beqz %as,%label;"
|
||||
"loopnez %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
|
||||
/* Relaxing to wide branches. Order is important here. With wide
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,568 @@
|
||||
From 6737a6b34f4823deb7142f27b4074831a37ac1e1 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Fri, 20 Jul 2018 09:18:47 -0700
|
||||
Subject: [PATCH] x86: Add a GNU_PROPERTY_X86_ISA_1_USED note if needed
|
||||
|
||||
When -z separate-code, which is enabled by default for Linux/x86, is
|
||||
used to create executable, ld won't place any data in the code-only
|
||||
PT_LOAD segment. If there are no data sections placed before the
|
||||
code-only PT_LOAD segment, the program headers won't be mapped into
|
||||
any PT_LOAD segment. When the executable tries to access it (based
|
||||
on the program header address passed in AT_PHDR), it will lead to
|
||||
segfault. This patch inserts a GNU_PROPERTY_X86_ISA_1_USED note if
|
||||
there may be no data sections before the text section so that the
|
||||
first PT_LOAD segment won't be code-only and will contain the program
|
||||
header.
|
||||
|
||||
Testcases are adjusted to either pass "-z noseparate-code" to ld or
|
||||
discard the .note.gnu.property section. A Linux/x86 run-time test is
|
||||
added.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
separate code program header is needed, make sure that the first
|
||||
read-only PT_LOAD segment has no code by adding a
|
||||
GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/linux-x86.S: New file.
|
||||
* testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
* testsuite/ld-elf/pr23428.c: Likewise.
|
||||
* testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
for Linux/x86 targets.
|
||||
* testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
* testsuite/ld-i386/abs.d: Likewise.
|
||||
* testsuite/ld-i386/pr12718.d: Likewise.
|
||||
* testsuite/ld-i386/pr12921.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
* testsuite/ld-x86-64/abs.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
* testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
section.
|
||||
* testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
* testsuite/ld-scripts/size-2.t: Likewise.
|
||||
* testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld
|
||||
to create executable if language is "asm".
|
||||
|
||||
(cherry picked from commit 241e64e3b42cd9eba514b8e0ad2ef39a337f10a5)
|
||||
Signed-off-by: Norbert Lange <nolange79@gmail.com>
|
||||
---
|
||||
bfd/ChangeLog | 8 ++++
|
||||
bfd/elfxx-x86.c | 60 +++++++++++++++++++-------
|
||||
ld/ChangeLog | 24 +++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.S | 63 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 46 ++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/pr23428.c | 43 +++++++++++++++++++
|
||||
ld/testsuite/ld-elf/sec64k.exp | 2 +
|
||||
ld/testsuite/ld-i386/abs-iamcu.d | 2 +-
|
||||
ld/testsuite/ld-i386/abs.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-i386/pr12921.d | 2 +-
|
||||
ld/testsuite/ld-linkonce/zeroeh.ld | 1 +
|
||||
ld/testsuite/ld-scripts/print-memory-usage.t | 2 +
|
||||
ld/testsuite/ld-scripts/size-2.t | 1 +
|
||||
ld/testsuite/ld-x86-64/abs-k1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs-l1om.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/abs.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12718.d | 2 +-
|
||||
ld/testsuite/ld-x86-64/pr12921.d | 2 +-
|
||||
ld/testsuite/lib/ld-lib.exp | 5 ++-
|
||||
20 files changed, 248 insertions(+), 25 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.S
|
||||
create mode 100644 ld/testsuite/ld-elf/linux-x86.exp
|
||||
create mode 100644 ld/testsuite/ld-elf/pr23428.c
|
||||
|
||||
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
|
||||
index 1c1174a..d3831b7 100644
|
||||
--- a/bfd/ChangeLog
|
||||
+++ b/bfd/ChangeLog
|
||||
@@ -1,3 +1,11 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): If the
|
||||
+ separate code program header is needed, make sure that the first
|
||||
+ read-only PT_LOAD segment has no code by adding a
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED note.
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
* development.sh: Set to true.
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index a2497aa..2e4ff88 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2524,6 +2524,7 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
const struct elf_backend_data *bed;
|
||||
unsigned int class_align = ABI_64_P (info->output_bfd) ? 3 : 2;
|
||||
unsigned int got_align;
|
||||
+ bfd_boolean has_text = FALSE;
|
||||
|
||||
features = 0;
|
||||
if (info->ibt)
|
||||
@@ -2538,24 +2539,59 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
if (bfd_get_flavour (pbfd) == bfd_target_elf_flavour
|
||||
&& bfd_count_sections (pbfd) != 0)
|
||||
{
|
||||
+ if (!has_text)
|
||||
+ {
|
||||
+ /* Check if there is no non-empty text section. */
|
||||
+ sec = bfd_get_section_by_name (pbfd, ".text");
|
||||
+ if (sec != NULL && sec->size != 0)
|
||||
+ has_text = TRUE;
|
||||
+ }
|
||||
+
|
||||
ebfd = pbfd;
|
||||
|
||||
if (elf_properties (pbfd) != NULL)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (ebfd != NULL && features)
|
||||
+ bed = get_elf_backend_data (info->output_bfd);
|
||||
+
|
||||
+ htab = elf_x86_hash_table (info, bed->target_id);
|
||||
+ if (htab == NULL)
|
||||
+ return pbfd;
|
||||
+
|
||||
+ if (ebfd != NULL)
|
||||
{
|
||||
- /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
- GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
- 4);
|
||||
- prop->u.number |= features;
|
||||
- prop->pr_kind = property_number;
|
||||
+ prop = NULL;
|
||||
+ if (features)
|
||||
+ {
|
||||
+ /* If features is set, add GNU_PROPERTY_X86_FEATURE_1_IBT and
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_SHSTK. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_FEATURE_1_AND,
|
||||
+ 4);
|
||||
+ prop->u.number |= features;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
+ else if (has_text
|
||||
+ && elf_properties (ebfd) == NULL
|
||||
+ && elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
+ && !htab->elf.dynamic_sections_created
|
||||
+ && !info->traditional_format
|
||||
+ && (info->output_bfd->flags & D_PAGED) != 0
|
||||
+ && info->separate_code)
|
||||
+ {
|
||||
+ /* If the separate code program header is needed, make sure
|
||||
+ that the first read-only PT_LOAD segment has no code by
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
- if (pbfd == NULL)
|
||||
+ if (prop != NULL && pbfd == NULL)
|
||||
{
|
||||
sec = bfd_make_section_with_flags (ebfd,
|
||||
NOTE_GNU_PROPERTY_SECTION_NAME,
|
||||
@@ -2581,12 +2617,6 @@ error_alignment:
|
||||
|
||||
pbfd = _bfd_elf_link_setup_gnu_properties (info);
|
||||
|
||||
- bed = get_elf_backend_data (info->output_bfd);
|
||||
-
|
||||
- htab = elf_x86_hash_table (info, bed->target_id);
|
||||
- if (htab == NULL)
|
||||
- return pbfd;
|
||||
-
|
||||
htab->r_info = init_table->r_info;
|
||||
htab->r_sym = init_table->r_sym;
|
||||
|
||||
diff --git a/ld/ChangeLog b/ld/ChangeLog
|
||||
index c07e442..cfadbd4 100644
|
||||
--- a/ld/ChangeLog
|
||||
+++ b/ld/ChangeLog
|
||||
@@ -1,3 +1,27 @@
|
||||
+2018-07-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
+
|
||||
+ PR ld/23428
|
||||
+ * testsuite/ld-elf/linux-x86.S: New file.
|
||||
+ * testsuite/ld-elf/linux-x86.exp: Likewise.
|
||||
+ * testsuite/ld-elf/pr23428.c: Likewise.
|
||||
+ * testsuite/ld-elf/sec64k.exp: Pass "-z noseparate-code" to ld
|
||||
+ for Linux/x86 targets.
|
||||
+ * testsuite/ld-i386/abs-iamcu.d: Likewise.
|
||||
+ * testsuite/ld-i386/abs.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-i386/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-k1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs-l1om.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/abs.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12718.d: Likewise.
|
||||
+ * testsuite/ld-x86-64/pr12921.d: Likewise.
|
||||
+ * testsuite/ld-linkonce/zeroeh.ld: Discard .note.gnu.property
|
||||
+ section.
|
||||
+ * testsuite/ld-scripts/print-memory-usage.t: Likewise.
|
||||
+ * testsuite/ld-scripts/size-2.t: Likewise.
|
||||
+ * testsuite/lib/ld-lib.exp (run_ld_link_exec_tests): Use ld to
|
||||
+ create executable if language is "asm".
|
||||
+
|
||||
2018-07-18 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
2.31.1 Release point.
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
new file mode 100644
|
||||
index 0000000..bdf40c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -0,0 +1,63 @@
|
||||
+ .text
|
||||
+ .globl _start
|
||||
+ .type _start,@function
|
||||
+ .p2align 4
|
||||
+_start:
|
||||
+ xorl %ebp, %ebp
|
||||
+#ifdef __LP64__
|
||||
+ popq %rdi
|
||||
+ movq %rsp, %rsi
|
||||
+ andq $~15, %rsp
|
||||
+#elif defined __x86_64__
|
||||
+ mov (%rsp),%edi
|
||||
+ addl $4,%esp
|
||||
+ movl %esp, %esi
|
||||
+ andl $~15, %esp
|
||||
+#else
|
||||
+ popl %esi
|
||||
+ movl %esp, %ecx
|
||||
+ andl $~15, %esp
|
||||
+
|
||||
+ subl $8,%esp
|
||||
+ pushl %ecx
|
||||
+ pushl %esi
|
||||
+#endif
|
||||
+
|
||||
+ call main
|
||||
+
|
||||
+ hlt
|
||||
+
|
||||
+ .type syscall, @function
|
||||
+ .globl syscall
|
||||
+ .p2align 4
|
||||
+syscall:
|
||||
+#ifdef __x86_64__
|
||||
+ movq %rdi, %rax /* Syscall number -> rax. */
|
||||
+ movq %rsi, %rdi /* shift arg1 - arg5. */
|
||||
+ movq %rdx, %rsi
|
||||
+ movq %rcx, %rdx
|
||||
+ movq %r8, %r10
|
||||
+ movq %r9, %r8
|
||||
+ movq 8(%rsp),%r9 /* arg6 is on the stack. */
|
||||
+ syscall /* Do the system call. */
|
||||
+#else
|
||||
+ push %ebp
|
||||
+ push %edi
|
||||
+ push %esi
|
||||
+ push %ebx
|
||||
+ mov 0x2c(%esp),%ebp
|
||||
+ mov 0x28(%esp),%edi
|
||||
+ mov 0x24(%esp),%esi
|
||||
+ mov 0x20(%esp),%edx
|
||||
+ mov 0x1c(%esp),%ecx
|
||||
+ mov 0x18(%esp),%ebx
|
||||
+ mov 0x14(%esp),%eax
|
||||
+ int $0x80
|
||||
+ pop %ebx
|
||||
+ pop %esi
|
||||
+ pop %edi
|
||||
+ pop %ebp
|
||||
+#endif
|
||||
+ ret /* Return to caller. */
|
||||
+ .size syscall, .-syscall
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
new file mode 100644
|
||||
index 0000000..36217c6
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -0,0 +1,46 @@
|
||||
+# Expect script for simple native Linux/x86 tests.
|
||||
+# Copyright (C) 2018 Free Software Foundation, Inc.
|
||||
+#
|
||||
+# This file is part of the GNU Binutils.
|
||||
+#
|
||||
+# 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 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+#
|
||||
+# This program is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+#
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program; if not, write to the Free Software
|
||||
+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
||||
+# MA 02110-1301, USA.
|
||||
+#
|
||||
+
|
||||
+# Test very simple native Linux/x86 programs with linux-x86.S.
|
||||
+if { ![isnative] || [which $CC] == 0 \
|
||||
+ || (![istarget "i?86-*-linux*"] \
|
||||
+ && ![istarget "x86_64-*-linux*"] \
|
||||
+ && ![istarget "amd64-*-linux*"]) } {
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+# Add $PLT_CFLAGS if PLT is expected.
|
||||
+global PLT_CFLAGS
|
||||
+# Add $NOPIE_CFLAGS and $NOPIE_LDFLAGS if non-PIE is required.
|
||||
+global NOPIE_CFLAGS NOPIE_LDFLAGS
|
||||
+
|
||||
+run_ld_link_exec_tests [list \
|
||||
+ [list \
|
||||
+ "Run PR ld/23428 test" \
|
||||
+ "--no-dynamic-linker -z separate-code" \
|
||||
+ "" \
|
||||
+ { linux-x86.S pr23428.c } \
|
||||
+ "pr23428" \
|
||||
+ "pass.out" \
|
||||
+ "$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
+ "asm" \
|
||||
+ ] \
|
||||
+]
|
||||
diff --git a/ld/testsuite/ld-elf/pr23428.c b/ld/testsuite/ld-elf/pr23428.c
|
||||
new file mode 100644
|
||||
index 0000000..3631ed7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/pr23428.c
|
||||
@@ -0,0 +1,43 @@
|
||||
+#include <unistd.h>
|
||||
+#include <link.h>
|
||||
+#include <syscall.h>
|
||||
+
|
||||
+#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
|
||||
+
|
||||
+int
|
||||
+main (int argc, char **argv)
|
||||
+{
|
||||
+ char **ev = &argv[argc + 1];
|
||||
+ char **evp = ev;
|
||||
+ ElfW(auxv_t) *av;
|
||||
+ const ElfW(Phdr) *phdr = NULL;
|
||||
+ size_t phnum = 0;
|
||||
+ size_t loadnum = 0;
|
||||
+ int fd = STDOUT_FILENO;
|
||||
+ size_t i;
|
||||
+
|
||||
+ while (*evp++ != NULL)
|
||||
+ ;
|
||||
+
|
||||
+ av = (ElfW(auxv_t) *) evp;
|
||||
+
|
||||
+ for (; av->a_type != AT_NULL; ++av)
|
||||
+ switch (av->a_type)
|
||||
+ {
|
||||
+ case AT_PHDR:
|
||||
+ phdr = (const void *) av->a_un.a_val;
|
||||
+ break;
|
||||
+ case AT_PHNUM:
|
||||
+ phnum = av->a_un.a_val;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < phnum; i++, phdr++)
|
||||
+ if (phdr->p_type == PT_LOAD)
|
||||
+ loadnum++;
|
||||
+
|
||||
+ syscall (SYS_write, fd, STRING_COMMA_LEN ("PASS\n"));
|
||||
+
|
||||
+ syscall (SYS_exit, !loadnum);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/ld/testsuite/ld-elf/sec64k.exp b/ld/testsuite/ld-elf/sec64k.exp
|
||||
index b58139e..3909c0e 100644
|
||||
--- a/ld/testsuite/ld-elf/sec64k.exp
|
||||
+++ b/ld/testsuite/ld-elf/sec64k.exp
|
||||
@@ -177,6 +177,8 @@ if { ![istarget "d10v-*-*"]
|
||||
foreach sfile $sfiles { puts $ofd "#source: $sfile" }
|
||||
if { [istarget spu*-*-*] } {
|
||||
puts $ofd "#ld: --local-store 0:0"
|
||||
+ } elseif { [istarget "i?86-*-linux*"] || [istarget "x86_64-*-linux*"] } {
|
||||
+ puts $ofd "#ld: -z noseparate-code"
|
||||
} else {
|
||||
puts $ofd "#ld:"
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-i386/abs-iamcu.d b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
index ac9beff..aba7d6b 100644
|
||||
--- a/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
+++ b/ld/testsuite/ld-i386/abs-iamcu.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
#as: --32 -march=iamcu
|
||||
-#ld: -m elf_iamcu
|
||||
+#ld: -m elf_iamcu -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/abs.d b/ld/testsuite/ld-i386/abs.d
|
||||
index e660aca..191ee44 100644
|
||||
--- a/ld/testsuite/ld-i386/abs.d
|
||||
+++ b/ld/testsuite/ld-i386/abs.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#as: --32
|
||||
#source: abs.s
|
||||
#source: zero.s
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-i386/pr12718.d b/ld/testsuite/ld-i386/pr12718.d
|
||||
index ec51540..7eba52d 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12718.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-i386/pr12921.d b/ld/testsuite/ld-i386/pr12921.d
|
||||
index e49079b..ea2da3e 100644
|
||||
--- a/ld/testsuite/ld-i386/pr12921.d
|
||||
+++ b/ld/testsuite/ld-i386/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --32
|
||||
-#ld: -melf_i386
|
||||
+#ld: -melf_i386 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-linkonce/zeroeh.ld b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
index b22eaa1..f89855a 100644
|
||||
--- a/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
+++ b/ld/testsuite/ld-linkonce/zeroeh.ld
|
||||
@@ -2,4 +2,5 @@ SECTIONS {
|
||||
.text 0xa00 : { *(.text); *(.gnu.linkonce.t.*) }
|
||||
.gcc_except_table 0x2000 : { *(.gcc_except_table) }
|
||||
.eh_frame 0x4000 : { *(.eh_frame) }
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/print-memory-usage.t b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
index 5ff057a..6eda1d2 100644
|
||||
--- a/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
+++ b/ld/testsuite/ld-scripts/print-memory-usage.t
|
||||
@@ -11,4 +11,6 @@ SECTIONS
|
||||
*(.data)
|
||||
*(.rw)
|
||||
}
|
||||
+
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-scripts/size-2.t b/ld/testsuite/ld-scripts/size-2.t
|
||||
index 7238639..c3c4edd 100644
|
||||
--- a/ld/testsuite/ld-scripts/size-2.t
|
||||
+++ b/ld/testsuite/ld-scripts/size-2.t
|
||||
@@ -18,4 +18,5 @@ SECTIONS
|
||||
LONG (SIZEOF (.tdata))
|
||||
LONG (SIZEOF (.tbss))
|
||||
} :image
|
||||
+ /DISCARD/ : { *(.note.gnu.property) }
|
||||
}
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-k1om.d b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
index 2c26639..6b0fde0 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-k1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=k1om
|
||||
-#ld: -m elf_k1om
|
||||
+#ld: -m elf_k1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs-l1om.d b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
index 1fb96d4..f87869f 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs-l1om.d
|
||||
@@ -2,7 +2,7 @@
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
#as: --64 -march=l1om
|
||||
-#ld: -m elf_l1om
|
||||
+#ld: -m elf_l1om -z noseparate-code
|
||||
#objdump: -rs -j .text
|
||||
#target: x86_64-*-linux*
|
||||
|
||||
diff --git a/ld/testsuite/ld-x86-64/abs.d b/ld/testsuite/ld-x86-64/abs.d
|
||||
index b24b018..d99ab46 100644
|
||||
--- a/ld/testsuite/ld-x86-64/abs.d
|
||||
+++ b/ld/testsuite/ld-x86-64/abs.d
|
||||
@@ -1,7 +1,7 @@
|
||||
#name: Absolute non-overflowing relocs
|
||||
#source: ../ld-i386/abs.s
|
||||
#source: ../ld-i386/zero.s
|
||||
-#ld:
|
||||
+#ld: -z noseparate-code
|
||||
#objdump: -rs
|
||||
|
||||
.*: file format .*
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12718.d b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
index 07d1732..2c503ff 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12718.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12718.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12718
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 5 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr12921.d b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
index 6fe6abe..1162d55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/pr12921.d
|
||||
+++ b/ld/testsuite/ld-x86-64/pr12921.d
|
||||
@@ -1,6 +1,6 @@
|
||||
#name: PR ld/12921
|
||||
#as: --64
|
||||
-#ld: -melf_x86_64
|
||||
+#ld: -melf_x86_64 -z noseparate-code
|
||||
#readelf: -S --wide
|
||||
|
||||
There are 7 section headers, starting at offset 0x[0-9a-f]+:
|
||||
diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp
|
||||
index cfbefe9..1095091 100644
|
||||
--- a/ld/testsuite/lib/ld-lib.exp
|
||||
+++ b/ld/testsuite/lib/ld-lib.exp
|
||||
@@ -1482,7 +1482,10 @@ proc run_ld_link_exec_tests { ldtests args } {
|
||||
continue
|
||||
}
|
||||
|
||||
- if { [ string match "c++" $lang ] } {
|
||||
+ if { [ string match "asm" $lang ] } {
|
||||
+ set link_proc ld_link
|
||||
+ set link_cmd $ld
|
||||
+ } elseif { [ string match "c++" $lang ] } {
|
||||
set link_proc ld_link
|
||||
set link_cmd $CXX
|
||||
} else {
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,588 @@
|
||||
From d55c3e36094f06bb1fb02f5eac19fdccf1d91f7e Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Wed, 8 Aug 2018 06:09:15 -0700
|
||||
Subject: [PATCH] x86: Properly merge GNU_PROPERTY_X86_ISA_1_USED
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Without the GNU_PROPERTY_X86_ISA_1_USED property, all ISAs may be used.
|
||||
If a bit in the GNU_PROPERTY_X86_ISA_1_USED property is unset, the
|
||||
corresponding x86 instruction set isnât used. When merging properties
|
||||
from 2 input files and one input file doesn't have the
|
||||
GNU_PROPERTY_X86_ISA_1_USED property, the output file shouldn't have
|
||||
it neither. This patch removes the GNU_PROPERTY_X86_ISA_1_USED
|
||||
property if an input file doesn't have it.
|
||||
|
||||
This patch replaces the GNU_PROPERTY_X86_ISA_1_USED property with the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED property which is the minimum ISA
|
||||
requirement.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23486
|
||||
* elfxx-x86.c (_bfd_x86_elf_merge_gnu_properties): Remove
|
||||
GNU_PROPERTY_X86_ISA_1_USED if an input file doesn't have it.
|
||||
(_bfd_x86_elf_link_setup_gnu_properties): Adding the
|
||||
GNU_PROPERTY_X86_ISA_1_NEEDED, instead of
|
||||
GNU_PROPERTY_X86_ISA_1_USED, property.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23486
|
||||
* testsuite/ld-i386/i386.exp: Run PR ld/23486 tests.
|
||||
* testsuite/ld-x86-64/x86-64.exp: Likewise.
|
||||
* testsuite/ld-i386/pr23486a.d: New file.
|
||||
* testsuite/ld-i386/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486a.s: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.d: Likewise.
|
||||
* testsuite/ld-x86-64/pr23486b.s: Likewise.
|
||||
* testsuite/ld-i386/property-3.r: Remove "x86 ISA used".
|
||||
* testsuite/ld-i386/property-4.r: Likewise.
|
||||
* testsuite/ld-i386/property-5.r: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-i386/property-x86-shstk3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-3.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-4.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-5.r: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-ibt3b.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3a.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b-x32.d: Likewise.
|
||||
* testsuite/ld-x86-64/property-x86-shstk3b.d: Likewise.
|
||||
|
||||
(cherry picked from commit f7309df20c4e787041cedc4a6aced89c15259e54)
|
||||
Signed-off-by: Norbert Lange <nolange79@gmail.com>
|
||||
---
|
||||
bfd/ChangeLog | 9 +++++++
|
||||
bfd/elfxx-x86.c | 25 ++++++++++++++----
|
||||
ld/ChangeLog | 32 +++++++++++++++++++++++
|
||||
ld/testsuite/ld-i386/i386.exp | 2 ++
|
||||
ld/testsuite/ld-i386/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-i386/property-3.r | 1 -
|
||||
ld/testsuite/ld-i386/property-4.r | 1 -
|
||||
ld/testsuite/ld-i386/property-5.r | 1 -
|
||||
ld/testsuite/ld-i386/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-i386/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/pr23486a-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486a.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b-x32.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.d | 10 +++++++
|
||||
ld/testsuite/ld-x86-64/pr23486b.s | 30 +++++++++++++++++++++
|
||||
ld/testsuite/ld-x86-64/property-3.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-4.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-5.r | 1 -
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-ibt3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3a.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/property-x86-shstk3b.d | 5 ++--
|
||||
ld/testsuite/ld-x86-64/x86-64.exp | 4 +++
|
||||
31 files changed, 211 insertions(+), 47 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-i386/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486a.s
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.d
|
||||
create mode 100644 ld/testsuite/ld-x86-64/pr23486b.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 2e4ff88..7ccfd25 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2407,12 +2407,27 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
switch (pr_type)
|
||||
{
|
||||
case GNU_PROPERTY_X86_ISA_1_USED:
|
||||
+ if (aprop == NULL || bprop == NULL)
|
||||
+ {
|
||||
+ /* Only one of APROP and BPROP can be NULL. */
|
||||
+ if (aprop != NULL)
|
||||
+ {
|
||||
+ /* Remove this property since the other input file doesn't
|
||||
+ have it. */
|
||||
+ aprop->pr_kind = property_remove;
|
||||
+ updated = TRUE;
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ goto or_property;
|
||||
+
|
||||
case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
if (aprop != NULL && bprop != NULL)
|
||||
{
|
||||
+or_property:
|
||||
number = aprop->u.number;
|
||||
aprop->u.number = number | bprop->u.number;
|
||||
- /* Remove the property if ISA bits are empty. */
|
||||
+ /* Remove the property if all bits are empty. */
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
aprop->pr_kind = property_remove;
|
||||
@@ -2428,14 +2443,14 @@ _bfd_x86_elf_merge_gnu_properties (struct bfd_link_info *info,
|
||||
{
|
||||
if (aprop->u.number == 0)
|
||||
{
|
||||
- /* Remove APROP if ISA bits are empty. */
|
||||
+ /* Remove APROP if all bits are empty. */
|
||||
aprop->pr_kind = property_remove;
|
||||
updated = TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
- /* Return TRUE if APROP is NULL and ISA bits of BPROP
|
||||
+ /* Return TRUE if APROP is NULL and all bits of BPROP
|
||||
aren't empty to indicate that BPROP should be added
|
||||
to ABFD. */
|
||||
updated = bprop->u.number != 0;
|
||||
@@ -2582,9 +2597,9 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
{
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
- adding a GNU_PROPERTY_X86_ISA_1_USED note. */
|
||||
+ adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_USED,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
4);
|
||||
prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
prop->pr_kind = property_number;
|
||||
diff --git a/ld/testsuite/ld-i386/i386.exp b/ld/testsuite/ld-i386/i386.exp
|
||||
index 6d794fe..78dad02 100644
|
||||
--- a/ld/testsuite/ld-i386/i386.exp
|
||||
+++ b/ld/testsuite/ld-i386/i386.exp
|
||||
@@ -462,6 +462,8 @@ run_dump_test "pr23189"
|
||||
run_dump_test "pr23194"
|
||||
run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372b"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486b"
|
||||
|
||||
if { !([istarget "i?86-*-linux*"]
|
||||
|| [istarget "i?86-*-gnu*"]
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486a.d b/ld/testsuite/ld-i386/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..41a6dcf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/pr23486b.d b/ld/testsuite/ld-i386/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..08019b7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-i386/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: ../ld-x86-64/pr23486b.s
|
||||
+#source: ../ld-x86-64/pr23486a.s
|
||||
+#as: --32
|
||||
+#ld: -r -m elf_i386
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-i386/property-3.r b/ld/testsuite/ld-i386/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-i386/property-3.r
|
||||
+++ b/ld/testsuite/ld-i386/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-4.r b/ld/testsuite/ld-i386/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-i386/property-4.r
|
||||
+++ b/ld/testsuite/ld-i386/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-5.r b/ld/testsuite/ld-i386/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-i386/property-5.r
|
||||
+++ b/ld/testsuite/ld-i386/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3a.d b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
index 4bb35b0..0aedea1 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-ibt3b.d b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
index 418d58a..bd69ac6 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3a.d b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
index e261038..76d2a39 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-i386/property-x86-shstk3b.d b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
index 25f3d23..e770ecf 100644
|
||||
--- a/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-i386/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: i486, 586, SSE2, SSE3
|
||||
- x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: 586, SSE, SSE3, SSE4_1
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a-x32.d b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..6d9fa68
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.d b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486a.s b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
new file mode 100644
|
||||
index 0000000..a07d0c7
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486a.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_USED */
|
||||
+ .long 0xc0000000 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0xa
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b-x32.d b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
new file mode 100644
|
||||
index 0000000..0445e69
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b-x32.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486b.s
|
||||
+#source: pr23486a.s
|
||||
+#as: --x32
|
||||
+#ld: -r -m elf32_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.d b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
new file mode 100644
|
||||
index 0000000..dc2b7bf
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.d
|
||||
@@ -0,0 +1,10 @@
|
||||
+#source: pr23486a.s
|
||||
+#source: pr23486b.s
|
||||
+#as: --64 -defsym __64_bit__=1
|
||||
+#ld: -r -m elf_x86_64
|
||||
+#readelf: -n
|
||||
+
|
||||
+Displaying notes found in: .note.gnu.property
|
||||
+ Owner Data size Description
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586
|
||||
diff --git a/ld/testsuite/ld-x86-64/pr23486b.s b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
new file mode 100644
|
||||
index 0000000..c5167ee
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-x86-64/pr23486b.s
|
||||
@@ -0,0 +1,30 @@
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ .long 1f - 0f /* name length. */
|
||||
+ .long 4f - 1f /* data length. */
|
||||
+ /* NT_GNU_PROPERTY_TYPE_0 */
|
||||
+ .long 5 /* note type. */
|
||||
+0:
|
||||
+ .asciz "GNU" /* vendor name. */
|
||||
+1:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+ /* GNU_PROPERTY_X86_ISA_1_NEEDED */
|
||||
+ .long 0xc0000001 /* pr_type. */
|
||||
+ .long 3f - 2f /* pr_datasz. */
|
||||
+2:
|
||||
+ .long 0x3
|
||||
+3:
|
||||
+.ifdef __64_bit__
|
||||
+ .p2align 3
|
||||
+.else
|
||||
+ .p2align 2
|
||||
+.endif
|
||||
+4:
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-3.r b/ld/testsuite/ld-x86-64/property-3.r
|
||||
index 0ed91f5..d03203c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-3.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-3.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: 586, SSE
|
||||
x86 ISA needed: i486, 586
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-4.r b/ld/testsuite/ld-x86-64/property-4.r
|
||||
index cb2bc15..da295eb 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-4.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-4.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x800000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-5.r b/ld/testsuite/ld-x86-64/property-5.r
|
||||
index 5529650..e414159 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-5.r
|
||||
+++ b/ld/testsuite/ld-x86-64/property-5.r
|
||||
@@ -3,6 +3,5 @@ Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
GNU 0x[0-9a-f]+ NT_GNU_PROPERTY_TYPE_0
|
||||
Properties: stack size: 0x900000
|
||||
- x86 ISA used: i486, 586, SSE
|
||||
x86 ISA needed: i486, 586, SSE
|
||||
#pass
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
index 011426f..4cec728 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
index 1b4229a..a8df49a 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
index 290ed6a..c112626 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
index 1142e03..f10dffd 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-ibt3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
index 819542d..0147a3c 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
index 4c5d0e0..1f8c2dc 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3a.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
index ba181e0..7ca2539 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b-x32.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000018 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x0000000c NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
index 5216f38..f66a40e 100644
|
||||
--- a/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
+++ b/ld/testsuite/ld-x86-64/property-x86-shstk3b.d
|
||||
@@ -6,6 +6,5 @@
|
||||
|
||||
Displaying notes found in: .note.gnu.property
|
||||
Owner Data size Description
|
||||
- GNU 0x00000020 NT_GNU_PROPERTY_TYPE_0
|
||||
- Properties: x86 ISA used: 586, SSE, SSE3, SSE4_1
|
||||
- x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
+ GNU 0x00000010 NT_GNU_PROPERTY_TYPE_0
|
||||
+ Properties: x86 ISA needed: i486, 586, SSE2, SSE3
|
||||
diff --git a/ld/testsuite/ld-x86-64/x86-64.exp b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
index 6edb9e8..ae21e55 100644
|
||||
--- a/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
+++ b/ld/testsuite/ld-x86-64/x86-64.exp
|
||||
@@ -403,6 +403,10 @@ run_dump_test "pr23372a"
|
||||
run_dump_test "pr23372a-x32"
|
||||
run_dump_test "pr23372b"
|
||||
run_dump_test "pr23372b-x32"
|
||||
+run_dump_test "pr23486a"
|
||||
+run_dump_test "pr23486a-x32"
|
||||
+run_dump_test "pr23486b"
|
||||
+run_dump_test "pr23486b-x32"
|
||||
|
||||
if { ![istarget "x86_64-*-linux*"] && ![istarget "x86_64-*-nacl*"]} {
|
||||
return
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,140 @@
|
||||
From 28a27bdbb9500797e6767f80c8128b09112aeed5 Mon Sep 17 00:00:00 2001
|
||||
From: "H.J. Lu" <hjl.tools@gmail.com>
|
||||
Date: Sat, 11 Aug 2018 06:41:33 -0700
|
||||
Subject: [PATCH] x86: Properly add X86_ISA_1_NEEDED property
|
||||
|
||||
Existing properties may be removed during property merging. We avoid
|
||||
adding X86_ISA_1_NEEDED property only if existing properties won't be
|
||||
removed.
|
||||
|
||||
bfd/
|
||||
|
||||
PR ld/23428
|
||||
* elfxx-x86.c (_bfd_x86_elf_link_setup_gnu_properties): Don't
|
||||
add X86_ISA_1_NEEDED property only if existing properties won't
|
||||
be removed.
|
||||
|
||||
ld/
|
||||
|
||||
PR ld/23428
|
||||
* testsuite/ld-elf/dummy.s: New file.
|
||||
* testsuite/ld-elf/linux-x86.S: Add X86_FEATURE_1_AND property.
|
||||
* testsuite/ld-elf/linux-x86.exp: Add dummy.s to pr23428.
|
||||
|
||||
(cherry picked from commit ab9e342807d132182892de1be1a92d6e91a5c1da)
|
||||
Signed-off-by: Norbert Lange <nolange79@gmail.com>
|
||||
---
|
||||
bfd/ChangeLog | 7 +++++++
|
||||
bfd/elfxx-x86.c | 28 ++++++++++++++++++++++------
|
||||
ld/ChangeLog | 7 +++++++
|
||||
ld/testsuite/ld-elf/dummy.s | 1 +
|
||||
ld/testsuite/ld-elf/linux-x86.S | 28 ++++++++++++++++++++++++++++
|
||||
ld/testsuite/ld-elf/linux-x86.exp | 2 +-
|
||||
6 files changed, 66 insertions(+), 7 deletions(-)
|
||||
create mode 100644 ld/testsuite/ld-elf/dummy.s
|
||||
|
||||
diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c
|
||||
index 7ccfd25..2d8f7b6 100644
|
||||
--- a/bfd/elfxx-x86.c
|
||||
+++ b/bfd/elfxx-x86.c
|
||||
@@ -2588,7 +2588,6 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
prop->pr_kind = property_number;
|
||||
}
|
||||
else if (has_text
|
||||
- && elf_properties (ebfd) == NULL
|
||||
&& elf_tdata (info->output_bfd)->o->build_id.sec == NULL
|
||||
&& !htab->elf.dynamic_sections_created
|
||||
&& !info->traditional_format
|
||||
@@ -2598,11 +2597,28 @@ _bfd_x86_elf_link_setup_gnu_properties
|
||||
/* If the separate code program header is needed, make sure
|
||||
that the first read-only PT_LOAD segment has no code by
|
||||
adding a GNU_PROPERTY_X86_ISA_1_NEEDED note. */
|
||||
- prop = _bfd_elf_get_property (ebfd,
|
||||
- GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
- 4);
|
||||
- prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
- prop->pr_kind = property_number;
|
||||
+ elf_property_list *list;
|
||||
+ bfd_boolean need_property = TRUE;
|
||||
+
|
||||
+ for (list = elf_properties (ebfd); list; list = list->next)
|
||||
+ switch (list->property.pr_type)
|
||||
+ {
|
||||
+ case GNU_PROPERTY_STACK_SIZE:
|
||||
+ case GNU_PROPERTY_NO_COPY_ON_PROTECTED:
|
||||
+ case GNU_PROPERTY_X86_ISA_1_NEEDED:
|
||||
+ /* These properties won't be removed during merging. */
|
||||
+ need_property = FALSE;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
+ if (need_property)
|
||||
+ {
|
||||
+ prop = _bfd_elf_get_property (ebfd,
|
||||
+ GNU_PROPERTY_X86_ISA_1_NEEDED,
|
||||
+ 4);
|
||||
+ prop->u.number = GNU_PROPERTY_X86_ISA_1_486;
|
||||
+ prop->pr_kind = property_number;
|
||||
+ }
|
||||
}
|
||||
|
||||
/* Create the GNU property note section if needed. */
|
||||
diff --git a/ld/testsuite/ld-elf/dummy.s b/ld/testsuite/ld-elf/dummy.s
|
||||
new file mode 100644
|
||||
index 0000000..403f980
|
||||
--- /dev/null
|
||||
+++ b/ld/testsuite/ld-elf/dummy.s
|
||||
@@ -0,0 +1 @@
|
||||
+# Dummy
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.S b/ld/testsuite/ld-elf/linux-x86.S
|
||||
index bdf40c6..d94abc1 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.S
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.S
|
||||
@@ -61,3 +61,31 @@ syscall:
|
||||
ret /* Return to caller. */
|
||||
.size syscall, .-syscall
|
||||
.section .note.GNU-stack,"",@progbits
|
||||
+
|
||||
+ .section ".note.gnu.property", "a"
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+ .long 1f - 0f /* name length */
|
||||
+ .long 5f - 2f /* data length */
|
||||
+ .long 5 /* note type */
|
||||
+0: .asciz "GNU" /* vendor name */
|
||||
+1:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+2: .long 0xc0000002 /* pr_type. */
|
||||
+ .long 4f - 3f /* pr_datasz. */
|
||||
+3:
|
||||
+ .long 0x2
|
||||
+4:
|
||||
+#ifdef __LP64__
|
||||
+ .p2align 3
|
||||
+#else
|
||||
+ .p2align 2
|
||||
+#endif
|
||||
+5:
|
||||
diff --git a/ld/testsuite/ld-elf/linux-x86.exp b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
index 36217c6..f6f5a80 100644
|
||||
--- a/ld/testsuite/ld-elf/linux-x86.exp
|
||||
+++ b/ld/testsuite/ld-elf/linux-x86.exp
|
||||
@@ -37,7 +37,7 @@ run_ld_link_exec_tests [list \
|
||||
"Run PR ld/23428 test" \
|
||||
"--no-dynamic-linker -z separate-code" \
|
||||
"" \
|
||||
- { linux-x86.S pr23428.c } \
|
||||
+ { linux-x86.S pr23428.c dummy.s } \
|
||||
"pr23428" \
|
||||
"pass.out" \
|
||||
"$NOPIE_CFLAGS -fno-asynchronous-unwind-tables" \
|
||||
--
|
||||
2.9.3
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From 278989f23735aa501be1052e085540c75c126dbb Mon Sep 17 00:00:00 2001
|
||||
From: Max Filippov <jcmvbkbc@gmail.com>
|
||||
Date: Thu, 28 Mar 2019 17:03:57 -0700
|
||||
Subject: [PATCH] bfd: xtensa: fix shrink_dynamic_reloc_sections for
|
||||
export-dynamic
|
||||
|
||||
shrink_dynamic_reloc_sections must remove PLT entry that was created for
|
||||
an undefined weak symbol in the presence of --export-dynamic option when
|
||||
relaxation coalesces literals pointing to that symbol. This fixes the
|
||||
following assertion:
|
||||
|
||||
ld: BFD (GNU Binutils) 2.31.1 internal error, aborting at
|
||||
elf32-xtensa.c:3292 in elf_xtensa_finish_dynamic_sections
|
||||
|
||||
2019-03-28 Max Filippov <jcmvbkbc@gmail.com>
|
||||
bfd/
|
||||
* elf32-xtensa.c (shrink_dynamic_reloc_sections): Add
|
||||
info->export_dynamic to the conditional.
|
||||
|
||||
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
||||
---
|
||||
bfd/elf32-xtensa.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/bfd/elf32-xtensa.c b/bfd/elf32-xtensa.c
|
||||
index c3df3d6db756..37ea200eea74 100644
|
||||
--- a/bfd/elf32-xtensa.c
|
||||
+++ b/bfd/elf32-xtensa.c
|
||||
@@ -10083,7 +10083,8 @@ shrink_dynamic_reloc_sections (struct bfd_link_info *info,
|
||||
&& (input_section->flags & SEC_ALLOC) != 0
|
||||
&& (dynamic_symbol || bfd_link_pic (info))
|
||||
&& (!h || h->root.type != bfd_link_hash_undefweak
|
||||
- || (dynamic_symbol && bfd_link_dll (info))))
|
||||
+ || (dynamic_symbol
|
||||
+ && (bfd_link_dll (info) || info->export_dynamic))))
|
||||
{
|
||||
asection *srel;
|
||||
bfd_boolean is_plt = FALSE;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,294 @@
|
||||
From 0dbdfb7918d0b0cfcb8883b24c1291574bf5bb7c Mon Sep 17 00:00:00 2001
|
||||
From: Max Filippov <jcmvbkbc@gmail.com>
|
||||
Date: Tue, 2 Apr 2019 14:32:42 -0700
|
||||
Subject: [PATCH] gas: use literals/const16 for xtensa loop relaxation
|
||||
|
||||
Loop opcode relaxation that uses addi/addmi doesn't work well with other
|
||||
relaxations that may cause code movement. Instead of encoding fixed loop
|
||||
end offset in the relaxed sequence use l32r or a pair of const16 to load
|
||||
loop end address. This way the address of the loop end gets a relocation
|
||||
record and it gets updated appropriately.
|
||||
|
||||
gas/
|
||||
2019-04-02 Max Filippov <jcmvbkbc@gmail.com>
|
||||
|
||||
* config/tc-xtensa.c (convert_frag_immed): Drop
|
||||
convert_frag_immed_finish_loop invocation.
|
||||
(convert_frag_immed_finish_loop): Drop declaration and
|
||||
definition.
|
||||
* config/xtensa-relax.c (widen_spec_list): Replace loop
|
||||
widening that uses addi/addmi with widening that uses l32r
|
||||
and const16.
|
||||
|
||||
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
||||
---
|
||||
gas/config/tc-xtensa.c | 120 ----------------------------------------------
|
||||
gas/config/xtensa-relax.c | 77 ++++++++++++++++++++---------
|
||||
2 files changed, 55 insertions(+), 142 deletions(-)
|
||||
|
||||
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
|
||||
index 3bdbbc931cfc..0cc06361cf6f 100644
|
||||
--- a/gas/config/tc-xtensa.c
|
||||
+++ b/gas/config/tc-xtensa.c
|
||||
@@ -10668,7 +10668,6 @@ convert_frag_fill_nop (fragS *fragP)
|
||||
static fixS *fix_new_exp_in_seg
|
||||
(segT, subsegT, fragS *, int, int, expressionS *, int,
|
||||
bfd_reloc_code_real_type);
|
||||
-static void convert_frag_immed_finish_loop (segT, fragS *, TInsn *);
|
||||
|
||||
static void
|
||||
convert_frag_immed (segT segP,
|
||||
@@ -10910,9 +10909,6 @@ convert_frag_immed (segT segP,
|
||||
}
|
||||
}
|
||||
|
||||
- if (expanded && xtensa_opcode_is_loop (isa, orig_tinsn.opcode) == 1)
|
||||
- convert_frag_immed_finish_loop (segP, fragP, &orig_tinsn);
|
||||
-
|
||||
if (expanded && is_direct_call_opcode (orig_tinsn.opcode))
|
||||
{
|
||||
/* Add an expansion note on the expanded instruction. */
|
||||
@@ -10949,122 +10945,6 @@ fix_new_exp_in_seg (segT new_seg,
|
||||
}
|
||||
|
||||
|
||||
-/* Relax a loop instruction so that it can span loop >256 bytes.
|
||||
-
|
||||
- loop as, .L1
|
||||
- .L0:
|
||||
- rsr as, LEND
|
||||
- wsr as, LBEG
|
||||
- addi as, as, lo8 (label-.L1)
|
||||
- addmi as, as, mid8 (label-.L1)
|
||||
- wsr as, LEND
|
||||
- isync
|
||||
- rsr as, LCOUNT
|
||||
- addi as, as, 1
|
||||
- .L1:
|
||||
- <<body>>
|
||||
- label:
|
||||
-*/
|
||||
-
|
||||
-static void
|
||||
-convert_frag_immed_finish_loop (segT segP, fragS *fragP, TInsn *tinsn)
|
||||
-{
|
||||
- TInsn loop_insn;
|
||||
- TInsn addi_insn;
|
||||
- TInsn addmi_insn;
|
||||
- unsigned long target;
|
||||
- static xtensa_insnbuf insnbuf = NULL;
|
||||
- unsigned int loop_length, loop_length_hi, loop_length_lo;
|
||||
- xtensa_isa isa = xtensa_default_isa;
|
||||
- addressT loop_offset;
|
||||
- addressT addi_offset = 9;
|
||||
- addressT addmi_offset = 12;
|
||||
- fragS *next_fragP;
|
||||
- int target_count;
|
||||
-
|
||||
- if (!insnbuf)
|
||||
- insnbuf = xtensa_insnbuf_alloc (isa);
|
||||
-
|
||||
- /* Get the loop offset. */
|
||||
- loop_offset = get_expanded_loop_offset (tinsn->opcode);
|
||||
-
|
||||
- /* Validate that there really is a LOOP at the loop_offset. Because
|
||||
- loops are not bundleable, we can assume that the instruction will be
|
||||
- in slot 0. */
|
||||
- tinsn_from_chars (&loop_insn, fragP->fr_opcode + loop_offset, 0);
|
||||
- tinsn_immed_from_frag (&loop_insn, fragP, 0);
|
||||
-
|
||||
- gas_assert (xtensa_opcode_is_loop (isa, loop_insn.opcode) == 1);
|
||||
- addi_offset += loop_offset;
|
||||
- addmi_offset += loop_offset;
|
||||
-
|
||||
- gas_assert (tinsn->ntok == 2);
|
||||
- if (tinsn->tok[1].X_op == O_constant)
|
||||
- target = tinsn->tok[1].X_add_number;
|
||||
- else if (tinsn->tok[1].X_op == O_symbol)
|
||||
- {
|
||||
- /* Find the fragment. */
|
||||
- symbolS *sym = tinsn->tok[1].X_add_symbol;
|
||||
- gas_assert (S_GET_SEGMENT (sym) == segP
|
||||
- || S_GET_SEGMENT (sym) == absolute_section);
|
||||
- target = (S_GET_VALUE (sym) + tinsn->tok[1].X_add_number);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- as_bad (_("invalid expression evaluation type %d"), tinsn->tok[1].X_op);
|
||||
- target = 0;
|
||||
- }
|
||||
-
|
||||
- loop_length = target - (fragP->fr_address + fragP->fr_fix);
|
||||
- loop_length_hi = loop_length & ~0x0ff;
|
||||
- loop_length_lo = loop_length & 0x0ff;
|
||||
- if (loop_length_lo >= 128)
|
||||
- {
|
||||
- loop_length_lo -= 256;
|
||||
- loop_length_hi += 256;
|
||||
- }
|
||||
-
|
||||
- /* Because addmi sign-extends the immediate, 'loop_length_hi' can be at most
|
||||
- 32512. If the loop is larger than that, then we just fail. */
|
||||
- if (loop_length_hi > 32512)
|
||||
- as_bad_where (fragP->fr_file, fragP->fr_line,
|
||||
- _("loop too long for LOOP instruction"));
|
||||
-
|
||||
- tinsn_from_chars (&addi_insn, fragP->fr_opcode + addi_offset, 0);
|
||||
- gas_assert (addi_insn.opcode == xtensa_addi_opcode);
|
||||
-
|
||||
- tinsn_from_chars (&addmi_insn, fragP->fr_opcode + addmi_offset, 0);
|
||||
- gas_assert (addmi_insn.opcode == xtensa_addmi_opcode);
|
||||
-
|
||||
- set_expr_const (&addi_insn.tok[2], loop_length_lo);
|
||||
- tinsn_to_insnbuf (&addi_insn, insnbuf);
|
||||
-
|
||||
- fragP->tc_frag_data.is_insn = TRUE;
|
||||
- xtensa_insnbuf_to_chars
|
||||
- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addi_offset, 0);
|
||||
-
|
||||
- set_expr_const (&addmi_insn.tok[2], loop_length_hi);
|
||||
- tinsn_to_insnbuf (&addmi_insn, insnbuf);
|
||||
- xtensa_insnbuf_to_chars
|
||||
- (isa, insnbuf, (unsigned char *) fragP->fr_opcode + addmi_offset, 0);
|
||||
-
|
||||
- /* Walk through all of the frags from here to the loop end
|
||||
- and mark them as no_transform to keep them from being modified
|
||||
- by the linker. If we ever have a relocation for the
|
||||
- addi/addmi of the difference of two symbols we can remove this. */
|
||||
-
|
||||
- target_count = 0;
|
||||
- for (next_fragP = fragP; next_fragP != NULL;
|
||||
- next_fragP = next_fragP->fr_next)
|
||||
- {
|
||||
- next_fragP->tc_frag_data.is_no_transform = TRUE;
|
||||
- if (next_fragP->tc_frag_data.is_loop_target)
|
||||
- target_count++;
|
||||
- if (target_count == 2)
|
||||
- break;
|
||||
- }
|
||||
-}
|
||||
-
|
||||
|
||||
/* A map that keeps information on a per-subsegment basis. This is
|
||||
maintained during initial assembly, but is invalid once the
|
||||
diff --git a/gas/config/xtensa-relax.c b/gas/config/xtensa-relax.c
|
||||
index cb296ed85ed2..daf15d52c259 100644
|
||||
--- a/gas/config/xtensa-relax.c
|
||||
+++ b/gas/config/xtensa-relax.c
|
||||
@@ -87,13 +87,7 @@
|
||||
when the first and second operands are not the same as specified
|
||||
by the "| %at!=%as" precondition clause.
|
||||
{"l32i %at,%as,%imm | %at!=%as",
|
||||
- "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"}
|
||||
-
|
||||
- There is special case for loop instructions here, but because we do
|
||||
- not currently have the ability to represent the difference of two
|
||||
- symbols, the conversion requires special code in the assembler to
|
||||
- write the operands of the addi/addmi pair representing the
|
||||
- difference of the old and new loop end label. */
|
||||
+ "LITERAL %imm; l32r %at,%LITERAL; add %at,%at,%as; l32i %at,%at,0"} */
|
||||
|
||||
#include "as.h"
|
||||
#include "xtensa-isa.h"
|
||||
@@ -306,44 +300,83 @@ static string_pattern_pair widen_spec_list[] =
|
||||
{"l32i %at,%as,%imm | %at!=%as ? IsaUseConst16",
|
||||
"const16 %at,HI16U(%imm); const16 %at,LOW16U(%imm); add %at,%at,%as; l32i %at,%at,0"},
|
||||
|
||||
- /* This is only PART of the loop instruction. In addition,
|
||||
- hardcoded into its use is a modification of the final operand in
|
||||
- the instruction in bytes 9 and 12. */
|
||||
- {"loop %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ /* Widening loops with literals. */
|
||||
+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "loop %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "beqz %as,%label;"
|
||||
+ "bltz %as,%label;"
|
||||
+ "loopgtz %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseL32R",
|
||||
+ "beqz %as,%label;"
|
||||
+ "loopnez %as,%LABEL;"
|
||||
+ "rsr.lend %as;" /* LEND */
|
||||
+ "wsr.lbeg %as;" /* LBEG */
|
||||
+ "LITERAL %label;"
|
||||
+ "l32r %as, %LITERAL;"
|
||||
+ "nop;"
|
||||
+ "wsr.lend %as;"
|
||||
+ "isync;"
|
||||
+ "rsr.lcount %as;" /* LCOUNT */
|
||||
+ "addi %as, %as, 1;"
|
||||
+ "LABEL"},
|
||||
+
|
||||
+ /* Widening loops with const16. */
|
||||
+ {"loop %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"loop %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
- {"loopgtz %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ {"loopgtz %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"beqz %as,%label;"
|
||||
"bltz %as,%label;"
|
||||
"loopgtz %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
- {"loopnez %as,%label | %as!=1 ? IsaUseLoops",
|
||||
+ {"loopnez %as,%label | %as!=1 ? IsaUseLoops ? IsaUseConst16",
|
||||
"beqz %as,%label;"
|
||||
"loopnez %as,%LABEL;"
|
||||
"rsr.lend %as;" /* LEND */
|
||||
"wsr.lbeg %as;" /* LBEG */
|
||||
- "addi %as, %as, 0;" /* lo8(%label-%LABEL1) */
|
||||
- "addmi %as, %as, 0;" /* mid8(%label-%LABEL1) */
|
||||
+ "const16 %as,HI16U(%label);"
|
||||
+ "const16 %as,LOW16U(%label);"
|
||||
"wsr.lend %as;"
|
||||
"isync;"
|
||||
"rsr.lcount %as;" /* LCOUNT */
|
||||
- "addi %as, %as, 1;" /* density -> addi.n %as, %as, 1 */
|
||||
+ "addi %as, %as, 1;"
|
||||
"LABEL"},
|
||||
|
||||
/* Relaxing to wide branches. Order is important here. With wide
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
From 471702ac4a57878a06e8167f063274cf413e548d Mon Sep 17 00:00:00 2001
|
||||
From: Max Filippov <jcmvbkbc@gmail.com>
|
||||
Date: Mon, 8 Apr 2019 13:47:18 -0700
|
||||
Subject: [PATCH] xtensa: gas: put .literal_position at section start
|
||||
|
||||
Provide literal position at the beginning of each section for literal
|
||||
space reserved by relaxations when text-section-literals or
|
||||
auto-litpools options are used. Remove code that adds fill frag to the
|
||||
literal section for every .literal_position directive to avoid creation
|
||||
of empty literal sections.
|
||||
|
||||
Fix auto-litpools tests that got literal pool address changes.
|
||||
|
||||
gas/
|
||||
2019-04-11 Max Filippov <jcmvbkbc@gmail.com>
|
||||
|
||||
* config/tc-xtensa.c (xtensa_is_init_fini): Add declaration.
|
||||
(xtensa_mark_literal_pool_location): Don't add fill frag to literal
|
||||
section that records literal pool location.
|
||||
(md_begin): Call xtensa_mark_literal_pool_location when text
|
||||
section literals or auto litpools are used.
|
||||
(xtensa_elf_section_change_hook): Call
|
||||
xtensa_mark_literal_pool_location when text section literals or
|
||||
auto litpools are used, there's no literal pool location defined
|
||||
for the current section and it's not .init or .fini.
|
||||
|
||||
Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
|
||||
---
|
||||
gas/config/tc-xtensa.c | 22 +++++++++-------------
|
||||
1 file changed, 9 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/gas/config/tc-xtensa.c b/gas/config/tc-xtensa.c
|
||||
index 0cc06361cf6f..6a80e76fed8c 100644
|
||||
--- a/gas/config/tc-xtensa.c
|
||||
+++ b/gas/config/tc-xtensa.c
|
||||
@@ -497,6 +497,7 @@ static fixS *xg_append_jump (fragS *fragP, symbolS *sym, offsetT offset);
|
||||
static void xtensa_maybe_create_literal_pool_frag (bfd_boolean, bfd_boolean);
|
||||
static bfd_boolean auto_litpools = FALSE;
|
||||
static int auto_litpool_limit = 0;
|
||||
+static bfd_boolean xtensa_is_init_fini (segT seg);
|
||||
|
||||
/* Alignment Functions. */
|
||||
|
||||
@@ -4797,7 +4798,6 @@ xtensa_mark_literal_pool_location (void)
|
||||
{
|
||||
/* Any labels pointing to the current location need
|
||||
to be adjusted to after the literal pool. */
|
||||
- emit_state s;
|
||||
fragS *pool_location;
|
||||
|
||||
if (use_literal_section)
|
||||
@@ -4818,19 +4818,7 @@ xtensa_mark_literal_pool_location (void)
|
||||
RELAX_LITERAL_POOL_END, NULL, 0, NULL);
|
||||
xtensa_set_frag_assembly_state (frag_now);
|
||||
|
||||
- /* Now put a frag into the literal pool that points to this location. */
|
||||
set_literal_pool_location (now_seg, pool_location);
|
||||
- xtensa_switch_to_non_abs_literal_fragment (&s);
|
||||
- frag_align (2, 0, 0);
|
||||
- record_alignment (now_seg, 2);
|
||||
-
|
||||
- /* Close whatever frag is there. */
|
||||
- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL);
|
||||
- xtensa_set_frag_assembly_state (frag_now);
|
||||
- frag_now->tc_frag_data.literal_frag = pool_location;
|
||||
- frag_variant (rs_fill, 0, 0, 0, NULL, 0, NULL);
|
||||
- xtensa_restore_emit_state (&s);
|
||||
- xtensa_set_frag_assembly_state (frag_now);
|
||||
}
|
||||
|
||||
|
||||
@@ -5334,6 +5322,9 @@ md_begin (void)
|
||||
/* Set up the assembly state. */
|
||||
if (!frag_now->tc_frag_data.is_assembly_state_set)
|
||||
xtensa_set_frag_assembly_state (frag_now);
|
||||
+
|
||||
+ if (!use_literal_section)
|
||||
+ xtensa_mark_literal_pool_location ();
|
||||
}
|
||||
|
||||
|
||||
@@ -5933,6 +5924,11 @@ xtensa_elf_section_change_hook (void)
|
||||
/* Set up the assembly state. */
|
||||
if (!frag_now->tc_frag_data.is_assembly_state_set)
|
||||
xtensa_set_frag_assembly_state (frag_now);
|
||||
+
|
||||
+ if (!use_literal_section
|
||||
+ && seg_info (now_seg)->tc_segment_info_data.literal_pool_loc == NULL
|
||||
+ && !xtensa_is_init_fini (now_seg))
|
||||
+ xtensa_mark_literal_pool_location ();
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
From 6d3b4bb24da9a07c263f3c1acf8df85382ff562c Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Mon, 17 Dec 2018 18:07:18 +0100
|
||||
Subject: udhcpc: check that 4-byte options are indeed 4-byte, closes 11506
|
||||
|
||||
function old new delta
|
||||
udhcp_get_option32 - 27 +27
|
||||
udhcp_get_option 231 248 +17
|
||||
------------------------------------------------------------------------------
|
||||
(add/remove: 1/0 grow/shrink: 1/0 up/down: 44/0) Total: 44 bytes
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Jared Bents <jared.bents@rockwellcollins.com>
|
||||
---
|
||||
networking/udhcp/common.c | 19 +++++++++++++++++++
|
||||
networking/udhcp/common.h | 4 ++++
|
||||
networking/udhcp/dhcpc.c | 6 +++---
|
||||
networking/udhcp/dhcpd.c | 6 +++---
|
||||
4 files changed, 29 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
|
||||
index e5fd74f91..41b05b855 100644
|
||||
--- a/networking/udhcp/common.c
|
||||
+++ b/networking/udhcp/common.c
|
||||
@@ -272,6 +272,15 @@ uint8_t* FAST_FUNC udhcp_get_option(struct dhcp_packet *packet, int code)
|
||||
goto complain; /* complain and return NULL */
|
||||
|
||||
if (optionptr[OPT_CODE] == code) {
|
||||
+ if (optionptr[OPT_LEN] == 0) {
|
||||
+ /* So far no valid option with length 0 known.
|
||||
+ * Having this check means that searching
|
||||
+ * for DHCP_MESSAGE_TYPE need not worry
|
||||
+ * that returned pointer might be unsafe
|
||||
+ * to dereference.
|
||||
+ */
|
||||
+ goto complain; /* complain and return NULL */
|
||||
+ }
|
||||
log_option("option found", optionptr);
|
||||
return optionptr + OPT_DATA;
|
||||
}
|
||||
@@ -289,6 +298,16 @@ uint8_t* FAST_FUNC udhcp_get_option(struct dhcp_packet *packet, int code)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
+uint8_t* FAST_FUNC udhcp_get_option32(struct dhcp_packet *packet, int code)
|
||||
+{
|
||||
+ uint8_t *r = udhcp_get_option(packet, code);
|
||||
+ if (r) {
|
||||
+ if (r[-1] != 4)
|
||||
+ r = NULL;
|
||||
+ }
|
||||
+ return r;
|
||||
+}
|
||||
+
|
||||
/* Return the position of the 'end' option (no bounds checking) */
|
||||
int FAST_FUNC udhcp_end_option(uint8_t *optionptr)
|
||||
{
|
||||
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
|
||||
index 7ad603d33..9511152ff 100644
|
||||
--- a/networking/udhcp/common.h
|
||||
+++ b/networking/udhcp/common.h
|
||||
@@ -205,6 +205,10 @@ extern const uint8_t dhcp_option_lengths[] ALIGN1;
|
||||
unsigned FAST_FUNC udhcp_option_idx(const char *name, const char *option_strings);
|
||||
|
||||
uint8_t *udhcp_get_option(struct dhcp_packet *packet, int code) FAST_FUNC;
|
||||
+/* Same as above + ensures that option length is 4 bytes
|
||||
+ * (returns NULL if size is different)
|
||||
+ */
|
||||
+uint8_t *udhcp_get_option32(struct dhcp_packet *packet, int code) FAST_FUNC;
|
||||
int udhcp_end_option(uint8_t *optionptr) FAST_FUNC;
|
||||
void udhcp_add_binary_option(struct dhcp_packet *packet, uint8_t *addopt) FAST_FUNC;
|
||||
#if ENABLE_UDHCPC || ENABLE_UDHCPD
|
||||
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
|
||||
index 4b23e4d39..5b3fd531c 100644
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -1691,7 +1691,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
||||
* They say ISC DHCP client supports this case.
|
||||
*/
|
||||
server_addr = 0;
|
||||
- temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
||||
+ temp = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
||||
if (!temp) {
|
||||
bb_error_msg("no server ID, using 0.0.0.0");
|
||||
} else {
|
||||
@@ -1718,7 +1718,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
||||
struct in_addr temp_addr;
|
||||
uint8_t *temp;
|
||||
|
||||
- temp = udhcp_get_option(&packet, DHCP_LEASE_TIME);
|
||||
+ temp = udhcp_get_option32(&packet, DHCP_LEASE_TIME);
|
||||
if (!temp) {
|
||||
bb_error_msg("no lease time with ACK, using 1 hour lease");
|
||||
lease_seconds = 60 * 60;
|
||||
@@ -1813,7 +1813,7 @@ int udhcpc_main(int argc UNUSED_PARAM, char **argv)
|
||||
uint32_t svid;
|
||||
uint8_t *temp;
|
||||
|
||||
- temp = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
||||
+ temp = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
||||
if (!temp) {
|
||||
non_matching_svid:
|
||||
log1("received DHCP NAK with wrong"
|
||||
diff --git a/networking/udhcp/dhcpd.c b/networking/udhcp/dhcpd.c
|
||||
index a8cd3f03b..477856d11 100644
|
||||
--- a/networking/udhcp/dhcpd.c
|
||||
+++ b/networking/udhcp/dhcpd.c
|
||||
@@ -640,7 +640,7 @@ static void add_server_options(struct dhcp_packet *packet)
|
||||
static uint32_t select_lease_time(struct dhcp_packet *packet)
|
||||
{
|
||||
uint32_t lease_time_sec = server_config.max_lease_sec;
|
||||
- uint8_t *lease_time_opt = udhcp_get_option(packet, DHCP_LEASE_TIME);
|
||||
+ uint8_t *lease_time_opt = udhcp_get_option32(packet, DHCP_LEASE_TIME);
|
||||
if (lease_time_opt) {
|
||||
move_from_unaligned32(lease_time_sec, lease_time_opt);
|
||||
lease_time_sec = ntohl(lease_time_sec);
|
||||
@@ -987,7 +987,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
||||
}
|
||||
|
||||
/* Get SERVER_ID if present */
|
||||
- server_id_opt = udhcp_get_option(&packet, DHCP_SERVER_ID);
|
||||
+ server_id_opt = udhcp_get_option32(&packet, DHCP_SERVER_ID);
|
||||
if (server_id_opt) {
|
||||
uint32_t server_id_network_order;
|
||||
move_from_unaligned32(server_id_network_order, server_id_opt);
|
||||
@@ -1011,7 +1011,7 @@ int udhcpd_main(int argc UNUSED_PARAM, char **argv)
|
||||
}
|
||||
|
||||
/* Get REQUESTED_IP if present */
|
||||
- requested_ip_opt = udhcp_get_option(&packet, DHCP_REQUESTED_IP);
|
||||
+ requested_ip_opt = udhcp_get_option32(&packet, DHCP_REQUESTED_IP);
|
||||
if (requested_ip_opt) {
|
||||
move_from_unaligned32(requested_nip, requested_ip_opt);
|
||||
}
|
||||
--
|
||||
cgit v1.2.1
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
From 74d9f1ba37010face4bd1449df4d60dd84450b06 Mon Sep 17 00:00:00 2001
|
||||
From: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Date: Mon, 7 Jan 2019 15:33:42 +0100
|
||||
Subject: udhcpc: when decoding DHCP_SUBNET, ensure it is 4 bytes long
|
||||
|
||||
function old new delta
|
||||
udhcp_run_script 795 801 +6
|
||||
|
||||
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
|
||||
Signed-off-by: Jared Bents <jared.bents@rockwellcollins.com>
|
||||
---
|
||||
networking/udhcp/common.c | 2 +-
|
||||
networking/udhcp/common.h | 2 +-
|
||||
networking/udhcp/dhcpc.c | 2 +-
|
||||
3 files changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
|
||||
index 4c2221b77..fc4de5716 100644
|
||||
--- a/networking/udhcp/common.c
|
||||
+++ b/networking/udhcp/common.c
|
||||
@@ -302,7 +302,7 @@ uint8_t* FAST_FUNC udhcp_get_option32(struct dhcp_packet *packet, int code)
|
||||
{
|
||||
uint8_t *r = udhcp_get_option(packet, code);
|
||||
if (r) {
|
||||
- if (r[-1] != 4)
|
||||
+ if (r[-OPT_DATA + OPT_LEN] != 4)
|
||||
r = NULL;
|
||||
}
|
||||
return r;
|
||||
diff --git a/networking/udhcp/common.h b/networking/udhcp/common.h
|
||||
index 9511152ff..62f9a2a4a 100644
|
||||
--- a/networking/udhcp/common.h
|
||||
+++ b/networking/udhcp/common.h
|
||||
@@ -119,7 +119,7 @@ enum {
|
||||
//#define DHCP_TIME_SERVER 0x04 /* RFC 868 time server (32-bit, 0 = 1.1.1900) */
|
||||
//#define DHCP_NAME_SERVER 0x05 /* IEN 116 _really_ ancient kind of NS */
|
||||
//#define DHCP_DNS_SERVER 0x06
|
||||
-//#define DHCP_LOG_SERVER 0x07 /* port 704 UDP log (not syslog)
|
||||
+//#define DHCP_LOG_SERVER 0x07 /* port 704 UDP log (not syslog) */
|
||||
//#define DHCP_COOKIE_SERVER 0x08 /* "quote of the day" server */
|
||||
//#define DHCP_LPR_SERVER 0x09
|
||||
#define DHCP_HOST_NAME 0x0c /* 12: either client informs server or server gives name to client */
|
||||
diff --git a/networking/udhcp/dhcpc.c b/networking/udhcp/dhcpc.c
|
||||
index 5b3fd531c..dcec8cdfd 100644
|
||||
--- a/networking/udhcp/dhcpc.c
|
||||
+++ b/networking/udhcp/dhcpc.c
|
||||
@@ -531,7 +531,7 @@ static char **fill_envp(struct dhcp_packet *packet)
|
||||
temp = udhcp_get_option(packet, code);
|
||||
*curr = xmalloc_optname_optval(temp, &dhcp_optflags[i], opt_name);
|
||||
putenv(*curr++);
|
||||
- if (code == DHCP_SUBNET) {
|
||||
+ if (code == DHCP_SUBNET && temp[-OPT_DATA + OPT_LEN] == 4) {
|
||||
/* Subnet option: make things like "$ip/$mask" possible */
|
||||
uint32_t subnet;
|
||||
move_from_unaligned32(subnet, temp);
|
||||
--
|
||||
cgit v1.2.1
|
||||
|
||||
@@ -44,12 +44,12 @@ restart() {
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart)
|
||||
start|stop|restart)
|
||||
"$1";;
|
||||
reload)
|
||||
# Restart, since there is no true "reload" feature.
|
||||
restart;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
@@ -44,12 +44,12 @@ restart() {
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start|stop|restart)
|
||||
start|stop|restart)
|
||||
"$1";;
|
||||
reload)
|
||||
# Restart, since there is no true "reload" feature.
|
||||
restart;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|reload}"
|
||||
exit 1
|
||||
esac
|
||||
|
||||
@@ -321,7 +321,7 @@ CONFIG_UNIQ=y
|
||||
CONFIG_UNLINK=y
|
||||
CONFIG_USLEEP=y
|
||||
CONFIG_UUDECODE=y
|
||||
# CONFIG_BASE64 is not set
|
||||
CONFIG_BASE64=y
|
||||
CONFIG_UUENCODE=y
|
||||
CONFIG_WC=y
|
||||
# CONFIG_FEATURE_WC_LARGE is not set
|
||||
|
||||
@@ -32,8 +32,8 @@ endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
||||
CIVETWEB_COPT += -DNO_SSL_DL
|
||||
CIVETWEB_LIBS += -lssl -lcrypto -lz
|
||||
CIVETWEB_DEPENDENCIES += openssl
|
||||
CIVETWEB_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
|
||||
CIVETWEB_DEPENDENCIES += openssl host-pkgconf
|
||||
else
|
||||
CIVETWEB_COPT += -DNO_SSL
|
||||
endif
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Locally computed:
|
||||
sha256 cc544fdd065f3dd19113f1d5ba5f61d696e0f810f291f4b585d1dec361b0188e cjson-v1.7.10.tar.gz
|
||||
sha256 17ace0e31ebd639906983b05fe1d51576b948ca5411c2162f55dd34c122162ca cjson-v1.7.11.tar.gz
|
||||
sha256 a36dda207c36db5818729c54e7ad4e8b0c6fba847491ba64f372c1a2037b6d5c LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
CJSON_VERSION = v1.7.10
|
||||
CJSON_VERSION = v1.7.11
|
||||
CJSON_SITE = $(call github,DaveGamble,cjson,$(CJSON_VERSION))
|
||||
CJSON_INSTALL_STAGING = YES
|
||||
CJSON_LICENSE = MIT
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Locally calculated
|
||||
sha256 fa368fa9b2f57638696150c7d108b06dec284e8d8e3b8e702c784947c01fb806 clamav-0.101.1.tar.gz
|
||||
sha256 0a12ebdf6ff7a74c0bde2bdc2b55cae33449e6dd953ec90824a9e01291277634 clamav-0.101.2.tar.gz
|
||||
sha256 0c4fd2fa9733fc9122503797648710851e4ee6d9e4969dd33fcbd8c63cd2f584 COPYING
|
||||
sha256 d72a145c90918184a05ef65a04c9e6f7466faa59bc1b82c8f6a8ddc7ddcb9bed COPYING.bzip2
|
||||
sha256 dfb818a0d41411c6fb1c193c68b73018ceadd1994bda41ad541cbff292894bc6 COPYING.file
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
CLAMAV_VERSION = 0.101.1
|
||||
CLAMAV_VERSION = 0.101.2
|
||||
CLAMAV_SITE = https://www.clamav.net/downloads/production
|
||||
CLAMAV_LICENSE = GPL-2.0
|
||||
CLAMAV_LICENSE_FILES = COPYING COPYING.bzip2 COPYING.file COPYING.getopt \
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From 8d1b5a9b973a9891d676dabf31807eb825d7f262 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Fran=C3=A7ois=20Perrad?= <francois.perrad@gadz.org>
|
||||
Date: Wed, 6 Sep 2017 00:00:56 +0200
|
||||
Subject: [PATCH] Do not load coxpcall for LuaJIT
|
||||
|
||||
* coxpcall is only required with PUC Lua 5.1, but not with LuaJIT
|
||||
|
||||
use the same logic as in copas.lua.
|
||||
this fixes issue #63.
|
||||
|
||||
Fetch from: https://github.com/keplerproject/copas/commit/8d1b5a9b973a9891d676dabf31807eb825d7f262
|
||||
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
|
||||
---
|
||||
doc/us/index.html | 5 +++++
|
||||
src/copas/limit.lua | 2 +-
|
||||
2 files changed, 6 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/copas-2_0_2/doc/us/index.html b/doc/us/index.html
|
||||
index 1d008c2..c4d85ef 100644
|
||||
--- a/copas-2_0_2/doc/us/index.html
|
||||
+++ b/copas-2_0_2/doc/us/index.html
|
||||
@@ -114,6 +114,11 @@ LuaSocket, <a href="http://keplerproject.github.io/coxpcall/">Coxpcall</a> (only
|
||||
<h2><a name="history"></a>History</h2>
|
||||
|
||||
<dl class="history">
|
||||
+ <dt><strong>Copas</strong> [unreleased]</dt>
|
||||
+ <dd><ul>
|
||||
+ <li>Fixed: coxpcall dependency in limit.lua #63 (Francois Perrad)</li>
|
||||
+ </ul></dd>
|
||||
+
|
||||
<dt><strong>Copas 2.0.2</strong> [2017]</dt>
|
||||
<dd><ul>
|
||||
<li>Added: <code>copas.running</code> flag</li>
|
||||
diff --git a/copas-2_0_2/src/copas/limit.lua b/src/copas/limit.lua
|
||||
index ea178be..f0dfe17 100644
|
||||
--- a/copas-2_0_2/src/copas/limit.lua
|
||||
+++ b/copas-2_0_2/src/copas/limit.lua
|
||||
@@ -10,7 +10,7 @@ local pack = table.pack or function(...) return {n=select('#',...),...} end
|
||||
local unpack = function(t) return (table.unpack or unpack)(t, 1, t.n or #t) end
|
||||
|
||||
local pcall = pcall
|
||||
-if _VERSION=="Lua 5.1" then -- obsolete: only for Lua 5.1 compatibility
|
||||
+if _VERSION=="Lua 5.1" and not jit then -- obsolete: only for Lua 5.1 compatibility
|
||||
pcall = require("coxpcall").pcall
|
||||
end
|
||||
|
||||
--
|
||||
2.17.1
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
config BR2_PACKAGE_COPAS
|
||||
bool "copas"
|
||||
select BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 || BR2_PACKAGE_LUAJIT # runtime
|
||||
select BR2_PACKAGE_COXPCALL if BR2_PACKAGE_LUA_5_1 # runtime
|
||||
select BR2_PACKAGE_LUASOCKET # runtime
|
||||
help
|
||||
Copas is a dispatcher based on coroutines that can be used
|
||||
|
||||
@@ -1,189 +0,0 @@
|
||||
From 570933a6a3597371bae1beeb754ee8711d6305ab Mon Sep 17 00:00:00 2001
|
||||
From: Michael R Sweet <michael.r.sweet@gmail.com>
|
||||
Date: Mon, 2 Apr 2018 20:05:13 -0400
|
||||
Subject: [PATCH] Fix builds without PAM (Issue #5283)
|
||||
|
||||
[baruch: drop CHANGES.md hunk]
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 570933a6a3
|
||||
|
||||
CHANGES.md | 8 ++-
|
||||
scheduler/auth.c | 134 ++---------------------------------------------
|
||||
2 files changed, 11 insertions(+), 131 deletions(-)
|
||||
|
||||
diff --git a/scheduler/auth.c b/scheduler/auth.c
|
||||
index 8b134b5d7257..fa4e2715de34 100644
|
||||
--- a/scheduler/auth.c
|
||||
+++ b/scheduler/auth.c
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* Authorization routines for the CUPS scheduler.
|
||||
*
|
||||
- * Copyright 2007-2016 by Apple Inc.
|
||||
- * Copyright 1997-2007 by Easy Software Products, all rights reserved.
|
||||
+ * Copyright © 2007-2018 by Apple Inc.
|
||||
+ * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
|
||||
*
|
||||
* This file contains Kerberos support code, copyright 2006 by
|
||||
* Jelmer Vernooij.
|
||||
@@ -71,9 +71,6 @@ static int check_authref(cupsd_client_t *con, const char *right);
|
||||
static int compare_locations(cupsd_location_t *a,
|
||||
cupsd_location_t *b);
|
||||
static cupsd_authmask_t *copy_authmask(cupsd_authmask_t *am, void *data);
|
||||
-#if !HAVE_LIBPAM
|
||||
-static char *cups_crypt(const char *pw, const char *salt);
|
||||
-#endif /* !HAVE_LIBPAM */
|
||||
static void free_authmask(cupsd_authmask_t *am, void *data);
|
||||
#if HAVE_LIBPAM
|
||||
static int pam_func(int, const struct pam_message **,
|
||||
@@ -694,14 +691,14 @@ cupsdAuthorize(cupsd_client_t *con) /* I - Client connection */
|
||||
* client...
|
||||
*/
|
||||
|
||||
- pass = cups_crypt(password, pw->pw_passwd);
|
||||
+ pass = crypt(password, pw->pw_passwd);
|
||||
|
||||
if (!pass || strcmp(pw->pw_passwd, pass))
|
||||
{
|
||||
# ifdef HAVE_SHADOW_H
|
||||
if (spw)
|
||||
{
|
||||
- pass = cups_crypt(password, spw->sp_pwdp);
|
||||
+ pass = crypt(password, spw->sp_pwdp);
|
||||
|
||||
if (pass == NULL || strcmp(spw->sp_pwdp, pass))
|
||||
{
|
||||
@@ -1995,129 +1992,6 @@ copy_authmask(cupsd_authmask_t *mask, /* I - Existing auth mask */
|
||||
}
|
||||
|
||||
|
||||
-#if !HAVE_LIBPAM
|
||||
-/*
|
||||
- * 'cups_crypt()' - Encrypt the password using the DES or MD5 algorithms,
|
||||
- * as needed.
|
||||
- */
|
||||
-
|
||||
-static char * /* O - Encrypted password */
|
||||
-cups_crypt(const char *pw, /* I - Password string */
|
||||
- const char *salt) /* I - Salt (key) string */
|
||||
-{
|
||||
- if (!strncmp(salt, "$1$", 3))
|
||||
- {
|
||||
- /*
|
||||
- * Use MD5 passwords without the benefit of PAM; this is for
|
||||
- * Slackware Linux, and the algorithm was taken from the
|
||||
- * old shadow-19990827/lib/md5crypt.c source code... :(
|
||||
- */
|
||||
-
|
||||
- int i; /* Looping var */
|
||||
- unsigned long n; /* Output number */
|
||||
- int pwlen; /* Length of password string */
|
||||
- const char *salt_end; /* End of "salt" data for MD5 */
|
||||
- char *ptr; /* Pointer into result string */
|
||||
- _cups_md5_state_t state; /* Primary MD5 state info */
|
||||
- _cups_md5_state_t state2; /* Secondary MD5 state info */
|
||||
- unsigned char digest[16]; /* MD5 digest result */
|
||||
- static char result[120]; /* Final password string */
|
||||
-
|
||||
-
|
||||
- /*
|
||||
- * Get the salt data between dollar signs, e.g. $1$saltdata$md5.
|
||||
- * Get a maximum of 8 characters of salt data after $1$...
|
||||
- */
|
||||
-
|
||||
- for (salt_end = salt + 3; *salt_end && (salt_end - salt) < 11; salt_end ++)
|
||||
- if (*salt_end == '$')
|
||||
- break;
|
||||
-
|
||||
- /*
|
||||
- * Compute the MD5 sum we need...
|
||||
- */
|
||||
-
|
||||
- pwlen = strlen(pw);
|
||||
-
|
||||
- _cupsMD5Init(&state);
|
||||
- _cupsMD5Append(&state, (unsigned char *)pw, pwlen);
|
||||
- _cupsMD5Append(&state, (unsigned char *)salt, salt_end - salt);
|
||||
-
|
||||
- _cupsMD5Init(&state2);
|
||||
- _cupsMD5Append(&state2, (unsigned char *)pw, pwlen);
|
||||
- _cupsMD5Append(&state2, (unsigned char *)salt + 3, salt_end - salt - 3);
|
||||
- _cupsMD5Append(&state2, (unsigned char *)pw, pwlen);
|
||||
- _cupsMD5Finish(&state2, digest);
|
||||
-
|
||||
- for (i = pwlen; i > 0; i -= 16)
|
||||
- _cupsMD5Append(&state, digest, i > 16 ? 16 : i);
|
||||
-
|
||||
- for (i = pwlen; i > 0; i >>= 1)
|
||||
- _cupsMD5Append(&state, (unsigned char *)((i & 1) ? "" : pw), 1);
|
||||
-
|
||||
- _cupsMD5Finish(&state, digest);
|
||||
-
|
||||
- for (i = 0; i < 1000; i ++)
|
||||
- {
|
||||
- _cupsMD5Init(&state);
|
||||
-
|
||||
- if (i & 1)
|
||||
- _cupsMD5Append(&state, (unsigned char *)pw, pwlen);
|
||||
- else
|
||||
- _cupsMD5Append(&state, digest, 16);
|
||||
-
|
||||
- if (i % 3)
|
||||
- _cupsMD5Append(&state, (unsigned char *)salt + 3, salt_end - salt - 3);
|
||||
-
|
||||
- if (i % 7)
|
||||
- _cupsMD5Append(&state, (unsigned char *)pw, pwlen);
|
||||
-
|
||||
- if (i & 1)
|
||||
- _cupsMD5Append(&state, digest, 16);
|
||||
- else
|
||||
- _cupsMD5Append(&state, (unsigned char *)pw, pwlen);
|
||||
-
|
||||
- _cupsMD5Finish(&state, digest);
|
||||
- }
|
||||
-
|
||||
- /*
|
||||
- * Copy the final sum to the result string and return...
|
||||
- */
|
||||
-
|
||||
- memcpy(result, salt, (size_t)(salt_end - salt));
|
||||
- ptr = result + (salt_end - salt);
|
||||
- *ptr++ = '$';
|
||||
-
|
||||
- for (i = 0; i < 5; i ++, ptr += 4)
|
||||
- {
|
||||
- n = ((((unsigned)digest[i] << 8) | (unsigned)digest[i + 6]) << 8);
|
||||
-
|
||||
- if (i < 4)
|
||||
- n |= (unsigned)digest[i + 12];
|
||||
- else
|
||||
- n |= (unsigned)digest[5];
|
||||
-
|
||||
- to64(ptr, n, 4);
|
||||
- }
|
||||
-
|
||||
- to64(ptr, (unsigned)digest[11], 2);
|
||||
- ptr += 2;
|
||||
- *ptr = '\0';
|
||||
-
|
||||
- return (result);
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- /*
|
||||
- * Use the standard crypt() function...
|
||||
- */
|
||||
-
|
||||
- return (crypt(pw, salt));
|
||||
- }
|
||||
-}
|
||||
-#endif /* !HAVE_LIBPAM */
|
||||
-
|
||||
-
|
||||
/*
|
||||
* 'free_authmask()' - Free function for auth masks.
|
||||
*/
|
||||
--
|
||||
2.17.0
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Locally calculated:
|
||||
sha256 3c4b637b737077565ccdfbd5f61785d03f49461ae736fcc2c0ffaf41d2c6ea6a cups-2.2.7-source.tar.gz
|
||||
sha256 77c8b2b3bb7fe8b5fbfffc307f2c817b2d7ec67b657f261a1dd1c61ab81205bb cups-2.2.10-source.tar.gz
|
||||
sha256 6e0e0ffbde118aae709f7ef65590de9071e8b2cd322f84fd645c6b64f3cc452c LICENSE.txt
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
CUPS_VERSION = 2.2.7
|
||||
CUPS_VERSION = 2.2.10
|
||||
CUPS_SOURCE = cups-$(CUPS_VERSION)-source.tar.gz
|
||||
CUPS_SITE = https://github.com/apple/cups/releases/download/v$(CUPS_VERSION)
|
||||
CUPS_LICENSE = GPL-2.0, LGPL-2.0
|
||||
|
||||
0
bsp/buildroot/package/darkhttpd/S50darkhttpd
Executable file → Normal file
0
bsp/buildroot/package/darkhttpd/S50darkhttpd
Executable file → Normal file
48
bsp/buildroot/package/davfs2/0002-fix-iconv.patch
Normal file
48
bsp/buildroot/package/davfs2/0002-fix-iconv.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
webdav.c: fix iconv calls
|
||||
|
||||
Replace HAVE_ICONV_H by HAVE_ICONV to fix build with iconv indeed
|
||||
HAVE_ICONV_H is never set as AC_CHECK_HEADERS is not called to check for
|
||||
iconv.h
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status: https://savannah.nongnu.org/bugs/index.php?56178]
|
||||
|
||||
diff -Naurp davfs2-1.5.4-orig/src/webdav.c davfs2-1.5.4/src/webdav.c
|
||||
--- davfs2-1.5.4-orig/src/webdav.c 2019-04-20 12:12:38.252599230 +0200
|
||||
+++ davfs2-1.5.4/src/webdav.c 2019-04-20 12:13:33.012925300 +0200
|
||||
@@ -25,7 +25,7 @@
|
||||
#ifdef HAVE_FCNTL_H
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
-#ifdef HAVE_ICONV_H
|
||||
+#ifdef HAVE_ICONV
|
||||
#include <iconv.h>
|
||||
#endif
|
||||
#ifdef HAVE_LANGINFO_H
|
||||
@@ -231,7 +231,7 @@ static int initialized;
|
||||
Needed by ssl_verify() which may be called at any time. */
|
||||
static int have_terminal;
|
||||
|
||||
-#ifdef HAVE_ICONV_H
|
||||
+#ifdef HAVE_ICONV
|
||||
/* Handle to convert character encoding from utf-8 to LC_CTYPE.
|
||||
If NULL no conversion is done. */
|
||||
static iconv_t from_utf_8;
|
||||
@@ -264,7 +264,7 @@ static char **cookie_list;
|
||||
/* Private function prototypes and inline functions */
|
||||
/*==================================================*/
|
||||
|
||||
-#ifdef HAVE_ICONV_H
|
||||
+#ifdef HAVE_ICONV
|
||||
static void
|
||||
convert(char **s, iconv_t conv);
|
||||
#endif
|
||||
@@ -337,7 +337,7 @@ dav_init_webdav(const dav_args *args)
|
||||
if (args->neon_debug & ~NE_DBG_HTTPPLAIN)
|
||||
syslog(LOG_MAKEPRI(LOG_DAEMON, LOG_DEBUG), "Initializing webdav");
|
||||
|
||||
-#ifdef HAVE_ICONV_H
|
||||
+#ifdef HAVE_ICONV
|
||||
char *lc_charset = nl_langinfo(CODESET);
|
||||
if (lc_charset && strcasecmp(lc_charset, "UTF-8") != 0) {
|
||||
from_utf_8 = iconv_open(lc_charset, "UTF-8");
|
||||
@@ -9,9 +9,13 @@ DAVFS2_SITE = http://download.savannah.nongnu.org/releases/davfs2
|
||||
DAVFS2_LICENSE = GPL-3.0+
|
||||
DAVFS2_LICENSE_FILES = COPYING
|
||||
|
||||
DAVFS2_DEPENDENCIES = neon
|
||||
DAVFS2_DEPENDENCIES = \
|
||||
neon \
|
||||
$(if $(BR2_PACKAGE_LIBICONV),libiconv) \
|
||||
$(TARGET_NLS_DEPENDENCIES)
|
||||
|
||||
DAVFS2_CONF_ENV += \
|
||||
ac_cv_path_NEON_CONFIG=$(STAGING_DIR)/usr/bin/neon-config
|
||||
ac_cv_path_NEON_CONFIG=$(STAGING_DIR)/usr/bin/neon-config \
|
||||
LIBS=$(TARGET_NLS_LIBS)
|
||||
|
||||
$(eval $(autotools-package))
|
||||
|
||||
0
bsp/buildroot/package/dhcp/S80dhcp-relay
Executable file → Normal file
0
bsp/buildroot/package/dhcp/S80dhcp-relay
Executable file → Normal file
0
bsp/buildroot/package/dhcp/S80dhcp-server
Executable file → Normal file
0
bsp/buildroot/package/dhcp/S80dhcp-server
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
# Locally calculated
|
||||
sha256 29f3a435bfcd52dbe26f6315ee92bffc0220a537608935a2c3870f6b729fc16e docker-cli-v18.09.2.tar.gz
|
||||
sha256 f9be44f395617f3f75faac69ad90f93c94ee4050c193bfa05eddb520a27c5d44 docker-cli-v18.09.4.tar.gz
|
||||
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
DOCKER_CLI_VERSION = v18.09.2
|
||||
DOCKER_CLI_VERSION = v18.09.4
|
||||
DOCKER_CLI_SITE = $(call github,docker,cli,$(DOCKER_CLI_VERSION))
|
||||
DOCKER_CLI_WORKSPACE = gopath
|
||||
|
||||
|
||||
@@ -3,9 +3,7 @@ config BR2_PACKAGE_DOCKER_CONTAINERD
|
||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 # runc
|
||||
depends on !BR2_TOOLCHAIN_USES_UCLIBC # runc
|
||||
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM # runc
|
||||
depends on BR2_USE_MMU # util-linux
|
||||
select BR2_PACKAGE_RUNC # runtime dependency
|
||||
select BR2_PACKAGE_UTIL_LINUX # runtime dependency
|
||||
@@ -16,7 +14,7 @@ config BR2_PACKAGE_DOCKER_CONTAINERD
|
||||
help
|
||||
containerd is a daemon to control runC.
|
||||
|
||||
https://github.com/docker/containerd
|
||||
https://containerd.io/
|
||||
|
||||
if BR2_PACKAGE_DOCKER_CONTAINERD
|
||||
|
||||
@@ -34,6 +32,4 @@ comment "docker-containerd needs a glibc or musl toolchain w/ threads"
|
||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||
depends on BR2_USE_MMU
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || \
|
||||
!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 || BR2_TOOLCHAIN_USES_UCLIBC
|
||||
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Computed locally
|
||||
sha256 ff4c2ad680c9e2484e335868a54b0c1ea49d9165dd5b38b64ef7d9dacf2b96b4 docker-containerd-v1.2.3.tar.gz
|
||||
sha256 b92819bde71de947329814a3c649b8adb106cc03be16aae217b94297f4b843a1 docker-containerd-v1.2.5.tar.gz
|
||||
sha256 4bbe3b885e8cd1907ab4cf9a41e862e74e24b5422297a4f2fe524e6a30ada2b4 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
DOCKER_CONTAINERD_VERSION = v1.2.3
|
||||
DOCKER_CONTAINERD_VERSION = v1.2.5
|
||||
DOCKER_CONTAINERD_SITE = $(call github,containerd,containerd,$(DOCKER_CONTAINERD_VERSION))
|
||||
DOCKER_CONTAINERD_LICENSE = Apache-2.0
|
||||
DOCKER_CONTAINERD_LICENSE_FILES = LICENSE
|
||||
|
||||
@@ -3,9 +3,7 @@ config BR2_PACKAGE_DOCKER_ENGINE
|
||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 # docker-containerd -> runc
|
||||
depends on !BR2_TOOLCHAIN_USES_UCLIBC # docker-containerd -> runc
|
||||
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM # docker-containerd -> runc
|
||||
depends on BR2_USE_MMU # docker-containerd
|
||||
select BR2_PACKAGE_DOCKER_CONTAINERD # runtime dependency
|
||||
select BR2_PACKAGE_DOCKER_PROXY # runtime dependency
|
||||
@@ -52,10 +50,8 @@ config BR2_PACKAGE_DOCKER_ENGINE_DRIVER_VFS
|
||||
|
||||
endif
|
||||
|
||||
comment "docker-engine needs a glibc or musl toolchain w/ threads, headers >= 3.11"
|
||||
comment "docker-engine needs a glibc or musl toolchain w/ threads"
|
||||
depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS
|
||||
depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || \
|
||||
!BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11 || BR2_TOOLCHAIN_USES_UCLIBC
|
||||
depends on !BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_ARM
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_TOOLCHAIN_USES_UCLIBC
|
||||
depends on BR2_USE_MMU
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Locally calculated
|
||||
sha256 4babbcbc3e1d7750c61a1e5bee29bd206256948961feaac5b44cabb0c70a50a6 docker-engine-v18.09.2.tar.gz
|
||||
sha256 1f4bd15d799420b587024fe3c6d7bd4eb584e509d30c8193db31411579780f2a docker-engine-v18.09.4.tar.gz
|
||||
sha256 2d81ea060825006fc8f3fe28aa5dc0ffeb80faf325b612c955229157b8c10dc0 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
DOCKER_ENGINE_VERSION = v18.09.2
|
||||
DOCKER_ENGINE_VERSION = v18.09.4
|
||||
DOCKER_ENGINE_SITE = $(call github,docker,engine,$(DOCKER_ENGINE_VERSION))
|
||||
|
||||
DOCKER_ENGINE_LICENSE = Apache-2.0
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Locally computed after checking signature
|
||||
sha256 547999e67a001abc5e654c7e35653d3fe057fa9a47a24257e39a79c41ef08516 dovecot-2.3-pigeonhole-0.5.4.tar.gz
|
||||
sha256 cbaa106e1c2b23824420efdd6a9f8572c64c8dccf75a3101a899b6ddb25149a5 dovecot-2.3-pigeonhole-0.5.5.tar.gz
|
||||
sha256 fc9e9522216f2a9a28b31300e3c73c1df56acc27dfae951bf516e7995366b51a COPYING
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
DOVECOT_PIGEONHOLE_VERSION = 0.5.4
|
||||
DOVECOT_PIGEONHOLE_VERSION = 0.5.5
|
||||
DOVECOT_PIGEONHOLE_SOURCE = dovecot-2.3-pigeonhole-$(DOVECOT_PIGEONHOLE_VERSION).tar.gz
|
||||
DOVECOT_PIGEONHOLE_SITE = https://pigeonhole.dovecot.org/releases/2.3
|
||||
DOVECOT_PIGEONHOLE_LICENSE = LGPL-2.1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Locally computed after checking signature
|
||||
sha256 b8873e2ce5c33e58963bb7a8d2ff8427c09dbfdd63e13a0b0f4502864043aa07 dovecot-2.3.4.1.tar.gz
|
||||
sha256 ba14e41aefd81a868a35b83bcb54194116106424d37690519b50ea83c0f31bf2 dovecot-2.3.5.2.tar.gz
|
||||
sha256 a363b132e494f662d98c820d1481297e6ae72f194c2c91b6c39e1518b86240a8 COPYING
|
||||
sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL
|
||||
sha256 52b8c95fabb19575281874b661ef7968ea47e8f5d74ba0dd40ce512e52b3fc97 COPYING.MIT
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
################################################################################
|
||||
|
||||
DOVECOT_VERSION_MAJOR = 2.3
|
||||
DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).4.1
|
||||
DOVECOT_VERSION = $(DOVECOT_VERSION_MAJOR).5.2
|
||||
DOVECOT_SITE = https://www.dovecot.org/releases/$(DOVECOT_VERSION_MAJOR)
|
||||
DOVECOT_INSTALL_STAGING = YES
|
||||
DOVECOT_LICENSE = LGPL-2.1, MIT, Public Domain, BSD-3-Clause, Unicode-DFS-2015
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
From d045dd99acdd47be238642d4f9384dccacde2b42 Mon Sep 17 00:00:00 2001
|
||||
From: "Carsten Haitzler (Rasterman)" <raster@rasterman.com>
|
||||
Date: Sat, 15 Dec 2018 16:19:01 +0000
|
||||
Subject: [PATCH] evas gl - make GLintptr etc. also ndefed for GL_VERSION_1_5
|
||||
fix typedef
|
||||
|
||||
It seems that GL_VERSION_1_5 define == these provided by gl already. At
|
||||
least reading the mesa headers I do, so this should fix T7502
|
||||
|
||||
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
|
||||
---
|
||||
src/lib/evas/Evas_GL.h | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/src/lib/evas/Evas_GL.h b/src/lib/evas/Evas_GL.h
|
||||
index fa3e6f4..5524d82 100644
|
||||
--- a/src/lib/evas/Evas_GL.h
|
||||
+++ b/src/lib/evas/Evas_GL.h
|
||||
@@ -4272,9 +4272,11 @@ typedef signed int GLfixed; // Changed khronos_int32_t
|
||||
|
||||
#ifndef GL_ES_VERSION_2_0
|
||||
/* GL types for handling large vertex buffer objects */
|
||||
-#include <stddef.h>
|
||||
+# ifndef GL_VERSION_1_5
|
||||
+# include <stddef.h>
|
||||
typedef ptrdiff_t GLintptr; // Changed khronos_intptr_t
|
||||
typedef ptrdiff_t GLsizeiptr; // Changed khronos_ssize_t
|
||||
+# endif
|
||||
#endif
|
||||
|
||||
/* Some definitions from GLES 3.0.
|
||||
--
|
||||
2.14.1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Locally computed
|
||||
sha256 dd254beb0bafc695d0f62ae1a222ff85b52dbaa3a16f76e781dce22d0d20a4a6 3.3.4.tar.bz2
|
||||
sha256 9f13cf90dedbe3e52a19f43000d71fdf72e986beb9a5436dddcd61ff9d77a3ce 3.3.7.tar.bz2
|
||||
sha256 4f877e5ae4672568ef82cfd0023e2cef4a7cf55d867ab249efc9569a7eb9e5b1 COPYING.BSD
|
||||
sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 COPYING.GPL
|
||||
sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING.LGPL
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
EIGEN_VERSION = 3.3.4
|
||||
EIGEN_VERSION = 3.3.7
|
||||
EIGEN_SOURCE = $(EIGEN_VERSION).tar.bz2
|
||||
EIGEN_SITE = https://bitbucket.org/eigen/eigen/get
|
||||
EIGEN_LICENSE = MPL2, BSD-3-Clause, LGPL-2.1
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
Fix checking for statically build OpenSSL with libz dependency
|
||||
|
||||
Fixes
|
||||
http://autobuild.buildroot.net/results/48a/48ad6d3659cf1f04581b7e3d115bebf454ff17fd/
|
||||
|
||||
configure: Enabling OpenSSL support in /home/br/br/output/host/usr/i486-buildroot-linux-uclibc/sysroot/usr.
|
||||
checking for additional library dependencies of SSL... error
|
||||
configure: error: cannot link with SSL - check config.log
|
||||
|
||||
In config.log multiple linking errors to libz can be found:
|
||||
|
||||
configure:10099: /home/br/br/output/host/usr/bin/i486-ctng-linux-uclibc-gcc -o
|
||||
conftest -D_LARGEFILE_SOURCE -D_LARGEFILE64
|
||||
/home/br/br/output/host/usr/i486-buildroot-linux-uclibc/sysroot/usr/lib/libcrypto.a(c_zlib.o):
|
||||
In function `zlib_stateful_c_zlib.c:(.text+0x56): undefined reference to `inflate'
|
||||
|
||||
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
|
||||
diff -uNr fetchmail-6.3.26.org/configure.ac fetchmail-6.3.26/configure.ac
|
||||
--- fetchmail-6.3.26.org/configure.ac 2013-04-23 22:51:10.000000000 +0200
|
||||
+++ fetchmail-6.3.26/configure.ac 2014-07-27 09:20:25.000000000 +0200
|
||||
@@ -778,7 +778,7 @@
|
||||
AC_MSG_ERROR([SSL support enabled, but OpenSSL not found])
|
||||
fi
|
||||
LDFLAGS="$LDFLAGS -L$with_ssl/lib"
|
||||
- LIBS="$LIBS -lssl -lcrypto"
|
||||
+ LIBS="-lssl -lcrypto $LIBS"
|
||||
dnl check if -ldl is needed
|
||||
AC_MSG_CHECKING([for additional library dependencies of SSL])
|
||||
found=0
|
||||
@@ -0,0 +1,69 @@
|
||||
From 1ed0af7f1bbcaccbd7356bd90596f5c942b64720 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Fri, 22 Mar 2019 20:24:54 +0100
|
||||
Subject: [PATCH 1/1] configure.ac: use pkg-config to find openssl
|
||||
|
||||
openssl can have multiples dependencies such as libatomic on sparcv8
|
||||
32 bits
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/58e5aa7c6ba8fe7474071d7a3cba6ed3a1b4cff4
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status:
|
||||
https://gitlab.com/fetchmail/fetchmail/merge_requests/14]
|
||||
---
|
||||
configure.ac | 37 +++++++++++++++++++------------------
|
||||
1 file changed, 19 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 16b0fcba..3a75ec6e 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -778,24 +778,25 @@ then
|
||||
else
|
||||
AC_MSG_ERROR([SSL support enabled, but OpenSSL not found])
|
||||
fi
|
||||
- LDFLAGS="$LDFLAGS -L$with_ssl/lib"
|
||||
- LIBS="$LIBS -lssl -lcrypto"
|
||||
- dnl check if -ldl is needed
|
||||
- AC_MSG_CHECKING([for additional library dependencies of SSL])
|
||||
- found=0
|
||||
- save_LIBS="$LIBS"
|
||||
- for i in "" "-ldl" ; do
|
||||
- LIBS="$LDFLAGS $save_LIBS $i"
|
||||
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <openssl/ssl.h>],[SSL_library_init()])],[found=1; break])
|
||||
- done
|
||||
- if test $found = 0 ; then
|
||||
- AC_MSG_RESULT([error])
|
||||
- AC_MSG_ERROR([cannot link with SSL - check config.log])
|
||||
- fi
|
||||
- LIBS="$save_LIBS $i"
|
||||
- if test "$i" = "" ; then i="(none)" ; fi
|
||||
- AC_MSG_RESULT($i)
|
||||
- dnl XXX FIXME: use pkg-config if available!
|
||||
+ PKG_CHECK_MODULES([SSL],[libssl libcrypto],[LIBS="$LIBS $SSL_LIBS"],[
|
||||
+ LDFLAGS="$LDFLAGS -L$with_ssl/lib"
|
||||
+ LIBS="$LIBS -lssl -lcrypto"
|
||||
+ dnl check if -ldl is needed
|
||||
+ AC_MSG_CHECKING([for additional library dependencies of SSL])
|
||||
+ found=0
|
||||
+ save_LIBS="$LIBS"
|
||||
+ for i in "" "-ldl" ; do
|
||||
+ LIBS="$LDFLAGS $save_LIBS $i"
|
||||
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <openssl/ssl.h>],[SSL_library_init()])],[found=1; break])
|
||||
+ done
|
||||
+ if test $found = 0 ; then
|
||||
+ AC_MSG_RESULT([error])
|
||||
+ AC_MSG_ERROR([cannot link with SSL - check config.log])
|
||||
+ fi
|
||||
+ LIBS="$save_LIBS $i"
|
||||
+ if test "$i" = "" ; then i="(none)" ; fi
|
||||
+ AC_MSG_RESULT($i)
|
||||
+ ])
|
||||
AC_DEFINE(SSL_ENABLE)
|
||||
else
|
||||
AC_MSG_WARN(Disabling SSL support.)
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -13,17 +13,12 @@ FETCHMAIL_LICENSE_FILES = COPYING
|
||||
FETCHMAIL_AUTORECONF = YES
|
||||
FETCHMAIL_GETTEXTIZE = YES
|
||||
|
||||
# needed to help fetchmail detecting the availability of openssl,
|
||||
# because it doesn't use pkg-config
|
||||
ifeq ($(BR2_STATIC_LIBS),y)
|
||||
FETCHMAIL_CONF_ENV += LIBS="-lz"
|
||||
endif
|
||||
|
||||
FETCHMAIL_CONF_OPTS = \
|
||||
--with-ssl=$(STAGING_DIR)/usr
|
||||
|
||||
FETCHMAIL_DEPENDENCIES = \
|
||||
ca-certificates \
|
||||
host-pkgconf \
|
||||
openssl \
|
||||
$(TARGET_NLS_DEPENDENCIES)
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Locally calculated
|
||||
sha256 f15a50dbbfa83fec0bd1161e8e191b092ec832720e30cd14536e044ac623b20a file-5.34.tar.gz
|
||||
sha256 3c0ad13c36f891a9b4f951e59eb2fc108065a46f849697cc6fd3cdb41cc23a3d COPYING
|
||||
sha256 d98ee4d8d95e7d021a5dfc41f137ecc3b624a7b98e8bd793130202d12a21ed57 src/mygetopt.h
|
||||
sha256 85e358d575ad4ac5b38b623a25b24246ccff3c7e680d930c0a9ff5228fe434b6 src/vasprintf.c
|
||||
# Locally calculated after verifying signature
|
||||
# ftp://ftp.astron.com/pub/file/file-5.36.tar.gz.asc
|
||||
# using key BE04995BA8F90ED0C0C176C471112AB16CB33B3A
|
||||
sha256 fb608290c0fd2405a8f63e5717abf6d03e22e183fb21884413d1edd918184379 file-5.36.tar.gz
|
||||
sha256 0bfa856a9930bddadbef95d1be1cf4e163c0be618e76ea3275caaf255283e274 COPYING
|
||||
sha256 4ccb60d623884ef637af4a5bc16b2cb350163e2135e967655837336019a64462 src/mygetopt.h
|
||||
sha256 7ac061e1a1c840c4dfa0573aec6f3497676c9295b5ec4190d3576646eb1646bf src/vasprintf.c
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
FILE_VERSION = 5.34
|
||||
FILE_VERSION = 5.36
|
||||
FILE_SITE = ftp://ftp.astron.com/pub/file
|
||||
FILE_DEPENDENCIES = host-file zlib
|
||||
HOST_FILE_DEPENDENCIES = host-zlib
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From a9a03cc6ba71825bfae0d64e1888f33c77345bc3 Mon Sep 17 00:00:00 2001
|
||||
From: Khem Raj <raj.khem@gmail.com>
|
||||
Date: Sat, 17 Mar 2018 23:08:29 -0700
|
||||
Subject: [PATCH] platform: Add riscv to known platforms
|
||||
|
||||
Change-Id: I724a99e2493fcbf71c2fc2d9f6a1ad607c737087
|
||||
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||
Reviewed-on: https://review.coreboot.org/25260
|
||||
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
|
||||
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
|
||||
Reviewed-by: David Hendricks <david.hendricks@gmail.com>
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Retrieved from:
|
||||
https://github.com/flashrom/flashrom/commit/a9a03cc6ba71825bfae0d64e1888f33c77345bc3]
|
||||
---
|
||||
platform.h | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/platform.h b/platform.h
|
||||
index e3b7674ae..65fe85881 100644
|
||||
--- a/platform.h
|
||||
+++ b/platform.h
|
||||
@@ -69,6 +69,9 @@
|
||||
#elif defined (__m68k__)
|
||||
#define __FLASHROM_ARCH__ "m68k"
|
||||
#define IS_M68K 1
|
||||
+#elif defined (__riscv)
|
||||
+ #define __FLASHROM_ARCH__ "riscv"
|
||||
+ #define IS_RISCV 1
|
||||
#elif defined (__sh__)
|
||||
#define __FLASHROM_ARCH__ "sh"
|
||||
#define IS_SH 1
|
||||
@@ -77,7 +80,7 @@
|
||||
#define IS_S390 1
|
||||
#endif
|
||||
|
||||
-#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_SH || IS_S390)
|
||||
+#if !(IS_X86 || IS_MIPS || IS_PPC || IS_ARM || IS_SPARC || IS_ALPHA || IS_HPPA || IS_M68K || IS_RISCV || IS_SH || IS_S390)
|
||||
#error Unknown architecture
|
||||
#endif
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
config BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS
|
||||
bool
|
||||
default y if BR2_aarch64 || BR2_aarch64_be
|
||||
default y if BR2_arm || BR2_armeb
|
||||
default y if BR2_i386 || BR2_x86_64
|
||||
default y if BR2_m68k
|
||||
default y if BR2_mips || BR2_mipsel || BR2_mips64 || BR2_mips64el
|
||||
default y if BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le
|
||||
default y if BR2_riscv
|
||||
default y if BR2_sh
|
||||
default y if BR2_sparc || BR2_sparc64
|
||||
|
||||
config BR2_PACKAGE_FLASHROM
|
||||
bool "flashrom"
|
||||
depends on BR2_i386 || BR2_x86_64
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # libusb
|
||||
select BR2_PACKAGE_PCIUTILS
|
||||
select BR2_PACKAGE_LIBUSB
|
||||
select BR2_PACKAGE_LIBUSB_COMPAT
|
||||
select BR2_PACKAGE_LIBFTDI
|
||||
# dmidecode is only a runtime dependency
|
||||
select BR2_PACKAGE_DMIDECODE
|
||||
depends on BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS
|
||||
help
|
||||
flashrom is a utility for identifying, reading, writing,
|
||||
verifying and erasing flash chips. It is designed to flash
|
||||
@@ -16,7 +21,3 @@ config BR2_PACKAGE_FLASHROM
|
||||
programmer devices.
|
||||
|
||||
http://flashrom.org/
|
||||
|
||||
comment "flashrom needs a toolchain w/ threads"
|
||||
depends on BR2_i386 || BR2_x86_64
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS
|
||||
|
||||
@@ -7,13 +7,45 @@
|
||||
FLASHROM_VERSION = 1.0
|
||||
FLASHROM_SOURCE = flashrom-$(FLASHROM_VERSION).tar.bz2
|
||||
FLASHROM_SITE = https://download.flashrom.org/releases
|
||||
FLASHROM_DEPENDENCIES = pciutils libusb libusb-compat libftdi host-pkgconf
|
||||
FLASHROM_LICENSE = GPL-2.0+
|
||||
FLASHROM_LICENSE_FILES = COPYING
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBFTDI),y)
|
||||
FLASHROM_DEPENDENCIES += host-pkgconf libftdi
|
||||
FLASHROM_MAKE_OPTS += \
|
||||
CONFIG_FT2232_SPI=yes \
|
||||
CONFIG_USBBLASTER_SPI=yes
|
||||
else
|
||||
FLASHROM_MAKE_OPTS += \
|
||||
CONFIG_FT2232_SPI=no \
|
||||
CONFIG_USBBLASTER_SPI=no
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBUSB),y)
|
||||
FLASHROM_DEPENDENCIES += host-pkgconf libusb
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB1_PROGRAMMERS=yes
|
||||
else
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB1_PROGRAMMERS=no
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_LIBUSB_COMPAT),y)
|
||||
FLASHROM_DEPENDENCIES += host-pkgconf libusb-compat
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=yes
|
||||
else
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBUSB0_PROGRAMMERS=no
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_PCIUTILS),y)
|
||||
FLASHROM_DEPENDENCIES += pciutils
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBPCI_PROGRAMMERS=yes
|
||||
else
|
||||
FLASHROM_MAKE_OPTS += CONFIG_ENABLE_LIBPCI_PROGRAMMERS=no
|
||||
endif
|
||||
|
||||
define FLASHROM_BUILD_CMDS
|
||||
$(TARGET_MAKE_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) \
|
||||
CFLAGS="$(TARGET_CFLAGS) -DHAVE_STRNLEN" -C $(@D)
|
||||
CFLAGS="$(TARGET_CFLAGS) -DHAVE_STRNLEN" \
|
||||
$(FLASHROM_MAKE_OPTS) -C $(@D)
|
||||
endef
|
||||
|
||||
define FLASHROM_INSTALL_TARGET_CMDS
|
||||
|
||||
@@ -54,4 +54,11 @@ else
|
||||
FLTK_CONF_OPTS += --disable-xinerama
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_XLIB_LIBXRENDER),y)
|
||||
FLTK_DEPENDENCIES += xlib_libXrender
|
||||
FLTK_CONF_OPTS += --enable-xrender
|
||||
else
|
||||
FLTK_CONF_OPTS += --disable-xrender
|
||||
endif
|
||||
|
||||
$(eval $(autotools-package))
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
From 7dbb64cb62049159d9d71b9be39f469bbd116f41 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Thu, 18 Apr 2019 23:40:52 +0200
|
||||
Subject: [PATCH] xf_floatbar.c: fix build without Xfixes
|
||||
|
||||
Remove unneeded include on Xfixes.h as it is not always available and
|
||||
not used in xf_floatbar.c
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/69245e574787bada718c52c805ec137041dc233d
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status: https://github.com/FreeRDP/FreeRDP/pull/5354]
|
||||
---
|
||||
client/X11/xf_floatbar.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/client/X11/xf_floatbar.c b/client/X11/xf_floatbar.c
|
||||
index 3643b6052..04912aa79 100644
|
||||
--- a/client/X11/xf_floatbar.c
|
||||
+++ b/client/X11/xf_floatbar.c
|
||||
@@ -19,7 +19,6 @@
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xatom.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
-#include <X11/extensions/Xfixes.h>
|
||||
#include <X11/cursorfont.h>
|
||||
|
||||
#include "xf_floatbar.h"
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Locally calculated
|
||||
sha256 a09e338b996fada44bf1277f423240d0fa82289799e2e5dea9d9c63201554de1 freerdp-2.0.0-rc2.tar.gz
|
||||
sha256 3406f3bfab63f81c1533029a5bf73949ff60f22f6e155c5a08005b8b8afe6d49 freerdp-2.0.0-rc4.tar.gz
|
||||
sha256 cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
FREERDP_VERSION = 2.0.0-rc2
|
||||
FREERDP_VERSION = 2.0.0-rc4
|
||||
FREERDP_SITE = $(call github,FreeRDP,FreeRDP,$(FREERDP_VERSION))
|
||||
FREERDP_DEPENDENCIES = libglib2 openssl zlib
|
||||
FREERDP_LICENSE = Apache-2.0
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
From de0e7fe3b56cff79c11aedc89448814fab8d1877 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Fri, 8 Mar 2019 19:11:11 +0100
|
||||
Subject: [PATCH] MakeLists.txt: fix static build with curl and libidn2
|
||||
|
||||
curl can be statically linked with libidn2, in this case, build fails:
|
||||
/accts/mlweber1/rclinux/rc-buildroot-test/scripts/instance-0/output/host/m68k-buildroot-linux-uclibc/sysroot/usr/lib/libcurl.a(libcurl_la-url.o): In function `free_idnconverted_hostname.isra.1':
|
||||
url.c:(.text+0xf4): undefined reference to `idn2_free'
|
||||
|
||||
To fix this issue, add a call to pkg_check_modules to retrieve any
|
||||
needed dependencies
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/be5893b507d22a23951efeea20c18642742cef5a
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status: https://github.com/gerbera/gerbera/pull/429]
|
||||
---
|
||||
CMakeLists.txt | 6 +++++-
|
||||
1 file changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index d0eed230..e6b62c96 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -443,7 +443,11 @@ if(WITH_MYSQL)
|
||||
endif()
|
||||
|
||||
if(WITH_CURL)
|
||||
- find_package (CURL REQUIRED)
|
||||
+ find_package(PkgConfig QUIET)
|
||||
+ pkg_check_modules (CURL QUIET libcurl)
|
||||
+ if (NOT CURL_FOUND)
|
||||
+ find_package (CURL REQUIRED)
|
||||
+ endif()
|
||||
if (CURL_FOUND)
|
||||
include_directories(${CURL_INCLUDE_DIRS})
|
||||
target_link_libraries (gerbera ${CURL_LIBRARIES})
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -0,0 +1,175 @@
|
||||
From fbbc07ce53e884b1603461ee5642d5f02788678d Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Thu, 21 Mar 2019 16:32:44 +0100
|
||||
Subject: [PATCH] cmake/FindFFMPEG.cmake: use pkgconfig
|
||||
|
||||
ffmpeg has too many optional dependencies (opus, openssl, ...) instead
|
||||
of trying to find them all one by one, use pkg-config to get them and
|
||||
fallback on current mechanism
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/2b99fabd798db84a0fce26ad696c58e54c6ff626
|
||||
- http://autobuild.buildroot.org/results/95e410e5ab34c6d4626a58f97c0d2d5e6829a300
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Retrieved (and backported) from:
|
||||
https://github.com/gerbera/gerbera/commit/fbbc07ce53e884b1603461ee5642d5f02788678d]
|
||||
---
|
||||
cmake/FindFFMPEG.cmake | 147 +++++++++++++++++++++--------------------
|
||||
1 file changed, 75 insertions(+), 72 deletions(-)
|
||||
|
||||
diff --git a/cmake/FindFFMPEG.cmake b/cmake/FindFFMPEG.cmake
|
||||
index 0a4a409f..9548b566 100644
|
||||
--- a/cmake/FindFFMPEG.cmake
|
||||
+++ b/cmake/FindFFMPEG.cmake
|
||||
@@ -82,70 +82,76 @@ ENDIF (NOT FFMPEG_INCLUDE_DIR)
|
||||
# ffmpeg uses relative includes such as <ffmpeg/avformat.h> or <libavcodec/avformat.h>
|
||||
get_filename_component(FFMPEG_INCLUDE_DIR ${FFMPEG_INCLUDE_DIR} ABSOLUTE)
|
||||
|
||||
-FIND_LIBRARY(FFMPEG_avformat_LIBRARY avformat
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_avcodec_LIBRARY avcodec
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_avutil_LIBRARY avutil
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_swresample_LIBRARY swresample
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_vorbis_LIBRARY vorbis
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_dc1394_LIBRARY dc1394_control
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_vorbisenc_LIBRARY vorbisenc
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_theora_LIBRARY theora
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_dts_LIBRARY dts
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_gsm_LIBRARY gsm
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_swscale_LIBRARY swscale
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_z_LIBRARY z
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
-
|
||||
-FIND_LIBRARY(FFMPEG_bz2_LIBRARY bz2
|
||||
- /usr/local/lib
|
||||
- /usr/lib
|
||||
- )
|
||||
+CHECK_STRUCT_HAS_MEMBER("struct AVStream" codecpar libavformat/avformat.h HAVE_AVSTREAM_CODECPAR LANGUAGE C)
|
||||
+
|
||||
+FIND_PACKAGE(PkgConfig QUIET)
|
||||
+PKG_CHECK_MODULES(FFMPEG QUIET libavformat libavutil)
|
||||
+IF (NOT FFMPEG_FOUND)
|
||||
+ FIND_LIBRARY(FFMPEG_avformat_LIBRARY avformat
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_avcodec_LIBRARY avcodec
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_avutil_LIBRARY avutil
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_swresample_LIBRARY swresample
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_vorbis_LIBRARY vorbis
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_dc1394_LIBRARY dc1394_control
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_vorbisenc_LIBRARY vorbisenc
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_theora_LIBRARY theora
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_dts_LIBRARY dts
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_gsm_LIBRARY gsm
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_swscale_LIBRARY swscale
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_z_LIBRARY z
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+
|
||||
+ FIND_LIBRARY(FFMPEG_bz2_LIBRARY bz2
|
||||
+ /usr/local/lib
|
||||
+ /usr/lib
|
||||
+ )
|
||||
+ENDIF(NOT FFMPEG_FOUND)
|
||||
|
||||
SET(FFMPEG_LIBRARIES)
|
||||
IF (FFMPEG_INCLUDE_DIR)
|
||||
@@ -205,9 +211,6 @@ IF (FFMPEG_INCLUDE_DIR)
|
||||
ENDIF (FFMPEG_bz2_LIBRARY)
|
||||
|
||||
SET(FFMPEG_LIBRARIES ${FFMPEG_LIBRARIES} CACHE INTERNAL "All presently found FFMPEG libraries.")
|
||||
-
|
||||
- CHECK_STRUCT_HAS_MEMBER("struct AVStream" codecpar libavformat/avformat.h HAVE_AVSTREAM_CODECPAR LANGUAGE C)
|
||||
-
|
||||
ENDIF (FFMPEG_avutil_LIBRARY)
|
||||
ENDIF (FFMPEG_avcodec_LIBRARY)
|
||||
ENDIF (FFMPEG_avformat_LIBRARY)
|
||||
@@ -0,0 +1,44 @@
|
||||
From e2f8e6c30e43c1818a6677d17de87f53c9414405 Mon Sep 17 00:00:00 2001
|
||||
From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
Date: Tue, 2 Apr 2019 10:44:06 +0200
|
||||
Subject: [PATCH] cmake/FindLibUpnp.cmake: fix static linking
|
||||
|
||||
Fix static linking with an openssl enabled upnp:
|
||||
- remove libupnp-1.8 from pkg_check_modules call otherwise test will
|
||||
fail if libupnp-1.8.pc is not found
|
||||
- add PC_UPNP_LIBRARIES to UPNP_LIBRARIES
|
||||
|
||||
Fixes:
|
||||
- http://autobuild.buildroot.org/results/10098c8972725d54b717ddc8ea41f4de5e5b066d
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Upstream status: https://github.com/gerbera/gerbera/pull/443]
|
||||
---
|
||||
cmake/FindLibUpnp.cmake | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/cmake/FindLibUpnp.cmake b/cmake/FindLibUpnp.cmake
|
||||
index ec198d4d..5d2b032d 100644
|
||||
--- a/cmake/FindLibUpnp.cmake
|
||||
+++ b/cmake/FindLibUpnp.cmake
|
||||
@@ -8,7 +8,7 @@
|
||||
# UPNP_HAS_REUSEADDR - If LinUPnP was built with SO_REUSEADDR support
|
||||
|
||||
find_package(PkgConfig QUIET)
|
||||
-pkg_check_modules (PC_UPNP QUIET libupnp-1.8 libupnp)
|
||||
+pkg_search_module (PC_UPNP QUIET libupnp-1.8 libupnp)
|
||||
|
||||
find_path(UPNP_INCLUDE_DIR upnp.h
|
||||
HINTS ${PC_UPNP_INCLUDEDIR} ${PC_UPNP_INCLUDE_DIRS}
|
||||
@@ -41,7 +41,7 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(UPnP
|
||||
VERSION_VAR UPNP_VERSION_STRING)
|
||||
|
||||
if (UPNP_FOUND)
|
||||
- set (UPNP_LIBRARIES ${UPNP_UPNP_LIBRARY} ${UPNP_IXML_LIBRARY})
|
||||
+ set (UPNP_LIBRARIES ${UPNP_UPNP_LIBRARY} ${UPNP_IXML_LIBRARY} ${PC_UPNP_LIBRARIES})
|
||||
set (UPNP_INCLUDE_DIRS ${UPNP_INCLUDE_DIR} )
|
||||
endif ()
|
||||
|
||||
--
|
||||
2.14.1
|
||||
|
||||
@@ -0,0 +1,252 @@
|
||||
From d86210973df93ccca0befd56afba2132da925ebc Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 18 Apr 2019 16:58:41 +0100
|
||||
Subject: [PATCH] Bug 700986: Remove the crazy md5 file copying nonsense
|
||||
|
||||
To preserve building as a standalone test exe, we avoided using Ghostscript
|
||||
includes in the md5 source and header files, but dynamically add them to
|
||||
copies of the files during the build. Since we no longer need/care for the
|
||||
stand alone exe, remove the build complication, and just include the header
|
||||
file normally.
|
||||
|
||||
Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
|
||||
[Retrieved from:
|
||||
http://git.ghostscript.com/?p=user/chrisl/ghostpdl.git;a=commitdiff;h=d86210973df9]
|
||||
---
|
||||
base/gsmd5.h | 2 +
|
||||
base/lib.mak | 10 +--
|
||||
base/md5main.c | 141 -----------------------------------------
|
||||
doc/Develop.htm | 1 -
|
||||
windows/ghostscript.vcproj | 4 --
|
||||
windows/ghostscript_rt.vcxproj | 1 -
|
||||
6 files changed, 5 insertions(+), 154 deletions(-)
|
||||
delete mode 100644 base/md5main.c
|
||||
|
||||
diff --git a/base/gsmd5.h b/base/gsmd5.h
|
||||
index 206ea6b..b159afb 100644
|
||||
--- a/base/gsmd5.h
|
||||
+++ b/base/gsmd5.h
|
||||
@@ -50,6 +50,8 @@
|
||||
#ifndef md5_INCLUDED
|
||||
# define md5_INCLUDED
|
||||
|
||||
+#include "memory_.h"
|
||||
+
|
||||
/*
|
||||
* This package supports both compile-time and run-time determination of CPU
|
||||
* byte order. If ARCH_IS_BIG_ENDIAN is defined as 0, the code will be
|
||||
diff --git a/base/lib.mak b/base/lib.mak
|
||||
index 3ed088a..21e2cb7 100644
|
||||
--- a/base/lib.mak
|
||||
+++ b/base/lib.mak
|
||||
@@ -387,13 +387,8 @@ gsmd5_h=$(GLSRC)gsmd5.h
|
||||
# We have to use a slightly different compilation approach in order to
|
||||
# get std.h included when compiling md5.c.
|
||||
md5_=$(GLOBJ)gsmd5.$(OBJ)
|
||||
-$(GLOBJ)gsmd5.$(OBJ) : $(GLSRC)gsmd5.c $(AK) $(gsmd5_h)\
|
||||
- $(EXP)$(ECHOGS_XE) $(LIB_MAK) $(MAKEDIRS)
|
||||
- $(EXP)$(ECHOGS_XE) -w $(GLGEN)gsmd5.h -x 23 include -x 2022 memory_.h -x 22
|
||||
- $(EXP)$(ECHOGS_XE) -a $(GLGEN)gsmd5.h -+R $(GLSRC)gsmd5.h
|
||||
- $(CP_) $(GLSRC)gsmd5.c $(GLGEN)gsmd5.c
|
||||
- $(GLCC) $(GLO_)gsmd5.$(OBJ) $(C_) $(GLGEN)gsmd5.c
|
||||
- $(RM_) $(GLGEN)gsmd5.c $(GLGEN)gsmd5.h
|
||||
+$(GLOBJ)gsmd5.$(OBJ) : $(GLSRC)gsmd5.c $(AK) $(gsmd5_h) $(LIB_MAK) $(MAKEDIRS)
|
||||
+ $(GLCC) $(GLO_)gsmd5.$(OBJ) $(C_) $(GLSRC)gsmd5.c
|
||||
|
||||
# SHA-256 digest
|
||||
sha2_h=$(GLSRC)sha2.h
|
||||
@@ -12346,3 +12341,4 @@ $(GLSRC)gxshade4.h:$(GLSRC)gstypes.h
|
||||
$(GLSRC)gxshade4.h:$(GLSRC)stdpre.h
|
||||
$(GLSRC)gxshade4.h:$(GLGEN)arch.h
|
||||
$(GLSRC)gxshade4.h:$(GLSRC)gs_dll_call.h
|
||||
+$(GLSRC)gsmd5.h:$(GLSRC)memory_.h
|
||||
diff --git a/base/md5main.c b/base/md5main.c
|
||||
deleted file mode 100644
|
||||
index 75c523b..0000000
|
||||
--- a/base/md5main.c
|
||||
+++ /dev/null
|
||||
@@ -1,141 +0,0 @@
|
||||
-/*
|
||||
- Copyright (C) 2002-2018 Artifex Software, Inc.
|
||||
- All rights reserved.
|
||||
-
|
||||
- This software is provided 'as-is', without any express or implied
|
||||
- warranty. In no event will the authors be held liable for any damages
|
||||
- arising from the use of this software.
|
||||
-
|
||||
- Permission is granted to anyone to use this software for any purpose,
|
||||
- including commercial applications, and to alter it and redistribute it
|
||||
- freely, subject to the following restrictions:
|
||||
-
|
||||
- 1. The origin of this software must not be misrepresented; you must not
|
||||
- claim that you wrote the original software. If you use this software
|
||||
- in a product, an acknowledgment in the product documentation would be
|
||||
- appreciated but is not required.
|
||||
- 2. Altered source versions must be plainly marked as such, and must not be
|
||||
- misrepresented as being the original software.
|
||||
- 3. This notice may not be removed or altered from any source distribution.
|
||||
-
|
||||
- L. Peter Deutsch
|
||||
- ghost@aladdin.com
|
||||
-
|
||||
- */
|
||||
-/*
|
||||
- Independent implementation of MD5 (RFC 1321).
|
||||
-
|
||||
- This code implements the MD5 Algorithm defined in RFC 1321, whose
|
||||
- text is available at
|
||||
- http://www.ietf.org/rfc/rfc1321.txt
|
||||
- The code is derived from the text of the RFC, including the test suite
|
||||
- (section A.5) but excluding the rest of Appendix A. It does not include
|
||||
- any code or documentation that is identified in the RFC as being
|
||||
- copyrighted.
|
||||
-
|
||||
- The original and principal author of md5.c is L. Peter Deutsch
|
||||
- <ghost@aladdin.com>. Other authors are noted in the change history
|
||||
- that follows (in reverse chronological order):
|
||||
-
|
||||
- 2007-06-08 RG Namespaced the api calls to avoid conflict with other
|
||||
- implementations when linking gs as a library.
|
||||
- 2002-04-13 lpd Splits off main program into a separate file, md5main.c.
|
||||
- */
|
||||
-
|
||||
-#include "gsmd5.h"
|
||||
-#include <math.h>
|
||||
-#include <stdio.h>
|
||||
-#include <string.h>
|
||||
-
|
||||
-/*
|
||||
- * This file builds an executable that performs various functions related
|
||||
- * to the MD5 library. Typical compilation:
|
||||
- * gcc -o md5main -lm md5main.c md5.c
|
||||
- */
|
||||
-static const char *const usage = "\
|
||||
-Usage:\n\
|
||||
- md5main --test # run the self-test (A.5 of RFC 1321)\n\
|
||||
- md5main --t-values # print the T values for the library\n\
|
||||
- md5main --version # print the version of the package\n\
|
||||
-";
|
||||
-static const char *const version = "2002-04-13";
|
||||
-
|
||||
-/* Run the self-test. */
|
||||
-static int
|
||||
-do_test(void)
|
||||
-{
|
||||
- static const char *const test[7*2] = {
|
||||
- "", "d41d8cd98f00b204e9800998ecf8427e",
|
||||
- "a", "0cc175b9c0f1b6a831c399e269772661",
|
||||
- "abc", "900150983cd24fb0d6963f7d28e17f72",
|
||||
- "message digest", "f96b697d7cb7938d525a2f31aaf161d0",
|
||||
- "abcdefghijklmnopqrstuvwxyz", "c3fcd3d76192e4007dfb496cca67e13b",
|
||||
- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
|
||||
- "d174ab98d277d9f5a5611c2c9f419d9f",
|
||||
- "12345678901234567890123456789012345678901234567890123456789012345678901234567890", "57edf4a22be3c955ac49da2e2107b67a"
|
||||
- };
|
||||
- int i;
|
||||
- int status = 0;
|
||||
-
|
||||
- for (i = 0; i < 7*2; i += 2) {
|
||||
- gs_md5_state_t state;
|
||||
- gs_md5_byte_t digest[16];
|
||||
- char hex_output[16*2 + 1];
|
||||
- int di;
|
||||
-
|
||||
- gs_md5_init(&state);
|
||||
- gs_md5_append(&state, (const gs_md5_byte_t *)test[i], strlen(test[i]));
|
||||
- gs_md5_finish(&state, digest);
|
||||
- for (di = 0; di < 16; ++di)
|
||||
- gs_sprintf(hex_output + di * 2, "%02x", digest[di]);
|
||||
- if (strcmp(hex_output, test[i + 1])) {
|
||||
- printf("MD5 (\"%s\") = ", test[i]);
|
||||
- puts(hex_output);
|
||||
- printf("**** ERROR, should be: %s\n", test[i + 1]);
|
||||
- status = 1;
|
||||
- }
|
||||
- }
|
||||
- if (status == 0)
|
||||
- puts("md5 self-test completed successfully.");
|
||||
- return status;
|
||||
-}
|
||||
-
|
||||
-/* Print the T values. */
|
||||
-static int
|
||||
-do_t_values(void)
|
||||
-{
|
||||
- int i;
|
||||
- for (i = 1; i <= 64; ++i) {
|
||||
- unsigned long v = (unsigned long)(4294967296.0 * fabs(sin((double)i)));
|
||||
-
|
||||
- /*
|
||||
- * The following nonsense is only to avoid compiler warnings about
|
||||
- * "integer constant is unsigned in ANSI C, signed with -traditional".
|
||||
- */
|
||||
- if (v >> 31) {
|
||||
- printf("#define T%d /* 0x%08lx */ (T_MASK ^ 0x%08lx)\n", i,
|
||||
- v, (unsigned long)(unsigned int)(~v));
|
||||
- } else {
|
||||
- printf("#define T%d 0x%08lx\n", i, v);
|
||||
- }
|
||||
- }
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
-/* Main program */
|
||||
-int
|
||||
-main(int argc, char *argv[])
|
||||
-{
|
||||
- if (argc == 2) {
|
||||
- if (!strcmp(argv[1], "--test"))
|
||||
- return do_test();
|
||||
- if (!strcmp(argv[1], "--t-values"))
|
||||
- return do_t_values();
|
||||
- if (!strcmp(argv[1], "--version")) {
|
||||
- puts(version);
|
||||
- return 0;
|
||||
- }
|
||||
- }
|
||||
- puts(usage);
|
||||
- return 0;
|
||||
-}
|
||||
diff --git a/doc/Develop.htm b/doc/Develop.htm
|
||||
index c1ffceb..1ed3030 100644
|
||||
--- a/doc/Develop.htm
|
||||
+++ b/doc/Develop.htm
|
||||
@@ -684,7 +684,6 @@ Other:
|
||||
<a href="../base/gx.h">base/gx.h</a>,
|
||||
<a href="../base/gsmd5.c">base/gsmd5.c</a>,
|
||||
<a href="../base/gsmd5.h">base/gsmd5.h</a>,
|
||||
-<a href="../base/md5main.c">base/md5main.c</a>,
|
||||
<a href="../base/aes.c">base/aes.c</a>,
|
||||
<a href="../base/aes.h">base/aes.h</a>.
|
||||
|
||||
diff --git a/windows/ghostscript.vcproj b/windows/ghostscript.vcproj
|
||||
index d607949..fdbeaa1 100644
|
||||
--- a/windows/ghostscript.vcproj
|
||||
+++ b/windows/ghostscript.vcproj
|
||||
@@ -2510,10 +2510,6 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
- RelativePath="..\base\md5main.c"
|
||||
- >
|
||||
- </File>
|
||||
- <File
|
||||
RelativePath="..\base\memento.c"
|
||||
>
|
||||
</File>
|
||||
diff --git a/windows/ghostscript_rt.vcxproj b/windows/ghostscript_rt.vcxproj
|
||||
index 589b2d1..fca736b 100644
|
||||
--- a/windows/ghostscript_rt.vcxproj
|
||||
+++ b/windows/ghostscript_rt.vcxproj
|
||||
@@ -597,7 +597,6 @@
|
||||
<ClCompile Include="..\base\gxtype1.c" />
|
||||
<ClCompile Include="..\base\gzspotan.c" />
|
||||
<ClCompile Include="..\base\gsmd5.c" />
|
||||
- <ClCompile Include="..\base\md5main.c" />
|
||||
<ClCompile Include="..\base\memento.c" />
|
||||
<ClCompile Include="..\base\minftrsz.c" />
|
||||
<ClCompile Include="..\base\mkromfs.c" />
|
||||
--
|
||||
2.9.1
|
||||
|
||||
|
||||
@@ -1,176 +0,0 @@
|
||||
From a1de1e6ab51ab37a17975aad1193f2523e7e7e84 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 5 Dec 2018 12:22:13 +0000
|
||||
Subject: [PATCH] Sanitize op stack for error conditions
|
||||
|
||||
We save the stacks to an array and store the array for the error handler to
|
||||
access.
|
||||
|
||||
For SAFER, we traverse the array, and deep copy any op arrays (procedures). As
|
||||
we make these copies, we check for operators that do *not* exist in systemdict,
|
||||
when we find one, we replace the operator with a name object (of the form
|
||||
"/--opname--").
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 13b0a36f818
|
||||
|
||||
psi/int.mak | 3 +-
|
||||
psi/interp.c | 8 ++++++
|
||||
psi/istack.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||
psi/istack.h | 3 ++
|
||||
4 files changed, 91 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/psi/int.mak b/psi/int.mak
|
||||
index 6ab5bf0069dd..6b349cb042dd 100644
|
||||
--- a/psi/int.mak
|
||||
+++ b/psi/int.mak
|
||||
@@ -204,7 +204,8 @@ $(PSOBJ)iparam.$(OBJ) : $(PSSRC)iparam.c $(GH)\
|
||||
$(PSOBJ)istack.$(OBJ) : $(PSSRC)istack.c $(GH) $(memory__h)\
|
||||
$(ierrors_h) $(gsstruct_h) $(gsutil_h)\
|
||||
$(ialloc_h) $(istack_h) $(istkparm_h) $(istruct_h) $(iutil_h) $(ivmspace_h)\
|
||||
- $(store_h) $(INT_MAK) $(MAKEDIRS)
|
||||
+ $(store_h) $(icstate_h) $(iname_h) $(dstack_h) $(idict_h) \
|
||||
+ $(INT_MAK) $(MAKEDIRS)
|
||||
$(PSCC) $(PSO_)istack.$(OBJ) $(C_) $(PSSRC)istack.c
|
||||
|
||||
$(PSOBJ)iutil.$(OBJ) : $(PSSRC)iutil.c $(GH) $(math__h) $(memory__h) $(string__h)\
|
||||
diff --git a/psi/interp.c b/psi/interp.c
|
||||
index 6dc0ddae1b3c..aa5779c51420 100644
|
||||
--- a/psi/interp.c
|
||||
+++ b/psi/interp.c
|
||||
@@ -761,6 +761,7 @@ copy_stack(i_ctx_t *i_ctx_p, const ref_stack_t * pstack, int skip, ref * arr)
|
||||
uint size = ref_stack_count(pstack) - skip;
|
||||
uint save_space = ialloc_space(idmemory);
|
||||
int code, i;
|
||||
+ ref *safety, *safe;
|
||||
|
||||
if (size > 65535)
|
||||
size = 65535;
|
||||
@@ -778,6 +779,13 @@ copy_stack(i_ctx_t *i_ctx_p, const ref_stack_t * pstack, int skip, ref * arr)
|
||||
make_null(&arr->value.refs[i]);
|
||||
}
|
||||
}
|
||||
+ if (pstack == &o_stack && dict_find_string(systemdict, "SAFETY", &safety) > 0 &&
|
||||
+ dict_find_string(safety, "safe", &safe) > 0 && r_has_type(safe, t_boolean) &&
|
||||
+ safe->value.boolval == true) {
|
||||
+ code = ref_stack_array_sanitize(i_ctx_p, arr, arr);
|
||||
+ if (code < 0)
|
||||
+ return code;
|
||||
+ }
|
||||
ialloc_set_space(idmemory, save_space);
|
||||
return code;
|
||||
}
|
||||
diff --git a/psi/istack.c b/psi/istack.c
|
||||
index 8fe151fa5628..f1a3e511534d 100644
|
||||
--- a/psi/istack.c
|
||||
+++ b/psi/istack.c
|
||||
@@ -27,6 +27,10 @@
|
||||
#include "iutil.h"
|
||||
#include "ivmspace.h" /* for local/global test */
|
||||
#include "store.h"
|
||||
+#include "icstate.h"
|
||||
+#include "iname.h"
|
||||
+#include "dstack.h"
|
||||
+#include "idict.h"
|
||||
|
||||
/* Forward references */
|
||||
static void init_block(ref_stack_t *pstack, const ref *pblock_array,
|
||||
@@ -294,6 +298,80 @@ ref_stack_store_check(const ref_stack_t *pstack, ref *parray, uint count,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+int
|
||||
+ref_stack_array_sanitize(i_ctx_t *i_ctx_p, ref *sarr, ref *darr)
|
||||
+{
|
||||
+ int i, code;
|
||||
+ ref obj, arr2;
|
||||
+ ref *pobj2;
|
||||
+ gs_memory_t *mem = (gs_memory_t *)idmemory->current;
|
||||
+
|
||||
+ if (!r_is_array(sarr) || !r_has_type(darr, t_array))
|
||||
+ return_error(gs_error_typecheck);
|
||||
+
|
||||
+ for (i = 0; i < r_size(sarr); i++) {
|
||||
+ code = array_get(mem, sarr, i, &obj);
|
||||
+ if (code < 0)
|
||||
+ make_null(&obj);
|
||||
+ switch(r_type(&obj)) {
|
||||
+ case t_operator:
|
||||
+ {
|
||||
+ int index = op_index(&obj);
|
||||
+
|
||||
+ if (index > 0 && index < op_def_count) {
|
||||
+ const byte *data = (const byte *)(op_index_def(index)->oname + 1);
|
||||
+ if (dict_find_string(systemdict, (const char *)data, &pobj2) <= 0) {
|
||||
+ byte *s = gs_alloc_bytes(mem, strlen((char *)data) + 5, "ref_stack_array_sanitize");
|
||||
+ if (s) {
|
||||
+ s[0] = '\0';
|
||||
+ strcpy((char *)s, "--");
|
||||
+ strcpy((char *)s + 2, (char *)data);
|
||||
+ strcpy((char *)s + strlen((char *)data) + 2, "--");
|
||||
+ }
|
||||
+ else {
|
||||
+ s = (byte *)data;
|
||||
+ }
|
||||
+ code = name_ref(imemory, s, strlen((char *)s), &obj, 1);
|
||||
+ if (code < 0) make_null(&obj);
|
||||
+ if (s != data)
|
||||
+ gs_free_object(mem, s, "ref_stack_array_sanitize");
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ make_null(&obj);
|
||||
+ }
|
||||
+ ref_assign(darr->value.refs + i, &obj);
|
||||
+ break;
|
||||
+ }
|
||||
+ case t_array:
|
||||
+ case t_shortarray:
|
||||
+ case t_mixedarray:
|
||||
+ {
|
||||
+ int attrs = r_type_attrs(&obj) & (a_write | a_read | a_execute | a_executable);
|
||||
+ /* We only want to copy executable arrays */
|
||||
+ if (attrs & (a_execute | a_executable)) {
|
||||
+ code = ialloc_ref_array(&arr2, attrs, r_size(&obj), "ref_stack_array_sanitize");
|
||||
+ if (code < 0) {
|
||||
+ make_null(&arr2);
|
||||
+ }
|
||||
+ else {
|
||||
+ code = ref_stack_array_sanitize(i_ctx_p, &obj, &arr2);
|
||||
+ }
|
||||
+ ref_assign(darr->value.refs + i, &arr2);
|
||||
+ }
|
||||
+ else {
|
||||
+ ref_assign(darr->value.refs + i, &obj);
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ default:
|
||||
+ ref_assign(darr->value.refs + i, &obj);
|
||||
+ }
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/*
|
||||
* Store the top 'count' elements of a stack, starting 'skip' elements below
|
||||
* the top, into an array, with or without store/undo checking. age=-1 for
|
||||
diff --git a/psi/istack.h b/psi/istack.h
|
||||
index 051dcbe216cf..54be405adfb3 100644
|
||||
--- a/psi/istack.h
|
||||
+++ b/psi/istack.h
|
||||
@@ -129,6 +129,9 @@ int ref_stack_store(const ref_stack_t *pstack, ref *parray, uint count,
|
||||
uint skip, int age, bool check,
|
||||
gs_dual_memory_t *idmem, client_name_t cname);
|
||||
|
||||
+int
|
||||
+ref_stack_array_sanitize(i_ctx_t *i_ctx_p, ref *sarr, ref *darr);
|
||||
+
|
||||
/*
|
||||
* Pop the top N elements off a stack.
|
||||
* The number must not exceed the number of elements in use.
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,441 +0,0 @@
|
||||
From f0397dbfbe5eea325613ff375b30eb0db5551ffe Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Thu, 13 Dec 2018 15:28:34 +0000
|
||||
Subject: [PATCH] Any transient procedures that call .force* operators
|
||||
|
||||
(i.e. for conditionals or loops) make them executeonly.
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 2db98f9c661
|
||||
|
||||
Resource/Init/gs_diskn.ps | 2 +-
|
||||
Resource/Init/gs_dps1.ps | 4 ++--
|
||||
Resource/Init/gs_fntem.ps | 4 ++--
|
||||
Resource/Init/gs_fonts.ps | 12 ++++++------
|
||||
Resource/Init/gs_init.ps | 4 ++--
|
||||
Resource/Init/gs_lev2.ps | 11 ++++++-----
|
||||
Resource/Init/gs_pdfwr.ps | 2 +-
|
||||
Resource/Init/gs_res.ps | 4 ++--
|
||||
Resource/Init/gs_setpd.ps | 2 +-
|
||||
Resource/Init/pdf_base.ps | 13 ++++++++-----
|
||||
Resource/Init/pdf_draw.ps | 16 +++++++++-------
|
||||
Resource/Init/pdf_font.ps | 6 +++---
|
||||
Resource/Init/pdf_main.ps | 4 ++--
|
||||
Resource/Init/pdf_ops.ps | 7 ++++---
|
||||
14 files changed, 49 insertions(+), 42 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_diskn.ps b/Resource/Init/gs_diskn.ps
|
||||
index fd694bc44b5a..8bf20542040d 100644
|
||||
--- a/Resource/Init/gs_diskn.ps
|
||||
+++ b/Resource/Init/gs_diskn.ps
|
||||
@@ -51,7 +51,7 @@ systemdict begin
|
||||
mark 5 1 roll ] mark exch { { } forall } forall ]
|
||||
//systemdict /.searchabledevs 2 index .forceput
|
||||
exch .setglobal
|
||||
- }
|
||||
+ } executeonly
|
||||
if
|
||||
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||
|
||||
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||
index ec5db61b9f03..4fae2839940c 100644
|
||||
--- a/Resource/Init/gs_dps1.ps
|
||||
+++ b/Resource/Init/gs_dps1.ps
|
||||
@@ -78,7 +78,7 @@ level2dict begin
|
||||
.currentglobal
|
||||
{ % Current mode is global; delete from local directory too.
|
||||
//systemdict /LocalFontDirectory .knownget
|
||||
- { 1 index .forceundef } % LocalFontDirectory is readonly
|
||||
+ { 1 index .forceundef } executeonly % LocalFontDirectory is readonly
|
||||
if
|
||||
}
|
||||
{ % Current mode is local; if there was a shadowed global
|
||||
@@ -126,7 +126,7 @@ level2dict begin
|
||||
}
|
||||
ifelse
|
||||
} forall
|
||||
- pop counttomark 2 idiv { .forceundef } repeat pop % readonly
|
||||
+ pop counttomark 2 idiv { .forceundef } executeonly repeat pop % readonly
|
||||
}
|
||||
if
|
||||
//SharedFontDirectory exch .forcecopynew pop
|
||||
diff --git a/Resource/Init/gs_fntem.ps b/Resource/Init/gs_fntem.ps
|
||||
index c1f7651f18cc..6eb672a6840e 100644
|
||||
--- a/Resource/Init/gs_fntem.ps
|
||||
+++ b/Resource/Init/gs_fntem.ps
|
||||
@@ -401,12 +401,12 @@ currentdict end def
|
||||
.forceput % FontInfo can be read-only.
|
||||
pop % bool <font>
|
||||
exit
|
||||
- } if
|
||||
+ } executeonly if
|
||||
dup /FontInfo get % bool <font> <FI>
|
||||
/GlyphNames2Unicode /Unicode /Decoding findresource
|
||||
.forceput % FontInfo can be read-only.
|
||||
exit
|
||||
- } loop
|
||||
+ } executeonly loop
|
||||
exch setglobal
|
||||
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||
|
||||
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||
index 803faca4918d..290da0cd6819 100644
|
||||
--- a/Resource/Init/gs_fonts.ps
|
||||
+++ b/Resource/Init/gs_fonts.ps
|
||||
@@ -374,7 +374,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
/.setnativefontmapbuilt { % set whether we've been run
|
||||
dup type /booleantype eq {
|
||||
systemdict exch /.nativefontmapbuilt exch .forceput
|
||||
- }
|
||||
+ } executeonly
|
||||
{pop}
|
||||
ifelse
|
||||
} .bind executeonly odef
|
||||
@@ -1007,11 +1007,11 @@ $error /SubstituteFont { } put
|
||||
{ 2 index gcheck currentglobal
|
||||
2 copy eq {
|
||||
pop pop .forceput
|
||||
- } {
|
||||
+ } executeonly {
|
||||
5 1 roll setglobal
|
||||
dup length string copy
|
||||
.forceput setglobal
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||
|
||||
% Attempt to load a font from a file.
|
||||
@@ -1084,7 +1084,7 @@ $error /SubstituteFont { } put
|
||||
.FontDirectory 3 index .forceundef % readonly
|
||||
1 index (r) file .loadfont .FontDirectory exch
|
||||
/.setglobal .systemvar exec
|
||||
- }
|
||||
+ } executeonly
|
||||
{ .loadfont .FontDirectory
|
||||
}
|
||||
ifelse
|
||||
@@ -1105,7 +1105,7 @@ $error /SubstituteFont { } put
|
||||
dup 3 index .fontknownget
|
||||
{ dup /PathLoad 4 index .putgstringcopy
|
||||
4 1 roll pop pop pop //true exit
|
||||
- } if
|
||||
+ } executeonly if
|
||||
|
||||
% Maybe the file had a different FontName.
|
||||
% See if we can get a FontName from the file, and if so,
|
||||
@@ -1134,7 +1134,7 @@ $error /SubstituteFont { } put
|
||||
ifelse % Stack: origfontname fontdict
|
||||
exch pop //true exit
|
||||
% Stack: fontdict
|
||||
- }
|
||||
+ } executeonly
|
||||
if pop % Stack: origfontname fontdirectory path
|
||||
}
|
||||
if pop pop % Stack: origfontname
|
||||
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||
index d733124b96d1..56c0bd268b53 100644
|
||||
--- a/Resource/Init/gs_init.ps
|
||||
+++ b/Resource/Init/gs_init.ps
|
||||
@@ -2357,7 +2357,7 @@ SAFER { .setsafeglobal } if
|
||||
% Update the copy of the user parameters.
|
||||
mark .currentuserparams counttomark 2 idiv {
|
||||
userparams 3 1 roll .forceput % userparams is read-only
|
||||
- } repeat pop
|
||||
+ } executeonly repeat pop
|
||||
% Turn on idiom recognition, if available.
|
||||
currentuserparams /IdiomRecognition known {
|
||||
/IdiomRecognition //true .definepsuserparam
|
||||
@@ -2376,7 +2376,7 @@ SAFER { .setsafeglobal } if
|
||||
% Remove real system params from pssystemparams.
|
||||
mark .currentsystemparams counttomark 2 idiv {
|
||||
pop pssystemparams exch .forceundef
|
||||
- } repeat pop
|
||||
+ } executeonly repeat pop
|
||||
} if
|
||||
|
||||
% Set up AlignToPixels :
|
||||
diff --git a/Resource/Init/gs_lev2.ps b/Resource/Init/gs_lev2.ps
|
||||
index 44fe61956659..0f0d57331c23 100644
|
||||
--- a/Resource/Init/gs_lev2.ps
|
||||
+++ b/Resource/Init/gs_lev2.ps
|
||||
@@ -154,7 +154,8 @@ end
|
||||
% protect top level of parameters that we copied
|
||||
dup type dup /arraytype eq exch /stringtype eq or { readonly } if
|
||||
/userparams .systemvar 3 1 roll .forceput % userparams is read-only
|
||||
- } {
|
||||
+ } executeonly
|
||||
+ {
|
||||
pop pop
|
||||
} ifelse
|
||||
} forall
|
||||
@@ -224,7 +225,7 @@ end
|
||||
% protect top level parameters that we copied
|
||||
dup type dup /arraytype eq exch /stringtype eq or { readonly } if
|
||||
//pssystemparams 3 1 roll .forceput % pssystemparams is read-only
|
||||
- }
|
||||
+ } executeonly
|
||||
{ pop pop
|
||||
}
|
||||
ifelse
|
||||
@@ -934,7 +935,7 @@ mark
|
||||
dup /PaintProc get
|
||||
1 index /Implementation known not {
|
||||
1 index dup /Implementation //null .forceput readonly pop
|
||||
- } if
|
||||
+ } executeonly if
|
||||
exec
|
||||
}.bind odef
|
||||
|
||||
@@ -958,7 +959,7 @@ mark
|
||||
dup /PaintProc get
|
||||
1 index /Implementation known not {
|
||||
1 index dup /Implementation //null .forceput readonly pop
|
||||
- } if
|
||||
+ } executeonly if
|
||||
/UNROLLFORMS where {/UNROLLFORMS get}{false}ifelse not
|
||||
%% [CTM] <<Form>> PaintProc .beginform -
|
||||
{
|
||||
@@ -1005,7 +1006,7 @@ mark
|
||||
%% Form dictioanry using the /Implementation key).
|
||||
1 dict dup /FormID 4 -1 roll put
|
||||
1 index exch /Implementation exch .forceput readonly pop
|
||||
- }
|
||||
+ } executeonly
|
||||
ifelse
|
||||
}
|
||||
{
|
||||
diff --git a/Resource/Init/gs_pdfwr.ps b/Resource/Init/gs_pdfwr.ps
|
||||
index 58e75d3a4831..b425103d1cf3 100644
|
||||
--- a/Resource/Init/gs_pdfwr.ps
|
||||
+++ b/Resource/Init/gs_pdfwr.ps
|
||||
@@ -650,7 +650,7 @@ currentdict /.pdfmarkparams .undef
|
||||
} ifelse
|
||||
} bind .makeoperator .forceput
|
||||
systemdict /.pdf_hooked_DSC_Creator //true .forceput
|
||||
- } if
|
||||
+ } executeonly if
|
||||
pop
|
||||
} if
|
||||
} {
|
||||
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||
index 8eb8bb0e5829..d9b34599e7c2 100644
|
||||
--- a/Resource/Init/gs_res.ps
|
||||
+++ b/Resource/Init/gs_res.ps
|
||||
@@ -152,7 +152,7 @@ setglobal
|
||||
% use .forceput / .forcedef later to replace the dummy,
|
||||
% empty .Instances dictionary with the real one later.
|
||||
readonly
|
||||
- } {
|
||||
+ }{
|
||||
/defineresource cvx /typecheck signaloperror
|
||||
} ifelse
|
||||
} bind executeonly odef
|
||||
@@ -424,7 +424,7 @@ status {
|
||||
% As noted above, Category dictionaries are read-only,
|
||||
% so we have to use .forcedef here.
|
||||
/.Instances 1 index .forcedef % Category dict is read-only
|
||||
- } if
|
||||
+ } executeonly if
|
||||
}
|
||||
{ .LocalInstances dup //.emptydict eq
|
||||
{ pop 3 dict localinstancedict Category 2 index put
|
||||
diff --git a/Resource/Init/gs_setpd.ps b/Resource/Init/gs_setpd.ps
|
||||
index e22597ebb5f3..7875d1f2f131 100644
|
||||
--- a/Resource/Init/gs_setpd.ps
|
||||
+++ b/Resource/Init/gs_setpd.ps
|
||||
@@ -634,7 +634,7 @@ NOMEDIAATTRS {
|
||||
SETPDDEBUG { (Rolling back.) = pstack flush } if
|
||||
3 index 2 index 3 -1 roll .forceput
|
||||
4 index 1 index .knownget
|
||||
- { 4 index 3 1 roll .forceput }
|
||||
+ { 4 index 3 1 roll .forceput } executeonly
|
||||
{ 3 index exch .undef }
|
||||
ifelse
|
||||
} bind executeonly odef
|
||||
diff --git a/Resource/Init/pdf_base.ps b/Resource/Init/pdf_base.ps
|
||||
index b45e9803165e..73127296c221 100644
|
||||
--- a/Resource/Init/pdf_base.ps
|
||||
+++ b/Resource/Init/pdf_base.ps
|
||||
@@ -130,26 +130,29 @@ currentdict /num-chars-dict .undef
|
||||
|
||||
/.pdfexectoken { % <count> <opdict> <exectoken> .pdfexectoken ?
|
||||
PDFDEBUG {
|
||||
- pdfdict /PDFSTEPcount known not { pdfdict /PDFSTEPcount 1 .forceput } if
|
||||
+ pdfdict /PDFSTEPcount known not { pdfdict /PDFSTEPcount 1 .forceput } executeonly if
|
||||
PDFSTEP {
|
||||
pdfdict /PDFtokencount 2 copy .knownget { 1 add } { 1 } ifelse .forceput
|
||||
PDFSTEPcount 1 gt {
|
||||
pdfdict /PDFSTEPcount PDFSTEPcount 1 sub .forceput
|
||||
- } {
|
||||
+ } executeonly
|
||||
+ {
|
||||
dup ==only
|
||||
( step # ) print PDFtokencount =only
|
||||
( ? ) print flush 1 //false .outputpage
|
||||
(%stdin) (r) file 255 string readline {
|
||||
token {
|
||||
exch pop pdfdict /PDFSTEPcount 3 -1 roll .forceput
|
||||
- } {
|
||||
+ } executeonly
|
||||
+ {
|
||||
pdfdict /PDFSTEPcount 1 .forceput
|
||||
- } ifelse % token
|
||||
+ } executeonly ifelse % token
|
||||
} {
|
||||
pop /PDFSTEP //false def % EOF on stdin
|
||||
} ifelse % readline
|
||||
} ifelse % PDFSTEPcount > 1
|
||||
- } {
|
||||
+ } executeonly
|
||||
+ {
|
||||
dup ==only () = flush
|
||||
} ifelse % PDFSTEP
|
||||
} if % PDFDEBUG
|
||||
diff --git a/Resource/Init/pdf_draw.ps b/Resource/Init/pdf_draw.ps
|
||||
index 6b0ba93e1e73..40c6ac80acce 100644
|
||||
--- a/Resource/Init/pdf_draw.ps
|
||||
+++ b/Resource/Init/pdf_draw.ps
|
||||
@@ -1118,14 +1118,14 @@ currentdict end readonly def
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
}
|
||||
{
|
||||
currentglobal pdfdict gcheck .setglobal
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
end
|
||||
} ifelse
|
||||
} loop
|
||||
@@ -1141,14 +1141,14 @@ currentdict end readonly def
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
}
|
||||
{
|
||||
currentglobal pdfdict gcheck .setglobal
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
} if
|
||||
pop
|
||||
|
||||
@@ -2350,9 +2350,10 @@ currentdict /last-ditch-bpc-csp undef
|
||||
/IncrementAppearanceNumber {
|
||||
pdfdict /AppearanceNumber .knownget {
|
||||
1 add pdfdict /AppearanceNumber 3 -1 roll .forceput
|
||||
- }{
|
||||
+ } executeonly
|
||||
+ {
|
||||
pdfdict /AppearanceNumber 0 .forceput
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
}bind executeonly odef
|
||||
|
||||
/MakeAppearanceName {
|
||||
@@ -2510,7 +2511,8 @@ currentdict /last-ditch-bpc-csp undef
|
||||
%% want to preserve it.
|
||||
pdfdict /.PreservePDFForm false .forceput
|
||||
/q cvx /execform cvx 5 -2 roll
|
||||
- }{
|
||||
+ } executeonly
|
||||
+ {
|
||||
/q cvx /PDFexecform cvx 5 -2 roll
|
||||
} ifelse
|
||||
|
||||
diff --git a/Resource/Init/pdf_font.ps b/Resource/Init/pdf_font.ps
|
||||
index bea9ea95ad1d..4cd62b9d9bb4 100644
|
||||
--- a/Resource/Init/pdf_font.ps
|
||||
+++ b/Resource/Init/pdf_font.ps
|
||||
@@ -714,7 +714,7 @@ currentdict end readonly def
|
||||
pop pop pop
|
||||
currentdict /.stackdepth .forceundef
|
||||
currentdict /.dstackdepth .forceundef
|
||||
- }
|
||||
+ } executeonly
|
||||
{pop pop pop}
|
||||
ifelse
|
||||
|
||||
@@ -1232,7 +1232,7 @@ currentdict /eexec_pdf_param_dict .undef
|
||||
(\n **** Warning: Type 3 glyph has unbalanced q/Q operators \(too many q's\)\n Output may be incorrect.\n)
|
||||
pdfformatwarning
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
- } if
|
||||
+ } executeonly if
|
||||
Q
|
||||
} repeat
|
||||
Q
|
||||
@@ -2016,7 +2016,7 @@ currentdict /CMap_read_dict undef
|
||||
/CIDFallBack /CIDFont findresource
|
||||
} if
|
||||
exit
|
||||
- } if
|
||||
+ } executeonly if
|
||||
} if
|
||||
} if
|
||||
|
||||
diff --git a/Resource/Init/pdf_main.ps b/Resource/Init/pdf_main.ps
|
||||
index 00da47a48711..37e69b39ac98 100644
|
||||
--- a/Resource/Init/pdf_main.ps
|
||||
+++ b/Resource/Init/pdf_main.ps
|
||||
@@ -2701,14 +2701,14 @@ currentdict /PDF2PS_matrix_key undef
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
}
|
||||
{
|
||||
currentglobal pdfdict gcheck .setglobal
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
} if
|
||||
} if
|
||||
pop
|
||||
diff --git a/Resource/Init/pdf_ops.ps b/Resource/Init/pdf_ops.ps
|
||||
index 8672d617f363..aa0964139a56 100644
|
||||
--- a/Resource/Init/pdf_ops.ps
|
||||
+++ b/Resource/Init/pdf_ops.ps
|
||||
@@ -184,14 +184,14 @@ currentdict /gput_always_allow .undef
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
}
|
||||
{
|
||||
currentglobal pdfdict gcheck .setglobal
|
||||
pdfdict /.Qqwarning_issued //true .forceput
|
||||
.setglobal
|
||||
pdfformaterror
|
||||
- } ifelse
|
||||
+ } executeonly ifelse
|
||||
} if
|
||||
} bind executeonly odef
|
||||
|
||||
@@ -439,7 +439,8 @@ currentdict /gput_always_allow .undef
|
||||
dup type /booleantype eq {
|
||||
.currentSMask type /dicttype eq {
|
||||
.currentSMask /Processed 2 index .forceput
|
||||
- } {
|
||||
+ } executeonly
|
||||
+ {
|
||||
.setSMask
|
||||
}ifelse
|
||||
}{
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
From af9a9dceb7be7df743d55c4d078a1ae846b6f556 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Sat, 15 Dec 2018 09:08:32 +0000
|
||||
Subject: [PATCH] Bug700317: Fix logic for an older change
|
||||
|
||||
Unlike almost every other function in gs, dict_find_string() returns 1 on
|
||||
success 0 or <0 on failure. The logic for this case was wrong.
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 99f13091a3
|
||||
|
||||
psi/interp.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/psi/interp.c b/psi/interp.c
|
||||
index aa5779c51420..f6c45bbe24dc 100644
|
||||
--- a/psi/interp.c
|
||||
+++ b/psi/interp.c
|
||||
@@ -703,7 +703,7 @@ again:
|
||||
* i.e. it's an internal operator we have hidden
|
||||
*/
|
||||
code = dict_find_string(systemdict, (const char *)bufptr, &tobj);
|
||||
- if (code < 0) {
|
||||
+ if (code <= 0) {
|
||||
buf[0] = buf[1] = buf[rlen + 2] = buf[rlen + 3] = '-';
|
||||
rlen += 4;
|
||||
bufptr = buf;
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
From b197ea0e528c20b7ee67785c50b4e06e0aa990f8 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Tue, 18 Dec 2018 10:42:10 +0000
|
||||
Subject: [PATCH] Harden some uses of .force* operators
|
||||
|
||||
by adding a few immediate evalutions
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 59d8f4deef90
|
||||
|
||||
Resource/Init/gs_dps1.ps | 4 ++--
|
||||
Resource/Init/gs_fonts.ps | 20 ++++++++++----------
|
||||
Resource/Init/gs_init.ps | 6 +++---
|
||||
3 files changed, 15 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||
index 4fae2839940c..b75ea14e77a3 100644
|
||||
--- a/Resource/Init/gs_dps1.ps
|
||||
+++ b/Resource/Init/gs_dps1.ps
|
||||
@@ -74,7 +74,7 @@ level2dict begin
|
||||
} odef
|
||||
% undefinefont has to take local/global VM into account.
|
||||
/undefinefont % <fontname> undefinefont -
|
||||
- { .FontDirectory 1 .argindex .forceundef % FontDirectory is readonly
|
||||
+ { //.FontDirectory 1 .argindex .forceundef % FontDirectory is readonly
|
||||
.currentglobal
|
||||
{ % Current mode is global; delete from local directory too.
|
||||
//systemdict /LocalFontDirectory .knownget
|
||||
@@ -85,7 +85,7 @@ level2dict begin
|
||||
% definition, copy it into the local directory.
|
||||
//systemdict /SharedFontDirectory .knownget
|
||||
{ 1 index .knownget
|
||||
- { .FontDirectory 2 index 3 -1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse } % readonly
|
||||
+ { //.FontDirectory 2 index 3 -1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse } % readonly
|
||||
if
|
||||
}
|
||||
if
|
||||
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||
index 290da0cd6819..c13a2fcc2d43 100644
|
||||
--- a/Resource/Init/gs_fonts.ps
|
||||
+++ b/Resource/Init/gs_fonts.ps
|
||||
@@ -516,7 +516,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
if
|
||||
}
|
||||
if
|
||||
- dup .FontDirectory 4 -2 roll { .growput } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||
+ dup //.FontDirectory 4 -2 roll { .growput } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||
% If the font originated as a resource, register it.
|
||||
currentfile .currentresourcefile eq { dup .registerfont } if
|
||||
readonly
|
||||
@@ -943,7 +943,7 @@ $error /SubstituteFont { } put
|
||||
% Try to find a font using only the present contents of Fontmap.
|
||||
/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||
% <fontname> .tryfindfont false
|
||||
- .FontDirectory 1 index .fontknownget
|
||||
+ //.FontDirectory 1 index .fontknownget
|
||||
{ % Already loaded
|
||||
exch pop //true
|
||||
}
|
||||
@@ -975,7 +975,7 @@ $error /SubstituteFont { } put
|
||||
{ % Font with a procedural definition
|
||||
exec % The procedure will load the font.
|
||||
% Check to make sure this really happened.
|
||||
- .FontDirectory 1 index .knownget
|
||||
+ //.FontDirectory 1 index .knownget
|
||||
{ exch pop //true exit }
|
||||
if
|
||||
}
|
||||
@@ -1081,11 +1081,11 @@ $error /SubstituteFont { } put
|
||||
% because it's different depending on language level.
|
||||
.currentglobal exch /.setglobal .systemvar exec
|
||||
% Remove the fake definition, if any.
|
||||
- .FontDirectory 3 index .forceundef % readonly
|
||||
- 1 index (r) file .loadfont .FontDirectory exch
|
||||
+ //.FontDirectory 3 index .forceundef % readonly
|
||||
+ 1 index (r) file .loadfont //.FontDirectory exch
|
||||
/.setglobal .systemvar exec
|
||||
} executeonly
|
||||
- { .loadfont .FontDirectory
|
||||
+ { .loadfont //.FontDirectory
|
||||
}
|
||||
ifelse
|
||||
% Stack: fontname fontfilename fontdirectory
|
||||
@@ -1119,8 +1119,8 @@ $error /SubstituteFont { } put
|
||||
% Stack: origfontname fontdirectory filefontname fontdict
|
||||
3 -1 roll pop
|
||||
% Stack: origfontname filefontname fontdict
|
||||
- dup /FontName get dup FontDirectory exch .forceundef
|
||||
- GlobalFontDirectory exch .forceundef
|
||||
+ dup /FontName get dup //.FontDirectory exch .forceundef
|
||||
+ /GlobalFontDirectory .systemvar exch .forceundef
|
||||
dup length dict .copydict dup 3 index /FontName exch put
|
||||
2 index exch definefont
|
||||
exch
|
||||
@@ -1176,10 +1176,10 @@ currentdict /.putgstringcopy .undef
|
||||
{
|
||||
{
|
||||
pop dup type /stringtype eq { cvn } if
|
||||
- .FontDirectory 1 index known not {
|
||||
+ //.FontDirectory 1 index known not {
|
||||
2 dict dup /FontName 3 index put
|
||||
dup /FontType 1 put
|
||||
- .FontDirectory 3 1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||
+ //.FontDirectory 3 1 roll { put } systemdict /superexec known {//superexec}{1183615869 internaldict /superexec get exec} ifelse % readonly
|
||||
} {
|
||||
pop
|
||||
} ifelse
|
||||
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||
index 56c0bd268b53..d9a0829f7f97 100644
|
||||
--- a/Resource/Init/gs_init.ps
|
||||
+++ b/Resource/Init/gs_init.ps
|
||||
@@ -1168,8 +1168,8 @@ errordict /unknownerror .undef
|
||||
}ifelse
|
||||
}forall
|
||||
noaccess pop
|
||||
- systemdict /.setsafeerrors .forceundef
|
||||
- systemdict /.SAFERERRORLIST .forceundef
|
||||
+ //systemdict /.setsafeerrors .forceundef
|
||||
+ //systemdict /.SAFERERRORLIST .forceundef
|
||||
} bind executeonly odef
|
||||
|
||||
SAFERERRORS {.setsafererrors} if
|
||||
@@ -2114,7 +2114,7 @@ currentdict /tempfilepaths undef
|
||||
|
||||
/.locksafe {
|
||||
.locksafe_userparams
|
||||
- systemdict /getenv {pop //false} .forceput
|
||||
+ //systemdict /getenv {pop //false} .forceput
|
||||
% setpagedevice has the side effect of clearing the page, but
|
||||
% we will just document that. Using setpagedevice keeps the device
|
||||
% properties and pagedevice .LockSafetyParams in agreement even
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,587 +0,0 @@
|
||||
From 5628be1c41d23298aa5fce2f6dd48e2eb81f4be1 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Wed, 9 Jan 2019 14:24:07 +0000
|
||||
Subject: [PATCH] Undefine a bunch of gs_fonts.ps specific procs
|
||||
|
||||
Also reorder and add some immediate evaluation, so it still works with the
|
||||
undefining.
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 2768d1a6dddb
|
||||
|
||||
Resource/Init/gs_dps1.ps | 3 +-
|
||||
Resource/Init/gs_fonts.ps | 275 +++++++++++++++++++++-----------------
|
||||
Resource/Init/gs_res.ps | 6 +-
|
||||
3 files changed, 156 insertions(+), 128 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||
index b75ea14e77a3..8700c8cb304b 100644
|
||||
--- a/Resource/Init/gs_dps1.ps
|
||||
+++ b/Resource/Init/gs_dps1.ps
|
||||
@@ -67,7 +67,8 @@ level2dict begin
|
||||
|
||||
/selectfont % <fontname> <size> selectfont -
|
||||
{
|
||||
- { 1 .argindex findfont
|
||||
+ {
|
||||
+ 1 .argindex findfont
|
||||
1 index dup type /arraytype eq { makefont } { scalefont } ifelse
|
||||
setfont pop pop
|
||||
} stopped { /selectfont .systemvar $error /errorname get signalerror } if
|
||||
diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
|
||||
index c13a2fcc2d43..056223544340 100644
|
||||
--- a/Resource/Init/gs_fonts.ps
|
||||
+++ b/Resource/Init/gs_fonts.ps
|
||||
@@ -100,7 +100,7 @@ userdict /.nativeFontmap .FontDirectory maxlength dict put
|
||||
{ 2 index token not
|
||||
{ (Fontmap entry for ) print 1 index =only
|
||||
( ends prematurely! Giving up.) = flush
|
||||
- {.loadFontmap} 0 get 1 .quit
|
||||
+ {//.loadFontmap exec} 0 get 1 .quit
|
||||
} if
|
||||
dup /; eq { pop 3 index 3 1 roll .growput exit } if
|
||||
pop
|
||||
@@ -202,6 +202,14 @@ NOFONTPATH { /FONTPATH () def } if
|
||||
{ pop }
|
||||
{ /FONTPATH (GS_FONTPATH) getenv not { () } if def }
|
||||
ifelse
|
||||
+
|
||||
+% The following are dummy definitions that, if we have a FONTPATH, will
|
||||
+% be replaced in the following section.
|
||||
+% They are here so immediately evaulation will work, and allow them to
|
||||
+% undefined at the bottom of the file.
|
||||
+/.scanfontbegin{} bind def
|
||||
+/.scanfontdir {} bind def
|
||||
+
|
||||
FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
/FONTPATH [ FONTPATH .pathlist ] def
|
||||
|
||||
@@ -242,12 +250,12 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
/.scanfontbegin
|
||||
{ % Construct the table of all file names already in Fontmap.
|
||||
currentglobal //true setglobal
|
||||
- .scanfontdict dup maxlength Fontmap length 2 add .max .setmaxlength
|
||||
+ //.scanfontdict dup maxlength Fontmap length 2 add .max .setmaxlength
|
||||
Fontmap
|
||||
{ exch pop
|
||||
{ dup type /stringtype eq
|
||||
- { .splitfilename pop .fonttempstring copy .lowerstring cvn
|
||||
- .scanfontdict exch //true put
|
||||
+ { //.splitfilename exec pop //.fonttempstring copy //.lowerstring exec cvn
|
||||
+ //.scanfontdict exch //true put
|
||||
}
|
||||
{ pop
|
||||
}
|
||||
@@ -280,9 +288,9 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
/txt //true
|
||||
.dicttomark def
|
||||
/.scan1fontstring 8192 string def
|
||||
-% %%BeginFont: is not per Adobe documentation, but a few fonts have it.
|
||||
+% BeginFont: is not per Adobe documentation, but a few fonts have it.
|
||||
/.scanfontheaders [(%!PS-Adobe*) (%!FontType*) (%%BeginFont:*)] def
|
||||
-0 .scanfontheaders { length .max } forall 6 add % extra for PFB header
|
||||
+0 //.scanfontheaders { length .max } forall 6 add % extra for PFB header
|
||||
/.scan1fontfirst exch string def
|
||||
/.scanfontdir % <dirname> .scanfontdir -
|
||||
{ currentglobal exch //true setglobal
|
||||
@@ -291,10 +299,10 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
0 0 0 4 -1 roll % found scanned files
|
||||
{ % stack: <fontcount> <scancount> <filecount> <filename>
|
||||
exch 1 add exch % increment filecount
|
||||
- dup .splitfilename .fonttempstring copy .lowerstring
|
||||
+ dup //.splitfilename exec //.fonttempstring copy //.lowerstring exec
|
||||
% stack: <fontcount> <scancount> <filecount+1> <filename>
|
||||
% <BASE> <ext>
|
||||
- .scanfontskip exch known exch .scanfontdict exch known or
|
||||
+ //.scanfontskip exch known exch //.scanfontdict exch known or
|
||||
{ pop
|
||||
% stack: <fontcount> <scancount> <filecount+1>
|
||||
}
|
||||
@@ -309,7 +317,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
% On some platforms, the file operator will open directories,
|
||||
% but an error will occur if we try to read from one.
|
||||
% Handle this possibility here.
|
||||
- dup .scan1fontfirst { readstring } .internalstopped
|
||||
+ dup //.scan1fontfirst { readstring } .internalstopped
|
||||
{ pop pop () }
|
||||
{ pop }
|
||||
ifelse
|
||||
@@ -322,7 +330,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
{ dup length 6 sub 6 exch getinterval }
|
||||
if
|
||||
% Check for font file headers.
|
||||
- //false .scanfontheaders
|
||||
+ //false //.scanfontheaders
|
||||
{ 2 index exch .stringmatch or
|
||||
}
|
||||
forall exch pop
|
||||
@@ -335,7 +343,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
{ exch copystring exch
|
||||
DEBUG { ( ) print dup =only flush } if
|
||||
1 index .definenativefontmap
|
||||
- .splitfilename pop //true .scanfontdict 3 1 roll .growput
|
||||
+ //.splitfilename exec pop //true //.scanfontdict 3 1 roll .growput
|
||||
% Increment fontcount.
|
||||
3 -1 roll 1 add 3 1 roll
|
||||
}
|
||||
@@ -352,7 +360,7 @@ FONTPATH length 0 eq { (%END FONTPATH) .skipeof } if
|
||||
}
|
||||
ifelse
|
||||
}
|
||||
- .scan1fontstring filenameforall
|
||||
+ //.scan1fontstring filenameforall
|
||||
QUIET
|
||||
{ pop pop pop }
|
||||
{ ( ) print =only ( files, ) print =only ( scanned, ) print
|
||||
@@ -422,7 +430,6 @@ systemdict /NONATIVEFONTMAP known .setnativefontmapbuilt
|
||||
//true .setnativefontmapbuilt
|
||||
} ifelse
|
||||
} bind def
|
||||
-currentdict /.setnativefontmapbuilt .forceundef
|
||||
|
||||
% Create the dictionary that registers the .buildfont procedure
|
||||
% (called by definefont) for each FontType.
|
||||
@@ -526,7 +533,8 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
% We use this only for explicitly aliased fonts, not substituted fonts:
|
||||
% we think this matches the observed behavior of Adobe interpreters.
|
||||
/.aliasfont % <name> <font> .aliasfont <newFont>
|
||||
- { .currentglobal 3 1 roll dup .gcheck .setglobal
|
||||
+ {
|
||||
+ currentglobal 3 1 roll dup gcheck setglobal
|
||||
% <bool> <name> <font>
|
||||
dup length 2 add dict % <bool> <name> <font> <dict>
|
||||
dup 3 -1 roll % <bool> <name> <dict> <dict> <font>
|
||||
@@ -541,7 +549,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
% whose FontName is a local non-string, if someone passed a
|
||||
% garbage value to findfont. In this case, just don't
|
||||
% call definefont at all.
|
||||
- 2 index dup type /stringtype eq exch .gcheck or 1 index .gcheck not or
|
||||
+ 2 index dup type /stringtype eq exch gcheck or 1 index gcheck not or
|
||||
{ pop % <bool> <name> <dict>
|
||||
1 index dup type /stringtype eq { cvn } if
|
||||
% <bool> <name> <dict> <name1>
|
||||
@@ -566,10 +574,11 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
% Don't bind in definefont, since Level 2 redefines it.
|
||||
/definefont .systemvar exec
|
||||
}
|
||||
- { /findfont cvx {.completefont} .errorexec pop exch pop
|
||||
+ {
|
||||
+ /findfont cvx {.completefont} //.errorexec exec pop exch pop
|
||||
}
|
||||
ifelse
|
||||
- exch .setglobal
|
||||
+ exch setglobal
|
||||
} odef % so findfont will bind it
|
||||
|
||||
% Define .loadfontfile for loading a font. If we recognize Type 1 and/or
|
||||
@@ -669,10 +678,19 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
[(Cn) 4] [(Cond) 4] [(Narrow) 4] [(Pkg) 4] [(Compr) 4]
|
||||
[(Serif) 8] [(Sans) -8]
|
||||
] readonly def
|
||||
+
|
||||
+/.fontnamestring { % <fontname> .fontnamestring <string|name>
|
||||
+ dup type dup /nametype eq {
|
||||
+ pop .namestring
|
||||
+ } {
|
||||
+ /stringtype ne { pop () } if
|
||||
+ } ifelse
|
||||
+} bind def
|
||||
+
|
||||
/.fontnameproperties { % <int> <string|name> .fontnameproperties
|
||||
% <int'>
|
||||
- .fontnamestring
|
||||
- .substituteproperties {
|
||||
+ //.fontnamestring exec
|
||||
+ //.substituteproperties {
|
||||
2 copy 0 get search {
|
||||
pop pop pop dup length 1 sub 1 exch getinterval 3 -1 roll exch {
|
||||
dup 0 ge { or } { neg not and } ifelse
|
||||
@@ -710,13 +728,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
% <other> .nametostring <other>
|
||||
dup type /nametype eq { .namestring } if
|
||||
} bind def
|
||||
-/.fontnamestring { % <fontname> .fontnamestring <string|name>
|
||||
- dup type dup /nametype eq {
|
||||
- pop .namestring
|
||||
- } {
|
||||
- /stringtype ne { pop () } if
|
||||
- } ifelse
|
||||
-} bind def
|
||||
+
|
||||
/.substitutefontname { % <fontname> <properties> .substitutefontname
|
||||
% <altname|null>
|
||||
% Look for properties and/or a face name in the font name.
|
||||
@@ -724,7 +736,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
% base font; otherwise, use the default font.
|
||||
% Note that the "substituted" font name may be the same as
|
||||
% the requested one; the caller must check this.
|
||||
- exch .fontnamestring {
|
||||
+ exch //.fontnamestring exec {
|
||||
defaultfontname /Helvetica-Oblique /Helvetica-Bold /Helvetica-BoldOblique
|
||||
/Helvetica-Narrow /Helvetica-Narrow-Oblique
|
||||
/Helvetica-Narrow-Bold /Helvetica-Narrow-BoldOblique
|
||||
@@ -734,12 +746,12 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
} 3 1 roll
|
||||
% Stack: facelist properties fontname
|
||||
% Look for a face name.
|
||||
- .substitutefaces {
|
||||
+ //.substitutefaces {
|
||||
2 copy 0 get search {
|
||||
pop pop pop
|
||||
% Stack: facelist properties fontname [(pattern) family properties]
|
||||
dup 2 get 4 -1 roll or 3 1 roll
|
||||
- 1 get .substitutefamilies exch get
|
||||
+ 1 get //.substitutefamilies exch get
|
||||
4 -1 roll pop 3 1 roll
|
||||
} {
|
||||
pop pop
|
||||
@@ -748,7 +760,7 @@ buildfontdict 3 /.buildfont3 cvx put
|
||||
1 index length mod get exec
|
||||
} bind def
|
||||
/.substitutefont { % <fontname> .substitutefont <altname>
|
||||
- dup 0 exch .fontnameproperties .substitutefontname
|
||||
+ dup 0 exch //.fontnameproperties exec .substitutefontname
|
||||
% Only accept fonts known in the Fontmap.
|
||||
Fontmap 1 index known not
|
||||
{
|
||||
@@ -814,7 +826,7 @@ FAKEFONTS not { (%END FAKEFONTS) .skipeof } if
|
||||
counttomark 1 sub { .aliasfont } repeat end
|
||||
% <fontname> mark <font>
|
||||
exch pop exch pop
|
||||
-} odef
|
||||
+} bind odef
|
||||
/findfont {
|
||||
.findfont
|
||||
} bind def
|
||||
@@ -860,7 +872,7 @@ FAKEFONTS not { (%END FAKEFONTS) .skipeof } if
|
||||
} {
|
||||
dup .substitutefont
|
||||
2 copy eq { pop defaultfontname } if
|
||||
- .checkalias
|
||||
+ //.checkalias exec
|
||||
QUIET not {
|
||||
SHORTERRORS {
|
||||
(%%[) print 1 index =only
|
||||
@@ -886,8 +898,8 @@ $error /SubstituteFont { } put
|
||||
//null 0 1 FONTPATH length 1 sub {
|
||||
FONTPATH 1 index get //null ne { exch pop exit } if pop
|
||||
} for dup //null ne {
|
||||
- dup 0 eq { .scanfontbegin } if
|
||||
- FONTPATH 1 index get .scanfontdir
|
||||
+ dup 0 eq { //.scanfontbegin exec} if
|
||||
+ FONTPATH 1 index get //.scanfontdir exec
|
||||
FONTPATH exch //null put //true
|
||||
} {
|
||||
pop //false
|
||||
@@ -897,11 +909,10 @@ $error /SubstituteFont { } put
|
||||
% scanning of FONTPATH.
|
||||
/.dofindfont { % mark <fontname> .dofindfont % mark <alias> ... <font>
|
||||
.tryfindfont not {
|
||||
-
|
||||
% We didn't find the font. If we haven't scanned
|
||||
% all the directories in FONTPATH, scan the next one
|
||||
% now and look for the font again.
|
||||
- .scannextfontdir {
|
||||
+ //.scannextfontdir exec {
|
||||
% Start over with an empty alias list.
|
||||
counttomark 1 sub { pop } repeat % mark <fontname>
|
||||
.dofindfont
|
||||
@@ -927,6 +938,7 @@ $error /SubstituteFont { } put
|
||||
} if
|
||||
% Substitute for the font. Don't alias.
|
||||
% Same stack as at the beginning of .dofindfont.
|
||||
+
|
||||
$error /SubstituteFont get exec
|
||||
%
|
||||
% igorm: I guess the surrounding code assumes that .stdsubstfont
|
||||
@@ -935,72 +947,11 @@ $error /SubstituteFont { } put
|
||||
% used in .dofindfont and through .stdsubstfont
|
||||
% just to represent a simple iteration,
|
||||
% which accumulates the aliases after the mark.
|
||||
- .stdsubstfont
|
||||
+ //.stdsubstfont exec
|
||||
} ifelse
|
||||
} ifelse
|
||||
} if
|
||||
} bind def
|
||||
-% Try to find a font using only the present contents of Fontmap.
|
||||
-/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||
- % <fontname> .tryfindfont false
|
||||
- //.FontDirectory 1 index .fontknownget
|
||||
- { % Already loaded
|
||||
- exch pop //true
|
||||
- }
|
||||
- {
|
||||
- dup Fontmap exch .knownget
|
||||
- { //true //true }
|
||||
- { % Unknown font name. Look for a file with the
|
||||
- % same name as the requested font.
|
||||
- dup .tryloadfont
|
||||
- { exch pop //true //false }
|
||||
- {
|
||||
- % if we can't load by name check the native font map
|
||||
- dup .nativeFontmap exch .knownget
|
||||
- { //true //true }
|
||||
- { //false //false } ifelse
|
||||
- } ifelse
|
||||
- } ifelse
|
||||
-
|
||||
- { % Try each element of the Fontmap in turn.
|
||||
- pop
|
||||
- //false exch % (in case we exhaust the list)
|
||||
- % Stack: fontname false fontmaplist
|
||||
- { exch pop
|
||||
- dup type /nametype eq
|
||||
- { % Font alias
|
||||
- .checkalias .tryfindfont exit
|
||||
- }
|
||||
- { dup dup type dup /arraytype eq exch /packedarraytype eq or exch xcheck and
|
||||
- { % Font with a procedural definition
|
||||
- exec % The procedure will load the font.
|
||||
- % Check to make sure this really happened.
|
||||
- //.FontDirectory 1 index .knownget
|
||||
- { exch pop //true exit }
|
||||
- if
|
||||
- }
|
||||
- { % Font file name
|
||||
- //true .loadfontloop { //true exit } if
|
||||
- }
|
||||
- ifelse
|
||||
- }
|
||||
- ifelse //false
|
||||
- }
|
||||
- forall
|
||||
- % Stack: font true -or- fontname false
|
||||
- { //true
|
||||
- }
|
||||
- { % None of the Fontmap entries worked.
|
||||
- % Try loading a file with the same name
|
||||
- % as the requested font.
|
||||
- .tryloadfont
|
||||
- }
|
||||
- ifelse
|
||||
- }
|
||||
- if
|
||||
- }
|
||||
- ifelse
|
||||
- } bind def
|
||||
|
||||
% any user of .putgstringcopy must use bind and executeonly
|
||||
/.putgstringcopy % <dict> <name> <string> .putgstringcopy -
|
||||
@@ -1014,25 +965,6 @@ $error /SubstituteFont { } put
|
||||
} executeonly ifelse
|
||||
} .bind executeonly odef % must be bound and hidden for .forceput
|
||||
|
||||
-% Attempt to load a font from a file.
|
||||
-/.tryloadfont { % <fontname> .tryloadfont <font> true
|
||||
- % <fontname> .tryloadfont false
|
||||
- dup .nametostring
|
||||
- % Hack: check for the presence of the resource machinery.
|
||||
- /.genericrfn where {
|
||||
- pop
|
||||
- pop dup .fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||
- {//false .loadfontloop} .internalstopped {//false} if {
|
||||
- //true
|
||||
- } {
|
||||
- dup .nametostring
|
||||
- {//true .loadfontloop} .internalstopped {//false} if
|
||||
- } ifelse
|
||||
- } {
|
||||
- {//true .loadfontloop} .internalstopped {//false} if
|
||||
- } ifelse
|
||||
-} bind def
|
||||
-
|
||||
/.loadfontloop { % <fontname> <filename> <libflag> .loadfontloop
|
||||
% <font> true
|
||||
% -or-
|
||||
@@ -1102,7 +1034,7 @@ $error /SubstituteFont { } put
|
||||
} if
|
||||
|
||||
% Check to make sure the font was actually loaded.
|
||||
- dup 3 index .fontknownget
|
||||
+ dup 3 index //.fontknownget exec
|
||||
{ dup /PathLoad 4 index .putgstringcopy
|
||||
4 1 roll pop pop pop //true exit
|
||||
} executeonly if
|
||||
@@ -1113,7 +1045,7 @@ $error /SubstituteFont { } put
|
||||
exch dup % Stack: origfontname fontdirectory path path
|
||||
(r) file .findfontname
|
||||
{ % Stack: origfontname fontdirectory path filefontname
|
||||
- 2 index 1 index .fontknownget
|
||||
+ 2 index 1 index //.fontknownget exec
|
||||
{ % Yes. Stack: origfontname fontdirectory path filefontname fontdict
|
||||
dup 4 -1 roll /PathLoad exch .putgstringcopy
|
||||
% Stack: origfontname fontdirectory filefontname fontdict
|
||||
@@ -1136,7 +1068,7 @@ $error /SubstituteFont { } put
|
||||
% Stack: fontdict
|
||||
} executeonly
|
||||
if pop % Stack: origfontname fontdirectory path
|
||||
- }
|
||||
+ } executeonly
|
||||
if pop pop % Stack: origfontname
|
||||
|
||||
% The font definitely did not load correctly.
|
||||
@@ -1150,7 +1082,87 @@ $error /SubstituteFont { } put
|
||||
|
||||
} bind executeonly odef % must be bound and hidden for .putgstringcopy
|
||||
|
||||
-currentdict /.putgstringcopy .undef
|
||||
+% Attempt to load a font from a file.
|
||||
+/.tryloadfont { % <fontname> .tryloadfont <font> true
|
||||
+ % <fontname> .tryloadfont false
|
||||
+ dup //.nametostring exec
|
||||
+ % Hack: check for the presence of the resource machinery.
|
||||
+ /.genericrfn where {
|
||||
+ pop
|
||||
+ pop dup //.fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||
+ {//false .loadfontloop} .internalstopped {//false} if {
|
||||
+ //true
|
||||
+ } {
|
||||
+ dup //.nametostring exec
|
||||
+ {//true .loadfontloop} .internalstopped {//false} if
|
||||
+ } ifelse
|
||||
+ } {
|
||||
+ {//true .loadfontloop} .internalstopped {//false} if
|
||||
+ } ifelse
|
||||
+} bind def
|
||||
+
|
||||
+% Try to find a font using only the present contents of Fontmap.
|
||||
+/.tryfindfont { % <fontname> .tryfindfont <font> true
|
||||
+ % <fontname> .tryfindfont false
|
||||
+ //.FontDirectory 1 index //.fontknownget exec
|
||||
+ { % Already loaded
|
||||
+ exch pop //true
|
||||
+ }
|
||||
+ {
|
||||
+ dup Fontmap exch .knownget
|
||||
+ { //true //true }
|
||||
+ { % Unknown font name. Look for a file with the
|
||||
+ % same name as the requested font.
|
||||
+ dup //.tryloadfont exec
|
||||
+ { exch pop //true //false }
|
||||
+ {
|
||||
+ % if we can't load by name check the native font map
|
||||
+ dup .nativeFontmap exch .knownget
|
||||
+ { //true //true }
|
||||
+ { //false //false } ifelse
|
||||
+ } ifelse
|
||||
+ } ifelse
|
||||
+
|
||||
+ { % Try each element of the Fontmap in turn.
|
||||
+ pop
|
||||
+ //false exch % (in case we exhaust the list)
|
||||
+ % Stack: fontname false fontmaplist
|
||||
+ { exch pop
|
||||
+ dup type /nametype eq
|
||||
+ { % Font alias
|
||||
+ //.checkalias exec
|
||||
+ .tryfindfont exit
|
||||
+ }
|
||||
+ { dup dup type dup /arraytype eq exch /packedarraytype eq or exch xcheck and
|
||||
+ { % Font with a procedural definition
|
||||
+ exec % The procedure will load the font.
|
||||
+ % Check to make sure this really happened.
|
||||
+ //.FontDirectory 1 index .knownget
|
||||
+ { exch pop //true exit }
|
||||
+ if
|
||||
+ }
|
||||
+ { % Font file name
|
||||
+ //true .loadfontloop { //true exit } if
|
||||
+ }
|
||||
+ ifelse
|
||||
+ }
|
||||
+ ifelse //false
|
||||
+ }
|
||||
+ forall
|
||||
+ % Stack: font true -or- fontname false
|
||||
+ { //true
|
||||
+ }
|
||||
+ { % None of the Fontmap entries worked.
|
||||
+ % Try loading a file with the same name
|
||||
+ % as the requested font.
|
||||
+ //.tryloadfont exec
|
||||
+ }
|
||||
+ ifelse
|
||||
+ }
|
||||
+ if
|
||||
+ }
|
||||
+ ifelse
|
||||
+ } bind def
|
||||
|
||||
% Define a procedure to load all known fonts.
|
||||
% This isn't likely to be very useful.
|
||||
@@ -1192,9 +1204,9 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||
/.loadinitialfonts
|
||||
{ NOFONTMAP not
|
||||
{ /FONTMAP where
|
||||
- { pop [ FONTMAP .pathlist ]
|
||||
+ { pop [ FONTMAP //.pathlist exec]
|
||||
{ dup VMDEBUG findlibfile
|
||||
- { exch pop .loadFontmap }
|
||||
+ { exch pop //.loadFontmap exec }
|
||||
{ /undefinedfilename signalerror }
|
||||
ifelse
|
||||
}
|
||||
@@ -1208,7 +1220,7 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||
pop pop
|
||||
defaultfontmap_content { .definefontmap } forall
|
||||
} {
|
||||
- .loadFontmap
|
||||
+ //.loadFontmap exec
|
||||
} ifelse
|
||||
} {
|
||||
pop pop
|
||||
@@ -1272,3 +1284,18 @@ FAKEFONTS { exch } if pop def % don't bind, .current/setglobal get redefined
|
||||
{ .makemodifiedfont
|
||||
dup /FontName get exch definefont pop
|
||||
} bind def
|
||||
+
|
||||
+% Undef these, not needed outside this file
|
||||
+[
|
||||
+ % /.fonttempstring /.scannextfontdir - are also used in gs_res.ps, so are undefined there
|
||||
+ % /.fontnameproperties - is used in pdf_font.ps
|
||||
+ % /.scanfontheaders - used in gs_cff.ps, gs_ttf.ps
|
||||
+ /.loadfontloop /.tryloadfont /.findfont /.pathlist /.loadFontmap /.lowerstring
|
||||
+ /.splitfilename /.scanfontdict /.scanfontbegin
|
||||
+ /.scanfontskip /.scan1fontstring
|
||||
+ /.scan1fontfirst /.scanfontdir
|
||||
+ /.setnativefontmapbuilt /.aliasfont
|
||||
+ /.setloadingfont /.substitutefaces /.substituteproperties /.substitutefamilies
|
||||
+ /.nametostring /.fontnamestring /.checkalias /.fontknownget /.stdsubstfont
|
||||
+ /.putgstringcopy
|
||||
+] {systemdict exch .forceundef} forall
|
||||
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||
index d9b34599e7c2..fd7eaf953ae9 100644
|
||||
--- a/Resource/Init/gs_res.ps
|
||||
+++ b/Resource/Init/gs_res.ps
|
||||
@@ -961,7 +961,7 @@ userdict /.localcsdefaults //false put
|
||||
dup type /nametype eq { .namestring } if
|
||||
dup type /stringtype ne { //false exit } if
|
||||
% Check the resource directory.
|
||||
- dup .fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||
+ dup //.fonttempstring /FontResourceDir getsystemparam .genericrfn
|
||||
status {
|
||||
pop pop pop pop //true exit
|
||||
} if
|
||||
@@ -969,7 +969,7 @@ userdict /.localcsdefaults //false put
|
||||
% as the font.
|
||||
findlibfile { closefile //true exit } if
|
||||
% Scan a FONTPATH directory and try again.
|
||||
- .scannextfontdir not { //false exit } if
|
||||
+ //.scannextfontdir exec not { //false exit } if
|
||||
} loop
|
||||
} bind def
|
||||
|
||||
@@ -1008,7 +1008,7 @@ currentdict /.fontstatusaux .undef
|
||||
} ifelse
|
||||
} bind executeonly
|
||||
/ResourceForAll {
|
||||
- { .scannextfontdir not { exit } if } loop
|
||||
+ { //.scannextfontdir exec not { exit } if } loop
|
||||
/Generic /Category findresource /ResourceForAll get exec
|
||||
} bind executeonly
|
||||
/.ResourceFileStatus {
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,345 +0,0 @@
|
||||
From ba2336b3b1ca5cfe1e67dbe37a084c9644a65ac7 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Liddell <chris.liddell@artifex.com>
|
||||
Date: Fri, 11 Jan 2019 13:36:36 +0000
|
||||
Subject: [PATCH] Remove .forcedef, and harden .force* ops more
|
||||
|
||||
Remove .forcedef and replace all uses with a direct call to .forceput instead.
|
||||
|
||||
Ensure every procedure (named and trasient) that calls .forceput is
|
||||
executeonly.
|
||||
|
||||
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
|
||||
---
|
||||
Upstream status: commit 49c8092da88e
|
||||
|
||||
Resource/Init/gs_dps1.ps | 15 +++++++-----
|
||||
Resource/Init/gs_init.ps | 28 ++++++++-------------
|
||||
Resource/Init/gs_lev2.ps | 51 +++++++++++++++++++--------------------
|
||||
Resource/Init/gs_ll3.ps | 5 ++--
|
||||
Resource/Init/gs_res.ps | 29 +++++++++++-----------
|
||||
Resource/Init/gs_statd.ps | 4 +--
|
||||
6 files changed, 63 insertions(+), 69 deletions(-)
|
||||
|
||||
diff --git a/Resource/Init/gs_dps1.ps b/Resource/Init/gs_dps1.ps
|
||||
index 8700c8cb304b..3d2cf7a1ad01 100644
|
||||
--- a/Resource/Init/gs_dps1.ps
|
||||
+++ b/Resource/Init/gs_dps1.ps
|
||||
@@ -33,14 +33,17 @@ systemdict begin
|
||||
|
||||
/SharedFontDirectory .FontDirectory .gcheck
|
||||
{ .currentglobal //false .setglobal
|
||||
+ currentdict
|
||||
/LocalFontDirectory .FontDirectory dup maxlength dict copy
|
||||
- .forcedef % LocalFontDirectory is local, systemdict is global
|
||||
+ .forceput % LocalFontDirectory is local, systemdict is global
|
||||
.setglobal .FontDirectory
|
||||
- }
|
||||
- { /LocalFontDirectory .FontDirectory
|
||||
- .forcedef % LocalFontDirectory is local, systemdict is global
|
||||
+ } executeonly
|
||||
+ {
|
||||
+ currentdict
|
||||
+ /LocalFontDirectory .FontDirectory
|
||||
+ .forceput % LocalFontDirectory is local, systemdict is global
|
||||
50 dict
|
||||
- }
|
||||
+ }executeonly
|
||||
ifelse def
|
||||
|
||||
end % systemdict
|
||||
@@ -55,7 +58,7 @@ level2dict begin
|
||||
{ //SharedFontDirectory }
|
||||
{ /LocalFontDirectory .systemvar } % can't embed ref to local VM
|
||||
ifelse .forceput pop % LocalFontDirectory is local, systemdict is global
|
||||
- } .bind odef
|
||||
+ } .bind executeonly odef
|
||||
% Don't just copy (load) the definition of .setglobal:
|
||||
% it gets redefined for LL3.
|
||||
/setshared { /.setglobal .systemvar exec } odef
|
||||
diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
|
||||
index d9a0829f7f97..45bebf479bae 100644
|
||||
--- a/Resource/Init/gs_init.ps
|
||||
+++ b/Resource/Init/gs_init.ps
|
||||
@@ -54,7 +54,7 @@ systemdict exch
|
||||
dup /userdict
|
||||
currentdict dup 200 .setmaxlength % userdict
|
||||
.forceput % userdict is local, systemdict is global
|
||||
- }
|
||||
+ } executeonly
|
||||
if begin
|
||||
|
||||
% Define dummy local/global operators if needed.
|
||||
@@ -299,13 +299,6 @@ QUIET not { printgreeting flush } if
|
||||
1 index exch .makeoperator def
|
||||
} .bind def
|
||||
|
||||
-% Define a special version of def for storing local objects into global
|
||||
-% dictionaries. Like .forceput, this exists only during initialization.
|
||||
-/.forcedef { % <key> <value> .forcedef -
|
||||
- 1 .argindex pop % check # of args
|
||||
- currentdict 3 1 roll .forceput
|
||||
-} .bind odef
|
||||
-
|
||||
% Define procedures for accessing variables in systemdict and userdict
|
||||
% regardless of the contents of the dictionary stack.
|
||||
/.systemvar { % <name> .systemvar <value>
|
||||
@@ -347,7 +340,7 @@ DELAYBIND
|
||||
}
|
||||
ifelse
|
||||
} .bind def
|
||||
-} if
|
||||
+} executeonly if
|
||||
|
||||
%**************** BACKWARD COMPATIBILITY ****************
|
||||
/hwsizedict mark /HWSize //null .dicttomark readonly def
|
||||
@@ -655,7 +648,7 @@ currentdict /.typenames .undef
|
||||
/ifelse .systemvar
|
||||
] cvx executeonly
|
||||
exch .setglobal
|
||||
-} odef
|
||||
+} executeonly odef
|
||||
systemdict /internaldict dup .makeinternaldict .makeoperator
|
||||
.forceput % proc is local, systemdict is global
|
||||
|
||||
@@ -1093,7 +1086,7 @@ def
|
||||
|
||||
% Define $error. This must be in local VM.
|
||||
.currentglobal //false .setglobal
|
||||
-/$error 40 dict .forcedef % $error is local, systemdict is global
|
||||
+currentdict /$error 40 dict .forceput % $error is local, systemdict is global
|
||||
% newerror, errorname, command, errorinfo,
|
||||
% ostack, estack, dstack, recordstacks,
|
||||
% binary, globalmode,
|
||||
@@ -1112,8 +1105,8 @@ end
|
||||
% Define errordict similarly. It has one entry per error name,
|
||||
% plus handleerror. However, some astonishingly badly written PostScript
|
||||
% files require it to have at least one empty slot.
|
||||
-/errordict ErrorNames length 3 add dict
|
||||
-.forcedef % errordict is local, systemdict is global
|
||||
+currentdict /errordict ErrorNames length 3 add dict
|
||||
+.forceput % errordict is local, systemdict is global
|
||||
.setglobal % back to global VM
|
||||
% gserrordict contains all the default error handling methods, but unlike
|
||||
% errordict it is noaccess after creation (also it is in global VM).
|
||||
@@ -1273,8 +1266,9 @@ end
|
||||
(END PROCS) VMDEBUG
|
||||
|
||||
% Define the font directory.
|
||||
+currentdict
|
||||
/FontDirectory //false .setglobal 100 dict //true .setglobal
|
||||
-.forcedef % FontDirectory is local, systemdict is global
|
||||
+.forceput % FontDirectory is local, systemdict is global
|
||||
|
||||
% Define the encoding dictionary.
|
||||
/EncodingDirectory 16 dict def % enough for Level 2 + PDF standard encodings
|
||||
@@ -2333,7 +2327,6 @@ SAFER { .setsafeglobal } if
|
||||
//systemdict /UndefinePostScriptOperators get exec
|
||||
//systemdict /UndefinePDFOperators get exec
|
||||
//systemdict /.forcecopynew .forceundef % remove temptation
|
||||
- //systemdict /.forcedef .forceundef % ditto
|
||||
//systemdict /.forceput .forceundef % ditto
|
||||
//systemdict /.undef .forceundef % ditto
|
||||
//systemdict /.forceundef .forceundef % ditto
|
||||
@@ -2368,9 +2361,9 @@ SAFER { .setsafeglobal } if
|
||||
% (and, if implemented, context switching).
|
||||
.currentglobal //false .setglobal
|
||||
mark userparams { } forall .dicttomark readonly
|
||||
- /userparams exch .forcedef % systemdict is read-only
|
||||
+ currentdict exch /userparams exch .forceput % systemdict is read-only
|
||||
.setglobal
|
||||
-} if
|
||||
+} executeonly if
|
||||
/.currentsystemparams where {
|
||||
pop
|
||||
% Remove real system params from pssystemparams.
|
||||
@@ -2458,7 +2451,6 @@ end
|
||||
DELAYBIND not {
|
||||
systemdict /.bindnow .undef % We only need this for DELAYBIND
|
||||
systemdict /.forcecopynew .undef % remove temptation
|
||||
- systemdict /.forcedef .undef % ditto
|
||||
systemdict /.forceput .undef % ditto
|
||||
systemdict /.forceundef .undef % ditto
|
||||
} if
|
||||
diff --git a/Resource/Init/gs_lev2.ps b/Resource/Init/gs_lev2.ps
|
||||
index 0f0d57331c23..9c0c3a6fc485 100644
|
||||
--- a/Resource/Init/gs_lev2.ps
|
||||
+++ b/Resource/Init/gs_lev2.ps
|
||||
@@ -304,31 +304,30 @@ end
|
||||
psuserparams exch /.checkFilePermitparams load put
|
||||
.setglobal
|
||||
|
||||
-pssystemparams begin
|
||||
- /CurDisplayList 0 .forcedef
|
||||
- /CurFormCache 0 .forcedef
|
||||
- /CurInputDevice () .forcedef
|
||||
- /CurOutlineCache 0 .forcedef
|
||||
- /CurOutputDevice () .forcedef
|
||||
- /CurPatternCache 0 .forcedef
|
||||
- /CurUPathCache 0 .forcedef
|
||||
- /CurScreenStorage 0 .forcedef
|
||||
- /CurSourceList 0 .forcedef
|
||||
- /DoPrintErrors //false .forcedef
|
||||
- /JobTimeout 0 .forcedef
|
||||
- /LicenseID (LN-001) .forcedef % bogus
|
||||
- /MaxDisplayList 140000 .forcedef
|
||||
- /MaxFormCache 100000 .forcedef
|
||||
- /MaxImageBuffer 524288 .forcedef
|
||||
- /MaxOutlineCache 65000 .forcedef
|
||||
- /MaxPatternCache 100000 .forcedef
|
||||
- /MaxUPathCache 300000 .forcedef
|
||||
- /MaxScreenStorage 84000 .forcedef
|
||||
- /MaxSourceList 25000 .forcedef
|
||||
- /PrinterName product .forcedef
|
||||
- /RamSize 4194304 .forcedef
|
||||
- /WaitTimeout 40 .forcedef
|
||||
-end
|
||||
+pssystemparams
|
||||
+dup /CurDisplayList 0 .forceput
|
||||
+dup /CurFormCache 0 .forceput
|
||||
+dup /CurInputDevice () .forceput
|
||||
+dup /CurOutlineCache 0 .forceput
|
||||
+dup /CurOutputDevice () .forceput
|
||||
+dup /CurPatternCache 0 .forceput
|
||||
+dup /CurUPathCache 0 .forceput
|
||||
+dup /CurScreenStorage 0 .forceput
|
||||
+dup /CurSourceList 0 .forceput
|
||||
+dup /DoPrintErrors //false .forceput
|
||||
+dup /JobTimeout 0 .forceput
|
||||
+dup /LicenseID (LN-001) .forceput % bogus
|
||||
+dup /MaxDisplayList 140000 .forceput
|
||||
+dup /MaxFormCache 100000 .forceput
|
||||
+dup /MaxImageBuffer 524288 .forceput
|
||||
+dup /MaxOutlineCache 65000 .forceput
|
||||
+dup /MaxPatternCache 100000 .forceput
|
||||
+dup /MaxUPathCache 300000 .forceput
|
||||
+dup /MaxScreenStorage 84000 .forceput
|
||||
+dup /MaxSourceList 25000 .forceput
|
||||
+dup /PrinterName product .forceput
|
||||
+dup /RamSize 4194304 .forceput
|
||||
+ /WaitTimeout 40 .forceput
|
||||
|
||||
% Define the procedures for handling comment scanning. The names
|
||||
% %ProcessComment and %ProcessDSCComment are known to the interpreter.
|
||||
@@ -710,7 +709,7 @@ pop % currentsystemparams
|
||||
/statusdict currentdict def
|
||||
|
||||
currentdict end
|
||||
-/statusdict exch .forcedef % statusdict is local, systemdict is global
|
||||
+currentdict exch /statusdict exch .forceput % statusdict is local, systemdict is global
|
||||
|
||||
% The following compatibility operators are in systemdict. They are
|
||||
% defined here, rather than in gs_init.ps, because they require the
|
||||
diff --git a/Resource/Init/gs_ll3.ps b/Resource/Init/gs_ll3.ps
|
||||
index c86721f39fc0..881af44e9fd2 100644
|
||||
--- a/Resource/Init/gs_ll3.ps
|
||||
+++ b/Resource/Init/gs_ll3.ps
|
||||
@@ -521,9 +521,8 @@ end
|
||||
% Define additional user and system parameters.
|
||||
/HalftoneMode 0 .definepsuserparam
|
||||
/MaxSuperScreen 1016 .definepsuserparam
|
||||
-pssystemparams begin % read-only, so use .forcedef
|
||||
- /MaxDisplayAndSourceList 160000 .forcedef
|
||||
-end
|
||||
+% read-only, so use .forceput
|
||||
+pssystemparams /MaxDisplayAndSourceList 160000 .forceput
|
||||
|
||||
% Define the IdiomSet resource category.
|
||||
{ /IdiomSet } {
|
||||
diff --git a/Resource/Init/gs_res.ps b/Resource/Init/gs_res.ps
|
||||
index fd7eaf953ae9..0b4e0514b2a1 100644
|
||||
--- a/Resource/Init/gs_res.ps
|
||||
+++ b/Resource/Init/gs_res.ps
|
||||
@@ -41,10 +41,10 @@ level2dict begin
|
||||
% However, Ed Taft of Adobe says their interpreters don't implement this
|
||||
% either, so we aren't going to worry about it for a while.
|
||||
|
||||
-currentglobal //false setglobal systemdict begin
|
||||
- /localinstancedict 5 dict
|
||||
- .forcedef % localinstancedict is local, systemdict is global
|
||||
-end //true setglobal
|
||||
+currentglobal //false setglobal
|
||||
+ systemdict /localinstancedict 5 dict
|
||||
+ .forceput % localinstancedict is local, systemdict is global
|
||||
+//true setglobal
|
||||
/.emptydict 0 dict readonly def
|
||||
setglobal
|
||||
|
||||
@@ -149,7 +149,7 @@ setglobal
|
||||
dup [ exch 0 -1 ] exch
|
||||
.Instances 4 2 roll put
|
||||
% Make the Category dictionary read-only. We will have to
|
||||
- % use .forceput / .forcedef later to replace the dummy,
|
||||
+ % use .forceput / .forceput later to replace the dummy,
|
||||
% empty .Instances dictionary with the real one later.
|
||||
readonly
|
||||
}{
|
||||
@@ -304,7 +304,8 @@ systemdict begin
|
||||
dup () ne {
|
||||
.file_name_directory_separator concatstrings
|
||||
} if
|
||||
- 2 index exch //false .file_name_combine not {
|
||||
+ 2 index exch //false
|
||||
+ .file_name_combine not {
|
||||
(Error: .default_resource_dir returned ) print exch print ( that can't combine with ) print =
|
||||
/.default_resource_dir cvx /configurationerror signalerror
|
||||
} if
|
||||
@@ -317,14 +318,14 @@ currentdict /pssystemparams known not {
|
||||
pssystemparams begin
|
||||
.default_resource_dir
|
||||
/FontResourceDir (Font) .resource_dir_name
|
||||
- readonly .forcedef % pssys'params is r-o
|
||||
+ readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||
/GenericResourceDir () .resource_dir_name
|
||||
- readonly .forcedef % pssys'params is r-o
|
||||
+ readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||
pop % .default_resource_dir
|
||||
/GenericResourcePathSep
|
||||
- .file_name_separator readonly .forcedef % pssys'params is r-o
|
||||
- (%diskFontResourceDir) cvn (/Resource/Font/) readonly .forcedef % pssys'params is r-o
|
||||
- (%diskGenericResourceDir) cvn (/Resource/) readonly .forcedef % pssys'params is r-o
|
||||
+ .file_name_separator readonly currentdict 3 1 roll .forceput % pssys'params is r-o
|
||||
+ currentdict (%diskFontResourceDir) cvn (/Resource/Font/) readonly .forceput % pssys'params is r-o
|
||||
+ currentdict (%diskGenericResourceDir) cvn (/Resource/) readonly .forceput % pssys'params is r-o
|
||||
end
|
||||
end
|
||||
|
||||
@@ -422,8 +423,8 @@ status {
|
||||
.Instances dup //.emptydict eq {
|
||||
pop 3 dict
|
||||
% As noted above, Category dictionaries are read-only,
|
||||
- % so we have to use .forcedef here.
|
||||
- /.Instances 1 index .forcedef % Category dict is read-only
|
||||
+ % so we have to use .forceput here.
|
||||
+ currentdict /.Instances 2 index .forceput % Category dict is read-only
|
||||
} executeonly if
|
||||
}
|
||||
{ .LocalInstances dup //.emptydict eq
|
||||
@@ -441,7 +442,7 @@ status {
|
||||
{ /defineresource cvx /typecheck signaloperror
|
||||
}
|
||||
ifelse
|
||||
-} .bind executeonly .makeoperator % executeonly to prevent access to .forcedef
|
||||
+} .bind executeonly .makeoperator % executeonly to prevent access to .forceput
|
||||
/UndefineResource
|
||||
{ { dup 2 index .knownget
|
||||
{ dup 1 get 1 ge
|
||||
diff --git a/Resource/Init/gs_statd.ps b/Resource/Init/gs_statd.ps
|
||||
index 20d4c96c4f8f..b6a76590dd09 100644
|
||||
--- a/Resource/Init/gs_statd.ps
|
||||
+++ b/Resource/Init/gs_statd.ps
|
||||
@@ -21,10 +21,10 @@ systemdict begin
|
||||
% We make statusdict a little larger for Level 2 stuff.
|
||||
% Note that it must be allocated in local VM.
|
||||
.currentglobal //false .setglobal
|
||||
- /statusdict 91 dict .forcedef % statusdict is local, sys'dict global
|
||||
+ currentdict /statusdict 91 dict .forceput % statusdict is local, sys'dict global
|
||||
% To support the Level 2 job control features,
|
||||
% serverdict must also be in local VM.
|
||||
- /serverdict 10 dict .forcedef % serverdict is local, sys'dict global
|
||||
+ currentdict /serverdict 10 dict .forceput % serverdict is local, sys'dict global
|
||||
.setglobal
|
||||
end
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs926/SHA512SUMS
|
||||
sha512 3ddb83029edf32282357bf606f4045a9ac73df6543cd423cfad09158ec12ada083a0dbb5aac3b73ae24cbc6c1e9d7574257a5c1fae63ba8776fbb00150ef2a3e ghostscript-9.26.tar.xz
|
||||
# From https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs927/SHA512SUMS
|
||||
sha512 5e67ad45a80f01c6ef0eabb1c76dfa8fb6e7f0fde8d82fd5daaf12f370c288a672f8fa69c74d9e30255582267e9a906e4e8b13655f8d993fefdfc8dbdb5d5401 ghostscript-9.27.tar.xz
|
||||
|
||||
# Hash for license file:
|
||||
sha256 6f852249f975287b3efd43a5883875e47fa9f3125e2f1b18b5c09517ac30ecf2 LICENSE
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GHOSTSCRIPT_VERSION = 9.26
|
||||
GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs926
|
||||
GHOSTSCRIPT_VERSION = 9.27
|
||||
GHOSTSCRIPT_SITE = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$(subst .,,$(GHOSTSCRIPT_VERSION))
|
||||
GHOSTSCRIPT_SOURCE = ghostscript-$(GHOSTSCRIPT_VERSION).tar.xz
|
||||
GHOSTSCRIPT_LICENSE = AGPL-3.0
|
||||
GHOSTSCRIPT_LICENSE_FILES = LICENSE
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
From 01da08fd60a0bdb2994f85f943dba148d9321d4d Mon Sep 17 00:00:00 2001
|
||||
From: Vadim Kochan <vadim4j@gmail.com>
|
||||
Date: Wed, 17 Apr 2019 01:25:40 +0300
|
||||
Subject: [PATCH 1/1] configure.ac: Properly check for libintl
|
||||
|
||||
Some libc implementations like uclibc or musl provides
|
||||
gettext stubs via libintl library but this case is not checked
|
||||
by AC_CHECK_LIBRARY(c, gettext ...) because gcc has gettext as builtin
|
||||
which passess the check.
|
||||
|
||||
So check it with included libintl.h where gettext may unfold into
|
||||
libintl_gettext which will cause check to fail if libintl_gettext are
|
||||
needed to be linked with -lintl.
|
||||
|
||||
Signed-off-by: Vadim Kochan <vadim4j@gmail.com>
|
||||
---
|
||||
configure.ac | 16 +++++++++++++---
|
||||
1 file changed, 13 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index 7f84151..0b8e25f 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -762,9 +762,19 @@ AC_CHECK_LIB([c], [basename],
|
||||
GIT_CONF_SUBST([NEEDS_LIBGEN])
|
||||
test -n "$NEEDS_LIBGEN" && LIBS="$LIBS -lgen"
|
||||
|
||||
-AC_CHECK_LIB([c], [gettext],
|
||||
-[LIBC_CONTAINS_LIBINTL=YesPlease],
|
||||
-[LIBC_CONTAINS_LIBINTL=])
|
||||
+AC_DEFUN([LIBINTL_SRC], [
|
||||
+AC_LANG_PROGRAM([[
|
||||
+#include <libintl.h>
|
||||
+]],[[
|
||||
+char *msg = gettext("test");
|
||||
+]])])
|
||||
+
|
||||
+AC_MSG_CHECKING([if libc contains libintl])
|
||||
+AC_LINK_IFELSE([LIBINTL_SRC],
|
||||
+ [AC_MSG_RESULT([yes])
|
||||
+ LIBC_CONTAINS_LIBINTL=YesPlease],
|
||||
+ [AC_MSG_RESULT([no])
|
||||
+ LIBC_CONTAINS_LIBINTL=])
|
||||
GIT_CONF_SUBST([LIBC_CONTAINS_LIBINTL])
|
||||
|
||||
#
|
||||
--
|
||||
2.14.1
|
||||
|
||||
@@ -10,11 +10,12 @@ GIT_SITE = $(BR2_KERNEL_MIRROR)/software/scm/git
|
||||
GIT_LICENSE = GPL-2.0, LGPL-2.1+
|
||||
GIT_LICENSE_FILES = COPYING LGPL-2.1
|
||||
GIT_DEPENDENCIES = zlib $(TARGET_NLS_DEPENDENCIES)
|
||||
GIT_AUTORECONF = YES
|
||||
|
||||
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
||||
GIT_DEPENDENCIES += openssl
|
||||
GIT_DEPENDENCIES += host-pkgconf openssl
|
||||
GIT_CONF_OPTS += --with-openssl
|
||||
GIT_CONF_ENV_LIBS += $(if $(BR2_STATIC_LIBS),-lz)
|
||||
GIT_MAKE_OPTS += LIB_4_CRYPTO="`$(PKG_CONFIG_HOST_BINARY) --libs libssl libcrypto`"
|
||||
else
|
||||
GIT_CONF_OPTS += --without-openssl
|
||||
endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Locally calculated (fetched from Github)
|
||||
sha256 ebf04c7b00153d6df8beceec0666d4b13e1ac613b40d5774d1b8c6f61c1686e6 glibc-glibc-2.28-69-g1e5c5303a522764d7e9d2302a60e4a32cdb902f1.tar.gz
|
||||
sha256 295d436aac4dc45afc3b440f85fc4556c03b1140ca0f625ee015c8156d2f52ae glibc-glibc-2.28-94-g4aeff335ca19286ee2382d8eba794ae5fd49281a.tar.gz
|
||||
|
||||
# Hashes for license files
|
||||
sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 COPYING
|
||||
@@ -13,7 +13,7 @@ GLIBC_SITE = $(call github,riscv,riscv-glibc,$(GLIBC_VERSION))
|
||||
else
|
||||
# Generate version string using:
|
||||
# git describe --match 'glibc-*' --abbrev=40 origin/release/MAJOR.MINOR/master
|
||||
GLIBC_VERSION = glibc-2.28-69-g1e5c5303a522764d7e9d2302a60e4a32cdb902f1
|
||||
GLIBC_VERSION = glibc-2.28-94-g4aeff335ca19286ee2382d8eba794ae5fd49281a
|
||||
# Upstream doesn't officially provide an https download link.
|
||||
# There is one (https://sourceware.org/git/glibc.git) but it's not reliable,
|
||||
# sometimes the connection times out. So use an unofficial github mirror.
|
||||
|
||||
@@ -56,6 +56,12 @@ config BR2_PACKAGE_GNURADIO_FEC
|
||||
help
|
||||
FEC signal processing blocks
|
||||
|
||||
config BR2_PACKAGE_GNURADIO_LOG
|
||||
bool "gr-log support"
|
||||
select BR2_PACKAGE_LOG4CPP
|
||||
help
|
||||
Enable logger component
|
||||
|
||||
config BR2_PACKAGE_GNURADIO_PYTHON
|
||||
bool "python support"
|
||||
depends on BR2_PACKAGE_PYTHON
|
||||
|
||||
@@ -115,6 +115,13 @@ else
|
||||
GNURADIO_CONF_OPTS += -DENABLE_GR_FILTER=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_GNURADIO_LOG),y)
|
||||
GNURADIO_DEPENDENCIES += log4cpp
|
||||
GNURADIO_CONF_OPTS += -DENABLE_GR_LOG=ON
|
||||
else
|
||||
GNURADIO_CONF_OPTS += -DENABLE_GR_LOG=OFF
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_GNURADIO_PYTHON),y)
|
||||
GNURADIO_DEPENDENCIES += python
|
||||
GNURADIO_CONF_OPTS += -DENABLE_PYTHON=ON
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Locally calculated after checking pgp signature
|
||||
# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.6.tar.xz.sig
|
||||
sha256 bb9acab8af2ac430edf45faaaa4ed2c51f86e57cb57689be6701aceef4732ca7 gnutls-3.6.6.tar.xz
|
||||
# https://www.gnupg.org/ftp/gcrypt/gnutls/v3.6/gnutls-3.6.7.1.tar.xz.sig
|
||||
sha256 881b26409ecd8ea4c514fd3fbdb6fae5fab422ca7b71116260e263940a4bbbad gnutls-3.6.7.1.tar.xz
|
||||
# Locally calculated
|
||||
sha256 8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903 doc/COPYING
|
||||
sha256 e79e9c8a0c85d735ff98185918ec94ed7d175efc377012787aebcf3b80f0d90b doc/COPYING
|
||||
sha256 6095e9ffa777dd22839f7801aa845b31c9ed07f3d6bf8a26dc5d2dec8ccc0ef3 doc/COPYING.LESSER
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
################################################################################
|
||||
|
||||
GNUTLS_VERSION_MAJOR = 3.6
|
||||
GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).6
|
||||
GNUTLS_VERSION = $(GNUTLS_VERSION_MAJOR).7.1
|
||||
GNUTLS_SOURCE = gnutls-$(GNUTLS_VERSION).tar.xz
|
||||
GNUTLS_SITE = https://www.gnupg.org/ftp/gcrypt/gnutls/v$(GNUTLS_VERSION_MAJOR)
|
||||
GNUTLS_LICENSE = LGPL-2.1+ (core library), GPL-3.0+ (gnutls-openssl library)
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# From https://golang.org/dl/
|
||||
sha256 bc1ef02bb1668835db1390a2e478dcbccb5dd16911691af9d75184bbe5aa943e go1.11.5.src.tar.gz
|
||||
sha256 a96da1425dcbec094736033a8a416316547f8100ab4b72c31d4824d761d3e133 go1.11.6.src.tar.gz
|
||||
sha256 2d36597f7117c38b006835ae7f537487207d8ec407aa9d9980794b2030cbc067 LICENSE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
################################################################################
|
||||
|
||||
GO_VERSION = 1.11.5
|
||||
GO_VERSION = 1.11.6
|
||||
GO_SITE = https://storage.googleapis.com/golang
|
||||
GO_SOURCE = go$(GO_VERSION).src.tar.gz
|
||||
|
||||
@@ -37,13 +37,16 @@ GO_GOARCH = mips64le
|
||||
endif
|
||||
|
||||
HOST_GO_DEPENDENCIES = host-go-bootstrap
|
||||
HOST_GO_HOST_CACHE = $(HOST_DIR)/usr/share/host-go-cache
|
||||
HOST_GO_ROOT = $(HOST_DIR)/lib/go
|
||||
HOST_GO_TARGET_CACHE = $(HOST_DIR)/usr/share/go-cache
|
||||
|
||||
# For the convienience of target packages.
|
||||
HOST_GO_TOOLDIR = $(HOST_GO_ROOT)/pkg/tool/linux_$(GO_GOARCH)
|
||||
HOST_GO_TARGET_ENV = \
|
||||
GO111MODULE=off \
|
||||
GOARCH=$(GO_GOARCH) \
|
||||
GOCACHE="$(HOST_GO_TARGET_CACHE)" \
|
||||
GOROOT="$(HOST_GO_ROOT)" \
|
||||
CC="$(TARGET_CC)" \
|
||||
CXX="$(TARGET_CXX)" \
|
||||
@@ -63,6 +66,7 @@ endif
|
||||
# HOSTCC_NOCCACHE. See https://github.com/golang/go/issues/11685.
|
||||
HOST_GO_MAKE_ENV = \
|
||||
GO111MODULE=off \
|
||||
GOCACHE=$(HOST_GO_HOST_CACHE) \
|
||||
GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_ROOT) \
|
||||
GOROOT_FINAL=$(HOST_GO_ROOT) \
|
||||
GOROOT="$(@D)" \
|
||||
|
||||
@@ -242,10 +242,6 @@ config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_Y4M
|
||||
|
||||
comment "plugins with external dependencies (there may be more available)"
|
||||
|
||||
config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK
|
||||
bool "apexsink"
|
||||
select BR2_PACKAGE_OPENSSL
|
||||
|
||||
config BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BZ2
|
||||
bool "bz2"
|
||||
select BR2_PACKAGE_BZIP2
|
||||
@@ -324,14 +320,13 @@ config BR2_PACKAGE_GST_PLUGINS_BAD_ZBAR
|
||||
bool "zbar"
|
||||
depends on BR2_TOOLCHAIN_HAS_THREADS # zbar-> libv4l
|
||||
depends on BR2_USE_MMU # zbar-> libv4l
|
||||
depends on !BR2_STATIC_LIBS # zbar-> libv4l
|
||||
depends on BR2_INSTALL_LIBSTDCPP # zbar-> libv4l
|
||||
depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # zbar
|
||||
select BR2_PACKAGE_ZBAR
|
||||
|
||||
comment "zbar plugin needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.17"
|
||||
comment "zbar plugin needs a toolchain w/ threads, C++ and headers >= 3.17"
|
||||
depends on BR2_USE_MMU
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS \
|
||||
depends on !BR2_TOOLCHAIN_HAS_THREADS \
|
||||
|| !BR2_INSTALL_LIBSTDCPP || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17
|
||||
|
||||
endif
|
||||
|
||||
@@ -12,6 +12,7 @@ GST_PLUGINS_BAD_LICENSE = LGPL-2.1+, GPL-2.0+
|
||||
GST_PLUGINS_BAD_LICENSE_FILES = COPYING.LIB COPYING
|
||||
|
||||
GST_PLUGINS_BAD_CONF_OPTS = \
|
||||
--disable-apexsink \
|
||||
--disable-examples \
|
||||
--disable-spandsp
|
||||
|
||||
@@ -472,13 +473,6 @@ GST_PLUGINS_BAD_CONF_OPTS += --disable-y4m
|
||||
endif
|
||||
|
||||
# plugins with deps
|
||||
ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK),y)
|
||||
GST_PLUGINS_BAD_CONF_OPTS += --enable-apexsink
|
||||
GST_PLUGINS_BAD_DEPENDENCIES += openssl
|
||||
else
|
||||
GST_PLUGINS_BAD_CONF_OPTS += --disable-apexsink
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_BZ2),y)
|
||||
GST_PLUGINS_BAD_CONF_OPTS += --enable-bz2
|
||||
GST_PLUGINS_BAD_DEPENDENCIES += bzip2
|
||||
|
||||
@@ -12,26 +12,26 @@ GST_OMX_LICENSE = LGPL-2.1
|
||||
GST_OMX_LICENSE_FILES = COPYING
|
||||
|
||||
ifeq ($(BR2_PACKAGE_RPI_USERLAND),y)
|
||||
GST_OMX_CONF_OPTS = \
|
||||
--with-omx-target=rpi
|
||||
GST_OMX_VARIANT = rpi
|
||||
GST_OMX_CONF_ENV = \
|
||||
CFLAGS="$(TARGET_CFLAGS) \
|
||||
-I$(STAGING_DIR)/usr/include/IL \
|
||||
-I$(STAGING_DIR)/usr/include/interface/vcos/pthreads \
|
||||
-I$(STAGING_DIR)/usr/include/interface/vmcs_host/linux"
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_BELLAGIO),y)
|
||||
GST_OMX_CONF_OPTS = \
|
||||
--with-omx-target=bellagio
|
||||
else ifeq ($(BR2_PACKAGE_BELLAGIO),y)
|
||||
GST_OMX_VARIANT = bellagio
|
||||
GST_OMX_CONF_ENV = \
|
||||
CFLAGS="$(TARGET_CFLAGS) \
|
||||
-DOMX_VERSION_MAJOR=1 \
|
||||
-DOMX_VERSION_MINOR=1 \
|
||||
-DOMX_VERSION_REVISION=2 \
|
||||
-DOMX_VERSION_STEP=0"
|
||||
else
|
||||
GST_OMX_VARIANT = generic
|
||||
endif
|
||||
|
||||
GST_OMX_CONF_OPTS += --with-omx-target=$(GST_OMX_VARIANT)
|
||||
|
||||
GST_OMX_DEPENDENCIES = gstreamer1 gst1-plugins-base libopenmax
|
||||
|
||||
# adjust library paths to where buildroot installs them
|
||||
|
||||
@@ -11,7 +11,6 @@ GST1_PLUGINS_BASE_INSTALL_STAGING = YES
|
||||
GST1_PLUGINS_BASE_LICENSE_FILES = COPYING.LIB
|
||||
GST1_PLUGINS_BASE_LICENSE = LGPL-2.0+, LGPL-2.1+
|
||||
|
||||
# gio_unix_2_0 is only used for tests
|
||||
GST1_PLUGINS_BASE_CONF_OPTS = \
|
||||
--disable-examples \
|
||||
--disable-valgrind \
|
||||
|
||||
@@ -46,7 +46,7 @@ else
|
||||
GST1_PLUGINS_UGLY_CONF_OPTS += --disable-dvdsub
|
||||
endif
|
||||
|
||||
ifeq ($(BR2_PACKAGE_GST_PLUGINS_UGL1_PLUGIN_XINGMUX),y)
|
||||
ifeq ($(BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX),y)
|
||||
GST1_PLUGINS_UGLY_CONF_OPTS += --enable-xingmux
|
||||
else
|
||||
GST1_PLUGINS_UGLY_CONF_OPTS += --disable-xingmux
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user