1*c42dbd0eSchristos /* Copyright (C) 2021 Free Software Foundation, Inc. 2*c42dbd0eSchristos Contributed by Oracle. 3*c42dbd0eSchristos 4*c42dbd0eSchristos This file is part of GNU Binutils. 5*c42dbd0eSchristos 6*c42dbd0eSchristos This program is free software; you can redistribute it and/or modify 7*c42dbd0eSchristos it under the terms of the GNU General Public License as published by 8*c42dbd0eSchristos the Free Software Foundation; either version 3, or (at your option) 9*c42dbd0eSchristos any later version. 10*c42dbd0eSchristos 11*c42dbd0eSchristos This program is distributed in the hope that it will be useful, 12*c42dbd0eSchristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13*c42dbd0eSchristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*c42dbd0eSchristos GNU General Public License for more details. 15*c42dbd0eSchristos 16*c42dbd0eSchristos You should have received a copy of the GNU General Public License 17*c42dbd0eSchristos along with this program; if not, write to the Free Software 18*c42dbd0eSchristos Foundation, 51 Franklin Street - Fifth Floor, Boston, 19*c42dbd0eSchristos MA 02110-1301, USA. */ 20*c42dbd0eSchristos 21*c42dbd0eSchristos #ifndef _COMPCOM_H 22*c42dbd0eSchristos #define _COMPCOM_H 23*c42dbd0eSchristos 24*c42dbd0eSchristos #include <sys/types.h> 25*c42dbd0eSchristos #include "comp_com.h" 26*c42dbd0eSchristos 27*c42dbd0eSchristos class Elf; 28*c42dbd0eSchristos typedef int (*CheckSrcName) (char *); 29*c42dbd0eSchristos 30*c42dbd0eSchristos class CompComment 31*c42dbd0eSchristos { 32*c42dbd0eSchristos public: 33*c42dbd0eSchristos CompComment (Elf *_elf, int _compcom); 34*c42dbd0eSchristos ~CompComment (); 35*c42dbd0eSchristos int compcom_open (CheckSrcName check_src); 36*c42dbd0eSchristos char *compcom_format (int index, compmsg *msg, int &visible); 37*c42dbd0eSchristos 38*c42dbd0eSchristos private: 39*c42dbd0eSchristos int get_align (int64_t, int align); 40*c42dbd0eSchristos char *get_demangle_name (char *fname); 41*c42dbd0eSchristos 42*c42dbd0eSchristos Elf *elf; 43*c42dbd0eSchristos int compcom, elf_cls; 44*c42dbd0eSchristos compmsg *msgs; /* the array of messages */ 45*c42dbd0eSchristos int32_t *params; /* the parameters used in the messages parameters are 46*c42dbd0eSchristos * either integers or string-indices */ 47*c42dbd0eSchristos char *strs; /* the strings used in the messages */ 48*c42dbd0eSchristos }; 49*c42dbd0eSchristos 50*c42dbd0eSchristos class ComC 51*c42dbd0eSchristos { 52*c42dbd0eSchristos public: ComC()53*c42dbd0eSchristos ComC () { com_str = NULL; }; ~ComC()54*c42dbd0eSchristos ~ComC () { free (com_str); }; 55*c42dbd0eSchristos 56*c42dbd0eSchristos int sec; 57*c42dbd0eSchristos int type; 58*c42dbd0eSchristos int visible; 59*c42dbd0eSchristos int line; 60*c42dbd0eSchristos char *com_str; 61*c42dbd0eSchristos }; 62*c42dbd0eSchristos 63*c42dbd0eSchristos #endif /* _COMPCOM_H */ 64