Add basic exception frame header, plus test.
This commit is contained in:
parent
4dffcebc10
commit
3151305a47
|
@ -26,6 +26,7 @@ CCFILES = \
|
|||
defstd.cc \
|
||||
dirsearch.cc \
|
||||
dynobj.cc \
|
||||
ehframe.cc \
|
||||
fileread.cc \
|
||||
gold.cc \
|
||||
gold-threads.cc \
|
||||
|
@ -50,6 +51,7 @@ HFILES = \
|
|||
defstd.h \
|
||||
dirsearch.h \
|
||||
dynobj.h \
|
||||
ehframe.h \
|
||||
fileread.h \
|
||||
gold.h \
|
||||
gold-threads.h \
|
||||
|
|
|
@ -71,13 +71,13 @@ ARFLAGS = cru
|
|||
libgold_a_AR = $(AR) $(ARFLAGS)
|
||||
libgold_a_LIBADD =
|
||||
am__objects_1 = archive.$(OBJEXT) common.$(OBJEXT) defstd.$(OBJEXT) \
|
||||
dirsearch.$(OBJEXT) dynobj.$(OBJEXT) fileread.$(OBJEXT) \
|
||||
gold.$(OBJEXT) gold-threads.$(OBJEXT) layout.$(OBJEXT) \
|
||||
merge.$(OBJEXT) object.$(OBJEXT) options.$(OBJEXT) \
|
||||
output.$(OBJEXT) parameters.$(OBJEXT) readsyms.$(OBJEXT) \
|
||||
reloc.$(OBJEXT) resolve.$(OBJEXT) script.$(OBJEXT) \
|
||||
symtab.$(OBJEXT) stringpool.$(OBJEXT) target-select.$(OBJEXT) \
|
||||
workqueue.$(OBJEXT)
|
||||
dirsearch.$(OBJEXT) dynobj.$(OBJEXT) ehframe.$(OBJEXT) \
|
||||
fileread.$(OBJEXT) gold.$(OBJEXT) gold-threads.$(OBJEXT) \
|
||||
layout.$(OBJEXT) merge.$(OBJEXT) object.$(OBJEXT) \
|
||||
options.$(OBJEXT) output.$(OBJEXT) parameters.$(OBJEXT) \
|
||||
readsyms.$(OBJEXT) reloc.$(OBJEXT) resolve.$(OBJEXT) \
|
||||
script.$(OBJEXT) symtab.$(OBJEXT) stringpool.$(OBJEXT) \
|
||||
target-select.$(OBJEXT) workqueue.$(OBJEXT)
|
||||
am__objects_2 =
|
||||
am__objects_3 = yyscript.$(OBJEXT)
|
||||
am_libgold_a_OBJECTS = $(am__objects_1) $(am__objects_2) \
|
||||
|
@ -271,6 +271,7 @@ CCFILES = \
|
|||
defstd.cc \
|
||||
dirsearch.cc \
|
||||
dynobj.cc \
|
||||
ehframe.cc \
|
||||
fileread.cc \
|
||||
gold.cc \
|
||||
gold-threads.cc \
|
||||
|
@ -295,6 +296,7 @@ HFILES = \
|
|||
defstd.h \
|
||||
dirsearch.h \
|
||||
dynobj.h \
|
||||
ehframe.h \
|
||||
fileread.h \
|
||||
gold.h \
|
||||
gold-threads.h \
|
||||
|
@ -437,6 +439,7 @@ distclean-compile:
|
|||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/defstd.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirsearch.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dynobj.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ehframe.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileread.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gold-threads.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gold.Po@am__quote@
|
||||
|
|
|
@ -0,0 +1,126 @@
|
|||
// ehframe.cc -- handle exception frame sections for gold
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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.
|
||||
|
||||
#include "gold.h"
|
||||
|
||||
#include "elfcpp.h"
|
||||
#include "dwarf.h"
|
||||
#include "ehframe.h"
|
||||
|
||||
namespace gold
|
||||
{
|
||||
|
||||
// This file handles generation of the exception frame header that
|
||||
// gcc's runtime support libraries use to find unwind information at
|
||||
// runtime.
|
||||
|
||||
// The exception frame header starts with four bytes:
|
||||
|
||||
// 0: The version number, currently 1.
|
||||
|
||||
// 1: The encoding of the pointer to the exception frames. This can
|
||||
// be any DWARF unwind encoding (DW_EH_PE_*). It is normally a 4
|
||||
// byte PC relative offset (DW_EH_PE_pcrel | DW_EH_PE_sdata4).
|
||||
|
||||
// 2: The encoding of the count of the number of FDE pointers in the
|
||||
// lookup table. This can be any DWARF unwind encoding, and in
|
||||
// particular can be DW_EH_PE_omit if the count is omitted. It is
|
||||
// normally a 4 byte unsigned count (DW_EH_PE_udata4).
|
||||
|
||||
// 3: The encoding of the lookup table entries. Currently gcc's
|
||||
// libraries will only support DW_EH_PE_datarel | DW_EH_PE_sdata4,
|
||||
// which means that the values are 4 byte offsets from the start of
|
||||
// the table.
|
||||
|
||||
// The exception frame header is followed by a pointer to the contents
|
||||
// of the exception frame section (.eh_frame). This pointer is
|
||||
// encoded as specified in the byte at offset 1 of the header (i.e.,
|
||||
// it is normally a 4 byte PC relative offset).
|
||||
|
||||
// If there is a lookup table, this is followed by the count of the
|
||||
// number of FDE pointers, encoded as specified in the byte at offset
|
||||
// 2 of the header (i.e., normally a 4 byte unsigned integer).
|
||||
|
||||
// This is followed by the table, which should start at an 4-byte
|
||||
// aligned address in memory. Each entry in the table is 8 bytes.
|
||||
// Each entry represents an FDE. The first four bytes of each entry
|
||||
// are an offset to the starting PC for the FDE. The last four bytes
|
||||
// of each entry are an offset to the FDE data. The offsets are from
|
||||
// the start of the exception frame header information. The entries
|
||||
// are in sorted order by starting PC.
|
||||
|
||||
// FIXME: We currently always generate an empty exception frame
|
||||
// header.
|
||||
|
||||
const int eh_frame_hdr_size = 4;
|
||||
|
||||
// Construct the exception frame header.
|
||||
|
||||
Eh_frame_hdr::Eh_frame_hdr(const Target* target,
|
||||
Output_section* eh_frame_section)
|
||||
: Output_section_data(4),
|
||||
target_(target), eh_frame_section_(eh_frame_section)
|
||||
{
|
||||
}
|
||||
|
||||
// Set the final address and size of the exception frame header.
|
||||
|
||||
void
|
||||
Eh_frame_hdr::do_set_address(uint64_t, off_t)
|
||||
{
|
||||
this->set_data_size(eh_frame_hdr_size + 4);
|
||||
}
|
||||
|
||||
// Write the data to the flie.
|
||||
|
||||
void
|
||||
Eh_frame_hdr::do_write(Output_file* of)
|
||||
{
|
||||
const off_t off = this->offset();
|
||||
const off_t oview_size = this->data_size();
|
||||
unsigned char* const oview = of->get_output_view(off, oview_size);
|
||||
|
||||
// Version number.
|
||||
oview[0] = 1;
|
||||
|
||||
// Write out a 4 byte PC relative offset to the address of the
|
||||
// .eh_frame section.
|
||||
oview[1] = elfcpp::DW_EH_PE_pcrel | elfcpp::DW_EH_PE_sdata4;
|
||||
uint64_t eh_frame_address = this->eh_frame_section_->address();
|
||||
uint64_t eh_frame_hdr_address = this->address();
|
||||
uint64_t eh_frame_offset = (eh_frame_address -
|
||||
(eh_frame_hdr_address + 4));
|
||||
if (this->target_->is_big_endian())
|
||||
elfcpp::Swap<32, true>::writeval(oview + 4, eh_frame_offset);
|
||||
else
|
||||
elfcpp::Swap<32, false>::writeval(oview + 4, eh_frame_offset);
|
||||
|
||||
// We don't currently write out the sorted table.
|
||||
oview[2] = elfcpp::DW_EH_PE_omit;
|
||||
oview[3] = elfcpp::DW_EH_PE_omit;
|
||||
|
||||
gold_assert(oview_size == 8);
|
||||
|
||||
of->write_output_view(off, oview_size, oview);
|
||||
}
|
||||
|
||||
} // End namespace gold.
|
|
@ -0,0 +1,64 @@
|
|||
// ehframe.h -- handle exception frame sections for gold -*- C++ -*-
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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 GOLD_EHFRAME_H
|
||||
#define GOLD_EHFRAME_H
|
||||
|
||||
#include "output.h"
|
||||
|
||||
namespace gold
|
||||
{
|
||||
|
||||
// This class manages the .eh_frame_hdr section, which holds the data
|
||||
// for the PT_GNU_EH_FRAME segment. gcc's unwind support code uses
|
||||
// the PT_GNU_EH_FRAME segment to find the list of FDEs. This saves
|
||||
// the time required to register the exception handlers at startup
|
||||
// time and when a shared object is loaded, and the time required to
|
||||
// deregister the exception handlers when a shared object is unloaded.
|
||||
|
||||
// FIXME: gcc supports using storing a sorted lookup table for the
|
||||
// FDEs in the PT_GNU_EH_FRAME segment, but we do not yet generate
|
||||
// that.
|
||||
|
||||
class Eh_frame_hdr : public Output_section_data
|
||||
{
|
||||
public:
|
||||
Eh_frame_hdr(const Target*, Output_section* eh_frame_section);
|
||||
|
||||
// Set the final data size.
|
||||
void
|
||||
do_set_address(uint64_t address, off_t offset);
|
||||
|
||||
// Write the data to the file.
|
||||
void
|
||||
do_write(Output_file*);
|
||||
|
||||
private:
|
||||
// The output target.
|
||||
const Target* target_;
|
||||
// The .eh_frame section.
|
||||
Output_section* eh_frame_section_;
|
||||
};
|
||||
|
||||
} // End namespace gold.
|
||||
|
||||
#endif // !defined(GOLD_EHFRAME_H)
|
|
@ -31,6 +31,7 @@
|
|||
#include "output.h"
|
||||
#include "symtab.h"
|
||||
#include "dynobj.h"
|
||||
#include "ehframe.h"
|
||||
#include "layout.h"
|
||||
|
||||
namespace gold
|
||||
|
@ -65,7 +66,8 @@ Layout::Layout(const General_options& options)
|
|||
section_name_map_(), segment_list_(), section_list_(),
|
||||
unattached_section_list_(), special_output_list_(),
|
||||
tls_segment_(NULL), symtab_section_(NULL),
|
||||
dynsym_section_(NULL), dynamic_section_(NULL), dynamic_data_(NULL)
|
||||
dynsym_section_(NULL), dynamic_section_(NULL), dynamic_data_(NULL),
|
||||
eh_frame_section_(NULL)
|
||||
{
|
||||
// Make space for more than enough segments for a typical file.
|
||||
// This is just for efficiency--it's OK if we wind up needing more.
|
||||
|
@ -206,6 +208,17 @@ Layout::layout(Relobj* object, unsigned int shndx, const char* name,
|
|||
shdr.get_sh_type(),
|
||||
shdr.get_sh_flags());
|
||||
|
||||
// Special GNU handling of sections named .eh_frame.
|
||||
if (!parameters->output_is_object()
|
||||
&& strcmp(name, ".eh_frame") == 0
|
||||
&& shdr.get_sh_size() > 0
|
||||
&& shdr.get_sh_type() == elfcpp::SHT_PROGBITS
|
||||
&& shdr.get_sh_flags() == elfcpp::SHF_ALLOC)
|
||||
{
|
||||
this->layout_eh_frame(object, shndx, name, shdr, os, off);
|
||||
return os;
|
||||
}
|
||||
|
||||
// FIXME: Handle SHF_LINK_ORDER somewhere.
|
||||
|
||||
*off = os->add_input_section(object, shndx, name, shdr);
|
||||
|
@ -213,6 +226,46 @@ Layout::layout(Relobj* object, unsigned int shndx, const char* name,
|
|||
return os;
|
||||
}
|
||||
|
||||
// Special GNU handling of sections named .eh_frame. They will
|
||||
// normally hold exception frame data.
|
||||
|
||||
template<int size, bool big_endian>
|
||||
void
|
||||
Layout::layout_eh_frame(Relobj* object,
|
||||
unsigned int shndx,
|
||||
const char* name,
|
||||
const elfcpp::Shdr<size, big_endian>& shdr,
|
||||
Output_section* os, off_t* off)
|
||||
{
|
||||
if (this->eh_frame_section_ == NULL)
|
||||
{
|
||||
this->eh_frame_section_ = os;
|
||||
|
||||
if (this->options_.create_eh_frame_hdr())
|
||||
{
|
||||
Stringpool::Key hdr_name_key;
|
||||
const char* hdr_name = this->namepool_.add(".eh_frame_hdr",
|
||||
&hdr_name_key);
|
||||
Output_section* hdr_os =
|
||||
this->get_output_section(hdr_name, hdr_name_key,
|
||||
elfcpp::SHT_PROGBITS,
|
||||
elfcpp::SHF_ALLOC);
|
||||
|
||||
Eh_frame_hdr* hdr_posd = new Eh_frame_hdr(object->target(), os);
|
||||
hdr_os->add_output_section_data(hdr_posd);
|
||||
|
||||
Output_segment* hdr_oseg =
|
||||
new Output_segment(elfcpp::PT_GNU_EH_FRAME, elfcpp::PF_R);
|
||||
this->segment_list_.push_back(hdr_oseg);
|
||||
hdr_oseg->add_output_section(hdr_os, elfcpp::PF_R);
|
||||
}
|
||||
}
|
||||
|
||||
gold_assert(this->eh_frame_section_ == os);
|
||||
|
||||
*off = os->add_input_section(object, shndx, name, shdr);
|
||||
}
|
||||
|
||||
// Add POSD to an output section using NAME, TYPE, and FLAGS.
|
||||
|
||||
void
|
||||
|
|
|
@ -206,6 +206,13 @@ class Layout
|
|||
static const Linkonce_mapping linkonce_mapping[];
|
||||
static const int linkonce_mapping_count;
|
||||
|
||||
// Handle an exception frame section.
|
||||
template<int size, bool big_endian>
|
||||
void
|
||||
layout_eh_frame(Relobj*, unsigned int, const char*,
|
||||
const elfcpp::Shdr<size, big_endian>&,
|
||||
Output_section*, off_t*);
|
||||
|
||||
// Find the first read-only PT_LOAD segment, creating one if
|
||||
// necessary.
|
||||
Output_segment*
|
||||
|
@ -356,6 +363,8 @@ class Layout
|
|||
Output_section* dynamic_section_;
|
||||
// The dynamic data which goes into dynamic_section_.
|
||||
Output_data_dynamic* dynamic_data_;
|
||||
// The exception frame section.
|
||||
Output_section* eh_frame_section_;
|
||||
};
|
||||
|
||||
// This task handles writing out data which is not part of a section
|
||||
|
|
|
@ -8,6 +8,8 @@ dirsearch.cc
|
|||
dirsearch.h
|
||||
dynobj.cc
|
||||
dynobj.h
|
||||
ehframe.cc
|
||||
ehframe.h
|
||||
fileread.cc
|
||||
fileread.h
|
||||
gold.cc
|
||||
|
|
188
gold/po/gold.pot
188
gold/po/gold.pot
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2007-09-22 13:59-0700\n"
|
||||
"POT-Creation-Date: 2007-09-25 22:42-0700\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -21,42 +21,42 @@ msgstr ""
|
|||
msgid "%s: %s: no archive symbol table (run ranlib)\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:141
|
||||
#: archive.cc:144
|
||||
#, c-format
|
||||
msgid "%s: %s: bad archive symbol table names\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:173
|
||||
#: archive.cc:176
|
||||
#, c-format
|
||||
msgid "%s; %s: malformed archive header at %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:194
|
||||
#: archive.cc:197
|
||||
#, c-format
|
||||
msgid "%s: %s: malformed archive header size at %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:206
|
||||
#: archive.cc:209
|
||||
#, c-format
|
||||
msgid "%s: %s: malformed archive header name at %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:232
|
||||
#: archive.cc:235
|
||||
#, c-format
|
||||
msgid "%s: %s: bad extended name index at %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:243
|
||||
#: archive.cc:246
|
||||
#, c-format
|
||||
msgid "%s: %s: bad extended name entry at header %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:338
|
||||
#: archive.cc:341
|
||||
#, c-format
|
||||
msgid "%s: %s: short archive header at %ld\n"
|
||||
msgstr ""
|
||||
|
||||
#: archive.cc:387 archive.cc:400
|
||||
#: archive.cc:396 archive.cc:411
|
||||
#, c-format
|
||||
msgid "%s: %s: member at %ld is not an ELF object"
|
||||
msgstr ""
|
||||
|
@ -76,132 +76,142 @@ msgstr ""
|
|||
msgid "%s: %s: unexpected link in section %u header: %u != %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:209
|
||||
#: dynobj.cc:210
|
||||
#, c-format
|
||||
msgid "%s: %s: DYNAMIC section %u link out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:219
|
||||
#: dynobj.cc:220
|
||||
#, c-format
|
||||
msgid "%s: %s: DYNAMIC section %u link %u is not a strtab\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:241
|
||||
#: dynobj.cc:242
|
||||
#, c-format
|
||||
msgid "%s: %s: DT_SONAME value out of range: %lld >= %lld\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:258
|
||||
#: dynobj.cc:259
|
||||
#, c-format
|
||||
msgid "%s: %s: missing DT_NULL in dynamic segment\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:306
|
||||
#: dynobj.cc:307
|
||||
#, c-format
|
||||
msgid "%s: %s: invalid dynamic symbol table name index: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:314
|
||||
#: dynobj.cc:315
|
||||
#, c-format
|
||||
msgid "%s: %s: dynamic symbol table name section has wrong type: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:388 object.cc:439
|
||||
#: dynobj.cc:390 object.cc:440
|
||||
#, c-format
|
||||
msgid "%s: %s: bad section name offset for section %u: %lu\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:419
|
||||
#: dynobj.cc:421
|
||||
#, c-format
|
||||
msgid "%s: %s: duplicate definition for version %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:451
|
||||
#: dynobj.cc:453
|
||||
#, c-format
|
||||
msgid "%s: %s: unexpected verdef version %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:467
|
||||
#: dynobj.cc:469
|
||||
#, c-format
|
||||
msgid "%s: %s: verdef vd_cnt field too small: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:476
|
||||
#: dynobj.cc:478
|
||||
#, c-format
|
||||
msgid "%s: %s: verdef vd_aux field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:488
|
||||
#: dynobj.cc:490
|
||||
#, c-format
|
||||
msgid "%s: %s: verdaux vda_name field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:499
|
||||
#: dynobj.cc:501
|
||||
#, c-format
|
||||
msgid "%s: %s: verdef vd_next field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:533
|
||||
#: dynobj.cc:535
|
||||
#, c-format
|
||||
msgid "%s: %s: unexpected verneed version %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:544
|
||||
#: dynobj.cc:546
|
||||
#, c-format
|
||||
msgid "%s: %s: verneed vn_aux field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:559
|
||||
#: dynobj.cc:561
|
||||
#, c-format
|
||||
msgid "%s: %s: vernaux vna_name field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:572
|
||||
#: dynobj.cc:574
|
||||
#, c-format
|
||||
msgid "%s: %s: verneed vna_next field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:585
|
||||
#: dynobj.cc:587
|
||||
#, c-format
|
||||
msgid "%s: %s: verneed vn_next field out of range: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:633
|
||||
#: dynobj.cc:635
|
||||
#, c-format
|
||||
msgid "%s: %s: size of dynamic symbols is not multiple of symbol size\n"
|
||||
msgstr ""
|
||||
|
||||
#: dynobj.cc:1264
|
||||
#: dynobj.cc:1266
|
||||
#, c-format
|
||||
msgid "%s: symbol %s has undefined version %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:75
|
||||
#: fileread.cc:48
|
||||
#, c-format
|
||||
msgid "%s: munmap failed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:83
|
||||
#, c-format
|
||||
msgid "%s: warning: close(%s) failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:163
|
||||
#: fileread.cc:108
|
||||
#, c-format
|
||||
msgid "%s: %s: lseek to %lld failed: %s"
|
||||
msgid "%s: %s: fstat failed: %s"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:173
|
||||
#: fileread.cc:198
|
||||
#, c-format
|
||||
msgid "%s: %s: read failed: %s\n"
|
||||
msgid "%s: %s: pread failed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:193 fileread.cc:276
|
||||
#: fileread.cc:205
|
||||
#, c-format
|
||||
msgid "%s: %s: file too short: read only %lld of %lld bytes at %lld\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:385
|
||||
#: fileread.cc:283
|
||||
#, c-format
|
||||
msgid "%s: %s: mmap offset %lld size %lld failed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:402
|
||||
#, c-format
|
||||
msgid "%s: cannot find %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: fileread.cc:393
|
||||
#: fileread.cc:410
|
||||
#, c-format
|
||||
msgid "%s: cannot open %s: %s\n"
|
||||
msgstr ""
|
||||
|
@ -255,68 +265,68 @@ msgid "pthread_cond_signal failed"
|
|||
msgstr ""
|
||||
|
||||
#. FIXME: This needs to specify the location somehow.
|
||||
#: i386.cc:125
|
||||
#: i386.cc:130
|
||||
#, c-format
|
||||
msgid "%s: missing expected TLS relocation\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:746 i386.cc:896 i386.cc:1158
|
||||
#: i386.cc:751 i386.cc:912 i386.cc:1174
|
||||
#, c-format
|
||||
msgid "%s: %s: unexpected reloc %u in object file\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:783 i386.cc:803
|
||||
#: i386.cc:788 i386.cc:808
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported reloc %u against local symbol\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:932 i386.cc:953
|
||||
#: i386.cc:948 i386.cc:969
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported reloc %u against global symbol %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:976
|
||||
#: i386.cc:992
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported RELA reloc section\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1066
|
||||
#: i386.cc:1082
|
||||
#, c-format
|
||||
msgid "%s: %s: missing expected TLS relocation\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1190 i386.cc:1267 i386.cc:1278
|
||||
#: i386.cc:1206 i386.cc:1283 i386.cc:1294
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported reloc %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1217
|
||||
#: i386.cc:1233
|
||||
#, c-format
|
||||
msgid "%s: %s: TLS reloc but no TLS segment\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1252
|
||||
#: i386.cc:1268
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported reloc type %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1461
|
||||
#: i386.cc:1477
|
||||
#, c-format
|
||||
msgid "%s: %s: TLS relocation out of range\n"
|
||||
msgstr ""
|
||||
|
||||
#: i386.cc:1479
|
||||
#: i386.cc:1495
|
||||
#, c-format
|
||||
msgid "%s: %s: TLS relocation against invalid instruction\n"
|
||||
msgstr ""
|
||||
|
||||
#: merge.cc:246
|
||||
#: merge.cc:247
|
||||
#, c-format
|
||||
msgid ""
|
||||
"%s: %s: mergeable string section length not multiple of character size\n"
|
||||
msgstr ""
|
||||
|
||||
#: merge.cc:263
|
||||
#: merge.cc:264
|
||||
#, c-format
|
||||
msgid "%s: %s: entry in mergeable string section not null terminated\n"
|
||||
msgstr ""
|
||||
|
@ -346,92 +356,92 @@ msgstr ""
|
|||
msgid "%s: %s: section group %u info %u out of range\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:329
|
||||
#: object.cc:330
|
||||
#, c-format
|
||||
msgid "%s: %s: symbol %u name offset %u out of range\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:363
|
||||
#: object.cc:364
|
||||
#, c-format
|
||||
msgid "%s: %s: section %u in section group %u out of range"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:507
|
||||
#: object.cc:508
|
||||
#, c-format
|
||||
msgid "%s: %s: size of symbols is not multiple of symbol size\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:595
|
||||
#: object.cc:597
|
||||
#, c-format
|
||||
msgid "%s: %s: unknown section index %u for local symbol %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:606
|
||||
#: object.cc:608
|
||||
#, c-format
|
||||
msgid "%s: %s: local symbol %u section index %u out of range\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:640
|
||||
#: object.cc:642
|
||||
#, c-format
|
||||
msgid "%s: %s: local symbol %u section name out of range: %u >= %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:854
|
||||
#: object.cc:857
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported ELF file type %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:873 object.cc:926 object.cc:961
|
||||
#: object.cc:876 object.cc:929 object.cc:964
|
||||
#, c-format
|
||||
msgid "%s: %s: ELF file too short\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:882
|
||||
#: object.cc:885
|
||||
#, c-format
|
||||
msgid "%s: %s: invalid ELF version 0\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:885
|
||||
#: object.cc:888
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported ELF version %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:893
|
||||
#: object.cc:896
|
||||
#, c-format
|
||||
msgid "%s: %s: invalid ELF class 0\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:900
|
||||
#: object.cc:903
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported ELF class %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:908
|
||||
#: object.cc:911
|
||||
#, c-format
|
||||
msgid "%s: %s: invalid ELF data encoding\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:915
|
||||
#: object.cc:918
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported ELF data encoding %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:938
|
||||
#: object.cc:941
|
||||
#, c-format
|
||||
msgid "%s: %s: not configured to support 32-bit big-endian object\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:951
|
||||
#: object.cc:954
|
||||
#, c-format
|
||||
msgid "%s: %s: not configured to support 32-bit little-endian object\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:973
|
||||
#: object.cc:976
|
||||
#, c-format
|
||||
msgid "%s: %s: not configured to support 64-bit big-endian object\n"
|
||||
msgstr ""
|
||||
|
||||
#: object.cc:986
|
||||
#: object.cc:989
|
||||
#, c-format
|
||||
msgid "%s: %s: not configured to support 64-bit little-endian object\n"
|
||||
msgstr ""
|
||||
|
@ -577,7 +587,7 @@ msgstr ""
|
|||
msgid "%s: use the --help option for usage information\n"
|
||||
msgstr ""
|
||||
|
||||
#: options.cc:617 script.cc:1153
|
||||
#: options.cc:617 script.cc:1158
|
||||
#, c-format
|
||||
msgid "%s: %s: %s\n"
|
||||
msgstr ""
|
||||
|
@ -587,73 +597,73 @@ msgstr ""
|
|||
msgid "%s: -%c: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:921
|
||||
#: output.cc:922
|
||||
#, c-format
|
||||
msgid "%s: %s: invalid alignment %lu for section \"%s\"\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1570
|
||||
#: output.cc:1571
|
||||
#, c-format
|
||||
msgid "%s: %s: open: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1579
|
||||
#: output.cc:1580
|
||||
#, c-format
|
||||
msgid "%s: %s: lseek: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1586
|
||||
#: output.cc:1587
|
||||
#, c-format
|
||||
msgid "%s: %s: write: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1596
|
||||
#: output.cc:1597
|
||||
#, c-format
|
||||
msgid "%s: %s: mmap: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1610
|
||||
#: output.cc:1611
|
||||
#, c-format
|
||||
msgid "%s: %s: munmap: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: output.cc:1618
|
||||
#: output.cc:1619
|
||||
#, c-format
|
||||
msgid "%s: %s: close: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: readsyms.cc:113
|
||||
#, c-format
|
||||
msgid "%s: %s: ordinary object found in input group\n"
|
||||
msgstr ""
|
||||
|
||||
#: readsyms.cc:154
|
||||
#: readsyms.cc:93
|
||||
#, c-format
|
||||
msgid "%s: %s: file is empty\n"
|
||||
msgstr ""
|
||||
|
||||
#: readsyms.cc:127
|
||||
#, c-format
|
||||
msgid "%s: %s: ordinary object found in input group\n"
|
||||
msgstr ""
|
||||
|
||||
#. Here we have to handle any other input file types we need.
|
||||
#: readsyms.cc:167
|
||||
#: readsyms.cc:175
|
||||
#, c-format
|
||||
msgid "%s: %s: not an object or archive\n"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:189 reloc.cc:433
|
||||
#: reloc.cc:190 reloc.cc:436
|
||||
#, c-format
|
||||
msgid "%s: %s: relocation section %u has bad info %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:208 reloc.cc:450
|
||||
#: reloc.cc:209 reloc.cc:453
|
||||
#, c-format
|
||||
msgid "%s: %s: relocation section %u uses unexpected symbol table %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:224 reloc.cc:469
|
||||
#: reloc.cc:225 reloc.cc:472
|
||||
#, c-format
|
||||
msgid "%s: %s: unexpected entsize for reloc section %u: %lu != %u"
|
||||
msgstr ""
|
||||
|
||||
#: reloc.cc:235 reloc.cc:480
|
||||
#: reloc.cc:236 reloc.cc:483
|
||||
#, c-format
|
||||
msgid "%s: %s: reloc section %u size %lu uneven"
|
||||
msgstr ""
|
||||
|
@ -698,12 +708,12 @@ msgstr ""
|
|||
msgid "%s: %s: versym for symbol %zu has no name: %u\n"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1200 symtab.cc:1372
|
||||
#: symtab.cc:1200 symtab.cc:1373
|
||||
#, c-format
|
||||
msgid "%s: %s: unsupported symbol section 0x%x\n"
|
||||
msgstr ""
|
||||
|
||||
#: symtab.cc:1565
|
||||
#: symtab.cc:1570
|
||||
#, c-format
|
||||
msgid "%s: %s: warning: %s\n"
|
||||
msgstr ""
|
||||
|
|
|
@ -30,7 +30,14 @@ NATIVE_PROGS = \
|
|||
two_file_shared_2_nonpic_test \
|
||||
two_file_same_shared_nonpic_test \
|
||||
two_file_separate_shared_12_nonpic_test \
|
||||
two_file_separate_shared_21_nonpic_test
|
||||
two_file_separate_shared_21_nonpic_test \
|
||||
exception_test \
|
||||
exception_static_test \
|
||||
exception_shared_1_test \
|
||||
exception_shared_2_test \
|
||||
exception_same_shared_test \
|
||||
exception_separate_shared_12_test \
|
||||
exception_separate_shared_21_test
|
||||
|
||||
NATIVE_TESTING = \
|
||||
basic_test \
|
||||
|
@ -177,5 +184,61 @@ two_file_shared_2_nonpic.so: two_file_test_2.o
|
|||
two_file_shared_nonpic.so: two_file_test_1.o two_file_test_2.o
|
||||
$(CXXLINK) -shared two_file_test_1.o two_file_test_2.o
|
||||
|
||||
exception_test_SOURCES = \
|
||||
exception_test_main.cc \
|
||||
exception_test_1.cc \
|
||||
exception_test_2.cc \
|
||||
exception_test.h
|
||||
exception_test_DEPENDENCIES = gcctestdir/ld
|
||||
exception_test_LDFLAGS = -Bgcctestdir/
|
||||
|
||||
exception_static_test_SOURCES = \
|
||||
exception_test_main.cc \
|
||||
exception_test_1.cc \
|
||||
exception_test_2.cc
|
||||
exception_static_test_DEPENDENCIES = gcctestdir/ld
|
||||
exception_static_test_LDFLAGS = -Bgcctestdir/ -static
|
||||
|
||||
exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
|
||||
exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
|
||||
exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
exception_shared_1_test_LDADD = exception_shared_1.so
|
||||
|
||||
exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
|
||||
exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
|
||||
exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
exception_shared_2_test_LDADD = exception_shared_2.so
|
||||
|
||||
exception_same_shared_test_SOURCES = exception_test_main.cc
|
||||
exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
|
||||
exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
exception_same_shared_test_LDADD = exception_shared.so
|
||||
|
||||
exception_separate_shared_12_test_SOURCES = exception_test_main.cc
|
||||
exception_separate_shared_12_test_DEPENDENCIES = \
|
||||
gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
||||
exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
exception_separate_shared_12_test_LDADD = \
|
||||
exception_shared_1.so exception_shared_2.so
|
||||
|
||||
exception_separate_shared_21_test_SOURCES = exception_test_main.cc
|
||||
exception_separate_shared_21_test_DEPENDENCIES = \
|
||||
gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
||||
exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
exception_separate_shared_21_test_LDADD = \
|
||||
exception_shared_2.so exception_shared_1.so
|
||||
|
||||
exception_test_1_pic.o: exception_test_1.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
exception_test_2_pic.o: exception_test_2.cc
|
||||
$(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
|
||||
exception_shared_1.so: exception_test_1_pic.o
|
||||
$(CXXLINK) -shared exception_test_1_pic.o
|
||||
exception_shared_2.so: exception_test_2_pic.o
|
||||
$(CXXLINK) -shared exception_test_2_pic.o
|
||||
exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o
|
||||
$(CXXLINK) -shared exception_test_1_pic.o exception_test_2_pic.o
|
||||
|
||||
endif
|
||||
endif
|
||||
|
|
|
@ -53,6 +53,13 @@ check_PROGRAMS = object_unittest$(EXEEXT) $(am__EXEEXT_1)
|
|||
@GCC_FALSE@two_file_test_DEPENDENCIES = libgoldtest.a ../libgold.a
|
||||
@NATIVE_LINKER_FALSE@two_file_test_DEPENDENCIES = libgoldtest.a \
|
||||
@NATIVE_LINKER_FALSE@ ../libgold.a
|
||||
@GCC_FALSE@exception_test_DEPENDENCIES = libgoldtest.a ../libgold.a
|
||||
@NATIVE_LINKER_FALSE@exception_test_DEPENDENCIES = libgoldtest.a \
|
||||
@NATIVE_LINKER_FALSE@ ../libgold.a
|
||||
@GCC_FALSE@exception_static_test_DEPENDENCIES = libgoldtest.a \
|
||||
@GCC_FALSE@ ../libgold.a
|
||||
@NATIVE_LINKER_FALSE@exception_static_test_DEPENDENCIES = \
|
||||
@NATIVE_LINKER_FALSE@ libgoldtest.a ../libgold.a
|
||||
subdir = testsuite
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
|
@ -87,7 +94,14 @@ libgoldtest_a_OBJECTS = $(am_libgoldtest_a_OBJECTS)
|
|||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test$(EXEEXT)
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_static_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test$(EXEEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test$(EXEEXT)
|
||||
am__constructor_static_test_SOURCES_DIST = constructor_test.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_constructor_static_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT)
|
||||
|
@ -99,6 +113,53 @@ am__constructor_test_SOURCES_DIST = constructor_test.cc
|
|||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ constructor_test.$(OBJEXT)
|
||||
constructor_test_OBJECTS = $(am_constructor_test_OBJECTS)
|
||||
constructor_test_LDADD = $(LDADD)
|
||||
am__exception_same_shared_test_SOURCES_DIST = exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_same_shared_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT)
|
||||
exception_same_shared_test_OBJECTS = \
|
||||
$(am_exception_same_shared_test_OBJECTS)
|
||||
am__exception_separate_shared_12_test_SOURCES_DIST = \
|
||||
exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_12_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT)
|
||||
exception_separate_shared_12_test_OBJECTS = \
|
||||
$(am_exception_separate_shared_12_test_OBJECTS)
|
||||
am__exception_separate_shared_21_test_SOURCES_DIST = \
|
||||
exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_separate_shared_21_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT)
|
||||
exception_separate_shared_21_test_OBJECTS = \
|
||||
$(am_exception_separate_shared_21_test_OBJECTS)
|
||||
am__exception_shared_1_test_SOURCES_DIST = exception_test_2.cc \
|
||||
exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_1_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT)
|
||||
exception_shared_1_test_OBJECTS = \
|
||||
$(am_exception_shared_1_test_OBJECTS)
|
||||
am__exception_shared_2_test_SOURCES_DIST = exception_test_1.cc \
|
||||
exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_shared_2_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT)
|
||||
exception_shared_2_test_OBJECTS = \
|
||||
$(am_exception_shared_2_test_OBJECTS)
|
||||
am__exception_static_test_SOURCES_DIST = exception_test_main.cc \
|
||||
exception_test_1.cc exception_test_2.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_static_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT)
|
||||
exception_static_test_OBJECTS = $(am_exception_static_test_OBJECTS)
|
||||
exception_static_test_LDADD = $(LDADD)
|
||||
am__exception_test_SOURCES_DIST = exception_test_main.cc \
|
||||
exception_test_1.cc exception_test_2.cc exception_test.h
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@am_exception_test_OBJECTS = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.$(OBJEXT) \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.$(OBJEXT)
|
||||
exception_test_OBJECTS = $(am_exception_test_OBJECTS)
|
||||
exception_test_LDADD = $(LDADD)
|
||||
am_object_unittest_OBJECTS = object_unittest.$(OBJEXT)
|
||||
object_unittest_OBJECTS = $(am_object_unittest_OBJECTS)
|
||||
object_unittest_LDADD = $(LDADD)
|
||||
|
@ -185,7 +246,14 @@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
|||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(libgoldtest_a_SOURCES) $(constructor_static_test_SOURCES) \
|
||||
$(constructor_test_SOURCES) $(object_unittest_SOURCES) \
|
||||
$(constructor_test_SOURCES) \
|
||||
$(exception_same_shared_test_SOURCES) \
|
||||
$(exception_separate_shared_12_test_SOURCES) \
|
||||
$(exception_separate_shared_21_test_SOURCES) \
|
||||
$(exception_shared_1_test_SOURCES) \
|
||||
$(exception_shared_2_test_SOURCES) \
|
||||
$(exception_static_test_SOURCES) $(exception_test_SOURCES) \
|
||||
$(object_unittest_SOURCES) \
|
||||
$(two_file_same_shared_nonpic_test_SOURCES) \
|
||||
$(two_file_same_shared_test_SOURCES) \
|
||||
$(two_file_separate_shared_12_nonpic_test_SOURCES) \
|
||||
|
@ -199,7 +267,13 @@ SOURCES = $(libgoldtest_a_SOURCES) $(constructor_static_test_SOURCES) \
|
|||
DIST_SOURCES = $(libgoldtest_a_SOURCES) \
|
||||
$(am__constructor_static_test_SOURCES_DIST) \
|
||||
$(am__constructor_test_SOURCES_DIST) \
|
||||
$(object_unittest_SOURCES) \
|
||||
$(am__exception_same_shared_test_SOURCES_DIST) \
|
||||
$(am__exception_separate_shared_12_test_SOURCES_DIST) \
|
||||
$(am__exception_separate_shared_21_test_SOURCES_DIST) \
|
||||
$(am__exception_shared_1_test_SOURCES_DIST) \
|
||||
$(am__exception_shared_2_test_SOURCES_DIST) \
|
||||
$(am__exception_static_test_SOURCES_DIST) \
|
||||
$(am__exception_test_SOURCES_DIST) $(object_unittest_SOURCES) \
|
||||
$(am__two_file_same_shared_nonpic_test_SOURCES_DIST) \
|
||||
$(am__two_file_same_shared_test_SOURCES_DIST) \
|
||||
$(am__two_file_separate_shared_12_nonpic_test_SOURCES_DIST) \
|
||||
|
@ -354,7 +428,14 @@ INCLUDES = -D_GNU_SOURCE \
|
|||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_same_shared_nonpic_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_12_nonpic_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_separate_shared_21_nonpic_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_static_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_same_shared_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_12_test \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_separate_shared_21_test
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@NATIVE_TESTING = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ basic_test \
|
||||
|
@ -451,6 +532,49 @@ object_unittest_SOURCES = object_unittest.cc
|
|||
@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_separate_shared_21_nonpic_test_LDADD = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ two_file_shared_2_nonpic.so two_file_shared_1_nonpic.so
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_SOURCES = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test.h
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_DEPENDENCIES = gcctestdir/ld
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_LDFLAGS = -Bgcctestdir/
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_SOURCES = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_main.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_1.cc \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_test_2.cc
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_DEPENDENCIES = gcctestdir/ld
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_static_test_LDFLAGS = -Bgcctestdir/ -static
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_SOURCES = exception_test_2.cc exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_DEPENDENCIES = gcctestdir/ld exception_shared_1.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1_test_LDADD = exception_shared_1.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_SOURCES = exception_test_1.cc exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_DEPENDENCIES = gcctestdir/ld exception_shared_2.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2_test_LDADD = exception_shared_2.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_SOURCES = exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_DEPENDENCIES = gcctestdir/ld exception_shared.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_same_shared_test_LDADD = exception_shared.so
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_SOURCES = exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_DEPENDENCIES = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_12_test_LDADD = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_1.so exception_shared_2.so
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_SOURCES = exception_test_main.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_DEPENDENCIES = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ gcctestdir/ld exception_shared_1.so exception_shared_2.so
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDFLAGS = -Bgcctestdir/ -Wl,-R,.
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_separate_shared_21_test_LDADD = \
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ exception_shared_2.so exception_shared_1.so
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
|
@ -500,6 +624,27 @@ constructor_static_test$(EXEEXT): $(constructor_static_test_OBJECTS) $(construct
|
|||
constructor_test$(EXEEXT): $(constructor_test_OBJECTS) $(constructor_test_DEPENDENCIES)
|
||||
@rm -f constructor_test$(EXEEXT)
|
||||
$(CXXLINK) $(constructor_test_LDFLAGS) $(constructor_test_OBJECTS) $(constructor_test_LDADD) $(LIBS)
|
||||
exception_same_shared_test$(EXEEXT): $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_DEPENDENCIES)
|
||||
@rm -f exception_same_shared_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_same_shared_test_LDFLAGS) $(exception_same_shared_test_OBJECTS) $(exception_same_shared_test_LDADD) $(LIBS)
|
||||
exception_separate_shared_12_test$(EXEEXT): $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_DEPENDENCIES)
|
||||
@rm -f exception_separate_shared_12_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_separate_shared_12_test_LDFLAGS) $(exception_separate_shared_12_test_OBJECTS) $(exception_separate_shared_12_test_LDADD) $(LIBS)
|
||||
exception_separate_shared_21_test$(EXEEXT): $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_DEPENDENCIES)
|
||||
@rm -f exception_separate_shared_21_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_separate_shared_21_test_LDFLAGS) $(exception_separate_shared_21_test_OBJECTS) $(exception_separate_shared_21_test_LDADD) $(LIBS)
|
||||
exception_shared_1_test$(EXEEXT): $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_DEPENDENCIES)
|
||||
@rm -f exception_shared_1_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_shared_1_test_LDFLAGS) $(exception_shared_1_test_OBJECTS) $(exception_shared_1_test_LDADD) $(LIBS)
|
||||
exception_shared_2_test$(EXEEXT): $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_DEPENDENCIES)
|
||||
@rm -f exception_shared_2_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_shared_2_test_LDFLAGS) $(exception_shared_2_test_OBJECTS) $(exception_shared_2_test_LDADD) $(LIBS)
|
||||
exception_static_test$(EXEEXT): $(exception_static_test_OBJECTS) $(exception_static_test_DEPENDENCIES)
|
||||
@rm -f exception_static_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_static_test_LDFLAGS) $(exception_static_test_OBJECTS) $(exception_static_test_LDADD) $(LIBS)
|
||||
exception_test$(EXEEXT): $(exception_test_OBJECTS) $(exception_test_DEPENDENCIES)
|
||||
@rm -f exception_test$(EXEEXT)
|
||||
$(CXXLINK) $(exception_test_LDFLAGS) $(exception_test_OBJECTS) $(exception_test_LDADD) $(LIBS)
|
||||
object_unittest$(EXEEXT): $(object_unittest_OBJECTS) $(object_unittest_DEPENDENCIES)
|
||||
@rm -f object_unittest$(EXEEXT)
|
||||
$(CXXLINK) $(object_unittest_LDFLAGS) $(object_unittest_OBJECTS) $(object_unittest_LDADD) $(LIBS)
|
||||
|
@ -544,6 +689,9 @@ distclean-compile:
|
|||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/constructor_test.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_1.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_2.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/exception_test_main.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/object_unittest.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testfile.Po@am__quote@
|
||||
|
@ -845,6 +993,18 @@ uninstall-am: uninstall-info-am
|
|||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared two_file_test_2.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@two_file_shared_nonpic.so: two_file_test_1.o two_file_test_2.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared two_file_test_1.o two_file_test_2.o
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_1_pic.o: exception_test_1.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_test_2_pic.o: exception_test_2.cc
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXCOMPILE) -c -fpic -o $@ $<
|
||||
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_1.so: exception_test_1_pic.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared exception_test_1_pic.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared_2.so: exception_test_2_pic.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared exception_test_2_pic.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@exception_shared.so: exception_test_1_pic.o exception_test_2_pic.o
|
||||
@GCC_TRUE@@NATIVE_LINKER_TRUE@ $(CXXLINK) -shared exception_test_1_pic.o exception_test_2_pic.o
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
// exception_test.h -- exception test case for gold, header file -*- C++ -*-
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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.
|
||||
|
||||
// This tests references between files. This is the shared header
|
||||
// file. See exception_test_1.cc for details.
|
||||
|
||||
extern bool t1();
|
||||
extern void f1();
|
|
@ -0,0 +1,52 @@
|
|||
// exception_test_1.cc -- test exception handling for gold, file 1 of 2
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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.
|
||||
|
||||
// This tests throwing an exception across various boundaries. This
|
||||
// is a general test of the exception frame handling, and the
|
||||
// interaction with the compiler support libraries. This is file 1,
|
||||
// which catches the exception. We test in several different ways:
|
||||
|
||||
// Files 1 and 2 linked together in executable.
|
||||
// File 1 in executable, file 2 in shared library.
|
||||
// File 1 in shared library, file 2 in executable.
|
||||
// Files 1 and 2 linked together in shared library.
|
||||
// Files 1 and 2 in different shared libraries.
|
||||
|
||||
#include "exception_test.h"
|
||||
|
||||
bool
|
||||
t1()
|
||||
{
|
||||
int i;
|
||||
try
|
||||
{
|
||||
i = 0;
|
||||
f1();
|
||||
i = 1;
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
return i == 0;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
// exception_test_1.cc -- test exception handling for gold, file 1 of 2
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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.
|
||||
|
||||
// Second part of exception test. See exception_test_1.cc for details.
|
||||
|
||||
#include "exception_test.h"
|
||||
|
||||
void
|
||||
f1()
|
||||
{
|
||||
throw 0;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
// exception_test_main.cc -- an exception test case for gold, main function
|
||||
|
||||
// Copyright 2006, 2007 Free Software Foundation, Inc.
|
||||
// Written by Ian Lance Taylor <iant@google.com>.
|
||||
|
||||
// This file is part of gold.
|
||||
|
||||
// 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.
|
||||
|
||||
// This tests references between files. This is the main file. See
|
||||
// two_file_test_1.cc for details.
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "exception_test.h"
|
||||
|
||||
int
|
||||
main()
|
||||
{
|
||||
assert(t1());
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue