Home | History | Annotate | Download | only in tests
      1 #! /bin/sh
      2 # Test for displaying DW_AT_const_types with the "correct" sign.
      3 # Copyright (C) 2018 Red Hat, Inc.
      4 # This file is part of elfutils.
      5 #
      6 # This file is free software; you can redistribute it and/or modify
      7 # it under the terms of the GNU General Public License as published by
      8 # the Free Software Foundation; either version 3 of the License, or
      9 # (at your option) any later version.
     10 #
     11 # elfutils is distributed in the hope that it will be useful, but
     12 # WITHOUT ANY WARRANTY; without even the implied warranty of
     13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14 # GNU General Public License for more details.
     15 #
     16 # You should have received a copy of the GNU General Public License
     17 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
     18 
     19 . $srcdir/test-subr.sh
     20 
     21 # = s.c
     22 #
     23 # int s()
     24 # {
     25 #   int i = -1;
     26 #   int j = -1;
     27 #
     28 #   return i - j;
     29 # }
     30 #
     31 # = m.c
     32 #
     33 # extern int s();
     34 #
     35 # int
     36 # main ()
     37 # {
     38 #   const signed char sc = -2;
     39 #   const unsigned char uc = 254;
     40 #
     41 #   const signed short ss = -16;
     42 #   const unsigned short us = 65520;
     43 #
     44 #   const signed int si = -3;
     45 #   const unsigned int ui = 4200000000;
     46 #
     47 #   signed long sl = -1;
     48 #   unsigned long ul = 0xffffffffffffffffUL;
     49 #
     50 #   return s ();
     51 # }
     52 #
     53 # gcc -gdwarf-5 -O2 -c s.c
     54 # gcc -gdwarf-4 -O2 -c m.c
     55 # gcc -o testfile-const-values s.o m.o
     56 # eu-strip -g -f testfile-const-values.debug testfile-const-values
     57 
     58 testfiles testfile-const-values.debug
     59 
     60 testrun_compare ${abs_top_builddir}/src/readelf --debug-dump=info testfile-const-values.debug << EOF
     61 
     62 DWARF section [28] '.debug_info' at offset 0x2e0:
     63  [Offset]
     64  Compilation unit at offset 0:
     65  Version: 5, Abbreviation section offset: 0, Address size: 8, Offset size: 4
     66  Unit type: compile (1)
     67  [     c]  compile_unit         abbrev: 2
     68            producer             (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-5 -O2"
     69            language             (data1) C11 (29)
     70            name                 (string) "s.c"
     71            comp_dir             (strp) "/home/mark/build/elfutils-obj"
     72            low_pc               (addr) 0x00000000004004d0
     73            high_pc              (data8) 3 (0x00000000004004d3)
     74            stmt_list            (sec_offset) 0
     75  [    2e]    subprogram           abbrev: 3
     76              external             (flag_present) yes
     77              name                 (string) "s"
     78              decl_file            (data1) s.c (1)
     79              decl_line            (data1) 1
     80              type                 (ref4) [    5e]
     81              low_pc               (addr) 0x00000000004004d0
     82              high_pc              (data8) 3 (0x00000000004004d3)
     83              frame_base           (exprloc) 
     84               [ 0] call_frame_cfa
     85              call_all_calls       (flag_present) yes
     86              sibling              (ref4) [    5e]
     87  [    4d]      variable             abbrev: 1
     88                name                 (string) "i"
     89                decl_file            (implicit_const) s.c (1)
     90                decl_line            (data1) 3
     91                type                 (ref4) [    5e]
     92                const_value          (implicit_const) -1
     93  [    55]      variable             abbrev: 1
     94                name                 (string) "j"
     95                decl_file            (implicit_const) s.c (1)
     96                decl_line            (data1) 4
     97                type                 (ref4) [    5e]
     98                const_value          (implicit_const) -1
     99  [    5e]    base_type            abbrev: 4
    100              byte_size            (data1) 4
    101              encoding             (data1) signed (5)
    102              name                 (string) "int"
    103  Compilation unit at offset 102:
    104  Version: 4, Abbreviation section offset: 73, Address size: 8, Offset size: 4
    105  [    71]  compile_unit         abbrev: 1
    106            producer             (strp) "GNU C11 7.3.1 20180303 (Red Hat 7.3.1-5) -mtune=generic -march=x86-64 -gdwarf-4 -O2"
    107            language             (data1) C99 (12)
    108            name                 (string) "m.c"
    109            comp_dir             (strp) "/home/mark/build/elfutils-obj"
    110            ranges               (sec_offset) range list [     0]
    111            low_pc               (addr) 000000000000000000
    112            stmt_list            (sec_offset) 54
    113  [    8f]    subprogram           abbrev: 2
    114              external             (flag_present) yes
    115              name                 (strp) "main"
    116              decl_file            (data1) m.c (1)
    117              decl_line            (data1) 4
    118              type                 (ref4) [   119]
    119              low_pc               (addr) 0x00000000004003e0
    120              high_pc              (data8) 7 (0x00000000004003e7)
    121              frame_base           (exprloc) 
    122               [ 0] call_frame_cfa
    123              GNU_all_call_sites   (flag_present) yes
    124              sibling              (ref4) [   119]
    125  [    b0]      variable             abbrev: 3
    126                name                 (string) "sc"
    127                decl_file            (data1) m.c (1)
    128                decl_line            (data1) 6
    129                type                 (ref4) [   12c]
    130                const_value          (sdata) -2
    131  [    bb]      variable             abbrev: 3
    132                name                 (string) "uc"
    133                decl_file            (data1) m.c (1)
    134                decl_line            (data1) 7
    135                type                 (ref4) [   138]
    136                const_value          (sdata) 254 (-2)
    137  [    c6]      variable             abbrev: 3
    138                name                 (string) "ss"
    139                decl_file            (data1) m.c (1)
    140                decl_line            (data1) 9
    141                type                 (ref4) [   144]
    142                const_value          (sdata) -16
    143  [    d1]      variable             abbrev: 3
    144                name                 (string) "us"
    145                decl_file            (data1) m.c (1)
    146                decl_line            (data1) 10
    147                type                 (ref4) [   150]
    148                const_value          (sdata) 65520 (-16)
    149  [    dc]      variable             abbrev: 3
    150                name                 (string) "si"
    151                decl_file            (data1) m.c (1)
    152                decl_line            (data1) 12
    153                type                 (ref4) [   120]
    154                const_value          (sdata) -3
    155  [    e7]      variable             abbrev: 3
    156                name                 (string) "ui"
    157                decl_file            (data1) m.c (1)
    158                decl_line            (data1) 13
    159                type                 (ref4) [   15c]
    160                const_value          (sdata) 4200000000 (-94967296)
    161  [    f5]      variable             abbrev: 3
    162                name                 (string) "sl"
    163                decl_file            (data1) m.c (1)
    164                decl_line            (data1) 15
    165                type                 (ref4) [   161]
    166                const_value          (sdata) -1
    167  [   100]      variable             abbrev: 3
    168                name                 (string) "ul"
    169                decl_file            (data1) m.c (1)
    170                decl_line            (data1) 16
    171                type                 (ref4) [   168]
    172                const_value          (sdata) 18446744073709551615 (-1)
    173  [   10b]      GNU_call_site        abbrev: 4
    174                low_pc               (addr) 0x00000000004003e7
    175                GNU_tail_call        (flag_present) yes
    176                abstract_origin      (ref4) [   16f]
    177  [   119]    base_type            abbrev: 5
    178              byte_size            (data1) 4
    179              encoding             (data1) signed (5)
    180              name                 (string) "int"
    181  [   120]    const_type           abbrev: 6
    182              type                 (ref4) [   119]
    183  [   125]    base_type            abbrev: 7
    184              byte_size            (data1) 1
    185              encoding             (data1) signed_char (6)
    186              name                 (strp) "signed char"
    187  [   12c]    const_type           abbrev: 6
    188              type                 (ref4) [   125]
    189  [   131]    base_type            abbrev: 7
    190              byte_size            (data1) 1
    191              encoding             (data1) unsigned_char (8)
    192              name                 (strp) "unsigned char"
    193  [   138]    const_type           abbrev: 6
    194              type                 (ref4) [   131]
    195  [   13d]    base_type            abbrev: 7
    196              byte_size            (data1) 2
    197              encoding             (data1) signed (5)
    198              name                 (strp) "short int"
    199  [   144]    const_type           abbrev: 6
    200              type                 (ref4) [   13d]
    201  [   149]    base_type            abbrev: 7
    202              byte_size            (data1) 2
    203              encoding             (data1) unsigned (7)
    204              name                 (strp) "short unsigned int"
    205  [   150]    const_type           abbrev: 6
    206              type                 (ref4) [   149]
    207  [   155]    base_type            abbrev: 7
    208              byte_size            (data1) 4
    209              encoding             (data1) unsigned (7)
    210              name                 (strp) "unsigned int"
    211  [   15c]    const_type           abbrev: 6
    212              type                 (ref4) [   155]
    213  [   161]    base_type            abbrev: 7
    214              byte_size            (data1) 8
    215              encoding             (data1) signed (5)
    216              name                 (strp) "long int"
    217  [   168]    base_type            abbrev: 7
    218              byte_size            (data1) 8
    219              encoding             (data1) unsigned (7)
    220              name                 (strp) "long unsigned int"
    221  [   16f]    subprogram           abbrev: 8
    222              external             (flag_present) yes
    223              declaration          (flag_present) yes
    224              linkage_name         (string) "s"
    225              name                 (string) "s"
    226              decl_file            (data1) m.c (1)
    227              decl_line            (data1) 1
    228 EOF
    229 
    230 exit 0
    231