Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Extract Data Verbatim from ELF Binaries

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 LICENCES
Octocat-spinner-32 examples
Octocat-spinner-32 lib
Octocat-spinner-32 t
Octocat-spinner-32 xt
Octocat-spinner-32 Build.PL
Octocat-spinner-32 Changes
Octocat-spinner-32 LICENSE
Octocat-spinner-32 LICENSE.tests
Octocat-spinner-32 MANIFEST
Octocat-spinner-32 META.json
Octocat-spinner-32 META.yml
Octocat-spinner-32 README
Octocat-spinner-32 dist.ini
Octocat-spinner-32 perlcritic.rc
Octocat-spinner-32 weaver.ini
README
NAME
    ELF::Extract::Sections - Extract Raw Chunks of data from identifiable
    ELF Sections

VERSION
    version 0.03000101

SYNOPSIS
        use ELF::Extract::Sections;

        # Create an extractor object for foo.so
        my $extractor = ELF::Extract::Sections->new( file => '/path/to/foo.so' );

        # Scan file for section data, returns a hash
        my %sections  = ${ $extractor->sections };

        # Retreive the section object for the comment section
        my $data      = $sections{.comment};

        # Print the stringified explanation of the section
        print "$data";

        # Get the raw bytes out of the section.
        print $data->contents  # returns bytes

CAVEATS
    1. Beta Software
        This code is relatively new. It exists only as a best attempt at
        present until further notice. It has proved as practical for at
        least one application, and this is why the module exists. However,
        it can't be guaranteed it will work for whatever you want it to in
        all cases. Please report any bugs you find.

    2. Feature Incomplete
        This only presently has a very bare-bones functionality, which
        should however prove practical for most purposes. If you have any
        suggestions, please tell me via "report bugs". If you never seek,
        you'll never find.

    3. Humans
        This code is written by a human, and like all human code, it sucks.
        There will be bugs. Please report them.

PUBLIC ATTRIBUTES
  file
    Returns the file the section data is being created for.

  sections
    Returns a HashRef of the available sections.

  scanner
    Returns the name of the default scanner plug-in

PUBLIC METHODS
  new ( file => FILENAME )
    Creates A new Section Extractor object with the default scanner

  new ( file => FILENAME , scanner => 'Objdump' )
    Creates A new Section Extractor object with the specified scanner

  sorted_sections ( field => SORT_BY )
    Returns an ArrayRef sorted by the SORT_BY field, in the default order.

  sorted_sections ( field => SORT_BY, descending => DESCENDING )
    Returns an ArrayRef sorted by the SORT_BY field. May be Ascending or
    Descending depending on requirements.

   DESCENDING
    Optional parameters. True for descending, False or absent for ascending.

   SORT_BY
    A String of the field to sort by. Valid options at present are

   name
    The Section Name

   offset
    The Sections offset relative to the start of the file.

   size
    The Size of the section.

PUBLIC ATTRIBUTE BUILDERS
    These aren't really user serviceable, but they make your front end work.

  _build_sections
    See "sections"

PRIVATE ATTRIBUTES
  _scanner_package
        isa => ClassName, ro, lazy_build

  _scanner_instance
        isa => Object, ro, lazy_build

PRIVATE ATTRIBUTE BUILDERS
  _build__scanner_package
    Builds "_scanner_package"

  _build__scanner_instance
    Builds "_scanner_instance"

PRIVATE_METHODS
  _warn_stash_collision
        method _warn_stash_collision ( Str $stashname!, Str $header!, Str $offset! ) {

        }

  _stash_record( HashRef, Str, Str )
        method _stash_record ( HashRef $stash! , Str $header!, Str $offset! ) {

        }

  _build_section_section( Str, Int, Int, File )
        method _build_section_section ( Str $stashName, Int $start, Int $stop , File $file ) {

        }

  _build_section_table( HashRef )
        method _build_section_table ( HashRef $ob! ) {
        }

  _scan_guess_size
        method _scan_guess_size {

        }

  _scan_with_size
        method _scan_with_size {
        }

DEBUGGING
    This library uses Log::Log4perl. To see more verbose processing notices,
    do this:

        use Log::Log4perl qw( :easy );
        Log::Log4perl->easy_init($DEBUG);

    For convenience to make sure you don't happen to miss this fact, we
    never initialize Log4perl ourselves, so it will spit the following
    message if you have not set it up:

        Log4perl: Seems like no initialization happened. Forgot to call init()?

    To suppress this, just do

        use Log::Log4perl qw( :easy );

    I request however you don't do that for modules intended to be consumed
    by others without good cause.

AUTHOR
    Kent Fredric <kentnl@cpan.org>

COPYRIGHT AND LICENSE
    This software is copyright (c) 2013 by Kent Fredric.

    This is free software; you can redistribute it and/or modify it under
    the same terms as the Perl 5 programming language system itself.

Something went wrong with that request. Please try again.