Gentoo Archives: gentoo-commits

From: "Anthony G. Basile" <blueness@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/elfix:elfix-0.4.x commit in: scripts/, misc/test-revdep-pax/
Date: Thu, 29 Dec 2011 01:01:11
Message-Id: 2d9bd587c6863c924442f6a9d617afc1163272bb.blueness@gentoo
1 commit: 2d9bd587c6863c924442f6a9d617afc1163272bb
2 Author: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
3 AuthorDate: Thu Dec 29 00:46:48 2011 +0000
4 Commit: Anthony G. Basile <blueness <AT> gentoo <DOT> org>
5 CommitDate: Thu Dec 29 00:59:44 2011 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/elfix.git;a=commit;h=2d9bd587
7
8 scripts/revdep-pax: do complex markings
9
10 ---
11 misc/test-revdep-pax/testrevdeppax.sh | 8 +++++++-
12 scripts/revdep-pax | 24 ++++++++++++++++++------
13 2 files changed, 25 insertions(+), 7 deletions(-)
14
15 diff --git a/misc/test-revdep-pax/testrevdeppax.sh b/misc/test-revdep-pax/testrevdeppax.sh
16 index d841fae..8bd3156 100755
17 --- a/misc/test-revdep-pax/testrevdeppax.sh
18 +++ b/misc/test-revdep-pax/testrevdeppax.sh
19 @@ -1,6 +1,7 @@
20 #!/bin/bash
21
22 PAXCTLNG="/usr/sbin/paxctl-ng"
23 +PAXCTL="/sbin/paxctl"
24 BINARY="/usr/bin/testrevdeppax"
25 LIBRARY="/usr/lib/libmyrevdeppax.so.0.0.0"
26 REVDEPPAX="/usr/sbin/revdep-pax"
27 @@ -19,15 +20,20 @@ for i in "R" "r" "Rr"
28 do
29 for j in "R" "r" "Rr"
30 do
31 + echo "============================================================================"
32 $PAXCTLNG -z $BINARY
33 $PAXCTLNG -$i $BINARY
34 $PAXCTLNG -z $LIBRARY
35 - $PAXCTLNG -$j $LIBRARY
36 + $PAXCTLNG -m$j $LIBRARY
37 p=$i; [[ "$p" == "Rr" ]] && p="-"
38 echo "Binary -> $p"
39 p=$j; [[ "$p" == "Rr" ]] && p="-"
40 echo "Library -> $p"
41 $REVDEPPAX -m -y -l $LIBRARY
42 echo
43 + $PAXCTLNG -v $BINARY
44 + $PAXCTLNG -v $LIBRARY
45 + $PAXCTL -v $BINARY 2>/dev/null
46 + $PAXCTL -v $LIBRARY 2>/dev/null
47 done
48 done
49
50 diff --git a/scripts/revdep-pax b/scripts/revdep-pax
51 index b0d8bcc..76add9c 100755
52 --- a/scripts/revdep-pax
53 +++ b/scripts/revdep-pax
54 @@ -211,23 +211,35 @@ def migrate_flags(importer, exporter_str_flags, exporter_bin_flags):
55 # Force Off Force On Force Off + Warn
56 # Force Off Nothing Force Off
57
58 + #See /usr/include/elf.h for these values
59 + pf_flags = {
60 + 'P':1<<4, 'p':1<<5,
61 + 'S':1<<6, 's':1<<7,
62 + 'M':1<<8, 'm':1<<9,
63 + 'X':1<<10, 'x':1<<11,
64 + 'E':1<<12, 'e':1<<13,
65 + 'R':1<<14, 'r':1<<15
66 + }
67 +
68 ( importer_str_flags, importer_bin_flags ) = pax.getflags(importer)
69
70 result_bin_flags = exporter_bin_flags
71
72 for i in range(len(importer_str_flags)):
73 if importer_str_flags[i].isupper() and exporter_str_flags[i].islower():
74 - print '\t\tWarning: %s has %s, trying to set to %s' % (
75 + result_bin_flags = result_bin_flags ^ pf_flags[exporter_str_flags[i]]
76 + result_bin_flags = result_bin_flags | pf_flags[importer_str_flags[i]]
77 + print '\t\tWarning: %s has %s, refusing to set to %s' % (
78 importer, importer_str_flags[i], exporter_str_flags[i] ),
79 if importer_str_flags[i].isupper() and exporter_str_flags[i] == '-':
80 - print '\t\tWarning: %s has %s, trying to set to %s' % (
81 - importer, importer_str_flags[i], exporter_str_flags[i] ),
82 + result_bin_flags = result_bin_flags | pf_flags[importer_str_flags[i]]
83 if importer_str_flags[i].islower() and exporter_str_flags[i].isupper():
84 - print '\t\tWarning: %s has %s, trying to set to %s' % (
85 + result_bin_flags = result_bin_flags ^ pf_flags[exporter_str_flags[i]]
86 + result_bin_flags = result_bin_flags | pf_flags[importer_str_flags[i]]
87 + print '\t\tWarning: %s has %s, refusing to set to %s' % (
88 importer, importer_str_flags[i], exporter_str_flags[i] ),
89 if importer_str_flags[i].islower() and exporter_str_flags[i] == '-':
90 - print '\t\tWarning: %s has %s, trying to set to %s' % (
91 - importer, importer_str_flags[i], exporter_str_flags[i] ),
92 + result_bin_flags = result_bin_flags | pf_flags[importer_str_flags[i]]
93
94 pax.setflags(importer, result_bin_flags)