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

View as plain text