ruby-yasm 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ doc
2
+ pkg
3
+ tmp/*
4
+ scripts/*_wordlist.txt
5
+ .yardoc
6
+ .DS_Store
7
+ *.db
8
+ *.log
9
+ *.swp
10
+ *~
data/.specopts ADDED
@@ -0,0 +1 @@
1
+ --colour --format specdoc
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --markup markdown --title 'Ruby YASM Documentation' --protected --files ChangeLog.md,LICENSE.txt
data/ChangeLog.md ADDED
@@ -0,0 +1,10 @@
1
+ ### 0.1.1 / 2010-04-15
2
+
3
+ * Migrated to [Jeweler](http://github.com/technicalpickles/jeweler)
4
+ for packaging rubygems.
5
+ * Fixed a few critical typos.
6
+
7
+ ### 0.1.0 / 2009-12-24
8
+
9
+ * Initial release.
10
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ (The MIT License)
2
+
3
+ Copyright (c) 2009-2010 Hal Brodigan
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ 'Software'), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # ruby-yasm
2
+
3
+ * [github.com/sophsec/ruby-yasm](http://github.com/sophsec/ruby-yasm/)
4
+ * [github.com/sophsec/ruby-yasm/issues](http://github.com/sophsec/ruby-yasm/issues)
5
+ * [www.tortall.net/projects/yasm](http://www.tortall.net/projects/yasm/)
6
+ * [www.sophsec.com](http://www.sophsec.com/)
7
+ * Postmodern (postmodern.mod3 at gmail.com)
8
+
9
+ ## Description
10
+
11
+ A Ruby interface to YASM.
12
+
13
+ YASM is a complete rewrite of the NASM assembler, YASM currently supports
14
+ the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes,
15
+ outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32,
16
+ and Win64 object formats, and generates source debugging information in
17
+ STABS, DWARF 2, and CodeView 8 formats.
18
+
19
+ ## Features
20
+
21
+ * Supports all of the `yasm` command-line options.
22
+
23
+ ## Examples
24
+
25
+ Assemble a binary file:
26
+
27
+ YASM::Program.assemble do |yasm|
28
+ yasm.syntax = :gas
29
+ yasm.file = 'hello_world.S'
30
+ yasm.output = 'hello_world.o'
31
+ end
32
+
33
+ Assemble amd64 assembly, in GAS syntax, into an ELF64 file with
34
+ debugging information:
35
+
36
+ YASM::Program.assemble do |yasm|
37
+ yasm.target! :amd64
38
+
39
+ yasm.syntax = :gas
40
+ yasm.file = 'hello_world.S'
41
+
42
+ yasm.output = 'hello_world.o'
43
+ yasm.output_format = :elf64
44
+ yasm.debug_format = :stabs
45
+ end
46
+
47
+ ## Requirements
48
+
49
+ * [yasm](http://www.tortall.net/projects/yasm/) >= 0.8.0.
50
+ * [rprogram](http://rprogram.rubyforge.org/) >= 0.1.8.
51
+
52
+ ## Install
53
+
54
+ $ sudo gem install ruby-yasm
55
+
56
+ ## License
57
+
58
+ See {file:LICENSE.txt} for license information.
59
+
data/Rakefile CHANGED
@@ -1,27 +1,43 @@
1
- # -*- ruby -*-
2
-
3
1
  require 'rubygems'
4
- require 'hoe'
5
- require 'hoe/signing'
6
- require './tasks/spec.rb'
7
- require './tasks/yard.rb'
2
+ require 'rake'
3
+ require './lib/yasm/version.rb'
8
4
 
9
- Hoe.spec('ruby-yasm') do
10
- self.developer('Postmodern', 'postmodern.mod3@gmail.com')
11
- self.remote_rdoc_dir = '/'
12
- self.readme_file = 'README.rdoc'
13
- self.history_file = 'History.rdoc'
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |gem|
8
+ gem.name = 'ruby-yasm'
9
+ gem.version = YASM::VERSION
10
+ gem.summary = %Q{A Ruby interface to YASM.}
11
+ gem.description = %Q{A Ruby interface to YASM.}
12
+ gem.email = 'postmodern.mod3@gmail.com'
13
+ gem.homepage = 'http://github.com/sophsec/ruby-yasm'
14
+ gem.authors = ['Postmodern']
15
+ gem.add_dependency 'rprogram', '~> 0.1.8'
16
+ gem.add_development_dependency 'rspec', '~> 1.3.0'
17
+ gem.add_development_dependency 'yard', '~> 0.5.3'
18
+ gem.has_rdoc = 'yard'
19
+ end
20
+ Jeweler::GemcutterTasks.new
21
+ rescue LoadError
22
+ puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
23
+ end
14
24
 
15
- self.extra_deps = [
16
- ['rprogram', '>=0.1.8']
17
- ]
25
+ require 'spec/rake/spectask'
26
+ Spec::Rake::SpecTask.new(:spec) do |spec|
27
+ spec.libs += ['lib', 'spec']
28
+ spec.spec_files = FileList['spec/**/*_spec.rb']
29
+ spec.spec_opts = ['--options', '.specopts']
30
+ end
18
31
 
19
- self.extra_dev_deps = [
20
- ['rspec', '>=1.2.9'],
21
- ['yard', '>=0.5.2']
22
- ]
32
+ task :spec => :check_dependencies
33
+ task :default => :spec
23
34
 
24
- self.spec_extras = {:has_rdoc => 'yard'}
25
- end
35
+ begin
36
+ require 'yard'
26
37
 
27
- # vim: syntax=ruby
38
+ YARD::Rake::YardocTask.new
39
+ rescue LoadError
40
+ task :yard do
41
+ abort "YARD is not available. In order to run yard, you must: gem install yard"
42
+ end
43
+ end
data/lib/yasm/program.rb CHANGED
@@ -9,7 +9,7 @@ module YASM
9
9
  name_program 'yasm'
10
10
 
11
11
  #
12
- # Finds the +yasm+ program and assembles a file.
12
+ # Finds the `yasm` program and assembles a file.
13
13
  #
14
14
  # @param [Hash{Symbol => Object}] options
15
15
  # Additional options for yasm.
@@ -24,29 +24,20 @@ module YASM
24
24
  # @return [Boolean]
25
25
  # Specifies whether the command exited normally.
26
26
  #
27
- def self.assmeble(options={},&block)
28
- self.find().assemble(options,&block)
29
- end
30
-
27
+ # @example
28
+ # Program.assemble(:parser => :gas, :output => 'code.o', :file => 'code.S')
31
29
  #
32
- # Finds the +yasm+ program, then assembles an assembly file and writes
33
- # the output to a temporary file.
34
- #
35
- # @param [Hash{Symbol => Object}] options
36
- # Additional options for yasm.
30
+ # @example
31
+ # Program.assemble do |yasm|
32
+ # yasm.target! :x86
37
33
  #
38
- # @yield [task]
39
- # If a block is given, it will be passed a task object used to
40
- # specify options for yasm.
34
+ # yasm.syntax = :gas
35
+ # yasm.file = 'code.S'
36
+ # yasm.output = 'code.o'
37
+ # end
41
38
  #
42
- # @yieldparam [Task] task
43
- # The yasm task object.
44
- #
45
- # @return [TempFile]
46
- # The temporary file containing the assembled object code.
47
- #
48
- def self.assemble_temp(options={},&block)
49
- self.find().assemble(options,&block)
39
+ def Program.assemble(options={},&block)
40
+ Program.find().assemble(options,&block)
50
41
  end
51
42
 
52
43
  #
@@ -65,33 +56,20 @@ module YASM
65
56
  # @return [Boolean]
66
57
  # Specifies whether the command exited normally.
67
58
  #
68
- def assemble(options={},&block)
69
- run_task(Task.new(options,&block))
70
- end
71
-
72
- #
73
- # Assembles an assembly file and writes the output to a temporary file.
74
- #
75
- # @param [Hash{Symbol => Object}] options
76
- # Additional options for yasm.
77
- #
78
- # @yield [task]
79
- # If a block is given, it will be passed a task object used to
80
- # specify options for yasm.
59
+ # @example
60
+ # Program.assemble(:parser => :gas, :output => 'code.o', :file => 'code.S')
81
61
  #
82
- # @yieldparam [Task] task
83
- # The yasm task object.
62
+ # @example
63
+ # Program.assemble do |yasm|
64
+ # yasm.target! :x86
84
65
  #
85
- # @return [TempFile]
86
- # The temporary file containing the assembled object code.
66
+ # yasm.syntax = :gas
67
+ # yasm.file = 'code.S'
68
+ # yasm.output = 'code.o'
69
+ # end
87
70
  #
88
- def assemble_temp(options={},&block)
89
- task = Task.new(options,&block)
90
- task.output = Tempfile.new('yasm').path
91
-
92
- if run_task(task)
93
- return task.output
94
- end
71
+ def assemble(options={},&block)
72
+ run_task(Task.new(options,&block))
95
73
  end
96
74
 
97
75
  end
data/lib/yasm/task.rb CHANGED
@@ -1,43 +1,41 @@
1
- require 'yasm/yasm'
2
-
3
1
  require 'rprogram/task'
4
2
 
5
3
  module YASM
6
4
  #
7
- # == YASM options:
5
+ # ## YASM options:
8
6
  #
9
- # <tt>--version</tt>:: <tt>yasm.version</tt>
10
- # <tt>--license</tt>:: <tt>yasm.license</tt>
11
- # <tt>--help</tt>:: <tt>yasm.help</tt>
7
+ # * `--version` - `yasm.version`
8
+ # * `--license` - `yasm.license`
9
+ # * `--help` - `yasm.help`
12
10
  #
13
- # <tt>--arch</tt>:: <tt>yasm.arch</tt>
14
- # <tt>--parser</tt>:: <tt>yasm.parser</tt>
15
- # <tt>--preproc</tt>:: <tt>yasm.preprocessor</tt>
16
- # <tt>--oformat</tt>:: <tt>yasm.output_format</tt>
17
- # <tt>--dformat</tt>:: <tt>yasm.debug_format</tt>
18
- # <tt>--lformat</tt>:: <tt>yasm.list_format</tt>
11
+ # * `--arch` - `yasm.arch`
12
+ # * `--parser` - `yasm.parser`
13
+ # * `--preproc` - `yasm.preprocessor`
14
+ # * `--oformat` - `yasm.output_format`
15
+ # * `--dformat` - `yasm.debug_format`
16
+ # * `--lformat` - `yasm.list_format`
19
17
  #
20
- # <tt>--list</tt>:: <tt>yasm.list_file</tt>
21
- # <tt>--objfile</tt>:: <tt>yasm.output</tt>
22
- # <tt>--mapfile</tt>:: <tt>yasm.map_file</tt>
18
+ # * `--list` - `yasm.list_file`
19
+ # * `--objfile` - `yasm.output`
20
+ # * `--mapfile` - `yasm.map_file`
23
21
  #
24
- # <tt>--machine</tt>:: <tt>yasm.machine</tt>
25
- # <tt>--force-strict</tt>:: <tt>yasm.force_strict</tt>
26
- # <tt>-w</tt>:: <tt>yasm.inhibit_warnings</tt>
27
- # <tt>-W</tt>:: <tt>yasm.toggle_warnings</tt>
28
- # <tt>-M</tt>:: <tt>yasm.gen_makefile_deps</tt>
29
- # <tt>-E</tt>:: <tt>yasm.redirect_errors_to</tt>
30
- # <tt>-e</tt>:: <tt>yasm.redirect_errors</tt>
31
- # <tt>--preproc-only</tt>:: <tt>yasm.preprocessor_only</tt>
32
- # <tt>-I</tt>:: <tt>yasm.include</tt>
33
- # <tt>-P</tt>:: <tt>yasm.pre_include</tt>
34
- # <tt>-D</tt>:: <tt>yasm.define</tt>
35
- # <tt>-U</tt>:: <tt>yasm.undefine</tt>
36
- # <tt>-X</tt>:: <tt>yasm.message_style</tt>
37
- # <tt>--prefix</tt>:: <tt>yasm.prefix</tt>
38
- # <tt>--suffix</tt>:: <tt>yasm.suffix</tt>
22
+ # * `--machine` - `yasm.machine`
23
+ # * `--force-strict` - `yasm.force_strict`
24
+ # * `-w` - `yasm.inhibit_warnings`
25
+ # * `-W` - `yasm.toggle_warnings`
26
+ # * `-M` - `yasm.gen_makefile_deps`
27
+ # * `-E` - `yasm.redirect_errors_to`
28
+ # * `-e` - `yasm.redirect_errors`
29
+ # * `--preproc-only` - `yasm.preprocessor_only`
30
+ # * `-I` - `yasm.include`
31
+ # * `-P` - `yasm.pre_include`
32
+ # * `-D` - `yasm.define`
33
+ # * `-U` - `yasm.undefine`
34
+ # * `-X` - `yasm.message_style`
35
+ # * `--prefix` - `yasm.prefix`
36
+ # * `--suffix` - `yasm.suffix`
39
37
  #
40
- # <tt>file</tt>:: <tt>yasm.file</tt>
38
+ # * `file` - `yasm.file`
41
39
  #
42
40
  class Task < RProgram::Task
43
41
 
@@ -119,16 +117,10 @@ module YASM
119
117
  super(options,&block)
120
118
 
121
119
  self.target!(target) if target
122
-
123
- self.parser ||= YASM.parser
124
- self.arch ||= YASM.arch
125
- self.machine ||= YASM.machine
126
- self.debug_format ||= YASM.debug_format
127
- self.output_format ||= YASM.output_format
128
120
  end
129
121
 
130
122
  #
131
- # Sets the YASM +arch+ and +machine+.
123
+ # Sets the YASM `arch` and `machine`.
132
124
  #
133
125
  # @param [String, Symbol] name
134
126
  # The target name.
@@ -137,7 +129,7 @@ module YASM
137
129
  # The specified target is unknown.
138
130
  #
139
131
  # @return [true]
140
- # The YASM +arch+ and +machine+ options were set successfully.
132
+ # The YASM `arch` and `machine` options were set successfully.
141
133
  #
142
134
  # @example
143
135
  # yasm.target! :amd64
data/lib/yasm/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module YASM
2
2
  # ruby-yasm VERSION
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
data/ruby-yasm.gemspec ADDED
@@ -0,0 +1,73 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ruby-yasm}
8
+ s.version = "0.1.1"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Postmodern"]
12
+ s.date = %q{2010-04-15}
13
+ s.description = %q{A Ruby interface to YASM.}
14
+ s.email = %q{postmodern.mod3@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "ChangeLog.md",
17
+ "LICENSE.txt",
18
+ "README.md"
19
+ ]
20
+ s.files = [
21
+ ".gitignore",
22
+ ".specopts",
23
+ ".yardopts",
24
+ "ChangeLog.md",
25
+ "LICENSE.txt",
26
+ "README.md",
27
+ "Rakefile",
28
+ "lib/yasm.rb",
29
+ "lib/yasm/program.rb",
30
+ "lib/yasm/task.rb",
31
+ "lib/yasm/version.rb",
32
+ "ruby-yasm.gemspec",
33
+ "spec/helpers/files.rb",
34
+ "spec/helpers/files/gas.S",
35
+ "spec/program_spec.rb",
36
+ "spec/spec_helper.rb",
37
+ "spec/task_spec.rb",
38
+ "spec/yasm_spec.rb"
39
+ ]
40
+ s.has_rdoc = %q{yard}
41
+ s.homepage = %q{http://github.com/sophsec/ruby-yasm}
42
+ s.rdoc_options = ["--charset=UTF-8"]
43
+ s.require_paths = ["lib"]
44
+ s.rubygems_version = %q{1.3.6}
45
+ s.summary = %q{A Ruby interface to YASM.}
46
+ s.test_files = [
47
+ "spec/spec_helper.rb",
48
+ "spec/yasm_spec.rb",
49
+ "spec/helpers/files.rb",
50
+ "spec/program_spec.rb",
51
+ "spec/task_spec.rb"
52
+ ]
53
+
54
+ if s.respond_to? :specification_version then
55
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
56
+ s.specification_version = 3
57
+
58
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
59
+ s.add_runtime_dependency(%q<rprogram>, ["~> 0.1.8"])
60
+ s.add_development_dependency(%q<rspec>, ["~> 1.3.0"])
61
+ s.add_development_dependency(%q<yard>, ["~> 0.5.3"])
62
+ else
63
+ s.add_dependency(%q<rprogram>, ["~> 0.1.8"])
64
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
65
+ s.add_dependency(%q<yard>, ["~> 0.5.3"])
66
+ end
67
+ else
68
+ s.add_dependency(%q<rprogram>, ["~> 0.1.8"])
69
+ s.add_dependency(%q<rspec>, ["~> 1.3.0"])
70
+ s.add_dependency(%q<yard>, ["~> 0.5.3"])
71
+ end
72
+ end
73
+
data/spec/program_spec.rb CHANGED
@@ -23,16 +23,4 @@ describe Program do
23
23
 
24
24
  File.size(file).should > 0
25
25
  end
26
-
27
- it "should assemble a file, and write the output to a temporary file" do
28
- file = @yasm.assemble_temp do |yasm|
29
- yasm.target! :x86
30
-
31
- yasm.syntax = :gas
32
- yasm.file = assembly_file('gas')
33
- end
34
-
35
- file.should_not be_nil
36
- File.size(file).should > 0
37
- end
38
26
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'rubygems'
2
- gem 'rspec', '>=1.2.9'
2
+ gem 'rspec', '>=1.3.0'
3
3
  require 'spec'
4
4
 
5
5
  require 'yasm/version'
data/spec/task_spec.rb CHANGED
@@ -10,118 +10,6 @@ describe Task do
10
10
  task.machine.should == :amd64
11
11
  end
12
12
 
13
- describe "default" do
14
- describe "parser" do
15
- before(:all) do
16
- @old_parser = YASM.parser
17
-
18
- YASM.parser = :tasm
19
- end
20
-
21
- it "should have a default parser value" do
22
- task = Task.new
23
- task.parser.should == :tasm
24
- end
25
-
26
- it "should allow overriding the default parser" do
27
- task = Task.new(:parser => :gas)
28
- task.parser.should == :gas
29
- end
30
-
31
- after(:all) do
32
- YASM.parser = @old_parser
33
- end
34
- end
35
-
36
- describe "arch" do
37
- before(:all) do
38
- @old_arch = YASM.arch
39
-
40
- YASM.arch = :lc3b
41
- end
42
-
43
- it "should have a default arch value" do
44
- task = Task.new
45
- task.arch.should == :lc3b
46
- end
47
-
48
- it "should allow overriding the default arch" do
49
- task = Task.new(:arch => :x86)
50
- task.arch.should == :x86
51
- end
52
-
53
- after(:all) do
54
- YASM.arch = @old_arch
55
- end
56
- end
57
-
58
- describe "machine" do
59
- before(:all) do
60
- @old_machine = YASM.machine
61
-
62
- YASM.machine = :amd64
63
- end
64
-
65
- it "should have a default machine value" do
66
- task = Task.new
67
- task.machine.should == :amd64
68
- end
69
-
70
- it "should allow overriding the default machine" do
71
- task = Task.new(:machine => :x86)
72
- task.machine.should == :x86
73
- end
74
-
75
- after(:all) do
76
- YASM.machine = @old_machine
77
- end
78
- end
79
-
80
- describe "debug_format" do
81
- before(:all) do
82
- @old_debug_format = YASM.debug_format
83
-
84
- YASM.debug_format = :stabs
85
- end
86
-
87
- it "should have a default debug_format value" do
88
- task = Task.new
89
- task.debug_format.should == :stabs
90
- end
91
-
92
- it "should allow overriding the default debug_format" do
93
- task = Task.new(:debug_format => :null)
94
- task.debug_format.should == :null
95
- end
96
-
97
- after(:all) do
98
- YASM.debug_format = @old_debug_format
99
- end
100
- end
101
-
102
- describe "output_format" do
103
- before(:all) do
104
- @old_output_format = YASM.output_format
105
-
106
- YASM.output_format = :elf64
107
- end
108
-
109
- it "should have a default output_format value" do
110
- task = Task.new
111
- task.output_format.should == :elf64
112
- end
113
-
114
- it "should allow overriding the default output_format" do
115
- task = Task.new(:output_format => :bin)
116
- task.output_format.should == :bin
117
- end
118
-
119
- after(:all) do
120
- YASM.output_format = @old_output_format
121
- end
122
- end
123
- end
124
-
125
13
  describe "target!" do
126
14
  it "should return true for valid targets" do
127
15
  task = Task.new
metadata CHANGED
@@ -1,140 +1,126 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-yasm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 1
9
+ version: 0.1.1
5
10
  platform: ruby
6
11
  authors:
7
12
  - Postmodern
8
13
  autorequire:
9
14
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDQDCCAiigAwIBAgIBADANBgkqhkiG9w0BAQUFADBGMRgwFgYDVQQDDA9wb3N0
14
- bW9kZXJuLm1vZDMxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixk
15
- ARkWA2NvbTAeFw0wOTA2MDMwNDU5MDNaFw0xMDA2MDMwNDU5MDNaMEYxGDAWBgNV
16
- BAMMD3Bvc3Rtb2Rlcm4ubW9kMzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYK
17
- CZImiZPyLGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
18
- 1wvANkTDHFgVih5XLjuTwTZjgBq1lBGybXJiH6Id1lY2JOMqM5FB1DDHVvvij94i
19
- mJabN0zkzu6VKWC70y0IwOxY7CPokr0eFdK/D0y7mCq1P8QITv76i2YqAl0eYqIt
20
- W+IhIkANQ7E6uMZIZcdnfadC6lPAtlKkqtd9crvRbFgr6e3kyflmohbRnTEJHoRd
21
- 7SHHsybE6DSn7oTDs6XBTNrNIn5VfZA0z01eeos/+zBm1zKJOK2+/7xtLLDuDU9G
22
- +Rd+ltUBbvxUrMNZmDG29pnmN2xTRH+Q8HxD2AxlvM5SRpK6OeZaHV7PaCCAVZ4L
23
- T9BFl1sfMvRlABeGEkSyuQIDAQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
- sDAdBgNVHQ4EFgQUKwsd+PqEYmBvyaTyoL+uRuk+PhEwDQYJKoZIhvcNAQEFBQAD
25
- ggEBAB4TvHsrlbcXcKg6gX5BIb9tI+zGkpzo0Z7jnxMEcNO7NGGwmzafDBI/xZYv
26
- xkRH3/HXbGGYDOi6Q6gWt5GujSx0bOImDtYTJTH8jnzN92HzEK5WdScm1QpZKF1e
27
- cezArMbxbSPaosxTCtG6LQTkE28lFQsmFZ5xzouugS4h5+LVJiVMmiP+l3EfkjFa
28
- GOURU+rNEMPWo8MCWivGW7jes6BMzWHcW7DQ0scNVmIcCIgdyMmpscuAEOSeghy9
29
- /fFs57Ey2OXBL55nDOyvN/ZQ2Vab05UH4t+GCxjAPeirzL/29FBtePT6VD44c38j
30
- pDj+ws7QjtH/Qcrr1l9jfN0ehDs=
31
- -----END CERTIFICATE-----
15
+ cert_chain: []
32
16
 
33
- date: 2009-12-27 00:00:00 -08:00
17
+ date: 2010-04-15 00:00:00 -07:00
34
18
  default_executable:
35
19
  dependencies:
36
20
  - !ruby/object:Gem::Dependency
37
21
  name: rprogram
38
- type: :runtime
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
41
24
  requirements:
42
- - - ">="
25
+ - - ~>
43
26
  - !ruby/object:Gem::Version
27
+ segments:
28
+ - 0
29
+ - 1
30
+ - 8
44
31
  version: 0.1.8
45
- version:
32
+ type: :runtime
33
+ version_requirements: *id001
46
34
  - !ruby/object:Gem::Dependency
47
35
  name: rspec
48
- type: :development
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
51
38
  requirements:
52
- - - ">="
39
+ - - ~>
53
40
  - !ruby/object:Gem::Version
54
- version: 1.2.9
55
- version:
41
+ segments:
42
+ - 1
43
+ - 3
44
+ - 0
45
+ version: 1.3.0
46
+ type: :development
47
+ version_requirements: *id002
56
48
  - !ruby/object:Gem::Dependency
57
49
  name: yard
58
- type: :development
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
61
52
  requirements:
62
- - - ">="
53
+ - - ~>
63
54
  - !ruby/object:Gem::Version
64
- version: 0.5.2
65
- version:
66
- - !ruby/object:Gem::Dependency
67
- name: hoe
55
+ segments:
56
+ - 0
57
+ - 5
58
+ - 3
59
+ version: 0.5.3
68
60
  type: :development
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- version: 2.4.0
75
- version:
76
- description: |-
77
- A Ruby interface to YASM.
78
-
79
- YASM is a complete rewrite of the NASM assembler, YASM currently supports
80
- the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes,
81
- outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32,
82
- and Win64 object formats, and generates source debugging information in
83
- STABS, DWARF 2, and CodeView 8 formats.
84
- email:
85
- - postmodern.mod3@gmail.com
61
+ version_requirements: *id003
62
+ description: A Ruby interface to YASM.
63
+ email: postmodern.mod3@gmail.com
86
64
  executables: []
87
65
 
88
66
  extensions: []
89
67
 
90
68
  extra_rdoc_files:
91
- - Manifest.txt
69
+ - ChangeLog.md
70
+ - LICENSE.txt
71
+ - README.md
92
72
  files:
93
- - History.rdoc
94
- - Manifest.txt
95
- - README.rdoc
73
+ - .gitignore
74
+ - .specopts
75
+ - .yardopts
76
+ - ChangeLog.md
77
+ - LICENSE.txt
78
+ - README.md
96
79
  - Rakefile
97
80
  - lib/yasm.rb
98
- - lib/yasm/task.rb
99
81
  - lib/yasm/program.rb
100
- - lib/yasm/yasm.rb
82
+ - lib/yasm/task.rb
101
83
  - lib/yasm/version.rb
102
- - tasks/spec.rb
103
- - tasks/yard.rb
104
- - spec/spec_helper.rb
84
+ - ruby-yasm.gemspec
105
85
  - spec/helpers/files.rb
106
86
  - spec/helpers/files/gas.S
107
- - spec/task_spec.rb
108
87
  - spec/program_spec.rb
88
+ - spec/spec_helper.rb
89
+ - spec/task_spec.rb
109
90
  - spec/yasm_spec.rb
110
91
  has_rdoc: yard
111
- homepage: http://www.tortall.net/projects/yasm/
92
+ homepage: http://github.com/sophsec/ruby-yasm
112
93
  licenses: []
113
94
 
114
95
  post_install_message:
115
96
  rdoc_options:
116
- - --main
117
- - README.rdoc
97
+ - --charset=UTF-8
118
98
  require_paths:
119
99
  - lib
120
100
  required_ruby_version: !ruby/object:Gem::Requirement
121
101
  requirements:
122
102
  - - ">="
123
103
  - !ruby/object:Gem::Version
104
+ segments:
105
+ - 0
124
106
  version: "0"
125
- version:
126
107
  required_rubygems_version: !ruby/object:Gem::Requirement
127
108
  requirements:
128
109
  - - ">="
129
110
  - !ruby/object:Gem::Version
111
+ segments:
112
+ - 0
130
113
  version: "0"
131
- version:
132
114
  requirements: []
133
115
 
134
- rubyforge_project: ruby-yasm
135
- rubygems_version: 1.3.5
116
+ rubyforge_project:
117
+ rubygems_version: 1.3.6
136
118
  signing_key:
137
119
  specification_version: 3
138
- summary: A Ruby interface to YASM
139
- test_files: []
140
-
120
+ summary: A Ruby interface to YASM.
121
+ test_files:
122
+ - spec/spec_helper.rb
123
+ - spec/yasm_spec.rb
124
+ - spec/helpers/files.rb
125
+ - spec/program_spec.rb
126
+ - spec/task_spec.rb
data.tar.gz.sig DELETED
Binary file
data/History.rdoc DELETED
@@ -1,4 +0,0 @@
1
- === 0.1.0 / 2009-12-24
2
-
3
- * Initial release.
4
-
data/Manifest.txt DELETED
@@ -1,17 +0,0 @@
1
- History.rdoc
2
- Manifest.txt
3
- README.rdoc
4
- Rakefile
5
- lib/yasm.rb
6
- lib/yasm/task.rb
7
- lib/yasm/program.rb
8
- lib/yasm/yasm.rb
9
- lib/yasm/version.rb
10
- tasks/spec.rb
11
- tasks/yard.rb
12
- spec/spec_helper.rb
13
- spec/helpers/files.rb
14
- spec/helpers/files/gas.S
15
- spec/task_spec.rb
16
- spec/program_spec.rb
17
- spec/yasm_spec.rb
data/README.rdoc DELETED
@@ -1,85 +0,0 @@
1
- = ruby-yasm
2
-
3
- * http://www.tortall.net/projects/yasm/
4
- * http://www.sophsec.com/
5
- * Postmodern (postmodern.mod3 at gmail.com)
6
-
7
- == DESCRIPTION:
8
-
9
- A Ruby interface to YASM.
10
-
11
- YASM is a complete rewrite of the NASM assembler, YASM currently supports
12
- the x86 and AMD64 instruction sets, accepts NASM and GAS assembler syntaxes,
13
- outputs binary, ELF32, ELF64, 32 and 64-bit Mach-O, RDOFF2, COFF, Win32,
14
- and Win64 object formats, and generates source debugging information in
15
- STABS, DWARF 2, and CodeView 8 formats.
16
-
17
- == FEATURES:
18
-
19
- * Supports all of the +yasm+ command-line options.
20
-
21
- == EXAMPLES:
22
-
23
- * Assemble a binary file:
24
-
25
- YASM::Program.assemble do |yasm|
26
- yasm.syntax = :gas
27
- yasm.file = 'hello_world.S'
28
- yasm.output = 'hello_world.o'
29
- end
30
-
31
- * Assemble a binary file, and write the output to a temporary file:
32
-
33
- YASM::Program.assemble_temp do |yasm|
34
- yasm.syntax = :gas
35
- yasm.file = 'hello_world.S'
36
- end
37
- # => "/tmp/yasm.3386.0"
38
-
39
- * Assemble amd64 assembly, in GAS syntax, into an ELF64 file with
40
- debugging information:
41
-
42
- YASM::Program.assemble do |yasm|
43
- yasm.target! :amd64
44
-
45
- yasm.syntax = :gas
46
- yasm.file = 'hello_world.S'
47
-
48
- yasm.output = 'hello_world.o'
49
- yasm.output_format = :elf64
50
- yasm.debug_format = :stabs
51
- end
52
-
53
- == REQUIREMENTS:
54
-
55
- * {yasm}[http://www.tortall.net/projects/yasm/] >= 0.8.0.
56
- * {rprogram}[http://rprogram.rubyforge.org/] >= 0.1.8.
57
-
58
- == INSTALL:
59
-
60
- $ sudo gem install ruby-yasm
61
-
62
- == LICENSE:
63
-
64
- (The MIT License)
65
-
66
- Copyright (c) 2009 Hal Brodigan
67
-
68
- Permission is hereby granted, free of charge, to any person obtaining
69
- a copy of this software and associated documentation files (the
70
- 'Software'), to deal in the Software without restriction, including
71
- without limitation the rights to use, copy, modify, merge, publish,
72
- distribute, sublicense, and/or sell copies of the Software, and to
73
- permit persons to whom the Software is furnished to do so, subject to
74
- the following conditions:
75
-
76
- The above copyright notice and this permission notice shall be
77
- included in all copies or substantial portions of the Software.
78
-
79
- THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
80
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
81
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
82
- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
83
- CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
84
- TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
85
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/lib/yasm/yasm.rb DELETED
@@ -1,142 +0,0 @@
1
- module YASM
2
- @@yasm_parser = nil
3
- @@yasm_arch = nil
4
- @@yasm_machine = nil
5
- @@yasm_debug_format = nil
6
- @@yasm_output_format = nil
7
-
8
- #
9
- # The default YASM parser to use.
10
- #
11
- # @return [Symbol]
12
- # The YASM parser.
13
- #
14
- def YASM.parser
15
- @@yasm_parser
16
- end
17
-
18
- #
19
- # Sets the default YASM parser to use.
20
- #
21
- # @param [Symbol, String] new_parser
22
- # The new YASM parser to use.
23
- #
24
- # @return [Symbol]
25
- # The new YASM parser to use.
26
- #
27
- def YASM.parser=(new_parser)
28
- @@yasm_parser = if new_parser.nil?
29
- nil
30
- else
31
- new_parser.to_sym
32
- end
33
- end
34
-
35
- #
36
- # The default YASM architecture to assemble for.
37
- #
38
- # @return [Symbol]
39
- # The YASM architecture.
40
- #
41
- def YASM.arch
42
- @@yasm_arch
43
- end
44
-
45
- #
46
- # Sets the default YASM architecture to assemble for.
47
- #
48
- # @param [Symbol, String] new_arch
49
- # The new YASM architecture to assemble for.
50
- #
51
- # @return [Symbol]
52
- # The new YASM architecture to assemble for.
53
- #
54
- def YASM.arch=(new_arch)
55
- if new_arch.nil?
56
- @@yasm_arch = nil
57
- else
58
- @@yasm_arch = new_arch.to_sym
59
- end
60
- end
61
-
62
- #
63
- # The default YASM machine to assemble for.
64
- #
65
- # @return [Symbol]
66
- # The YASM machine.
67
- #
68
- def YASM.machine
69
- @@yasm_machine ||= nil
70
- end
71
-
72
- #
73
- # Sets the default YASM machine to assemble for.
74
- #
75
- # @param [Symbol, String] new_machine
76
- # The new YASM machine to assemble for.
77
- #
78
- # @return [Symbol]
79
- # The new YASM machine to assemble for.
80
- #
81
- def YASM.machine=(new_machine)
82
- @@yasm_machine = if new_machine.nil?
83
- nil
84
- else
85
- new_machine.to_sym
86
- end
87
- end
88
-
89
- #
90
- # The default YASM debugging format to use.
91
- #
92
- # @return [Symbol]
93
- # The YASM debugging format.
94
- #
95
- def YASM.debug_format
96
- @@yasm_debug_format
97
- end
98
-
99
- #
100
- # Sets the default YASM debugging format to use.
101
- #
102
- # @param [Symbol, String] new_format
103
- # The new YASM debugging format to use.
104
- #
105
- # @return [Symbol]
106
- # The new YASM debugging format to use.
107
- #
108
- def YASM.debug_format=(new_format)
109
- @@yasm_debug_format = if new_format.nil?
110
- nil
111
- else
112
- new_format.to_sym
113
- end
114
- end
115
-
116
- #
117
- # The default YASM output format to use.
118
- #
119
- # @return [Symbol]
120
- # The YASM output format.
121
- #
122
- def YASM.output_format
123
- @@yasm_output_format
124
- end
125
-
126
- #
127
- # Sets the default YASM output format to use.
128
- #
129
- # @param [Symbol, String] new_format
130
- # The new YASM output format to use.
131
- #
132
- # @return [Symbol]
133
- # The new YASM output format to use.
134
- #
135
- def YASM.output_format=(new_format)
136
- @@yasm_output_format = if new_format.nil?
137
- nil
138
- else
139
- new_format.to_sym
140
- end
141
- end
142
- end
data/tasks/spec.rb DELETED
@@ -1,10 +0,0 @@
1
- require 'spec/rake/spectask'
2
-
3
- desc "Run all specifications"
4
- Spec::Rake::SpecTask.new(:spec) do |t|
5
- t.libs += ['lib', 'spec']
6
- t.spec_opts = ['--colour', '--format', 'specdoc']
7
- end
8
-
9
- task :test => :spec
10
- task :default => :spec
data/tasks/yard.rb DELETED
@@ -1,13 +0,0 @@
1
- require 'yard'
2
-
3
- YARD::Rake::YardocTask.new do |t|
4
- t.files = ['lib/**/*.rb']
5
- t.options = [
6
- '--protected',
7
- '--files', 'History.rdoc',
8
- '--title', 'Ruby YASM',
9
- '--quiet'
10
- ]
11
- end
12
-
13
- task :docs => :yard
metadata.gz.sig DELETED
Binary file