Source file src/debug/elf/symbols_test.go

     1  // Copyright 2014 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package elf
     6  
     7  import (
     8  	"io"
     9  	"path"
    10  	"reflect"
    11  	"testing"
    12  )
    13  
    14  func TestSymbols(t *testing.T) {
    15  	do := func(file string, ts []Symbol, getfunc func(*File) ([]Symbol, error)) {
    16  		var f *File
    17  		var err error
    18  		if path.Ext(file) == ".gz" {
    19  			var r io.ReaderAt
    20  			if r, err = decompress(file); err == nil {
    21  				f, err = NewFile(r)
    22  			}
    23  		} else {
    24  			f, err = Open(file)
    25  		}
    26  		if err != nil {
    27  			t.Errorf("TestSymbols: cannot open file %s: %v", file, err)
    28  			return
    29  		}
    30  		defer f.Close()
    31  		fs, err := getfunc(f)
    32  		if err != nil && err != ErrNoSymbols {
    33  			t.Error(err)
    34  			return
    35  		} else if err == ErrNoSymbols {
    36  			fs = []Symbol{}
    37  		}
    38  		if !reflect.DeepEqual(ts, fs) {
    39  			t.Errorf("%s: Symbols = %v, want %v", file, fs, ts)
    40  		}
    41  
    42  		for i, s := range fs {
    43  			if s.HasVersion {
    44  				// No hidden versions here.
    45  				if s.VersionIndex.IsHidden() {
    46  					t.Errorf("%s: symbol %d: unexpected hidden version", file, i)
    47  				}
    48  				if got, want := s.VersionIndex.Index(), uint16(s.VersionIndex); got != want {
    49  					t.Errorf("%s: symbol %d: VersionIndex.Index() == %d, want %d", file, i, got, want)
    50  				}
    51  			}
    52  		}
    53  
    54  	}
    55  	for file, ts := range symbolsGolden {
    56  		do(file, ts, (*File).Symbols)
    57  	}
    58  	for file, ts := range dynamicSymbolsGolden {
    59  		do(file, ts, (*File).DynamicSymbols)
    60  	}
    61  }
    62  
    63  // golden symbol table data generated by testdata/getgoldsym.c
    64  
    65  var symbolsGolden = map[string][]Symbol{
    66  	"testdata/gcc-amd64-linux-exec": {
    67  		Symbol{
    68  			Name:         "",
    69  			Info:         0x3,
    70  			Other:        0x0,
    71  			HasVersion:   false,
    72  			VersionIndex: 0,
    73  			Section:      0x1,
    74  			Value:        0x400200,
    75  			Size:         0x0,
    76  		},
    77  		Symbol{
    78  			Name:         "",
    79  			Info:         0x3,
    80  			Other:        0x0,
    81  			HasVersion:   false,
    82  			VersionIndex: 0,
    83  			Section:      0x2,
    84  			Value:        0x40021C,
    85  			Size:         0x0,
    86  		},
    87  		Symbol{
    88  			Name:         "",
    89  			Info:         0x3,
    90  			Other:        0x0,
    91  			HasVersion:   false,
    92  			VersionIndex: 0,
    93  			Section:      0x3,
    94  			Value:        0x400240,
    95  			Size:         0x0,
    96  		},
    97  		Symbol{
    98  			Name:         "",
    99  			Info:         0x3,
   100  			Other:        0x0,
   101  			HasVersion:   false,
   102  			VersionIndex: 0,
   103  			Section:      0x4,
   104  			Value:        0x400268,
   105  			Size:         0x0,
   106  		},
   107  		Symbol{
   108  			Name:         "",
   109  			Info:         0x3,
   110  			Other:        0x0,
   111  			HasVersion:   false,
   112  			VersionIndex: 0,
   113  			Section:      0x5,
   114  			Value:        0x400288,
   115  			Size:         0x0,
   116  		},
   117  		Symbol{
   118  			Name:         "",
   119  			Info:         0x3,
   120  			Other:        0x0,
   121  			HasVersion:   false,
   122  			VersionIndex: 0,
   123  			Section:      0x6,
   124  			Value:        0x4002E8,
   125  			Size:         0x0,
   126  		},
   127  		Symbol{
   128  			Name:         "",
   129  			Info:         0x3,
   130  			Other:        0x0,
   131  			HasVersion:   false,
   132  			VersionIndex: 0,
   133  			Section:      0x7,
   134  			Value:        0x400326,
   135  			Size:         0x0,
   136  		},
   137  		Symbol{
   138  			Name:         "",
   139  			Info:         0x3,
   140  			Other:        0x0,
   141  			HasVersion:   false,
   142  			VersionIndex: 0,
   143  			Section:      0x8,
   144  			Value:        0x400330,
   145  			Size:         0x0,
   146  		},
   147  		Symbol{
   148  			Name:         "",
   149  			Info:         0x3,
   150  			Other:        0x0,
   151  			HasVersion:   false,
   152  			VersionIndex: 0,
   153  			Section:      0x9,
   154  			Value:        0x400350,
   155  			Size:         0x0,
   156  		},
   157  		Symbol{
   158  			Name:         "",
   159  			Info:         0x3,
   160  			Other:        0x0,
   161  			HasVersion:   false,
   162  			VersionIndex: 0,
   163  			Section:      0xA,
   164  			Value:        0x400368,
   165  			Size:         0x0,
   166  		},
   167  		Symbol{
   168  			Name:         "",
   169  			Info:         0x3,
   170  			Other:        0x0,
   171  			HasVersion:   false,
   172  			VersionIndex: 0,
   173  			Section:      0xB,
   174  			Value:        0x400398,
   175  			Size:         0x0,
   176  		},
   177  		Symbol{
   178  			Name:         "",
   179  			Info:         0x3,
   180  			Other:        0x0,
   181  			HasVersion:   false,
   182  			VersionIndex: 0,
   183  			Section:      0xC,
   184  			Value:        0x4003B0,
   185  			Size:         0x0,
   186  		},
   187  		Symbol{
   188  			Name:         "",
   189  			Info:         0x3,
   190  			Other:        0x0,
   191  			HasVersion:   false,
   192  			VersionIndex: 0,
   193  			Section:      0xD,
   194  			Value:        0x4003E0,
   195  			Size:         0x0,
   196  		},
   197  		Symbol{
   198  			Name:         "",
   199  			Info:         0x3,
   200  			Other:        0x0,
   201  			HasVersion:   false,
   202  			VersionIndex: 0,
   203  			Section:      0xE,
   204  			Value:        0x400594,
   205  			Size:         0x0,
   206  		},
   207  		Symbol{
   208  			Name:         "",
   209  			Info:         0x3,
   210  			Other:        0x0,
   211  			HasVersion:   false,
   212  			VersionIndex: 0,
   213  			Section:      0xF,
   214  			Value:        0x4005A4,
   215  			Size:         0x0,
   216  		},
   217  		Symbol{
   218  			Name:         "",
   219  			Info:         0x3,
   220  			Other:        0x0,
   221  			HasVersion:   false,
   222  			VersionIndex: 0,
   223  			Section:      0x10,
   224  			Value:        0x4005B8,
   225  			Size:         0x0,
   226  		},
   227  		Symbol{
   228  			Name:         "",
   229  			Info:         0x3,
   230  			Other:        0x0,
   231  			HasVersion:   false,
   232  			VersionIndex: 0,
   233  			Section:      0x11,
   234  			Value:        0x4005E0,
   235  			Size:         0x0,
   236  		},
   237  		Symbol{
   238  			Name:         "",
   239  			Info:         0x3,
   240  			Other:        0x0,
   241  			HasVersion:   false,
   242  			VersionIndex: 0,
   243  			Section:      0x12,
   244  			Value:        0x600688,
   245  			Size:         0x0,
   246  		},
   247  		Symbol{
   248  			Name:         "",
   249  			Info:         0x3,
   250  			Other:        0x0,
   251  			HasVersion:   false,
   252  			VersionIndex: 0,
   253  			Section:      0x13,
   254  			Value:        0x600698,
   255  			Size:         0x0,
   256  		},
   257  		Symbol{
   258  			Name:         "",
   259  			Info:         0x3,
   260  			Other:        0x0,
   261  			HasVersion:   false,
   262  			VersionIndex: 0,
   263  			Section:      0x14,
   264  			Value:        0x6006A8,
   265  			Size:         0x0,
   266  		},
   267  		Symbol{
   268  			Name:         "",
   269  			Info:         0x3,
   270  			Other:        0x0,
   271  			HasVersion:   false,
   272  			VersionIndex: 0,
   273  			Section:      0x15,
   274  			Value:        0x6006B0,
   275  			Size:         0x0,
   276  		},
   277  		Symbol{
   278  			Name:         "",
   279  			Info:         0x3,
   280  			Other:        0x0,
   281  			HasVersion:   false,
   282  			VersionIndex: 0,
   283  			Section:      0x16,
   284  			Value:        0x600850,
   285  			Size:         0x0,
   286  		},
   287  		Symbol{
   288  			Name:         "",
   289  			Info:         0x3,
   290  			Other:        0x0,
   291  			HasVersion:   false,
   292  			VersionIndex: 0,
   293  			Section:      0x17,
   294  			Value:        0x600858,
   295  			Size:         0x0,
   296  		},
   297  		Symbol{
   298  			Name:         "",
   299  			Info:         0x3,
   300  			Other:        0x0,
   301  			HasVersion:   false,
   302  			VersionIndex: 0,
   303  			Section:      0x18,
   304  			Value:        0x600880,
   305  			Size:         0x0,
   306  		},
   307  		Symbol{
   308  			Name:         "",
   309  			Info:         0x3,
   310  			Other:        0x0,
   311  			HasVersion:   false,
   312  			VersionIndex: 0,
   313  			Section:      0x19,
   314  			Value:        0x600898,
   315  			Size:         0x0,
   316  		},
   317  		Symbol{
   318  			Name:         "",
   319  			Info:         0x3,
   320  			Other:        0x0,
   321  			HasVersion:   false,
   322  			VersionIndex: 0,
   323  			Section:      0x1A,
   324  			Value:        0x0,
   325  			Size:         0x0,
   326  		},
   327  		Symbol{
   328  			Name:         "",
   329  			Info:         0x3,
   330  			Other:        0x0,
   331  			HasVersion:   false,
   332  			VersionIndex: 0,
   333  			Section:      0x1B,
   334  			Value:        0x0,
   335  			Size:         0x0,
   336  		},
   337  		Symbol{
   338  			Name:         "",
   339  			Info:         0x3,
   340  			Other:        0x0,
   341  			HasVersion:   false,
   342  			VersionIndex: 0,
   343  			Section:      0x1C,
   344  			Value:        0x0,
   345  			Size:         0x0,
   346  		},
   347  		Symbol{
   348  			Name:         "",
   349  			Info:         0x3,
   350  			Other:        0x0,
   351  			HasVersion:   false,
   352  			VersionIndex: 0,
   353  			Section:      0x1D,
   354  			Value:        0x0,
   355  			Size:         0x0,
   356  		},
   357  		Symbol{
   358  			Name:         "",
   359  			Info:         0x3,
   360  			Other:        0x0,
   361  			HasVersion:   false,
   362  			VersionIndex: 0,
   363  			Section:      0x1E,
   364  			Value:        0x0,
   365  			Size:         0x0,
   366  		},
   367  		Symbol{
   368  			Name:         "",
   369  			Info:         0x3,
   370  			Other:        0x0,
   371  			HasVersion:   false,
   372  			VersionIndex: 0,
   373  			Section:      0x1F,
   374  			Value:        0x0,
   375  			Size:         0x0,
   376  		},
   377  		Symbol{
   378  			Name:         "",
   379  			Info:         0x3,
   380  			Other:        0x0,
   381  			HasVersion:   false,
   382  			VersionIndex: 0,
   383  			Section:      0x20,
   384  			Value:        0x0,
   385  			Size:         0x0,
   386  		},
   387  		Symbol{
   388  			Name:         "",
   389  			Info:         0x3,
   390  			Other:        0x0,
   391  			HasVersion:   false,
   392  			VersionIndex: 0,
   393  			Section:      0x21,
   394  			Value:        0x0,
   395  			Size:         0x0,
   396  		},
   397  		Symbol{
   398  			Name:         "init.c",
   399  			Info:         0x4,
   400  			Other:        0x0,
   401  			HasVersion:   false,
   402  			VersionIndex: 0,
   403  			Section:      0xFFF1,
   404  			Value:        0x0,
   405  			Size:         0x0,
   406  		},
   407  		Symbol{
   408  			Name:         "initfini.c",
   409  			Info:         0x4,
   410  			Other:        0x0,
   411  			HasVersion:   false,
   412  			VersionIndex: 0,
   413  			Section:      0xFFF1,
   414  			Value:        0x0,
   415  			Size:         0x0,
   416  		},
   417  		Symbol{
   418  			Name:         "call_gmon_start",
   419  			Info:         0x2,
   420  			Other:        0x0,
   421  			HasVersion:   false,
   422  			VersionIndex: 0,
   423  			Section:      0xD,
   424  			Value:        0x40040C,
   425  			Size:         0x0,
   426  		},
   427  		Symbol{
   428  			Name:         "crtstuff.c",
   429  			Info:         0x4,
   430  			Other:        0x0,
   431  			HasVersion:   false,
   432  			VersionIndex: 0,
   433  			Section:      0xFFF1,
   434  			Value:        0x0,
   435  			Size:         0x0,
   436  		},
   437  		Symbol{
   438  			Name:         "__CTOR_LIST__",
   439  			Info:         0x1,
   440  			Other:        0x0,
   441  			HasVersion:   false,
   442  			VersionIndex: 0,
   443  			Section:      0x12,
   444  			Value:        0x600688,
   445  			Size:         0x0,
   446  		},
   447  		Symbol{
   448  			Name:         "__DTOR_LIST__",
   449  			Info:         0x1,
   450  			Other:        0x0,
   451  			HasVersion:   false,
   452  			VersionIndex: 0,
   453  			Section:      0x13,
   454  			Value:        0x600698,
   455  			Size:         0x0,
   456  		},
   457  		Symbol{
   458  			Name:         "__JCR_LIST__",
   459  			Info:         0x1,
   460  			Other:        0x0,
   461  			HasVersion:   false,
   462  			VersionIndex: 0,
   463  			Section:      0x14,
   464  			Value:        0x6006A8,
   465  			Size:         0x0,
   466  		},
   467  		Symbol{
   468  			Name:         "__do_global_dtors_aux",
   469  			Info:         0x2,
   470  			Other:        0x0,
   471  			HasVersion:   false,
   472  			VersionIndex: 0,
   473  			Section:      0xD,
   474  			Value:        0x400430,
   475  			Size:         0x0,
   476  		},
   477  		Symbol{
   478  			Name:         "completed.6183",
   479  			Info:         0x1,
   480  			Other:        0x0,
   481  			HasVersion:   false,
   482  			VersionIndex: 0,
   483  			Section:      0x19,
   484  			Value:        0x600898,
   485  			Size:         0x1,
   486  		},
   487  		Symbol{
   488  			Name:         "p.6181",
   489  			Info:         0x1,
   490  			Other:        0x0,
   491  			HasVersion:   false,
   492  			VersionIndex: 0,
   493  			Section:      0x18,
   494  			Value:        0x600890,
   495  			Size:         0x0,
   496  		},
   497  		Symbol{
   498  			Name:         "frame_dummy",
   499  			Info:         0x2,
   500  			Other:        0x0,
   501  			HasVersion:   false,
   502  			VersionIndex: 0,
   503  			Section:      0xD,
   504  			Value:        0x400470,
   505  			Size:         0x0,
   506  		},
   507  		Symbol{
   508  			Name:         "crtstuff.c",
   509  			Info:         0x4,
   510  			Other:        0x0,
   511  			HasVersion:   false,
   512  			VersionIndex: 0,
   513  			Section:      0xFFF1,
   514  			Value:        0x0,
   515  			Size:         0x0,
   516  		},
   517  		Symbol{
   518  			Name:         "__CTOR_END__",
   519  			Info:         0x1,
   520  			Other:        0x0,
   521  			HasVersion:   false,
   522  			VersionIndex: 0,
   523  			Section:      0x12,
   524  			Value:        0x600690,
   525  			Size:         0x0,
   526  		},
   527  		Symbol{
   528  			Name:         "__DTOR_END__",
   529  			Info:         0x1,
   530  			Other:        0x0,
   531  			HasVersion:   false,
   532  			VersionIndex: 0,
   533  			Section:      0x13,
   534  			Value:        0x6006A0,
   535  			Size:         0x0,
   536  		},
   537  		Symbol{
   538  			Name:         "__FRAME_END__",
   539  			Info:         0x1,
   540  			Other:        0x0,
   541  			HasVersion:   false,
   542  			VersionIndex: 0,
   543  			Section:      0x11,
   544  			Value:        0x400680,
   545  			Size:         0x0,
   546  		},
   547  		Symbol{
   548  			Name:         "__JCR_END__",
   549  			Info:         0x1,
   550  			Other:        0x0,
   551  			HasVersion:   false,
   552  			VersionIndex: 0,
   553  			Section:      0x14,
   554  			Value:        0x6006A8,
   555  			Size:         0x0,
   556  		},
   557  		Symbol{
   558  			Name:         "__do_global_ctors_aux",
   559  			Info:         0x2,
   560  			Other:        0x0,
   561  			HasVersion:   false,
   562  			VersionIndex: 0,
   563  			Section:      0xD,
   564  			Value:        0x400560,
   565  			Size:         0x0,
   566  		},
   567  		Symbol{
   568  			Name:         "initfini.c",
   569  			Info:         0x4,
   570  			Other:        0x0,
   571  			HasVersion:   false,
   572  			VersionIndex: 0,
   573  			Section:      0xFFF1,
   574  			Value:        0x0,
   575  			Size:         0x0,
   576  		},
   577  		Symbol{
   578  			Name:         "hello.c",
   579  			Info:         0x4,
   580  			Other:        0x0,
   581  			HasVersion:   false,
   582  			VersionIndex: 0,
   583  			Section:      0xFFF1,
   584  			Value:        0x0,
   585  			Size:         0x0,
   586  		},
   587  		Symbol{
   588  			Name:         "_GLOBAL_OFFSET_TABLE_",
   589  			Info:         0x1,
   590  			Other:        0x2,
   591  			HasVersion:   false,
   592  			VersionIndex: 0,
   593  			Section:      0x17,
   594  			Value:        0x600858,
   595  			Size:         0x0,
   596  		},
   597  		Symbol{
   598  			Name:         "__init_array_end",
   599  			Info:         0x0,
   600  			Other:        0x2,
   601  			HasVersion:   false,
   602  			VersionIndex: 0,
   603  			Section:      0x12,
   604  			Value:        0x600684,
   605  			Size:         0x0,
   606  		},
   607  		Symbol{
   608  			Name:         "__init_array_start",
   609  			Info:         0x0,
   610  			Other:        0x2,
   611  			HasVersion:   false,
   612  			VersionIndex: 0,
   613  			Section:      0x12,
   614  			Value:        0x600684,
   615  			Size:         0x0,
   616  		},
   617  		Symbol{
   618  			Name:         "_DYNAMIC",
   619  			Info:         0x1,
   620  			Other:        0x2,
   621  			HasVersion:   false,
   622  			VersionIndex: 0,
   623  			Section:      0x15,
   624  			Value:        0x6006B0,
   625  			Size:         0x0,
   626  		},
   627  		Symbol{
   628  			Name:         "data_start",
   629  			Info:         0x20,
   630  			Other:        0x0,
   631  			HasVersion:   false,
   632  			VersionIndex: 0,
   633  			Section:      0x18,
   634  			Value:        0x600880,
   635  			Size:         0x0,
   636  		},
   637  		Symbol{
   638  			Name:         "__libc_csu_fini",
   639  			Info:         0x12,
   640  			Other:        0x0,
   641  			HasVersion:   false,
   642  			VersionIndex: 0,
   643  			Section:      0xD,
   644  			Value:        0x4004C0,
   645  			Size:         0x2,
   646  		},
   647  		Symbol{
   648  			Name:         "_start",
   649  			Info:         0x12,
   650  			Other:        0x0,
   651  			HasVersion:   false,
   652  			VersionIndex: 0,
   653  			Section:      0xD,
   654  			Value:        0x4003E0,
   655  			Size:         0x0,
   656  		},
   657  		Symbol{
   658  			Name:         "__gmon_start__",
   659  			Info:         0x20,
   660  			Other:        0x0,
   661  			HasVersion:   false,
   662  			VersionIndex: 0,
   663  			Section:      0x0,
   664  			Value:        0x0,
   665  			Size:         0x0,
   666  		},
   667  		Symbol{
   668  			Name:         "_Jv_RegisterClasses",
   669  			Info:         0x20,
   670  			Other:        0x0,
   671  			HasVersion:   false,
   672  			VersionIndex: 0,
   673  			Section:      0x0,
   674  			Value:        0x0,
   675  			Size:         0x0,
   676  		},
   677  		Symbol{
   678  			Name:         "puts@@GLIBC_2.2.5",
   679  			Info:         0x12,
   680  			Other:        0x0,
   681  			HasVersion:   false,
   682  			VersionIndex: 0,
   683  			Section:      0x0,
   684  			Value:        0x0,
   685  			Size:         0x18C,
   686  		},
   687  		Symbol{
   688  			Name:         "_fini",
   689  			Info:         0x12,
   690  			Other:        0x0,
   691  			HasVersion:   false,
   692  			VersionIndex: 0,
   693  			Section:      0xE,
   694  			Value:        0x400594,
   695  			Size:         0x0,
   696  		},
   697  		Symbol{
   698  			Name:         "__libc_start_main@@GLIBC_2.2.5",
   699  			Info:         0x12,
   700  			Other:        0x0,
   701  			HasVersion:   false,
   702  			VersionIndex: 0,
   703  			Section:      0x0,
   704  			Value:        0x0,
   705  			Size:         0x1C2,
   706  		},
   707  		Symbol{
   708  			Name:         "_IO_stdin_used",
   709  			Info:         0x11,
   710  			Other:        0x0,
   711  			HasVersion:   false,
   712  			VersionIndex: 0,
   713  			Section:      0xF,
   714  			Value:        0x4005A4,
   715  			Size:         0x4,
   716  		},
   717  		Symbol{
   718  			Name:         "__data_start",
   719  			Info:         0x10,
   720  			Other:        0x0,
   721  			HasVersion:   false,
   722  			VersionIndex: 0,
   723  			Section:      0x18,
   724  			Value:        0x600880,
   725  			Size:         0x0,
   726  		},
   727  		Symbol{
   728  			Name:         "__dso_handle",
   729  			Info:         0x11,
   730  			Other:        0x2,
   731  			HasVersion:   false,
   732  			VersionIndex: 0,
   733  			Section:      0x18,
   734  			Value:        0x600888,
   735  			Size:         0x0,
   736  		},
   737  		Symbol{
   738  			Name:         "__libc_csu_init",
   739  			Info:         0x12,
   740  			Other:        0x0,
   741  			HasVersion:   false,
   742  			VersionIndex: 0,
   743  			Section:      0xD,
   744  			Value:        0x4004D0,
   745  			Size:         0x89,
   746  		},
   747  		Symbol{
   748  			Name:         "__bss_start",
   749  			Info:         0x10,
   750  			Other:        0x0,
   751  			HasVersion:   false,
   752  			VersionIndex: 0,
   753  			Section:      0xFFF1,
   754  			Value:        0x600898,
   755  			Size:         0x0,
   756  		},
   757  		Symbol{
   758  			Name:         "_end",
   759  			Info:         0x10,
   760  			Other:        0x0,
   761  			HasVersion:   false,
   762  			VersionIndex: 0,
   763  			Section:      0xFFF1,
   764  			Value:        0x6008A0,
   765  			Size:         0x0,
   766  		},
   767  		Symbol{
   768  			Name:         "_edata",
   769  			Info:         0x10,
   770  			Other:        0x0,
   771  			HasVersion:   false,
   772  			VersionIndex: 0,
   773  			Section:      0xFFF1,
   774  			Value:        0x600898,
   775  			Size:         0x0,
   776  		},
   777  		Symbol{
   778  			Name:         "main",
   779  			Info:         0x12,
   780  			Other:        0x0,
   781  			HasVersion:   false,
   782  			VersionIndex: 0,
   783  			Section:      0xD,
   784  			Value:        0x400498,
   785  			Size:         0x1B,
   786  		},
   787  		Symbol{
   788  			Name:         "_init",
   789  			Info:         0x12,
   790  			Other:        0x0,
   791  			HasVersion:   false,
   792  			VersionIndex: 0,
   793  			Section:      0xB,
   794  			Value:        0x400398,
   795  			Size:         0x0,
   796  		},
   797  	},
   798  	"testdata/go-relocation-test-clang-x86.obj": {
   799  		Symbol{
   800  			Name:         "go-relocation-test-clang.c",
   801  			Info:         0x4,
   802  			Other:        0x0,
   803  			HasVersion:   false,
   804  			VersionIndex: 0,
   805  			Section:      0xFFF1,
   806  			Value:        0x0,
   807  			Size:         0x0,
   808  		},
   809  		Symbol{
   810  			Name:         ".Linfo_string0",
   811  			Info:         0x0,
   812  			Other:        0x0,
   813  			HasVersion:   false,
   814  			VersionIndex: 0,
   815  			Section:      0xC,
   816  			Value:        0x0,
   817  			Size:         0x0,
   818  		},
   819  		Symbol{
   820  			Name:         ".Linfo_string1",
   821  			Info:         0x0,
   822  			Other:        0x0,
   823  			HasVersion:   false,
   824  			VersionIndex: 0,
   825  			Section:      0xC,
   826  			Value:        0x2C,
   827  			Size:         0x0,
   828  		},
   829  		Symbol{
   830  			Name:         ".Linfo_string2",
   831  			Info:         0x0,
   832  			Other:        0x0,
   833  			HasVersion:   false,
   834  			VersionIndex: 0,
   835  			Section:      0xC,
   836  			Value:        0x47,
   837  			Size:         0x0,
   838  		},
   839  		Symbol{
   840  			Name:         ".Linfo_string3",
   841  			Info:         0x0,
   842  			Other:        0x0,
   843  			HasVersion:   false,
   844  			VersionIndex: 0,
   845  			Section:      0xC,
   846  			Value:        0x4C,
   847  			Size:         0x0,
   848  		},
   849  		Symbol{
   850  			Name:         ".Linfo_string4",
   851  			Info:         0x0,
   852  			Other:        0x0,
   853  			HasVersion:   false,
   854  			VersionIndex: 0,
   855  			Section:      0xC,
   856  			Value:        0x4E,
   857  			Size:         0x0,
   858  		},
   859  		Symbol{
   860  			Name:         "",
   861  			Info:         0x3,
   862  			Other:        0x0,
   863  			HasVersion:   false,
   864  			VersionIndex: 0,
   865  			Section:      0x1,
   866  			Value:        0x0,
   867  			Size:         0x0,
   868  		},
   869  		Symbol{
   870  			Name:         "",
   871  			Info:         0x3,
   872  			Other:        0x0,
   873  			HasVersion:   false,
   874  			VersionIndex: 0,
   875  			Section:      0x2,
   876  			Value:        0x0,
   877  			Size:         0x0,
   878  		},
   879  		Symbol{
   880  			Name:         "",
   881  			Info:         0x3,
   882  			Other:        0x0,
   883  			HasVersion:   false,
   884  			VersionIndex: 0,
   885  			Section:      0x3,
   886  			Value:        0x0,
   887  			Size:         0x0,
   888  		},
   889  		Symbol{
   890  			Name:         "",
   891  			Info:         0x3,
   892  			Other:        0x0,
   893  			HasVersion:   false,
   894  			VersionIndex: 0,
   895  			Section:      0x4,
   896  			Value:        0x0,
   897  			Size:         0x0,
   898  		},
   899  		Symbol{
   900  			Name:         "",
   901  			Info:         0x3,
   902  			Other:        0x0,
   903  			HasVersion:   false,
   904  			VersionIndex: 0,
   905  			Section:      0x6,
   906  			Value:        0x0,
   907  			Size:         0x0,
   908  		},
   909  		Symbol{
   910  			Name:         "",
   911  			Info:         0x3,
   912  			Other:        0x0,
   913  			HasVersion:   false,
   914  			VersionIndex: 0,
   915  			Section:      0x7,
   916  			Value:        0x0,
   917  			Size:         0x0,
   918  		},
   919  		Symbol{
   920  			Name:         "",
   921  			Info:         0x3,
   922  			Other:        0x0,
   923  			HasVersion:   false,
   924  			VersionIndex: 0,
   925  			Section:      0x8,
   926  			Value:        0x0,
   927  			Size:         0x0,
   928  		},
   929  		Symbol{
   930  			Name:         "",
   931  			Info:         0x3,
   932  			Other:        0x0,
   933  			HasVersion:   false,
   934  			VersionIndex: 0,
   935  			Section:      0xA,
   936  			Value:        0x0,
   937  			Size:         0x0,
   938  		},
   939  		Symbol{
   940  			Name:         "",
   941  			Info:         0x3,
   942  			Other:        0x0,
   943  			HasVersion:   false,
   944  			VersionIndex: 0,
   945  			Section:      0xC,
   946  			Value:        0x0,
   947  			Size:         0x0,
   948  		},
   949  		Symbol{
   950  			Name:         "",
   951  			Info:         0x3,
   952  			Other:        0x0,
   953  			HasVersion:   false,
   954  			VersionIndex: 0,
   955  			Section:      0xD,
   956  			Value:        0x0,
   957  			Size:         0x0,
   958  		},
   959  		Symbol{
   960  			Name:         "",
   961  			Info:         0x3,
   962  			Other:        0x0,
   963  			HasVersion:   false,
   964  			VersionIndex: 0,
   965  			Section:      0xE,
   966  			Value:        0x0,
   967  			Size:         0x0,
   968  		},
   969  		Symbol{
   970  			Name:         "",
   971  			Info:         0x3,
   972  			Other:        0x0,
   973  			HasVersion:   false,
   974  			VersionIndex: 0,
   975  			Section:      0xF,
   976  			Value:        0x0,
   977  			Size:         0x0,
   978  		},
   979  		Symbol{
   980  			Name:         "",
   981  			Info:         0x3,
   982  			Other:        0x0,
   983  			HasVersion:   false,
   984  			VersionIndex: 0,
   985  			Section:      0x10,
   986  			Value:        0x0,
   987  			Size:         0x0,
   988  		},
   989  		Symbol{
   990  			Name:         "v",
   991  			Info:         0x11,
   992  			Other:        0x0,
   993  			HasVersion:   false,
   994  			VersionIndex: 0,
   995  			Section:      0xFFF2,
   996  			Value:        0x4,
   997  			Size:         0x4,
   998  		},
   999  	},
  1000  	"testdata/hello-world-core.gz": {},
  1001  }
  1002  
  1003  var dynamicSymbolsGolden = map[string][]Symbol{
  1004  	"testdata/gcc-amd64-linux-exec": {
  1005  		Symbol{
  1006  			Name:         "__gmon_start__",
  1007  			Info:         0x20,
  1008  			Other:        0x0,
  1009  			HasVersion:   true,
  1010  			VersionIndex: 0x0,
  1011  			Section:      0x0,
  1012  			Value:        0x0,
  1013  			Size:         0x0,
  1014  		},
  1015  		Symbol{
  1016  			Name:         "puts",
  1017  			Info:         0x12,
  1018  			Other:        0x0,
  1019  			HasVersion:   true,
  1020  			VersionIndex: 0x2,
  1021  			Section:      0x0,
  1022  			Value:        0x0,
  1023  			Size:         0x18C,
  1024  			Version:      "GLIBC_2.2.5",
  1025  			Library:      "libc.so.6",
  1026  		},
  1027  		Symbol{
  1028  			Name:         "__libc_start_main",
  1029  			Info:         0x12,
  1030  			Other:        0x0,
  1031  			HasVersion:   true,
  1032  			VersionIndex: 0x2,
  1033  			Section:      0x0,
  1034  			Value:        0x0,
  1035  			Size:         0x1C2,
  1036  			Version:      "GLIBC_2.2.5",
  1037  			Library:      "libc.so.6",
  1038  		},
  1039  	},
  1040  	"testdata/go-relocation-test-clang-x86.obj": {},
  1041  	"testdata/hello-world-core.gz":              {},
  1042  	"testdata/libtiffxx.so_": {
  1043  		Symbol{
  1044  			Name:         "_ZNSo3putEc",
  1045  			Info:         0x12,
  1046  			Other:        0x0,
  1047  			HasVersion:   true,
  1048  			VersionIndex: 0x3,
  1049  			Section:      0x0,
  1050  			Value:        0x0,
  1051  			Size:         0x0,
  1052  			Version:      "GLIBCXX_3.4",
  1053  			Library:      "libstdc++.so.6",
  1054  		},
  1055  		Symbol{
  1056  			Name:         "strchr",
  1057  			Info:         0x12,
  1058  			Other:        0x0,
  1059  			HasVersion:   true,
  1060  			VersionIndex: 0x4,
  1061  			Section:      0x0,
  1062  			Value:        0x0,
  1063  			Size:         0x0,
  1064  			Version:      "GLIBC_2.2.5",
  1065  			Library:      "libc.so.6",
  1066  		},
  1067  		Symbol{
  1068  			Name:         "__cxa_finalize",
  1069  			Info:         0x22,
  1070  			Other:        0x0,
  1071  			HasVersion:   true,
  1072  			VersionIndex: 0x4,
  1073  			Section:      0x0,
  1074  			Value:        0x0,
  1075  			Size:         0x0,
  1076  			Version:      "GLIBC_2.2.5",
  1077  			Library:      "libc.so.6",
  1078  		},
  1079  		Symbol{
  1080  			Name:         "_ZNSo5tellpEv",
  1081  			Info:         0x12,
  1082  			Other:        0x0,
  1083  			HasVersion:   true,
  1084  			VersionIndex: 0x3,
  1085  			Section:      0x0,
  1086  			Value:        0x0,
  1087  			Size:         0x0,
  1088  			Version:      "GLIBCXX_3.4",
  1089  			Library:      "libstdc++.so.6",
  1090  		},
  1091  		Symbol{
  1092  			Name:         "_ZNSo5seekpElSt12_Ios_Seekdir",
  1093  			Info:         0x12,
  1094  			Other:        0x0,
  1095  			HasVersion:   true,
  1096  			VersionIndex: 0x3,
  1097  			Section:      0x0,
  1098  			Value:        0x0,
  1099  			Size:         0x0,
  1100  			Version:      "GLIBCXX_3.4",
  1101  			Library:      "libstdc++.so.6",
  1102  		},
  1103  		Symbol{
  1104  			Name:         "_Znwm",
  1105  			Info:         0x12,
  1106  			Other:        0x0,
  1107  			HasVersion:   true,
  1108  			VersionIndex: 0x3,
  1109  			Section:      0x0,
  1110  			Value:        0x0,
  1111  			Size:         0x0,
  1112  			Version:      "GLIBCXX_3.4",
  1113  			Library:      "libstdc++.so.6",
  1114  		},
  1115  		Symbol{
  1116  			Name:         "_ZdlPvm",
  1117  			Info:         0x12,
  1118  			Other:        0x0,
  1119  			HasVersion:   true,
  1120  			VersionIndex: 0x5,
  1121  			Section:      0x0,
  1122  			Value:        0x0,
  1123  			Size:         0x0,
  1124  			Version:      "CXXABI_1.3.9",
  1125  			Library:      "libstdc++.so.6",
  1126  		},
  1127  		Symbol{
  1128  			Name:         "__stack_chk_fail",
  1129  			Info:         0x12,
  1130  			Other:        0x0,
  1131  			HasVersion:   true,
  1132  			VersionIndex: 0x6,
  1133  			Section:      0x0,
  1134  			Value:        0x0,
  1135  			Size:         0x0,
  1136  			Version:      "GLIBC_2.4",
  1137  			Library:      "libc.so.6",
  1138  		},
  1139  		Symbol{
  1140  			Name:         "_ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_l",
  1141  			Info:         0x12,
  1142  			Other:        0x0,
  1143  			HasVersion:   true,
  1144  			VersionIndex: 0x7,
  1145  			Section:      0x0,
  1146  			Value:        0x0,
  1147  			Size:         0x0,
  1148  			Version:      "GLIBCXX_3.4.9",
  1149  			Library:      "libstdc++.so.6",
  1150  		},
  1151  		Symbol{
  1152  			Name:         "_ZNSo5seekpESt4fposI11__mbstate_tE",
  1153  			Info:         0x12,
  1154  			Other:        0x0,
  1155  			HasVersion:   true,
  1156  			VersionIndex: 0x3,
  1157  			Section:      0x0,
  1158  			Value:        0x0,
  1159  			Size:         0x0,
  1160  			Version:      "GLIBCXX_3.4",
  1161  			Library:      "libstdc++.so.6",
  1162  		},
  1163  		Symbol{
  1164  			Name:         "_ZNSi4readEPcl",
  1165  			Info:         0x12,
  1166  			Other:        0x0,
  1167  			HasVersion:   true,
  1168  			VersionIndex: 0x3,
  1169  			Section:      0x0,
  1170  			Value:        0x0,
  1171  			Size:         0x0,
  1172  			Version:      "GLIBCXX_3.4",
  1173  			Library:      "libstdc++.so.6",
  1174  		},
  1175  		Symbol{
  1176  			Name:         "_ZNSi5seekgESt4fposI11__mbstate_tE",
  1177  			Info:         0x12,
  1178  			Other:        0x0,
  1179  			HasVersion:   true,
  1180  			VersionIndex: 0x3,
  1181  			Section:      0x0,
  1182  			Value:        0x0,
  1183  			Size:         0x0,
  1184  			Version:      "GLIBCXX_3.4",
  1185  			Library:      "libstdc++.so.6",
  1186  		},
  1187  		Symbol{
  1188  			Name:         "_ZNSo5writeEPKcl",
  1189  			Info:         0x12,
  1190  			Other:        0x0,
  1191  			HasVersion:   true,
  1192  			VersionIndex: 0x3,
  1193  			Section:      0x0,
  1194  			Value:        0x0,
  1195  			Size:         0x0,
  1196  			Version:      "GLIBCXX_3.4",
  1197  			Library:      "libstdc++.so.6",
  1198  		},
  1199  		Symbol{
  1200  			Name:         "_ZNSi5seekgElSt12_Ios_Seekdir",
  1201  			Info:         0x12,
  1202  			Other:        0x0,
  1203  			HasVersion:   true,
  1204  			VersionIndex: 0x3,
  1205  			Section:      0x0,
  1206  			Value:        0x0,
  1207  			Size:         0x0,
  1208  			Version:      "GLIBCXX_3.4",
  1209  			Library:      "libstdc++.so.6",
  1210  		},
  1211  		Symbol{
  1212  			Name:         "_ZSt21ios_base_library_initv",
  1213  			Info:         0x12,
  1214  			Other:        0x0,
  1215  			HasVersion:   true,
  1216  			VersionIndex: 0x8,
  1217  			Section:      0x0,
  1218  			Value:        0x0,
  1219  			Size:         0x0,
  1220  			Version:      "GLIBCXX_3.4.32",
  1221  			Library:      "libstdc++.so.6",
  1222  		},
  1223  		Symbol{
  1224  			Name:         "TIFFClientOpen",
  1225  			Info:         0x12,
  1226  			Other:        0x0,
  1227  			HasVersion:   true,
  1228  			VersionIndex: 0x9,
  1229  			Section:      0x0,
  1230  			Value:        0x0,
  1231  			Size:         0x0,
  1232  			Version:      "LIBTIFF_4.0",
  1233  			Library:      "libtiff.so.6",
  1234  		},
  1235  		Symbol{
  1236  			Name:         "_ZNSt9basic_iosIcSt11char_traitsIcEE5clearESt12_Ios_Iostate",
  1237  			Info:         0x12,
  1238  			Other:        0x0,
  1239  			HasVersion:   true,
  1240  			VersionIndex: 0x3,
  1241  			Section:      0x0,
  1242  			Value:        0x0,
  1243  			Size:         0x0,
  1244  			Version:      "GLIBCXX_3.4",
  1245  			Library:      "libstdc++.so.6",
  1246  		},
  1247  		Symbol{
  1248  			Name:         "_ZNSi5tellgEv",
  1249  			Info:         0x12,
  1250  			Other:        0x0,
  1251  			HasVersion:   true,
  1252  			VersionIndex: 0x3,
  1253  			Section:      0x0,
  1254  			Value:        0x0,
  1255  			Size:         0x0,
  1256  			Version:      "GLIBCXX_3.4",
  1257  			Library:      "libstdc++.so.6",
  1258  		},
  1259  		Symbol{
  1260  			Name:         "_ITM_deregisterTMCloneTable",
  1261  			Info:         0x20,
  1262  			Other:        0x0,
  1263  			HasVersion:   true,
  1264  			VersionIndex: 0x1,
  1265  			Section:      0x0,
  1266  			Value:        0x0,
  1267  			Size:         0x0,
  1268  		},
  1269  		Symbol{
  1270  			Name:         "__gmon_start__",
  1271  			Info:         0x20,
  1272  			Other:        0x0,
  1273  			HasVersion:   true,
  1274  			VersionIndex: 0x1,
  1275  			Section:      0x0,
  1276  			Value:        0x0,
  1277  			Size:         0x0,
  1278  		},
  1279  		Symbol{
  1280  			Name:         "_ITM_registerTMCloneTable",
  1281  			Info:         0x20,
  1282  			Other:        0x0,
  1283  			HasVersion:   true,
  1284  			VersionIndex: 0x1,
  1285  			Section:      0x0,
  1286  			Value:        0x0,
  1287  			Size:         0x0,
  1288  		},
  1289  		Symbol{
  1290  			Name:         "LIBTIFFXX_4.0",
  1291  			Info:         0x11,
  1292  			Other:        0x0,
  1293  			HasVersion:   true,
  1294  			VersionIndex: 0x2,
  1295  			Section:      0xFFF1,
  1296  			Value:        0x0,
  1297  			Size:         0x0,
  1298  			Version:      "LIBTIFFXX_4.0",
  1299  			Library:      "",
  1300  		},
  1301  		Symbol{
  1302  			Name:         "_Z14TIFFStreamOpenPKcPSo",
  1303  			Info:         0x12,
  1304  			Other:        0x0,
  1305  			HasVersion:   true,
  1306  			VersionIndex: 0x2,
  1307  			Section:      0xF,
  1308  			Value:        0x1860,
  1309  			Size:         0xB8,
  1310  			Version:      "LIBTIFFXX_4.0",
  1311  			Library:      "",
  1312  		},
  1313  		Symbol{
  1314  			Name:         "_Z14TIFFStreamOpenPKcPSi",
  1315  			Info:         0x12,
  1316  			Other:        0x0,
  1317  			HasVersion:   true,
  1318  			VersionIndex: 0x2,
  1319  			Section:      0xF,
  1320  			Value:        0x1920,
  1321  			Size:         0x13,
  1322  			Version:      "LIBTIFFXX_4.0",
  1323  			Library:      "",
  1324  		},
  1325  	},
  1326  }
  1327  

View as plain text