Skip to Content.
Sympa Menu

sm-commit - [SM-Commit] GIT changes to master grimoire by Remko van der Vossen (fc8f5e989e3176b1266614f579de4ea74a4af5db)

sm-commit AT lists.ibiblio.org

Subject: Source Mage code commit list

List archive

Chronological Thread  
  • From: Remko van der Vossen <scm AT sourcemage.org>
  • To: sm-commit AT lists.ibiblio.org
  • Subject: [SM-Commit] GIT changes to master grimoire by Remko van der Vossen (fc8f5e989e3176b1266614f579de4ea74a4af5db)
  • Date: Fri, 29 May 2015 19:44:10 +0000

GIT changes to master grimoire by Remko van der Vossen <wich AT sourcemage.org>:

gnu/gcc/HISTORY | 4 ++++
gnu/gcc/UP_TRIGGERS | 21 +++++++++++++++++----
2 files changed, 21 insertions(+), 4 deletions(-)

New commits:
commit fc8f5e989e3176b1266614f579de4ea74a4af5db
Author: Remko van der Vossen <wich AT sourcemage.org>
Commit: Remko van der Vossen <wich AT sourcemage.org>

gcc: find C++ spells based on ELF DT_NEEDED entries

diff --git a/gnu/gcc/HISTORY b/gnu/gcc/HISTORY
index 686d8be..57788d2 100644
--- a/gnu/gcc/HISTORY
+++ b/gnu/gcc/HISTORY
@@ -1,3 +1,7 @@
+2015-05-29 Remko van der Vossen <wich AT sourcemage.org>
+ * UP_TRIGGERS: find C++ ELF objects based on ELF DT_NEEDED entries
+ Probably more successful at finding all C++ ELF objects
+
2015-05-25 Thomas Orgis <sobukus AT sourcemage.org>
* DETAILS: There is no ecj-5.1, trying ecj-4.9.
I can compile a hello world example at least.
diff --git a/gnu/gcc/UP_TRIGGERS b/gnu/gcc/UP_TRIGGERS
index a3ef25a..9d126ee 100755
--- a/gnu/gcc/UP_TRIGGERS
+++ b/gnu/gcc/UP_TRIGGERS
@@ -1,3 +1,6 @@
+LC_ALL=C
+LC_CTYPE=C
+LANG=C
local OLD_SPELL_VERSION=""
spell_ok $SPELL && OLD_SPELL_VERSION="$(installed_version $SPELL)"
if [ "$VERSION" != "$OLD_SPELL_VERSION" ]; then
@@ -10,10 +13,20 @@ if [ "$VERSION" != "$OLD_SPELL_VERSION" ]; then
done &&

# for C++ ABI change in 5.1 and, probably, for each major version change
too
- if [[ ${OLD_SPELL_VERSION%%.*} != ${VERSION%%.*} ]]; then
- for each in $(grep "gcc:CXX" "$SUB_DEPENDS_STATUS" | cut -f1 -d:); do
- if spell_ok $each; then
- up_trigger $each cast_self
+ if list_find "$GCC_COMPILER" c++ \
+ && [[ ${OLD_SPELL_VERSION%%.*} != ${VERSION%%.*} ]]; then
+ message "This is an ABI incompatible update of g++..."
+ message "Determining which spells need to be recast, this may take a
while."
+
+ for other_spell in $(gaze installed | cut -d: -f1); do
+ [[ $SPELL != $other_spell ]] || continue
+ if gaze install $other_spell \
+ | xargs file -e apptype -e ascii -e compress -e tar \
+ | grep '\<ELF\>.*\<dynamically linked\>' \
+ | cut -d: -f1 \
+ | xargs readelf -d 2> /dev/null \
+ | grep -q 'NEEDED)[[:space:]]*Shared library: \[libstdc++'; then
+ up_trigger $other_spell cast_self
fi
done
fi



  • [SM-Commit] GIT changes to master grimoire by Remko van der Vossen (fc8f5e989e3176b1266614f579de4ea74a4af5db), Remko van der Vossen, 05/29/2015

Archive powered by MHonArc 2.6.24.

Top of Page