ruby-macho 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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