diff options
author | Cary Coutant <ccoutant@google.com> | 2012-10-24 02:26:39 +0000 |
---|---|---|
committer | Cary Coutant <ccoutant@google.com> | 2012-10-24 02:26:39 +0000 |
commit | 774299092dc99b19dac96bc9226ff3421e70bef2 (patch) | |
tree | d2fb890acbc06f180341d09777235a2fc7a0e6b1 /gold/dwp.h | |
parent | binutils/ (diff) | |
download | binutils-gdb-774299092dc99b19dac96bc9226ff3421e70bef2.tar.gz binutils-gdb-774299092dc99b19dac96bc9226ff3421e70bef2.tar.bz2 binutils-gdb-774299092dc99b19dac96bc9226ff3421e70bef2.zip |
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.
Diffstat (limited to 'gold/dwp.h')
-rw-r--r-- | gold/dwp.h | 120 |
1 files changed, 120 insertions, 0 deletions
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 <ccoutant@google.com>. + +// 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 <cstddef> +#include <cstdlib> +#include <cstring> +#include <stdint.h> +#include <sys/types.h> + +#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<int size, bool big_endian> +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<const char*>(__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<typename To, typename From> +inline To +convert_types(const From from) +{ + To to = from; + gold_assert(static_cast<From>(to) == from); + return to; +} + +// A common case of convert_types<>: convert to section_size_type. +template<typename From> +inline section_size_type +convert_to_section_size_type(const From from) +{ return convert_types<section_size_type, From>(from); } + +}; // End namespace gold. + +#endif // !defined(DWP_DWP_H) |