1da0c48c4Sopenharmony_ci#! /bin/sh 2da0c48c4Sopenharmony_ci# Copyright (C) 2015, 2018 Red Hat, Inc. 3da0c48c4Sopenharmony_ci# This file is part of elfutils. 4da0c48c4Sopenharmony_ci# 5da0c48c4Sopenharmony_ci# This file is free software; you can redistribute it and/or modify 6da0c48c4Sopenharmony_ci# it under the terms of the GNU General Public License as published by 7da0c48c4Sopenharmony_ci# the Free Software Foundation; either version 3 of the License, or 8da0c48c4Sopenharmony_ci# (at your option) any later version. 9da0c48c4Sopenharmony_ci# 10da0c48c4Sopenharmony_ci# elfutils is distributed in the hope that it will be useful, but 11da0c48c4Sopenharmony_ci# WITHOUT ANY WARRANTY; without even the implied warranty of 12da0c48c4Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13da0c48c4Sopenharmony_ci# GNU General Public License for more details. 14da0c48c4Sopenharmony_ci# 15da0c48c4Sopenharmony_ci# You should have received a copy of the GNU General Public License 16da0c48c4Sopenharmony_ci# along with this program. If not, see <http://www.gnu.org/licenses/>. 17da0c48c4Sopenharmony_ci 18da0c48c4Sopenharmony_ci. $srcdir/test-subr.sh 19da0c48c4Sopenharmony_ci 20da0c48c4Sopenharmony_citestfiles debug-ranges-no-lowpc.o 21da0c48c4Sopenharmony_ci 22da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges debug-ranges-no-lowpc.o 0xb <<\EOF 23da0c48c4Sopenharmony_ci1..2 (base 0) 24da0c48c4Sopenharmony_ci3..4 (base 0) 25da0c48c4Sopenharmony_ciEOF 26da0c48c4Sopenharmony_ci 27da0c48c4Sopenharmony_ci# - hello.c 28da0c48c4Sopenharmony_ci# int say (const char *prefix); 29da0c48c4Sopenharmony_ci# 30da0c48c4Sopenharmony_ci# char * 31da0c48c4Sopenharmony_ci# subject (char *word, int count) 32da0c48c4Sopenharmony_ci# { 33da0c48c4Sopenharmony_ci# return count > 0 ? word : (word + count); 34da0c48c4Sopenharmony_ci# } 35da0c48c4Sopenharmony_ci# 36da0c48c4Sopenharmony_ci# int 37da0c48c4Sopenharmony_ci# main (int argc, char **argv) 38da0c48c4Sopenharmony_ci# { 39da0c48c4Sopenharmony_ci# return say (subject (argv[0], argc)); 40da0c48c4Sopenharmony_ci# } 41da0c48c4Sopenharmony_ci# 42da0c48c4Sopenharmony_ci# int 43da0c48c4Sopenharmony_ci# no_say (const char *prefix) 44da0c48c4Sopenharmony_ci# { 45da0c48c4Sopenharmony_ci# const char *world = subject ("World", 42); 46da0c48c4Sopenharmony_ci# return prefix ? say (prefix) : say (world); 47da0c48c4Sopenharmony_ci# } 48da0c48c4Sopenharmony_ci# 49da0c48c4Sopenharmony_ci# - world.c 50da0c48c4Sopenharmony_ci# char * subject (char *word, int count); 51da0c48c4Sopenharmony_ci# int no_say (const char *prefix); 52da0c48c4Sopenharmony_ci# 53da0c48c4Sopenharmony_ci# static int 54da0c48c4Sopenharmony_ci# sad (char c) 55da0c48c4Sopenharmony_ci# { 56da0c48c4Sopenharmony_ci# return c > 0 ? c : c + 1; 57da0c48c4Sopenharmony_ci# } 58da0c48c4Sopenharmony_ci# 59da0c48c4Sopenharmony_ci# static int 60da0c48c4Sopenharmony_ci# happy (const char *w) 61da0c48c4Sopenharmony_ci# { 62da0c48c4Sopenharmony_ci# return sad (w[1]); 63da0c48c4Sopenharmony_ci# } 64da0c48c4Sopenharmony_ci# 65da0c48c4Sopenharmony_ci# int 66da0c48c4Sopenharmony_ci# say (const char *prefix) 67da0c48c4Sopenharmony_ci# { 68da0c48c4Sopenharmony_ci# const char *world = subject ("World", 42);; 69da0c48c4Sopenharmony_ci# return prefix ? sad (prefix[0]) : happy (world); 70da0c48c4Sopenharmony_ci# } 71da0c48c4Sopenharmony_ci# 72da0c48c4Sopenharmony_ci# char * 73da0c48c4Sopenharmony_ci# no_subject (char *word, int count) 74da0c48c4Sopenharmony_ci# { 75da0c48c4Sopenharmony_ci# return count > 0 ? word : (word + count); 76da0c48c4Sopenharmony_ci# } 77da0c48c4Sopenharmony_ci# 78da0c48c4Sopenharmony_ci# int 79da0c48c4Sopenharmony_ci# no_main (int argc, char **argv) 80da0c48c4Sopenharmony_ci# { 81da0c48c4Sopenharmony_ci# return no_say (no_subject (argv[0], argc)); 82da0c48c4Sopenharmony_ci# } 83da0c48c4Sopenharmony_ci# 84da0c48c4Sopenharmony_ci# - gcc -c -O2 -gdwarf-4 hello.c 85da0c48c4Sopenharmony_ci# - gcc -c -O2 -gdwarf-4 world.c 86da0c48c4Sopenharmony_ci# - gcc -o testfileranges4 -O2 -gdwarf-4 hello.o world.o 87da0c48c4Sopenharmony_ci# - eu-strip -f testfileranges4.debug testfileranges4 88da0c48c4Sopenharmony_ci 89da0c48c4Sopenharmony_citestfiles testfileranges4.debug 90da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges4.debug 0xb <<\EOF 91da0c48c4Sopenharmony_ci400500..40053a (base 0) 92da0c48c4Sopenharmony_ci400400..400415 (base 0) 93da0c48c4Sopenharmony_ciEOF 94da0c48c4Sopenharmony_ci 95da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges4.debug 0xcd <<\EOF 96da0c48c4Sopenharmony_ci400400..400402 (base 0) 97da0c48c4Sopenharmony_ci400405..40040d (base 0) 98da0c48c4Sopenharmony_ciEOF 99da0c48c4Sopenharmony_ci 100da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges4.debug 0x374 <<\EOF 101da0c48c4Sopenharmony_ci4005a0..4005a2 (base 400540) 102da0c48c4Sopenharmony_ci4005a5..4005ad (base 400540) 103da0c48c4Sopenharmony_ciEOF 104da0c48c4Sopenharmony_ci 105da0c48c4Sopenharmony_ci# Like above, but with -gdwarf-5. 106da0c48c4Sopenharmony_citestfiles testfileranges5.debug 107da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges5.debug 0xc <<\EOF 108da0c48c4Sopenharmony_ci401150..40117a (base 0) 109da0c48c4Sopenharmony_ci401050..401067 (base 0) 110da0c48c4Sopenharmony_ciEOF 111da0c48c4Sopenharmony_ci 112da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges5.debug 0x2ce <<\EOF 113da0c48c4Sopenharmony_ci40119b..40119b (base 401180) 114da0c48c4Sopenharmony_ci40119c..4011a6 (base 401180) 115da0c48c4Sopenharmony_ci4011b0..4011b4 (base 401180) 116da0c48c4Sopenharmony_ci4011b5..4011bf (base 401180) 117da0c48c4Sopenharmony_ciEOF 118da0c48c4Sopenharmony_ci 119da0c48c4Sopenharmony_citestrun_compare ${abs_builddir}/dwarf-ranges testfileranges5.debug 0x2ef <<\EOF 120da0c48c4Sopenharmony_ci40119b..40119b (base 401180) 121da0c48c4Sopenharmony_ci40119c..4011a6 (base 401180) 122da0c48c4Sopenharmony_ci4011b4..4011b4 (base 401180) 123da0c48c4Sopenharmony_ci4011b5..4011bf (base 401180) 124da0c48c4Sopenharmony_ciEOF 125da0c48c4Sopenharmony_ci 126da0c48c4Sopenharmony_ciexit 0 127