X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2Fgold.h;h=288d9eb937bf0272f2d1bb84780b5f499fcdbcf4;hb=90a6e269214cc1605c8f2264f4cde4833a97f3a3;hp=d55d1f6ed590ab394b248ae622a76884fec1acf6;hpb=593f47df457d5e059f49b1ce62d1b51d4a7cc3e4;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/gold.h b/gold/gold.h index d55d1f6ed5..288d9eb937 100644 --- a/gold/gold.h +++ b/gold/gold.h @@ -101,12 +101,14 @@ namespace gold #define SELECT_SIZE_ONLY(size) #define ACCEPT_SIZE #define ACCEPT_SIZE_ONLY +#define ACCEPT_SIZE_EXPLICIT(size) #define SELECT_SIZE_ENDIAN_NAME(size, big_endian) #define SELECT_SIZE_ENDIAN(size, big_endian) #define SELECT_SIZE_ENDIAN_ONLY(size, big_endian) #define ACCEPT_SIZE_ENDIAN #define ACCEPT_SIZE_ENDIAN_ONLY +#define ACCEPT_SIZE_ENDIAN_EXPLICIT(size, big_endian) #else // !defined(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS) @@ -120,6 +122,7 @@ class Select_size_endian { }; #define SELECT_SIZE_ONLY(size) Select_size() #define ACCEPT_SIZE , Select_size #define ACCEPT_SIZE_ONLY Select_size +#define ACCEPT_SIZE_EXPLICIT(size) , Select_size #define SELECT_SIZE_ENDIAN_NAME(size, big_endian) #define SELECT_SIZE_ENDIAN(size, big_endian) \ @@ -128,6 +131,8 @@ class Select_size_endian { }; Select_size_endian() #define ACCEPT_SIZE_ENDIAN , Select_size_endian #define ACCEPT_SIZE_ENDIAN_ONLY Select_size_endian +#define ACCEPT_SIZE_ENDIAN_EXPLICIT(size, big_endian) \ + , Select_size_endian #endif // !defined(HAVE_MEMBER_TEMPLATE_SPECIFICATIONS) @@ -137,6 +142,7 @@ namespace gold { class General_options; +class Command_line; class Input_argument_list; class Dirsearch; class Input_objects; @@ -163,16 +169,24 @@ gold_fatal(const char* msg, bool perrno) ATTRIBUTE_NORETURN; extern void gold_nomem() ATTRIBUTE_NORETURN; -// This function is called in cases which can not arise if the code is -// written correctly. -extern void -gold_unreachable() ATTRIBUTE_NORETURN; +// This macro and function are used in cases which can not arise if +// the code is written correctly. + +#define gold_unreachable() \ + (gold::do_gold_unreachable(__FILE__, __LINE__, __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)) // Queue up the first set of tasks. extern void queue_initial_tasks(const General_options&, const Dirsearch&, - const Input_argument_list&, + const Command_line&, Workqueue*, Input_objects*, Symbol_table*,