From 774299092dc99b19dac96bc9226ff3421e70bef2 Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Wed, 24 Oct 2012 02:26:39 +0000 Subject: gold/ * dwp.h: New header file. * dwp.cc: New source file. * gold.h: Move shared declarations to system.h. * system.h: New header file. * Makefile.am: Add dwp. * Makefile.in: Regenerate. --- gold/dwp.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 gold/dwp.h (limited to 'gold/dwp.h') diff --git a/gold/dwp.h b/gold/dwp.h new file mode 100644 index 00000000000..25d4f680b12 --- /dev/null +++ b/gold/dwp.h @@ -0,0 +1,120 @@ +// dwp.h -- general definitions for dwp. + +// Copyright 2012 Free Software Foundation, Inc. +// Written by Cary Coutant . + +// This file is part of dwp, the DWARF packaging utility. + +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +// MA 02110-1301, USA. + +#ifndef DWP_DWP_H +#define DWP_DWP_H 1 + +#include "config.h" +#include "ansidecl.h" + +#include +#include +#include +#include +#include + +#include "system.h" + +namespace gold +{ + +extern const char* program_name; + +class General_options; +class Command_line; +class Dirsearch; +class Input_objects; +class Mapfile; +class Symbol; +class Symbol_table; +class Layout; +class Task; +class Workqueue; +class Output_file; +template +struct Relocate_info; + +// The size of a section if we are going to look at the contents. +typedef size_t section_size_type; + +// An offset within a section when we are looking at the contents. +typedef ptrdiff_t section_offset_type; + +inline bool +is_prefix_of(const char* prefix, const char* str) +{ + return strncmp(prefix, str, strlen(prefix)) == 0; +} + +// Exit status codes. + +enum Exit_status +{ + GOLD_OK = EXIT_SUCCESS, + GOLD_ERR = EXIT_FAILURE, + GOLD_FALLBACK = EXIT_FAILURE + 1 +}; + +// This function is called to exit the program. Status is true to +// exit success (0) and false to exit failure (1). +extern void +gold_exit(Exit_status status) ATTRIBUTE_NORETURN; + +// This function is called to emit an error message and then +// immediately exit with failure. +extern void +gold_fatal(const char* format, ...) ATTRIBUTE_NORETURN ATTRIBUTE_PRINTF_1; + +// This function is called to issue a warning. +extern void +gold_warning(const char* msg, ...) ATTRIBUTE_PRINTF_1; + +#define gold_unreachable() \ + (gold::do_gold_unreachable(__FILE__, __LINE__, \ + static_cast(__FUNCTION__))) + +extern void do_gold_unreachable(const char*, int, const char*) + ATTRIBUTE_NORETURN; + +// Assertion check. + +#define gold_assert(expr) ((void)(!(expr) ? gold_unreachable(), 0 : 0)) + +// Convert numeric types without unnoticed loss of precision. +template +inline To +convert_types(const From from) +{ + To to = from; + gold_assert(static_cast(to) == from); + return to; +} + +// A common case of convert_types<>: convert to section_size_type. +template +inline section_size_type +convert_to_section_size_type(const From from) +{ return convert_types(from); } + +}; // End namespace gold. + +#endif // !defined(DWP_DWP_H) -- cgit v1.2.3-65-gdbad