Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Unified Diff: gcc/libstdc++-v3/testsuite/util/testsuite_hooks.cc

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gcc/libstdc++-v3/testsuite/util/testsuite_hooks.cc
diff --git a/gcc/libstdc++-v3/testsuite/util/testsuite_hooks.cc b/gcc/libstdc++-v3/testsuite/util/testsuite_hooks.cc
deleted file mode 100644
index 8fb7e15b5e8a32fed816fbe1aea671488e1003db..0000000000000000000000000000000000000000
--- a/gcc/libstdc++-v3/testsuite/util/testsuite_hooks.cc
+++ /dev/null
@@ -1,327 +0,0 @@
-// -*- C++ -*-
-
-// Utility subroutines for the C++ library testsuite.
-//
-// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library 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, or (at your option)
-// any later version.
-//
-// This library 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 library; see the file COPYING3. If not see
-// <http://www.gnu.org/licenses/>.
-//
-
-#include <testsuite_hooks.h>
-
-#ifdef _GLIBCXX_RES_LIMITS
-#include <unistd.h>
-#include <sys/time.h>
-#include <sys/resource.h>
-#endif
-
-#include <list>
-#include <string>
-#include <stdexcept>
-#include <cstddef>
-#include <clocale>
-#include <cstdlib>
-#include <locale>
-#include <cxxabi.h>
-
-// If we have <sys/types.h>, <sys/ipc.h>, and <sys/sem.h>, then assume
-// that System V semaphores are available.
-#if defined(_GLIBCXX_HAVE_SYS_TYPES_H) \
- && defined(_GLIBCXX_HAVE_SYS_IPC_H) \
- && defined(_GLIBCXX_HAVE_SYS_SEM_H)
-#define _GLIBCXX_SYSV_SEM
-#endif
-
-#ifdef _GLIBCXX_SYSV_SEM
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/sem.h>
-#endif
-
-namespace __gnu_test
-{
-#ifdef _GLIBCXX_RES_LIMITS
- void
- set_memory_limits(float size)
- {
- struct rlimit r;
- // Cater to the absence of rlim_t.
- __typeof__ (r.rlim_cur) limit = (__typeof__ (r.rlim_cur))(size * 1048576);
-
- // Heap size, seems to be common.
-#if _GLIBCXX_HAVE_LIMIT_DATA
- getrlimit(RLIMIT_DATA, &r);
- r.rlim_cur = limit;
- setrlimit(RLIMIT_DATA, &r);
-#endif
-
- // Resident set size.
-#if _GLIBCXX_HAVE_LIMIT_RSS
- getrlimit(RLIMIT_RSS, &r);
- r.rlim_cur = limit;
- setrlimit(RLIMIT_RSS, &r);
-#endif
-
- // Mapped memory (brk + mmap).
-#if _GLIBCXX_HAVE_LIMIT_VMEM
- getrlimit(RLIMIT_VMEM, &r);
- r.rlim_cur = limit;
- setrlimit(RLIMIT_VMEM, &r);
-#endif
-
- // Virtual memory. On x86_64-linux, the default is -z
- // max-page-size=0x200000 which means up to 2MB of address space
- // are accounted for PROT_NONE mappings between text and data
- // segments of each shared library. There are 4 shared libs
- // involved in addition to the dynamic linker, maybe 5 if libgomp
- // is being used as well. Use at least 20MB address space limit.
-#if defined(__x86_64__) && defined(__linux__)
- if (limit < 20971520)
- limit = 20971520;
-#endif
-
- // On HP-UX 11.23, a trivial C++ program that sets RLIMIT_AS to
- // anything less than 128MB cannot "malloc" even 1K of memory.
- // Therefore, we skip RLIMIT_AS on HP-UX.
-#if _GLIBCXX_HAVE_LIMIT_AS && !defined(__hpux__)
- getrlimit(RLIMIT_AS, &r);
- r.rlim_cur = limit;
- setrlimit(RLIMIT_AS, &r);
-#endif
- }
-
-#else
- void
- set_memory_limits(float) { }
-#endif
-
-#ifdef _GLIBCXX_RES_LIMITS
- void
- set_file_limit(unsigned long size)
- {
-#if _GLIBCXX_HAVE_LIMIT_FSIZE
- struct rlimit r;
- // Cater to the absence of rlim_t.
- __typeof__ (r.rlim_cur) limit = (__typeof__ (r.rlim_cur))(size);
-
- getrlimit(RLIMIT_FSIZE, &r);
- r.rlim_cur = limit;
- setrlimit(RLIMIT_FSIZE, &r);
-#endif
- }
-
-#else
- void
- set_file_limit(unsigned long) { }
-#endif
-
- void
- verify_demangle(const char* mangled, const char* wanted)
- {
- int status = 0;
- const char* s = abi::__cxa_demangle(mangled, 0, 0, &status);
- if (!s)
- {
- switch (status)
- {
- case 0:
- s = "error code = 0: success";
- break;
- case -1:
- s = "error code = -1: memory allocation failure";
- break;
- case -2:
- s = "error code = -2: invalid mangled name";
- break;
- case -3:
- s = "error code = -3: invalid arguments";
- break;
- default:
- s = "error code unknown - who knows what happened";
- }
- }
-
- std::string w(wanted);
- if (w != s)
- std::__throw_runtime_error(s);
- }
-
- void
- run_tests_wrapped_locale(const char* name, const func_callback& l)
- {
- using namespace std;
-
- // Set the global locale.
- locale loc_name = locale(name);
- locale orig = locale::global(loc_name);
-
- const char* res = setlocale(LC_ALL, name);
- if (res != NULL)
- {
- string preLC_ALL = res;
- const func_callback::test_type* tests = l.tests();
- for (int i = 0; i < l.size(); ++i)
- (*tests[i])();
- string postLC_ALL= setlocale(LC_ALL, NULL);
- VERIFY( preLC_ALL == postLC_ALL );
- }
- else
- {
- string s("LC_ALL for ");
- s += name;
- __throw_runtime_error(s.c_str());
- }
- }
-
- void
- run_tests_wrapped_env(const char* name, const char* env,
- const func_callback& l)
- {
- using namespace std;
-
-#ifdef _GLIBCXX_HAVE_SETENV
- // Set the global locale.
- locale loc_name = locale(name);
- locale orig = locale::global(loc_name);
-
- // Set environment variable env to value in name.
- const char* oldENV = getenv(env);
- if (!setenv(env, name, 1))
- {
- const func_callback::test_type* tests = l.tests();
- for (int i = 0; i < l.size(); ++i)
- (*tests[i])();
- setenv(env, oldENV ? oldENV : "", 1);
- }
- else
- {
- string s(env);
- s += string(" to ");
- s += string(name);
- __throw_runtime_error(s.c_str());
- }
-#endif
- }
-
- counter::size_type counter::count = 0;
- unsigned int copy_constructor::count_ = 0;
- unsigned int copy_constructor::throw_on_ = 0;
- unsigned int assignment_operator::count_ = 0;
- unsigned int assignment_operator::throw_on_ = 0;
- unsigned int destructor::_M_count = 0;
- int copy_tracker::next_id_ = 0;
-
-#ifdef _GLIBCXX_SYSV_SEM
- // This union is not declared in system headers. Instead, it must
- // be defined by user programs.
- union semun
- {
- int val;
- struct semid_ds *buf;
- unsigned short *array;
- };
-#endif
-
- semaphore::semaphore()
- {
-#ifdef _GLIBCXX_SYSV_SEM
- // Remeber the PID for the process that created the semaphore set
- // so that only one process will destroy the set.
- pid_ = getpid();
-
- // GLIBC does not define SEM_R and SEM_A.
-#ifndef SEM_R
-#define SEM_R 0400
-#endif
-
-#ifndef SEM_A
-#define SEM_A 0200
-#endif
-
- // Get a semaphore set with one semaphore.
- sem_set_ = semget(IPC_PRIVATE, 1, SEM_R | SEM_A);
- if (sem_set_ == -1)
- std::__throw_runtime_error("could not obtain semaphore set");
-
- // Initialize the semaphore.
- union semun val;
- val.val = 0;
- if (semctl(sem_set_, 0, SETVAL, val) == -1)
- std::__throw_runtime_error("could not initialize semaphore");
-#else
- // There are no semaphores on this system. We have no way to mark
- // a test as "unsupported" at runtime, so we just exit, pretending
- // that the test passed.
- exit(0);
-#endif
- }
-
- semaphore::~semaphore()
- {
-#ifdef _GLIBCXX_SYSV_SEM
- union semun val;
- val.val = 0; // Avoid uninitialized variable warning.
- // Destroy the semaphore set only in the process that created it.
- if (pid_ == getpid())
- semctl(sem_set_, 0, IPC_RMID, val);
-#endif
- }
-
- void
- semaphore::signal()
- {
-#ifdef _GLIBCXX_SYSV_SEM
- struct sembuf op[1] =
- {
- { 0, 1, 0 }
- };
- if (semop(sem_set_, op, 1) == -1)
- std::__throw_runtime_error("could not signal semaphore");
-#endif
- }
-
- void
- semaphore::wait()
- {
-#ifdef _GLIBCXX_SYSV_SEM
- struct sembuf op[1] =
- {
- { 0, -1, SEM_UNDO }
- };
- if (semop(sem_set_, op, 1) == -1)
- std::__throw_runtime_error("could not wait for semaphore");
-#endif
- }
-
- // For use in 22_locale/time_get and time_put.
- std::tm
- test_tm(int sec, int min, int hour, int mday, int mon,
- int year, int wday, int yday, int isdst)
- {
- static std::tm tmp;
- tmp.tm_sec = sec;
- tmp.tm_min = min;
- tmp.tm_hour = hour;
- tmp.tm_mday = mday;
- tmp.tm_mon = mon;
- tmp.tm_year = year;
- tmp.tm_wday = wday;
- tmp.tm_yday = yday;
- tmp.tm_isdst = isdst;
- return tmp;
- }
-} // namespace __gnu_test
« no previous file with comments | « gcc/libstdc++-v3/testsuite/util/testsuite_common_types.h ('k') | gcc/libstdc++-v3/testsuite/util/testsuite_io.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698