From: Raphael Hertzog Date: Wed, 21 Nov 2007 10:53:19 +0000 (+0100) Subject: Add non-regression tests for the identification of public libraries and executables X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a0d12b9569a8542b2904484089c048471d49d78c;p=dpkg Add non-regression tests for the identification of public libraries and executables Make sure that Dpkg::Shlibs::Objdump::Object::is_public_library() and is_executable() work as expected for a private library (Pg.so of the libdb-pg-perl package), a public library (libc6) and an executable (ls). Also fix some typo in those functions (urgh). --- diff --git a/scripts/Dpkg/Shlibs/Objdump.pm b/scripts/Dpkg/Shlibs/Objdump.pm index 37f201fe..21225561 100644 --- a/scripts/Dpkg/Shlibs/Objdump.pm +++ b/scripts/Dpkg/Shlibs/Objdump.pm @@ -122,9 +122,13 @@ sub reset { $self->{file} = ''; $self->{id} = ''; $self->{SONAME} = ''; + $self->{HASH} = ''; + $self->{GNU_HASH} = ''; + $self->{SONAME} = ''; $self->{NEEDED} = []; $self->{RPATH} = []; $self->{dynsyms} = {}; + $self->{flags} = {}; return $self; } @@ -326,13 +330,13 @@ sub get_needed_libraries { sub is_executable { my $self = shift; - return exists $self->{flags}{EXEC_P} && $self->{flags}{EXEC_P}); + return exists $self->{flags}{EXEC_P} && $self->{flags}{EXEC_P}; } sub is_public_library { my $self = shift; return exists $self->{flags}{DYNAMIC} && $self->{flags}{DYNAMIC} - && exists $self->{SONAME} && $self->{SONAME}); + && exists $self->{SONAME} && $self->{SONAME}; } 1; diff --git a/scripts/t/200_Dpkg_Shlibs.t b/scripts/t/200_Dpkg_Shlibs.t index 7a02d41f..bfc5da27 100644 --- a/scripts/t/200_Dpkg_Shlibs.t +++ b/scripts/t/200_Dpkg_Shlibs.t @@ -1,6 +1,6 @@ # -*- mode: cperl;-*- -use Test::More tests => 27; +use Test::More tests => 33; use strict; use warnings; @@ -24,11 +24,30 @@ use_ok('Dpkg::Shlibs::Objdump'); my $obj = Dpkg::Shlibs::Objdump::Object->new; -open my $objdump, '<', "$srcdir/objdump.libc6-2.6" +open my $objdump, '<', "$srcdir/objdump.dbd-pg" + or die "$srcdir/objdump.dbd-pg: $!"; +$obj->_parse($objdump); +close $objdump; +ok(!$obj->is_public_library(), 'Pg.so is not a public library'); +ok(!$obj->is_executable(), 'Pg.so is not an executable'); + +open $objdump, '<', "$srcdir/objdump.ls" + or die "$srcdir/objdump.ls: $!"; +$obj->reset(); +$obj->_parse($objdump); +close $objdump; +ok(!$obj->is_public_library(), 'ls is not a public library'); +ok($obj->is_executable(), 'ls is an executable'); + +open $objdump, '<', "$srcdir/objdump.libc6-2.6" or die "$srcdir/objdump.libc6-2.6: $!"; +$obj->reset(); $obj->_parse($objdump); close $objdump; +ok($obj->is_public_library(), 'libc6 is a public library'); +ok(!$obj->is_executable(), 'libc6 is not an executable'); + is($obj->{SONAME}, 'libc.so.6', 'SONAME'); is($obj->{HASH}, '0x13d99c', 'HASH'); is($obj->{GNU_HASH}, '0x194', 'GNU_HASH'); diff --git a/scripts/t/200_Dpkg_Shlibs/objdump.dbd-pg b/scripts/t/200_Dpkg_Shlibs/objdump.dbd-pg new file mode 100644 index 00000000..c515dff8 --- /dev/null +++ b/scripts/t/200_Dpkg_Shlibs/objdump.dbd-pg @@ -0,0 +1,309 @@ + +/usr/lib/perl5/auto/DBD/Pg/Pg.so: file format elf32-i386 +architecture: i386, flags 0x00000150: +HAS_SYMS, DYNAMIC, D_PAGED +start address 0x000048f0 + +Program Header: + LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12 + filesz 0x00020c10 memsz 0x00020c10 flags r-x + LOAD off 0x00021000 vaddr 0x00021000 paddr 0x00021000 align 2**12 + filesz 0x00000c70 memsz 0x00000c74 flags rw- + DYNAMIC off 0x00021014 vaddr 0x00021014 paddr 0x00021014 align 2**2 + filesz 0x000000d0 memsz 0x000000d0 flags rw- + STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 + filesz 0x00000000 memsz 0x00000000 flags rw- + +Dynamic Section: + NEEDED libpq.so.5 + NEEDED libc.so.6 + INIT 0x3d00 + FINI 0x1d854 + HASH 0xb4 + GNU_HASH 0x7e8 + STRTAB 0x1c30 + SYMTAB 0xbd0 + STRSZ 0xfa4 + SYMENT 0x10 + PLTGOT 0x211c8 + PLTRELSZ 0x5d8 + PLTREL 0x11 + JMPREL 0x3728 + REL 0x2e20 + RELSZ 0x908 + RELENT 0x8 + VERNEED 0x2de0 + VERNEEDNUM 0x1 + VERSYM 0x2bd4 + RELCOUNT 0x52 + +Version References: + required from libc.so.6: + 0x09691f73 0x00 04 GLIBC_2.1.3 + 0x0d696911 0x00 03 GLIBC_2.1 + 0x0d696910 0x00 02 GLIBC_2.0 + +DYNAMIC SYMBOL TABLE: +00000000 D *UND* 00000000 Perl_Top_ptr +00000000 DF *UND* 00000034 GLIBC_2.0 sprintf +00000000 DF *UND* 00000014 PQcmdStatus +00000000 D *UND* 00000000 Perl_mg_get +00000000 D *UND* 00000000 Perl_sv_setiv +00000000 D *UND* 00000000 Perl_is_utf8_string +00000000 D *UND* 00000000 Perl_sv_free +00000000 DF *UND* 00000011 PQpass +00000000 DF *UND* 00000191 PQputCopyEnd +00000000 D *UND* 00000000 Perl_av_len +00000000 D *UND* 00000000 Perl_get_sv +00000000 D *UND* 00000000 PerlIO_printf +00000000 D *UND* 00000000 Perl_Tstack_base_ptr +00000000 D *UND* 00000000 Perl_newRV_noinc +00000000 DF *UND* 000000ba lo_tell +00000000 DF *UND* 00000058 PQconsumeInput +00000000 w D *UND* 00000000 __gmon_start__ +00000000 w D *UND* 00000000 _Jv_RegisterClasses +00000000 DF *UND* 00000175 PQgetResult +00000000 D *UND* 00000000 Perl_Tstack_max_ptr +00000000 D *UND* 00000000 Perl_av_make +00000000 DF *UND* 0000004d PQfmod +00000000 DF *UND* 00000024 PQprotocolVersion +00000000 D *UND* 00000000 Perl_sv_2uv +00000000 DF *UND* 00000021 PQsetNoticeProcessor +00000000 DF *UND* 000000c6 GLIBC_2.0 strncpy +00000000 DF *UND* 00000014 PQstatus +00000000 D *UND* 00000000 Perl_Isv_yes_ptr +00000000 DF *UND* 00000058 GLIBC_2.0 memset +00000000 D *UND* 00000000 Perl_warn_nocontext +00000000 D *UND* 00000000 Perl_sv_2mortal +00000000 D *UND* 00000000 Perl_Tstack_sp_ptr +00000000 DF *UND* 00000014 PQresultStatus +00000000 DF *UND* 00000045 GLIBC_2.0 __strtol_internal +00000000 DF *UND* 00000019 PQhost +00000000 D *UND* 00000000 Perl_sv_setpv +00000000 D *UND* 00000000 Perl_av_undef +00000000 DF *UND* 000000e2 lo_lseek +00000000 DF *UND* 0000004d PQftable +00000000 D *UND* 00000000 Perl_form +00000000 DF *UND* 00000024 PQbackendPID +00000000 DF *UND* 00000010 PQntuples +00000000 DF *UND* 00000099 PQoidValue +00000000 DF *UND* 00000040 PQnotifies +00000000 DF *UND* 0000004d PQftype +00000000 DF *UND* 00000048 PQgetisnull +00000000 DF *UND* 00000033 PQresultErrorField +00000000 D *UND* 00000000 Perl_Tmarkstack_max_ptr +00000000 DF *UND* 000000bb lo_creat +00000000 DF *UND* 00000245 lo_export +00000000 D *UND* 00000000 pthread_getspecific +00000000 DF *UND* 0000005d PQexec +00000000 DF *UND* 00000020 PQsetErrorVerbosity +00000000 DF *UND* 00000041 PQconnectdb +00000000 DF *UND* 0000001c PQserverVersion +00000000 D *UND* 00000000 Perl_sv_2iv +00000000 DF *UND* 0000003e PQuntrace +00000000 DF *UND* 00000036 PQtrace +00000000 D *UND* 00000000 PerlIO_findFILE +00000000 D *UND* 00000000 Perl_av_extend +00000000 DF *UND* 00000046 GLIBC_2.0 memcpy +00000000 DF *UND* 000000af GLIBC_2.0 strlen +00000000 D *UND* 00000000 Perl_sv_upgrade +00000000 DF *UND* 00000041 PQendcopy +00000000 D *UND* 00000000 Perl_hv_store_ent +00000000 D *UND* 00000000 Perl_av_store +00000000 DF *UND* 0000009e PQexecPrepared +00000000 D *UND* 00000000 Perl_sv_setpvn +00000000 DF *UND* 000000ce lo_read +00000000 DF *UND* 00000024 GLIBC_2.0 strcpy +00000000 D *UND* 00000000 Perl_hv_fetch +00000000 DF *UND* 00000011 PQoptions +00000000 D *UND* 00000000 Perl_stack_grow +00000000 DF *UND* 00000011 PQdb +00000000 DF *UND* 000001fa lo_import +00000000 D *UND* 00000000 Perl_Tcurpad_ptr +00000000 DF *UND* 00000014 PQsocket +00000000 D *UND* 00000000 Perl_sv_newmortal +00000000 D *UND* 00000000 Perl_av_fetch +00000000 DF *UND* 00000011 PQuser +00000000 DF *UND* 00000084 PQprepare +00000000 DF *UND* 00000023 PQfreemem +00000000 D *UND* 00000000 Perl_Tdirty_ptr +00000000 DF *UND* 00000062 GLIBC_2.0 strcasecmp +00000000 DF *UND* 0000004d PQftablecol +00000000 DF *UND* 000000ba lo_unlink +00000000 D *UND* 00000000 Perl_call_method +00000000 D *UND* 00000000 Perl_Tmarkstack_ptr_ptr +00000000 DF *UND* 00000029 PQtransactionStatus +00000000 DF *UND* 0000002c PQfname +00000000 D *UND* 00000000 Perl_newSV +00000000 D *UND* 00000000 Perl_mg_set +00000000 D *UND* 00000000 Perl_sv_2io +00000000 DF *UND* 0000012c PQputCopyData +00000000 D *UND* 00000000 Perl_safesysrealloc +00000000 DF *UND* 000000ab PQexecParams +00000000 D *UND* 00000000 Perl_newSViv +00000000 DF *UND* 000000a4 PQgetCopyData +00000000 D *UND* 00000000 Perl_sv_unref +00000000 DF *UND* 00000027 PQfinish +00000000 D *UND* 00000000 Perl_Isv_no_ptr +00000000 D *UND* 00000000 Perl_mg_find +00000000 DF *UND* 00000035 PQerrorMessage +00000000 D *UND* 00000000 Perl_newAV +00000000 DF *UND* 000001aa GLIBC_2.0 strcat +00000000 D *UND* 00000000 Perl_croak_nocontext +00000000 D *UND* 00000000 Perl_sv_grow +00000000 DF *UND* 000000c6 GLIBC_2.1 __rawmemchr +00000000 DF *UND* 00000011 PQnfields +00000000 D *UND* 00000000 Perl_av_pop +00000000 DF *UND* 000000cd lo_open +00000000 D *UND* 00000000 Perl_safesysmalloc +00000000 D *UND* 00000000 Perl_newSVpv +00000000 D *UND* 00000000 pow +00000000 DF *UND* 00000034 GLIBC_2.0 sscanf +00000000 D *UND* 00000000 Perl_mg_size +00000000 D *UND* 00000000 Perl_av_push +00000000 D *UND* 00000000 Perl_Tna_ptr +00000000 DF *UND* 000000f3 GLIBC_2.0 strncmp +00000000 D *UND* 00000000 PL_memory_wrap +00000000 D *UND* 00000000 Perl_croak +00000000 D *UND* 00000000 Perl_Isv_undef_ptr +00000000 D *UND* 00000000 Perl_safesysfree +00000000 DF *UND* 00000011 PQport +00000000 DF *UND* 0000003f PQgetvalue +00000000 DF *UND* 0000003b GLIBC_2.0 snprintf +00000000 D *UND* 00000000 Perl_newXS +00000000 DF *UND* 000000ba lo_close +00000000 D *UND* 00000000 Perl_newSVuv +00000000 D *UND* 00000000 Perl_sv_2bool +00000000 D *UND* 00000000 Perl_newHV +00000000 D *UND* 00000000 Perl_Gthr_key_ptr +00000000 DF *UND* 00000054 GLIBC_2.0 strcmp +00000000 w DF *UND* 00000176 GLIBC_2.1.3 __cxa_finalize +00000000 D *UND* 00000000 Perl_newSVpvn +00000000 D *UND* 00000000 Perl_markstack_grow +00000000 DF *UND* 000000eb lo_write +00000000 DF *UND* 00000175 PQcmdTuples +00000000 D *UND* 00000000 Perl_newRV +00000000 DF *UND* 0000004d PQfsize +00000000 D *UND* 00000000 Perl_sv_backoff +00000000 D *UND* 00000000 Perl_dowantarray +00000000 DF *UND* 0000006e PQclear +00000000 D *UND* 00000000 Perl_sv_2pv_flags +0000b0b0 g DF .text 000001a6 Base XS_DBD__Pg__db__ping +00006bc0 g DF .text 0000025f Base XS_DBD__Pg__db__pg_type_info +0001cac0 g DF .text 00000059 Base dequote_bool +00007f00 g DF .text 0000026b Base XS_DBD__Pg__db_putline +00007100 g DF .text 000001a0 Base XS_DBD__Pg__db_endcopy +00006e20 g DF .text 00000133 Base XS_DBD__Pg__db_pg_server_untrace +0000a750 g DF .text 000002d3 Base XS_DBD__Pg__db_pg_rollback_to +00012e00 g DF .text 00000211 Base pg_db_release +00018120 g DF .text 00001707 Base dbd_st_prepare +000138a0 g DF .text 00000234 Base pg_db_getline +00010800 g DF .text 0000062a Base XS_DBD__Pg__db_selectall_arrayref +0000ad10 g DF .text 000001a6 Base XS_DBD__Pg__db_pg_notifies +00007990 g DF .text 0000056c Base XS_DBD__Pg__db_pg_getline +00013270 g DF .text 0000020a Base pg_db_savepoint +00009640 g DF .text 00000619 Base XS_DBD__Pg__db_lo_read +00010e30 g DF .text 00000413 Base XS_DBD__Pg__db__login +0001a890 g DF .text 00000022 Base dbd_db_rollback +0001b150 g DF .text 000006d7 Base dbd_db_login +00019a60 g DF .text 000000ae Base dbd_db_getfd +00019e60 g DF .text 00000657 Base dbd_db_FETCH_attrib +0001d020 g DF .text 000000b2 Base quote_bool +00010020 g DF .text 0000020e Base XS_DBD__Pg__db_commit +0001ca90 g DF .text 00000028 Base dequote_char +00012cf0 g DF .text 00000104 Base pg_db_lo_creat +00007440 g DF .text 00000542 Base XS_DBD__Pg__db_getline +00006f60 g DF .text 00000194 Base XS_DBD__Pg__db_pg_server_trace +00012be0 g DF .text 00000103 Base pg_db_lo_write +0000db20 g DF .text 00000608 Base XS_DBD__Pg__st_blob_read +0000aa30 g DF .text 000002d3 Base XS_DBD__Pg__db_pg_savepoint +0000bcb0 g DF .text 000002d8 Base XS_DBD__Pg__st_execute +0001d0e0 g DF .text 00000156 Base quote_bytea +00008e70 g DF .text 000003db Base XS_DBD__Pg__db_lo_lseek +0001cb20 g DF .text 000000c2 Base quote_circle +0000e950 g DF .text 00000266 Base XS_DBD__Pg__st_fetchall_arrayref +0001d780 g DF .text 0000009b Base sql_type_data +00021c70 g D *ABS* 00000000 Base _edata +00015df0 g DF .text 00000155 Base dbd_st_finish +0000d220 g DF .text 000003f4 Base XS_DBD__Pg__st_DESTROY +0000aec0 g DF .text 000001e5 Base XS_DBD__Pg__db_getfd +0001ccc0 g DF .text 000000b2 Base quote_geom +0001d2e0 g DF .text 00000497 Base pg_type_data +00015c30 g DF .text 000001b5 Base dbd_db_ping +0001d854 g DF .fini 00000000 Base _fini +00013560 g DF .text 000000e7 Base pg_db_pg_server_trace +000127b0 g DF .text 00000118 Base pg_db_lo_open +00003d00 g DF .init 00000000 Base _init +0000e130 g DF .text 0000022f Base XS_DBD__Pg__st_fetchrow_array +0001cbf0 g DF .text 000000c2 Base quote_path +00015930 g DF .text 000002f9 Base dbd_st_destroy +00011450 g DF .text 00000336 Base XS_DBD__Pg_constant +00014fb0 g DF .text 0000029e Base dbd_st_STORE_attrib +0000cac0 g DF .text 000004bc Base XS_DBD__Pg__st_bind_param +0000f190 g DF .text 0000020e Base XS_DBD__Pg__db_rollback +00004990 g DF .text 00001e07 Base boot_DBD__Pg +00021c70 g D *ABS* 00000000 Base __bss_start +0001ca60 g DF .text 00000028 Base dequote_string +0000d840 g DF .text 000002d2 Base XS_DBD__Pg__st_STORE +00008170 g DF .text 0000026b Base XS_DBD__Pg__db_pg_putline +0001c790 g DF .text 00000295 Base pg_quickexec +000072a0 g DF .text 0000019f Base XS_DBD__Pg__db_pg_endcopy +00008700 g DF .text 0000028b Base XS_DBD__Pg__db_lo_import +00019830 g DF .text 0000022b Base dbd_db_pg_notifies +00011ab0 g DF .text 000000ee Base pg_db_lo_close +0001ae70 g DF .text 000001c6 Base dbd_db_disconnect +00021c74 g D *ABS* 00000000 Base _end +0000cf80 g DF .text 000002a0 Base XS_DBD__Pg__st_finish +00019b10 g DF .text 00000343 Base dbd_discon_all +00011790 g DF .text 00000050 Base dbd_init +000117e0 g DF .text 000000a9 Base dbd_st_rows +0001a8c0 g DF .text 00000022 Base dbd_db_commit +00009ec0 g DF .text 0000032b Base XS_DBD__Pg__db_lo_open +0001ce70 g DF .text 000000fe Base dequote_bytea +0000ebc0 g DF .text 000001f0 Base XS_DBD__Pg__st_rows +0000bf90 g DF .text 0000056d Base XS_DBD__Pg__db_quote +0001cfb0 g DF .text 0000006c Base quote_integer +0000d620 g DF .text 0000021b Base XS_DBD__Pg__st_FETCH_attrib +00013480 g DF .text 000000e0 Base pg_db_pg_server_untrace +0000a1f0 g DF .text 0000027c Base XS_DBD__Pg__db_lo_creat +00009250 g DF .text 000003eb Base XS_DBD__Pg__db_lo_write +000067a0 g DF .text 00000208 Base XS_DBD__Pg__st_state +0001ca30 g DF .text 00000028 Base null_dequote +00013020 g DF .text 00000250 Base pg_db_rollback_to +00010230 g DF .text 000005cb Base XS_DBD__Pg__db_selectrow_arrayref +00008990 g DF .text 0000025b Base XS_DBD__Pg__db_lo_unlink +000128d0 g DF .text 00000104 Base pg_db_lo_import +0000fb30 g DF .text 0000020a Base XS_DBD__Pg__db_FETCH +00012af0 g DF .text 000000ee Base pg_db_lo_tell +0000a470 g DF .text 000002d3 Base XS_DBD__Pg__db_pg_release +00011250 g DF .text 000001fa Base XS_DBD__Pg__dr_discon_all_ +00013ce0 g DF .text 000012cd Base dbd_st_FETCH_attrib +0000b860 g DF .text 00000450 Base XS_DBD__Pg__db_do +0000edb0 g DF .text 000003d6 Base XS_DBD__Pg__st__prepare +0001d240 g DF .text 0000003f Base quote_sql_binary +0000fd40 g DF .text 000002d2 Base XS_DBD__Pg__db_STORE +000083e0 g DF .text 0000031b Base XS_DBD__Pg__db_lo_export +0001cd80 g DF .text 000000e4 Base quote_string +0000f3a0 g DF .text 00000378 Base XS_DBD__Pg__db_disconnect +0000c500 g DF .text 000005be Base XS_DBD__Pg__st_bind_param_inout +0000f720 g DF .text 0000040e Base XS_DBD__Pg__db_DESTROY +00013ae0 g DF .text 000001f4 Base pg_db_putline +00013650 g DF .text 00000244 Base pg_db_endcopy +00016b40 g DF .text 000015d1 Base dbd_st_execute +000129e0 g DF .text 00000110 Base pg_db_lo_unlink +0001cf70 g DF .text 00000038 Base dequote_sql_binary +00011890 g DF .text 0000010a Base pg_db_lo_lseek +0001d280 g DF .text 00000055 Base null_quote +00008bf0 g DF .text 0000027c Base XS_DBD__Pg__db_lo_tell +0001a8f0 g DF .text 00000579 Base dbd_db_STORE_attrib +0001b9a0 g DF .text 00000def Base dbd_bind_ph +000119a0 g DF .text 00000103 Base pg_db_lo_read +00015f50 g DF .text 000006ed Base dbd_st_fetch +0000e360 g DF .text 00000224 Base XS_DBD__Pg__st_fetchrow_arrayref +000069b0 g DF .text 00000208 Base XS_DBD__Pg__db_state +00012690 g DF .text 00000118 Base pg_db_lo_export +0001b040 g DF .text 0000010f Base dbd_db_destroy +00009c60 g DF .text 0000025b Base XS_DBD__Pg__db_lo_close +00011ea0 g DF .text 00000379 Base dbd_st_blob_read + + diff --git a/scripts/t/200_Dpkg_Shlibs/objdump.ls b/scripts/t/200_Dpkg_Shlibs/objdump.ls new file mode 100644 index 00000000..760d87e7 --- /dev/null +++ b/scripts/t/200_Dpkg_Shlibs/objdump.ls @@ -0,0 +1,172 @@ + +/bin/ls: file format elf32-i386 +architecture: i386, flags 0x00000112: +EXEC_P, HAS_SYMS, D_PAGED +start address 0x08049b50 + +Program Header: + PHDR off 0x00000034 vaddr 0x08048034 paddr 0x08048034 align 2**2 + filesz 0x00000100 memsz 0x00000100 flags r-x + INTERP off 0x00000134 vaddr 0x08048134 paddr 0x08048134 align 2**0 + filesz 0x00000013 memsz 0x00000013 flags r-- + LOAD off 0x00000000 vaddr 0x08048000 paddr 0x08048000 align 2**12 + filesz 0x00012478 memsz 0x00012478 flags r-x + LOAD off 0x00012478 vaddr 0x0805b478 paddr 0x0805b478 align 2**12 + filesz 0x000003b4 memsz 0x00000818 flags rw- + DYNAMIC off 0x0001248c vaddr 0x0805b48c paddr 0x0805b48c align 2**2 + filesz 0x000000e8 memsz 0x000000e8 flags rw- + NOTE off 0x00000148 vaddr 0x08048148 paddr 0x08048148 align 2**2 + filesz 0x00000020 memsz 0x00000020 flags r-- +EH_FRAME off 0x000123b0 vaddr 0x0805a3b0 paddr 0x0805a3b0 align 2**2 + filesz 0x0000002c memsz 0x0000002c flags r-- + STACK off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**2 + filesz 0x00000000 memsz 0x00000000 flags rw- + +Dynamic Section: + NEEDED librt.so.1 + NEEDED libacl.so.1 + NEEDED libselinux.so.1 + NEEDED libc.so.6 + INIT 0x8049510 + FINI 0x8056768 + HASH 0x8048168 + GNU_HASH 0x80484a4 + STRTAB 0x8048bc0 + SYMTAB 0x8048500 + STRSZ 0x4a0 + SYMENT 0x10 + DEBUG 0x0 + PLTGOT 0x805b57c + PLTRELSZ 0x300 + PLTREL 0x11 + JMPREL 0x8049210 + REL 0x80491e8 + RELSZ 0x28 + RELENT 0x8 + VERNEED 0x8049138 + VERNEEDNUM 0x3 + VERSYM 0x8049060 + +Version References: + required from librt.so.1: + 0x0d696912 0x00 08 GLIBC_2.2 + required from libacl.so.1: + 0x05822450 0x00 06 ACL_1.0 + required from libc.so.6: + 0x09691a73 0x00 09 GLIBC_2.2.3 + 0x0d696913 0x00 07 GLIBC_2.3 + 0x0d696911 0x00 05 GLIBC_2.1 + 0x09691f73 0x00 04 GLIBC_2.1.3 + 0x0d696912 0x00 03 GLIBC_2.2 + 0x0d696910 0x00 02 GLIBC_2.0 + +DYNAMIC SYMBOL TABLE: +00000000 DF *UND* 0000026e GLIBC_2.0 abort +00000000 DF *UND* 0000001d GLIBC_2.0 __errno_location +00000000 DF *UND* 0000004d GLIBC_2.0 sigemptyset +00000000 DF *UND* 00000034 GLIBC_2.0 sprintf +00000000 DF *UND* 000001a2 GLIBC_2.2 localeconv +00000000 DF *UND* 0000000a GLIBC_2.0 dirfd +00000000 DF *UND* 00000057 GLIBC_2.1.3 __cxa_atexit +00000000 DF *UND* 00000037 GLIBC_2.0 strcoll +00000000 DF *UND* 00000150 GLIBC_2.0 qsort +00000000 DF *UND* 00000094 GLIBC_2.1 fputs_unlocked +00000000 DF *UND* 0000001e GLIBC_2.0 __ctype_get_mb_cur_max +00000000 DF *UND* 000000d9 GLIBC_2.0 signal +00000000 DF *UND* 0000006e GLIBC_2.0 sigismember +00000000 w D *UND* 00000000 __gmon_start__ +00000000 w D *UND* 00000000 _Jv_RegisterClasses +00000000 DF *UND* 00000490 GLIBC_2.0 realloc +00000000 DF *UND* 0000003f GLIBC_2.2 __xstat64 +00000000 DF *UND* 00000035 GLIBC_2.0 localtime +00000000 DF *UND* 00000132 GLIBC_2.0 getgrnam +00000000 DF *UND* 00000167 GLIBC_2.0 strchr +00000000 DF *UND* 000000dc GLIBC_2.0 getenv +00000000 DF *UND* 00000304 GLIBC_2.0 calloc +00000000 DF *UND* 000000c6 GLIBC_2.0 strncpy +00000000 DF *UND* 00000023 freecon +00000000 DF *UND* 00000058 GLIBC_2.0 memset +00000000 DF *UND* 000001b2 GLIBC_2.0 __libc_start_main +00000000 DF *UND* 00000044 GLIBC_2.1 mempcpy +00000000 DF *UND* 000000c9 GLIBC_2.0 _obstack_begin +00000000 DF *UND* 000001b9 GLIBC_2.0 strrchr +00000000 DF *UND* 00000038 GLIBC_2.0 chmod +00000000 DF *UND* 00000150 GLIBC_2.0 __assert_fail +00000000 DF *UND* 00000015 GLIBC_2.0 bindtextdomain +00000000 DF *UND* 00000215 GLIBC_2.0 mbrtowc +00000000 DF *UND* 00000046 ACL_1.0 acl_delete_def_file +00000000 DF *UND* 00000038 GLIBC_2.0 gettimeofday +00000000 DF *UND* 0000003c GLIBC_2.3 __ctype_toupper_loc +00000000 DF *UND* 0000003f GLIBC_2.2 __lxstat64 +00000000 DF *UND* 00000195 GLIBC_2.0 _obstack_newchunk +00000000 DF *UND* 00000066 GLIBC_2.0 __overflow +00000000 DF *UND* 00000049 GLIBC_2.0 dcgettext +00000000 DF *UND* 00000160 GLIBC_2.0 sigaction +00000000 DF *UND* 00000127 GLIBC_2.1 strverscmp +00000000 DF *UND* 00000092 GLIBC_2.0 opendir +00000000 DF *UND* 00000047 GLIBC_2.0 getopt_long +00000000 DF *UND* 0000003a GLIBC_2.0 ioctl +00000000 DF *UND* 0000003c GLIBC_2.3 __ctype_b_loc +00000000 DF *UND* 000000c9 GLIBC_2.0 iswcntrl +00000000 DF *UND* 00000032 GLIBC_2.0 isatty +00000000 DF *UND* 000001e8 GLIBC_2.1 fclose +00000000 DF *UND* 00000019 GLIBC_2.0 mbsinit +00000000 DF *UND* 00000036 GLIBC_2.0 _setjmp +00000000 DF *UND* 00000038 GLIBC_2.0 tcgetpgrp +00000000 DF *UND* 0000003c GLIBC_2.0 mktime +00000000 DF *UND* 000000af GLIBC_2.2 readdir64 +00000000 DF *UND* 00000046 GLIBC_2.0 memcpy +00000000 DF *UND* 000000af GLIBC_2.0 strlen +00000000 DF *UND* 00000132 GLIBC_2.0 getpwuid +00000000 DF *UND* 00000094 ACL_1.0 acl_extended_file +00000000 DF *UND* 00000195 ACL_1.0 acl_get_file +00000000 DF *UND* 000006b5 GLIBC_2.0 setlocale +00000000 DF *UND* 0000002a ACL_1.0 acl_entries +00000000 DF *UND* 00000024 GLIBC_2.0 strcpy +00000000 DF *UND* 00000039 GLIBC_2.0 printf +00000000 DF *UND* 0000008c GLIBC_2.0 raise +00000000 DF *UND* 000000a2 GLIBC_2.1 fwrite_unlocked +00000000 DF *UND* 00000115 GLIBC_2.2 clock_gettime +00000000 DF *UND* 00000075 getfilecon +00000000 DF *UND* 00000055 GLIBC_2.0 closedir +00000000 DF *UND* 00000024 GLIBC_2.0 fprintf +00000000 DF *UND* 00000114 ACL_1.0 acl_set_file +00000000 DF *UND* 0000009e GLIBC_2.0 sigprocmask +00000000 DF *UND* 0000002a GLIBC_2.2 __fpending +00000000 DF *UND* 00000075 lgetfilecon +00000000 DF *UND* 000000d7 GLIBC_2.0 error +00000000 DF *UND* 00000132 GLIBC_2.0 getgrgid +00000000 DF *UND* 00000045 GLIBC_2.0 __strtoull_internal +00000000 DF *UND* 0000006a GLIBC_2.0 sigaddset +00000000 DF *UND* 0000003a GLIBC_2.0 readlink +00000000 DF *UND* 0000008e GLIBC_2.0 memmove +00000000 DF *UND* 0000003c GLIBC_2.3 __ctype_tolower_loc +00000000 DF *UND* 00000045 GLIBC_2.0 __strtoul_internal +00000000 DF *UND* 0000011d GLIBC_2.0 textdomain +00000000 DF *UND* 0000003f GLIBC_2.2 __fxstat64 +00000000 DF *UND* 000002d9 GLIBC_2.2.3 fnmatch +00000000 DF *UND* 000000f3 GLIBC_2.0 strncmp +00000000 DF *UND* 00004373 GLIBC_2.0 vfprintf +00000000 DF *UND* 0000006e ACL_1.0 acl_free +00000000 DF *UND* 00000042 GLIBC_2.0 fflush_unlocked +00000000 DF *UND* 00000045 GLIBC_2.0 strftime +00000000 DF *UND* 00000078 GLIBC_2.0 wcwidth +00000000 DF *UND* 000000cb GLIBC_2.0 iswprint +00000000 DF *UND* 00000132 GLIBC_2.0 getpwnam +00000000 DF *UND* 00000054 GLIBC_2.0 strcmp +00000000 DF *UND* 000000fa GLIBC_2.0 exit +00000000 DF *UND* 000004bc ACL_1.0 acl_from_text +0805bc90 g D *ABS* 00000000 Base _end +0805b860 g DO .bss 00000004 GLIBC_2.0 stdout +0805b82c g D *ABS* 00000000 Base _edata +080567a4 g DO .rodata 00000004 Base _IO_stdin_used +08049780 DF *UND* 000001e5 GLIBC_2.0 free +0805b844 g DO .bss 00000004 GLIBC_2.0 stderr +0805b82c g D *ABS* 00000000 Base __bss_start +080499a0 DF *UND* 00000178 GLIBC_2.0 malloc +08049510 g DF .init 00000000 Base _init +08056768 g DF .fini 00000000 Base _fini +0805b840 g DO .bss 00000004 GLIBC_2.0 optind +0805b864 g DO .bss 00000004 GLIBC_2.0 optarg + +