ruby-macho 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/macho.rb +1 -1
  3. data/lib/macho/headers.rb +136 -7
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3c89073083ac031f2efa7e6a6f4d8f17185078c7
4
- data.tar.gz: b49b996f5340a94e2baf58f10f05d21a251f6950
3
+ metadata.gz: 555d8c0f3cd81252ac1319053a95d643536387a2
4
+ data.tar.gz: 23a91b4980829b2b8d2133f226aeefbc4bd950b4
5
5
  SHA512:
6
- metadata.gz: 76490397fbbd8f1700dd460c973fa6cf4a6e55af84d9fca4dc27dbbb816e980f5641e6c6bb3db1eaa9530fd69f6e951674bbb88a3cbb85b3e386ef34f0f48a9f
7
- data.tar.gz: 8beba2a551711b917b6a40744317ace5b8e92891b570f98e63f3948db1836ed689642e4adffe495076a0dcaee18ed539002b39f60011edbd406073a6a6bd4f05
6
+ metadata.gz: 37f23f18f8a4a4c07933978d7be6bcb65cc6655f778496a8b2b5e2932cfa199f3230bb82399f1f964c06469ec74cece3fd9fb2ef4c6d39c2ef933eaa185ae96c
7
+ data.tar.gz: 39bfb1a708519820a4afbbccb6a47da8c7ef3ad2641d7ad5c7969709f50f4ce7ffc3369918238848da2786f49fd9e10209d0e7e0b6bbba96a2a9620b6f6bdfc6
data/lib/macho.rb CHANGED
@@ -12,5 +12,5 @@ require "#{File.dirname(__FILE__)}/macho/tools"
12
12
  # The primary namespace for ruby-macho.
13
13
  module MachO
14
14
  # release version
15
- VERSION = "0.2.3".freeze
15
+ VERSION = "0.2.4".freeze
16
16
  end
data/lib/macho/headers.rb CHANGED
@@ -34,6 +34,9 @@ module MachO
34
34
  # any CPU (unused?)
35
35
  CPU_TYPE_ANY = -1
36
36
 
37
+ # m68k compatible CPUs
38
+ CPU_TYPE_MC680X0 = 0x06
39
+
37
40
  # i386 and later compatible CPUs
38
41
  CPU_TYPE_I386 = 0x07
39
42
 
@@ -43,6 +46,9 @@ module MachO
43
46
  # 32-bit ARM compatible CPUs
44
47
  CPU_TYPE_ARM = 0x0c
45
48
 
49
+ # m88k compatible CPUs
50
+ CPU_TYPE_MC88000 = 0xd
51
+
46
52
  # 64-bit ARM compatible CPUs
47
53
  CPU_TYPE_ARM64 = (CPU_TYPE_ARM | CPU_ARCH_ABI64)
48
54
 
@@ -71,10 +77,42 @@ module MachO
71
77
  CPU_SUBTYPE_LIB64 = 0x80000000
72
78
 
73
79
  # the lowest common sub-type for `CPU_TYPE_I386`
74
- CPU_SUBTYPE_X86_ALL = 3
80
+ CPU_SUBTYPE_I386 = 3
81
+
82
+ # the i486 sub-type for `CPU_TYPE_I386`
83
+ CPU_SUBTYPE_486 = 4
84
+
85
+ # the i486SX sub-type for `CPU_TYPE_I386`
86
+ CPU_SUBTYPE_486SX = 132
87
+
88
+ # the i586 (P5, Pentium) sub-type for `CPU_TYPE_I386`
89
+ CPU_SUBTYPE_586 = 5
90
+ CPU_SUBTYPE_PENT = CPU_SUBTYPE_586
91
+
92
+ # the Pentium Pro (P6) sub-type for `CPU_TYPE_I386`
93
+ CPU_SUBTYPE_PENTPRO = 22
94
+
95
+ # the Pentium II (P6, M3?) sub-type for `CPU_TYPE_I386`
96
+ CPU_SUBTYPE_PENTII_M3 = 54
97
+
98
+ # the Pentium II (P6, M5?) sub-type for `CPU_TYPE_I386`
99
+ CPU_SUBTYPE_PENTII_M5 = 86
100
+
101
+ # the Pentium 4 (Netburst) sub-type for `CPU_TYPE_I386`
102
+ CPU_SUBTYPE_PENTIUM_4 = 10
103
+
104
+ # the lowest common sub-type for `CPU_TYPE_MC680X0`
105
+ CPU_SUBTYPE_MC680X0_ALL = 1
106
+ CPU_SUBTYPE_MC68030 = CPU_SUBTYPE_MC680X0_ALL
107
+
108
+ # the 040 subtype for `CPU_TYPE_MC680X0`
109
+ CPU_SUBTYPE_MC68040 = 2
110
+
111
+ # the 030 subtype for `CPU_TYPE_MC680X0`
112
+ CPU_SUBTYPE_MC68030_ONLY = 3
75
113
 
76
114
  # the lowest common sub-type for `CPU_TYPE_X86_64`
77
- CPU_SUBTYPE_X86_64_ALL = CPU_SUBTYPE_X86_ALL
115
+ CPU_SUBTYPE_X86_64_ALL = CPU_SUBTYPE_I386
78
116
 
79
117
  # the Haskell sub-type for `CPU_TYPE_X86_64`
80
118
  CPU_SUBTYPE_X86_64_H = 8
@@ -82,15 +120,39 @@ module MachO
82
120
  # the lowest common sub-type for `CPU_TYPE_ARM`
83
121
  CPU_SUBTYPE_ARM_ALL = 0
84
122
 
123
+ # the v4t sub-type for `CPU_TYPE_ARM`
124
+ CPU_SUBTYPE_ARM_V4T = 5
125
+
126
+ # the v6 sub-type for `CPU_TYPE_ARM`
127
+ CPU_SUBTYPE_ARM_V6 = 6
128
+
129
+ # the v5 sub-type for `CPU_TYPE_ARM`
130
+ CPU_SUBTYPE_ARM_V5TEJ = 7
131
+
132
+ # the xscale (v5 family) sub-type for `CPU_TYPE_ARM`
133
+ CPU_SUBTYPE_ARM_XSCALE = 8
134
+
85
135
  # the v7 sub-type for `CPU_TYPE_ARM`
86
136
  CPU_SUBTYPE_ARM_V7 = 9
87
137
 
88
- # the v7s sub-type for `CPU_TYPE_ARM`
138
+ # the v7f (Cortex A9) sub-type for `CPU_TYPE_ARM`
139
+ CPU_SUBTYPE_ARM_V7F = 10
140
+
141
+ # the v7s ("Swift") sub-type for `CPU_TYPE_ARM`
89
142
  CPU_SUBTYPE_ARM_V7S = 11
90
143
 
91
- # the v7k sub-type for `CPU_TYPE_ARM`
144
+ # the v7k ("Kirkwood40") sub-type for `CPU_TYPE_ARM`
92
145
  CPU_SUBTYPE_ARM_V7K = 12
93
146
 
147
+ # the v6m sub-type for `CPU_TYPE_ARM`
148
+ CPU_SUBTYPE_ARM_V6M = 14
149
+
150
+ # the v7m sub-type for `CPU_TYPE_ARM`
151
+ CPU_SUBTYPE_ARM_V7M = 15
152
+
153
+ # the v7em sub-type for `CPU_TYPE_ARM`
154
+ CPU_SUBTYPE_ARM_V7EM = 16
155
+
94
156
  # the v8 sub-type for `CPU_TYPE_ARM`
95
157
  CPU_SUBTYPE_ARM_V8 = 13
96
158
 
@@ -100,9 +162,43 @@ module MachO
100
162
  # the v8 sub-type for `CPU_TYPE_ARM64`
101
163
  CPU_SUBTYPE_ARM64_V8 = 1
102
164
 
165
+ # the lowest common sub-type for `CPU_TYPE_MC88000`
166
+ CPU_SUBTYPE_MC88000_ALL = 0
167
+ CPU_SUBTYPE_MMAX_JPC = CPU_SUBTYPE_MC88000_ALL
168
+
169
+ # the 100 sub-type for `CPU_TYPE_MC88000`
170
+ CPU_SUBTYPE_MC88100 = 1
171
+
172
+ # the 110 sub-type for `CPU_TYPE_MC88000`
173
+ CPU_SUBTYPE_MC88110 = 2
174
+
103
175
  # the lowest common sub-type for `CPU_TYPE_POWERPC`
104
176
  CPU_SUBTYPE_POWERPC_ALL = 0
105
177
 
178
+ # the 601 sub-type for `CPU_TYPE_POWERPC`
179
+ CPU_SUBTYPE_POWERPC_601 = 1
180
+
181
+ # the 602 sub-type for `CPU_TYPE_POWERPC`
182
+ CPU_SUBTYPE_POWERPC_602 = 2
183
+
184
+ # the 603 sub-type for `CPU_TYPE_POWERPC`
185
+ CPU_SUBTYPE_POWERPC_603 = 3
186
+
187
+ # the 603e (G2) sub-type for `CPU_TYPE_POWERPC`
188
+ CPU_SUBTYPE_POWERPC_603E = 4
189
+
190
+ # the 603ev sub-type for `CPU_TYPE_POWERPC`
191
+ CPU_SUBTYPE_POWERPC_603EV = 5
192
+
193
+ # the 604 sub-type for `CPU_TYPE_POWERPC`
194
+ CPU_SUBTYPE_POWERPC_604 = 6
195
+
196
+ # the 604e sub-type for `CPU_TYPE_POWERPC`
197
+ CPU_SUBTYPE_POWERPC_604E = 7
198
+
199
+ # the 620 sub-type for `CPU_TYPE_POWERPC`
200
+ CPU_SUBTYPE_POWERPC_620 = 8
201
+
106
202
  # the 750 (G3) sub-type for `CPU_TYPE_POWERPC`
107
203
  CPU_SUBTYPE_POWERPC_750 = 9
108
204
 
@@ -118,10 +214,19 @@ module MachO
118
214
  # any CPU sub-type for CPU type `CPU_TYPE_POWERPC64`
119
215
  CPU_SUBTYPE_POWERPC64_ALL = CPU_SUBTYPE_POWERPC_ALL
120
216
 
121
- # association of CPU types/subtype pairs to symbol representations
217
+ # association of CPU types/subtype pairs to symbol representations in
218
+ # (very) roughly descending order of commonness
219
+ # @see https://opensource.apple.com/source/cctools/cctools-877.8/libstuff/arch.c
122
220
  CPU_SUBTYPES = {
123
221
  CPU_TYPE_I386 => {
124
- CPU_SUBTYPE_X86_ALL => :i386,
222
+ CPU_SUBTYPE_I386 => :i386,
223
+ CPU_SUBTYPE_486 => :i486,
224
+ CPU_SUBTYPE_486SX => :i486SX,
225
+ CPU_SUBTYPE_586 => :i586, # also "pentium" in arch(3)
226
+ CPU_SUBTYPE_PENTPRO => :i686, # also "pentpro" in arch(3)
227
+ CPU_SUBTYPE_PENTII_M3 => :pentIIm3,
228
+ CPU_SUBTYPE_PENTII_M5 => :pentIIm5,
229
+ CPU_SUBTYPE_PENTIUM_4 => :pentium4,
125
230
  }.freeze,
126
231
  CPU_TYPE_X86_64 => {
127
232
  CPU_SUBTYPE_X86_64_ALL => :x86_64,
@@ -129,17 +234,31 @@ module MachO
129
234
  }.freeze,
130
235
  CPU_TYPE_ARM => {
131
236
  CPU_SUBTYPE_ARM_ALL => :arm,
237
+ CPU_SUBTYPE_ARM_V4T => :armv4t,
238
+ CPU_SUBTYPE_ARM_V6 => :armv6,
239
+ CPU_SUBTYPE_ARM_V5TEJ => :armv5,
240
+ CPU_SUBTYPE_ARM_XSCALE => :xscale,
132
241
  CPU_SUBTYPE_ARM_V7 => :armv7,
242
+ CPU_SUBTYPE_ARM_V7F => :armv7f,
133
243
  CPU_SUBTYPE_ARM_V7S => :armv7s,
134
244
  CPU_SUBTYPE_ARM_V7K => :armv7k,
245
+ CPU_SUBTYPE_ARM_V6M => :armv6m,
246
+ CPU_SUBTYPE_ARM_V7M => :armv7m,
247
+ CPU_SUBTYPE_ARM_V7EM => :armv7em,
135
248
  CPU_SUBTYPE_ARM_V8 => :armv8,
136
249
  }.freeze,
137
250
  CPU_TYPE_ARM64 => {
138
251
  CPU_SUBTYPE_ARM64_ALL => :arm64,
139
- CPU_SUBTYPE_ARM64_V8 => :armv8,
252
+ CPU_SUBTYPE_ARM64_V8 => :arm64v8,
140
253
  }.freeze,
141
254
  CPU_TYPE_POWERPC => {
142
255
  CPU_SUBTYPE_POWERPC_ALL => :ppc,
256
+ CPU_SUBTYPE_POWERPC_601 => :ppc601,
257
+ CPU_SUBTYPE_POWERPC_603 => :ppc603,
258
+ CPU_SUBTYPE_POWERPC_603E => :ppc603e,
259
+ CPU_SUBTYPE_POWERPC_603EV => :ppc603ev,
260
+ CPU_SUBTYPE_POWERPC_604 => :ppc604,
261
+ CPU_SUBTYPE_POWERPC_604E => :ppc604e,
143
262
  CPU_SUBTYPE_POWERPC_750 => :ppc750,
144
263
  CPU_SUBTYPE_POWERPC_7400 => :ppc7400,
145
264
  CPU_SUBTYPE_POWERPC_7450 => :ppc7450,
@@ -147,7 +266,17 @@ module MachO
147
266
  }.freeze,
148
267
  CPU_TYPE_POWERPC64 => {
149
268
  CPU_SUBTYPE_POWERPC64_ALL => :ppc64,
269
+ # apparently the only exception to the naming scheme
270
+ CPU_SUBTYPE_POWERPC_970 => :ppc970_64,
150
271
  }.freeze,
272
+ CPU_TYPE_MC680X0 => {
273
+ CPU_SUBTYPE_MC680X0_ALL => :m68k,
274
+ CPU_SUBTYPE_MC68030 => :mc68030,
275
+ CPU_SUBTYPE_MC68040 => :mc68040,
276
+ },
277
+ CPU_TYPE_MC88000 => {
278
+ CPU_SUBTYPE_MC88000_ALL => :m88k,
279
+ },
151
280
  }.freeze
152
281
 
153
282
  # relocatable object file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-macho
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - William Woodruff
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-16 00:00:00.000000000 Z
11
+ date: 2016-06-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A library for viewing and manipulating Mach-O files in Ruby.
14
14
  email: william@tuffbizz.com