PRIVATE_INCDIR += kern/$(CONFIG_XARCH) kern
INTERFACES_KERNEL := kmem boot_info pages __main globals config \
- main cache kobject_mapdb dbg_page_info \
+ main mem_op kobject_mapdb dbg_page_info \
bitmap kernel_uart pagetable mem_layout \
mapped_alloc kmem_alloc kip_init kmem_space \
queue_item queue cpu_mask rcupdate irq_pin \
if (!task)
// phys requested
phys = virt;
- else if (task == Config::kernel_taskno
- || (!Kmem::is_io_bitmap_page_fault(virt)
- && Kmem::is_kmem_page_fault(virt, 0)))
+ else if ( !Kmem::is_io_bitmap_page_fault(virt)
+ && Kmem::is_kmem_page_fault(virt, 0))
// kernel address
phys = Kmem::virt_to_phys((const void*)virt);
else
// determine the user level ebp and eip considering the current thread state
static void
Jdb_bt::get_user_eip_ebp(Address &eip, Address &ebp)
-{
- if (task == Config::kernel_taskno)
+{
+ if (!task)
{
// kernel thread doesn't execute user code -- at least we hope so :-)
ebp = eip = 0;
Jdb::Guessed_thread_state state = Jdb::guess_thread_state(t);
eip = ktop[-5];
-
+
if (state == Jdb::s_ipc)
{
// If thread is in IPC, EBP lays on the stack (see C-bindings). EBP
IMPLEMENTATION:
#include "jdb_prompt_ext.h"
-//#include "jdb_kobject_names.h"
#include "jdb.h"
#include "thread.h"
//static Jdb_tid_ext jdb_tid_ext INIT_PRIORITY(JDB_MODULE_INIT_PRIO);
-//-
-
-
-#include "kernel_task.h"
-#if 0
-PUBLIC static
-Space*
-Jdb::lookup_space(Task_num task)
-{
- return task == Config::kernel_taskno
- ? Kernel_task::kernel_task()
- : Space_index(task).lookup();
-}
-#endif
-
//---------------------------------------------------------------------------
IMPLEMENTATION [arm || ux || ppc32]:
#include "jdb_thread.h"
#include "jdb_util.h"
#include "kernel_console.h"
+#include "kernel_task.h"
#include "keycodes.h"
#include "l4_types.h"
#include "push_console.h"
#include "jdb_dbinfo.h"
#include "jdb_screen.h"
#include "kernel_console.h"
+#include "kernel_task.h"
#include "kernel_thread.h"
#include "keycodes.h"
#include "kmem.h"
Jdb_bp::set_debug_address_register(int num, Mword addr, Mword len,
Breakpoint::Mode mode, Task *task)
{
- if (task == Config::kernel_taskno)
+ if (!task)
{
- putstr(" => task 0 (kernel) not allowed for breakpoints");
+ putstr(" => kernel task not allowed for breakpoints");
return 0;
}
if (num >= 0 && num <= 3)
EXTENSION class Context
{
public:
- void set_cache_op_in_progress(bool val);
- bool is_cache_op_in_progress() const { return _cache_op_in_progess; }
+ void set_mem_op_in_progress(bool val);
+ bool is_mem_op_in_progress() const { return _mem_op_in_progess; }
private:
- bool _cache_op_in_progess;
+ bool _mem_op_in_progess;
};
// ------------------------------------------------------------------------
IMPLEMENT inline
void
-Context::set_cache_op_in_progress(bool val)
+Context::set_mem_op_in_progress(bool val)
{
- _cache_op_in_progess = val;
+ _mem_op_in_progess = val;
Mem::barrier();
}
.word sys_kdb_ke
/*SYSCALL(ipc)*/
.word ipc_short_cut_wrapper
- .word sys_arm_cache_op
+ .word sys_arm_mem_op
SYSCALL(invoke_debug)
.word sys_kdb_ke
.word sys_kdb_ke
--- /dev/null
+INTERFACE [arm]:
+
+#include "types.h"
+
+class Mem_op
+{
+public:
+ enum Op_cache
+ {
+ Op_cache_clean_data = 0x00,
+ Op_cache_flush_data = 0x01,
+ Op_cache_inv_data = 0x02,
+ Op_cache_coherent = 0x03,
+ Op_cache_dma_coherent = 0x04,
+ Op_cache_dma_coherent_full = 0x05,
+ };
+
+ enum Op_mem
+ {
+ Op_mem_read_data = 0x10,
+ Op_mem_write_data = 0x11,
+ };
+};
+
+// ------------------------------------------------------------------------
+IMPLEMENTATION [arm]:
+
+#include "context.h"
+#include "entry_frame.h"
+#include "globals.h"
+#include "mem.h"
+#include "mem_space.h"
+#include "mem_unit.h"
+#include "outer_cache.h"
+#include "space.h"
+
+PUBLIC static void
+Mem_op::arm_mem_cache_maint(int op, void const *start, void const *end)
+{
+ Context *c = current();
+
+ c->set_mem_op_in_progress(true);
+
+ switch (op)
+ {
+ case Op_cache_clean_data:
+ Mem_unit::clean_dcache(start, end);
+ break;
+
+ case Op_cache_flush_data:
+ Mem_unit::flush_dcache(start, end);
+ break;
+
+ case Op_cache_inv_data:
+ Mem_unit::inv_dcache(start, end);
+ break;
+
+ case Op_cache_coherent:
+ Mem_unit::clean_dcache(start, end);
+ Mem::dsb();
+ Mem_unit::btc_inv();
+ break;
+
+ case Op_cache_dma_coherent:
+ {
+ Mem_space::Vaddr v = Virt_addr(Address(start));
+ Mem_space::Vaddr e = Virt_addr(Address(end));
+
+ Mem_unit::flush_dcache(v, e);
+ while (v < e)
+ {
+ Mem_space::Size phys_size;
+ Mem_space::Phys_addr phys_addr;
+ unsigned attrs;
+
+ if ( c->mem_space()->v_lookup(v, &phys_addr,
+ &phys_size, &attrs)
+ && (attrs & Mem_space::Page_user_accessible))
+ {
+ Outer_cache::flush(Virt_addr(phys_addr).value(),
+ Virt_addr(phys_addr).value()
+ + Virt_size(phys_size).value() - 1,
+ false);
+ }
+ v += phys_size;
+ }
+ Outer_cache::sync();
+
+ }
+ break;
+
+ // We might not want to implement this one but single address outer
+ // cache flushing can be really slow
+ case Op_cache_dma_coherent_full:
+ Mem_unit::flush_dcache();
+ Outer_cache::flush();
+ break;
+
+ default:
+ break;
+ };
+
+ c->set_mem_op_in_progress(false);
+}
+
+PUBLIC static void
+Mem_op::arm_mem_access(Mword *r)
+{
+ Address a = r[1];
+ unsigned w = r[2];
+
+ if (w > 2)
+ return;
+
+ if (!current()->space()->is_user_memory(a, 1 << w))
+ return;
+
+ current()->set_mem_op_in_progress(true);
+
+ switch (r[0])
+ {
+ case Op_mem_read_data:
+ switch (w)
+ {
+ case 0:
+ r[3] = *(unsigned char *)a;
+ break;
+ case 1:
+ r[3] = *(unsigned short *)a;
+ break;
+ case 2:
+ r[3] = *(unsigned int *)a;
+ break;
+ default:
+ break;
+ };
+ break;
+
+ case Op_mem_write_data:
+ switch (w)
+ {
+ case 0:
+ *(unsigned char *)a = r[3];
+ break;
+ case 1:
+ *(unsigned short *)a = r[3];
+ break;
+ case 2:
+ *(unsigned int *)a = r[3];
+ break;
+ default:
+ break;
+ };
+ break;
+
+ default:
+ break;
+ };
+
+ current()->set_mem_op_in_progress(false);
+}
+
+extern "C" void sys_arm_mem_op()
+{
+ Entry_frame *e = current()->regs();
+ if (EXPECT_FALSE(e->r[0] & 0x10))
+ Mem_op::arm_mem_access(e->r);
+ else
+ Mem_op::arm_mem_cache_maint(e->r[0], (void *)e->r[1], (void *)e->r[2]);
+}
#include <cassert>
#include <cstdio>
-#include "cache.h"
#include "globals.h"
#include "kmem_space.h"
+#include "mem_op.h"
#include "static_assert.h"
#include "thread_state.h"
#include "types.h"
// cache operations we carry out for user space might cause PFs, we just
// ignore those
- if (EXPECT_FALSE(t->is_cache_op_in_progress()))
+ if (EXPECT_FALSE(t->is_mem_op_in_progress()))
{
ret_frame->pc += 4;
return 1;
&& ts->r[7] == 0xf0002)
{
if (ts->r[2] == 0)
- Cache_op::arm_cache_maint(Cache_op::Op_coherent,
- (void *)ts->r[0], (void *)ts->r[1]);
+ Mem_op::arm_mem_cache_maint(Mem_op::Op_cache_coherent,
+ (void *)ts->r[0], (void *)ts->r[1]);
return;
}
}
static const int profiling_rate = 100;
static const int profile_irq = 0;
- // kernel (idle) task definitions
+ // kernel (idle) thread prio
static const unsigned kernel_prio = 0;
- static const unsigned kernel_mcp = 255;
- // sigma0 task definitions
- static const unsigned sigma0_prio = 0x10;
- static const unsigned sigma0_mcp = 0;
-
- // root (boot) task definitions
- static const unsigned boot_prio = 0x10;
- static const unsigned boot_mcp = 255;
+ // default prio
+ static const unsigned default_prio = 1;
static const int warn_level = CONFIG_WARN_LEVEL;
- static const unsigned kernel_taskno = 0;
- static const unsigned sigma0_taskno = 2;
- static const unsigned boot_taskno = 4;
-
enum {
Kip_syscalls = 1,
#ifdef CONFIG_ASSEMBLER_IPC_SHORTCUT
reg_write(APIC_lvt1, 0x0001003f);
}
+PUBLIC static inline
+bool
+Apic::mp_ipi_idle()
+{
+ return ((reg_read(APIC_ICR) & 0x00001000) == 0);
+}
+
+PRIVATE static inline
+bool
+Apic::mp_ipi_idle_timeout(Cpu const *c, Unsigned32 wait)
+{
+ Unsigned64 wait_till = c->time_us() + wait;
+ while (!mp_ipi_idle() && c->time_us() < wait_till)
+ Proc::pause();
+ return mp_ipi_idle();
+}
+
PUBLIC static inline NEEDS [<cassert>]
void
Apic::mp_send_ipi(Unsigned32 dest, Unsigned32 vect,
reg_write(APIC_ICR, tmp_val);
}
-PUBLIC static inline
-bool
-Apic::mp_ipi_idle()
-{
- return (reg_read(APIC_ICR) & 0x00001000) == 0;
-}
-
PUBLIC static inline
void
Apic::mp_ipi_ack()
void
Apic::mp_startup(Cpu const *current_cpu, Unsigned32 dest, Address tramp_page)
{
- Unsigned64 wait_till;
-
assert((tramp_page & 0xfff00fff) == 0);
// XXX: should check for the apic version what to do exactly
mp_send_ipi(dest, 0, APIC_IPI_INIT);
// delay for 10ms (=10,000us)
- wait_till = current_cpu->time_us() + 10000;
- while (current_cpu->time_us() < wait_till)
- Proc::pause();
+ if (!mp_ipi_idle_timeout(current_cpu, 10000))
+ return;
// Send STARTUP IPI
mp_send_ipi(dest, tramp_page >> 12, APIC_IPI_STRTUP);
// delay for 200us
- wait_till = current_cpu->time_us() + 200;
- while (current_cpu->time_us() < wait_till)
- Proc::pause();
+ if (!mp_ipi_idle_timeout(current_cpu, 200))
+ return;
// Send STARTUP IPI
mp_send_ipi(dest, tramp_page >> 12, APIC_IPI_STRTUP);
// delay for 200us
- wait_till = current_cpu->time_us() + 200;
- while (current_cpu->time_us() < wait_till)
- Proc::pause();
+ if (!mp_ipi_idle_timeout(current_cpu, 200))
+ return;
}
return slabs;
}
+PUBLIC static
+int
+Vm::getpage(Utcb *utcb, L4_msg_tag tag, void **addr)
+{
+ L4_snd_item_iter item(utcb, tag.words());
+
+ if (EXPECT_FALSE(!tag.items() || !item.next()))
+ return -L4_err::EInval;
+
+ L4_fpage page(item.get()->d);
+
+ if (EXPECT_FALSE( !page.is_mempage()
+ || page.order() < 12))
+ return -L4_err::EInval;
+
+ unsigned int page_attribs;
+ Mem_space::Phys_addr phys;
+ Mem_space::Size size;
+
+ if (EXPECT_FALSE(!current()->space()->mem_space()
+ ->v_lookup(Virt_addr(page.mem_address()),
+ &phys, &size, &page_attribs)))
+ return -L4_err::EInval;
+
+ *addr = (void *)Virt_addr(page.mem_address()).value();
+
+ return 0;
+}
PUBLIC
template< typename Vm_impl >
return commit_result(-L4_err::EInval);
}
- L4_snd_item_iter vmcb_item(utcb, tag.words());
+ Vmcb *vmcb_s;
- if (EXPECT_FALSE(!tag.items() || !vmcb_item.next()))
- return commit_result(-L4_err::EInval);
-
- L4_fpage vmcb_fpage(vmcb_item.get()->d);
-
- if (EXPECT_FALSE(!vmcb_fpage.is_mempage()))
+ if (int r = Vm::getpage(utcb, tag, (void **)&vmcb_s))
{
- WARN("svm: Fpage invalid\n");
- return commit_error(utcb, L4_error::Overflow);
+ WARN("svm: Invalid VMCB\n");
+ return commit_result(r);
}
- if (EXPECT_FALSE(vmcb_fpage.order() < 12))
- return commit_result(-L4_err::EInval);
-
- Vmcb *vmcb_s = (Vmcb *)(Virt_addr(vmcb_fpage.mem_address()).value());
- Vmcb *kernel_vmcb_s = s.kernel_vmcb();
-
if (EXPECT_FALSE(vmcb_s->np_enabled() && !s.has_npt()))
{
WARN("svm: No NPT available\n");
if (EXPECT_FALSE(is_64bit() && !vm_cr3))
return commit_result(-L4_err::ENomem);
- Mem_space::Phys_addr phys_vmcb;
- Mem_space::Size size;
- bool resident;
- unsigned int page_attribs;
-
- Mem_space *const curr_mem_space = current()->space()->mem_space();
- resident = curr_mem_space->v_lookup(Virt_addr(vmcb_s), &phys_vmcb, &size, &page_attribs);
-
- if (!resident)
- {
- WARN("svm: VMCB invalid\n");
- return commit_result(-L4_err::EInval);
- }
-#if 0
- // currently only support for nested pagetables
- // if shadow page tables are to be allowed then cr0
- // needs further scrutiny and cr3 must not be accessible
- if((vmcb_s->control_area.np_enable & 1) != 1)
- return commit_result(-L4_err::EInval);
-#endif
-
// neither EFER.LME nor EFER.LMA must be set
if (EXPECT_FALSE(!is_64bit()
&& (vmcb_s->state_save_area.efer & (EFER_LME | EFER_LMA))))
orig_cr3 = vmcb_s->state_save_area.cr3;
orig_ncr3 = vmcb_s->control_area.n_cr3;
+ Vmcb *kernel_vmcb_s = s.kernel_vmcb();
+
copy_control_area(kernel_vmcb_s, vmcb_s);
copy_state_save_area(kernel_vmcb_s, vmcb_s);
return commit_result(-L4_err::EInval);
}
- L4_snd_item_iter vmcs_item(utcb, tag.words());
+ void *vmcs_s;
- if (EXPECT_FALSE(!tag.items() || !vmcs_item.next()))
- return commit_result(-L4_err::EInval);
-
- L4_fpage vmcs_fpage(vmcs_item.get()->d);
-
- if (EXPECT_FALSE(!vmcs_fpage.is_mempage()))
+ if (int r = Vm::getpage(utcb, tag, &vmcs_s))
{
- WARN("VMX: Fpage invalid\n");
- return commit_error(utcb, L4_error::Overflow);
- }
-
- if (EXPECT_FALSE(vmcs_fpage.order() < 12))
- return commit_result(-L4_err::EInval);
-
-
- void *vmcs_s = (void *)(Virt_addr(vmcs_fpage.mem_address()).value());
-
- Mem_space::Phys_addr phys_vmcs;
- Mem_space::Size size;
- bool resident;
- unsigned int page_attribs;
-
- Mem_space *const curr_mem_space = current()->space()->mem_space();
- resident = curr_mem_space->v_lookup(Virt_addr(vmcs_s), &phys_vmcs, &size, &page_attribs);
-
- if (EXPECT_FALSE(!resident))
- {
- WARN("VMX: VMCS invalid\n");
- return commit_result(-L4_err::EInval);
+ WARN("VMX: Invalid VMCS\n");
+ return commit_result(r);
}
// XXX:
sigma0_space = sigma0_task->mem_space();
Thread *sigma0_thread = new (Ram_quota::root) Thread();
- // Config::sigma0_prio
assert_kdb(sigma0_thread);
check (map(sigma0_thread, sigma0_task->obj_space(), sigma0_task, C_thread, 0));
check (boot_task->initialize());
Thread *boot_thread = new (Ram_quota::root) Thread();
- // Config::boot_prio
assert_kdb (boot_thread);
check (s0_b_gate);
check (map(s0_b_gate, boot_task->obj_space(), boot_task, C_pager, 0));
- //Cpu::cpus.cpu(0).tz_switch_to_ns();
set_cpu_of(sigma0_thread, 0);
set_cpu_of(boot_thread, 0);
sigma0_thread->state_del_dirty(Thread_suspended);
PUBLIC
Sched_context::Sched_context()
: _ready_next(0),
- _prio(Config::boot_prio),
+ _prio(Config::default_prio),
_quantum(Config::default_time_slice),
_left(Config::default_time_slice)
{}
-
/**
* Return priority of Sched_context
*/
Sched_context::Sched_context()
{
_t = Fixed_prio;
- _sc.fp._p = Config::boot_prio;
+ _sc.fp._p = Config::default_prio;
_sc.fp._q = Config::default_time_slice;
_sc.fp._left = Config::default_time_slice;
_sc.fp._ready_next = 0;
* exists, or if another thread creates an address space for the same
* task number concurrently). In this case, the newly-created
* address space should be deleted again.
- *
+ *
* @param number Task number of the new address space
*/
PUBLIC template< typename SPACE_FACTORY >
// Mem_space utilities
-/// Return memory space.
+// Return memory space.
PUBLIC inline
Mem_space const *
Space::mem_space () const
return _mem_space.get();
}
+PUBLIC static inline
+bool
+Space::is_user_memory(Address address, Mword len)
+{
+ return address < Mem_layout::User_max
+ && address + len <= Mem_layout::User_max;
+}
+
PUBLIC inline
bool
Space::lookup_space (Mem_space** out_space)
Space::state_lock()
{ return &_state; }
-
-//////////////////////////////////////////////////////////////////////
-
+// ------------------------------------------------------------------------
IMPLEMENTATION [!io && !ux]:
-/// Is this task a privileged one?
-PUBLIC static inline
+// Is this task a privileged one?
+PUBLIC static inline
bool
Space::has_io_privileges()
{ return true; }
-
#include <l4/cxx/l4iostream>
#include "device"
#include <cstring>
+#include <cstdio>
#include <iostream>
#include <boost/format.hpp>
ARCH = $(BUILD_ARCH)
all::
- echo foo $(ARCH)
$(VERBOSE)$(call MAKELINK, \
$(INSTALLDIR_LOCAL)/$(ARCH)/$(INSTALL_INC_PREFIX)/asm-$(SUFFIX_$(ARCH)),\
$(INSTALLDIR_LOCAL)/$(ARCH)/$(INSTALL_INC_PREFIX)/asm, asm-$(SUFFIX_$(ARCH)))
# check whether used gcc has the omp.h file available
OMP_H_PATH := $(shell $(CC) -print-file-name=include/omp.h)
- $(info here1 $(OMP_H_PATH))
ifeq ($(strip $(OMP_H_PATH)),include/omp.h)
$(info \e[32m $(CC) does not have omp.h header file available, skipping.\e[0m)
else
TARGET = ex_vcpu
SRC_CC = vcpu.cc
REQUIRES_LIBS = libvcpu
+DEPENDS_PKGS = libvcpu
include $(L4DIR)/mk/prog.mk
l4_usem_down_to(l4_cap_idx_t ksem, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW
{
l4_msgtag_t res;
- unsigned long dummy;
l4_utcb_mr()->mr[0] = (l4_addr_t)sem;
- __asm__ __volatile__(
- "1: xor %%rax, %%rax \n\t"
- " decq 0(%%rdi) \n\t"
- " jge 2f \n\t"
- " mov $1, %%rax \n\t"
- L4_ENTER_KERNEL
- " cmp $0x10000, %%rax \n\t"
- " je 1b \n\t"
- "2: \n\t"
+ do
+ {
+ unsigned long dummy1, dummy2, dummy3;
+ __asm__ __volatile__(
+ " xor %%rax, %%rax \n\t"
+ " decq 0(%%rdi) \n\t"
+ " jge 1f \n\t"
+ " mov $1, %%rax \n\t"
+ L4_ENTER_KERNEL
+ "1: \n\t"
:
- "=D" (dummy),
- "=c" (timeout),
- "=a" (res.raw)
+ "=D" (dummy1),
+ "=c" (dummy2),
+ "=d" (dummy3),
+ "=a" (res.raw)
:
- "D" (sem),
- "d" (ksem),
- "c" (timeout)
+ "D" (sem),
+ "d" (ksem),
+ "c" (timeout)
:
- "rsi", "memory"
- );
+ "rsi", "memory"
+ );
+ }
+ while (l4_msgtag_label(res) == L4_USEM_RETRY);
return res;
}
# define L4_SYSCALL_MAGIC_OFFSET 8
#endif
#define L4_SYSCALL_INVOKE (-0x00000004-L4_SYSCALL_MAGIC_OFFSET)
-#define L4_SYSCALL_CACHE_OP (-0x00000008-L4_SYSCALL_MAGIC_OFFSET)
+#define L4_SYSCALL_MEM_OP (-0x00000008-L4_SYSCALL_MAGIC_OFFSET)
#define L4_SYSCALL_DEBUGGER (-0x0000000C-L4_SYSCALL_MAGIC_OFFSET)
#endif /* __L4SYS__ARCH_ARM__L4API_L4F__SYSCALL_DEFS_H__ */
/**
* \file
- * \brief User-lock implementation for x86
+ * \brief User-lock implementation for ARM
*/
/*
* (c) 2008-2009 Adam Lackorzynski <adam@os.inf.tu-dresden.de>,
do
{
if (__builtin_expect(l4_atomic_add((long*)&(sem->counter), -1) >= 0, 1))
- return l4_msgtag(0,0,0,0);
+ return l4_msgtag(0, 0, 0, 0);
l4_utcb_mr()->mr[0] = (l4_addr_t)sem;
register unsigned long _lock __asm__ ("r2") = lock | L4_SYSF_CALL;
register unsigned long _timeout __asm__ ("r3") = timeout.t;
register unsigned long _flags __asm__ ("r4") = 0;
- register unsigned long _tag __asm__ ("r0") = 1;
+ register l4_msgtag_t _tag __asm__ ("r0") =
+ l4_msgtag(0 /*L4_SEMAPHORE_DOWN*/, 1, 0, 0);
__asm__ __volatile__
- ("@ l4_u_lock (semaphore block) \n\t"
+ ("@ l4_usem_down_to (semaphore block) \n\t"
PIC_SAVE_ASM
"mov lr, pc \n\t"
"mov pc, %[sys] \n\t"
PIC_RESTORE_ASM
:
- "=r"(_lock),
- "=r"(_timeout),
- "=r"(_flags),
- "=r"(_tag)
+ "=r" (_lock),
+ "=r" (_timeout),
+ "=r" (_flags),
+ "=r" (_tag.raw)
:
- "0"(_lock),
- "1"(_timeout),
- "2"(_flags),
- "3"(_tag),
+ "0" (_lock),
+ "1" (_timeout),
+ "2" (_flags),
+ "3" (_tag.raw),
[sys] "i" (L4_SYSCALL_INVOKE)
:
- "cc", "memory", "lr");
+ "cc", "memory", "lr"
+ );
- if (_tag != 0x10000)
+ if (l4_msgtag_label(_tag) != L4_USEM_RETRY)
{
- l4_msgtag_t t; t.raw = _tag;
+ l4_msgtag_t t;
+ t.raw = _tag.raw;
return t;
}
}
register unsigned long _lock __asm__ ("r2") = lock | L4_SYSF_CALL;
register unsigned long _timeout __asm__ ("r3") = 0;
register unsigned long _flags __asm__ ("r4") = 0;
- register unsigned long _tag __asm__ ("r0") = 0x10001;
+ register unsigned long _tag __asm__ ("r0") =
+ l4_msgtag(1 /* L4_SEMAPHORE_UP_WITHOUT_YIELD */, 1, 0, 0).raw;
__asm__ __volatile__
- ("@ l4_u_lock (semaphore block) \n\t"
+ ("@ l4_usem_up (semaphore block) \n\t"
PIC_SAVE_ASM
"mov lr, pc \n\t"
"mov pc, %[sys] \n\t"
#include_next <l4/sys/cache.h>
+/**
+ * \internal
+ */
L4_INLINE void
-l4_cache_op_arm_call(unsigned long start,
- unsigned long end,
- unsigned long op);
+l4_cache_op_arm_call(unsigned long op,
+ unsigned long start,
+ unsigned long end);
L4_INLINE void
l4_cache_op_arm_call(unsigned long op,
"=r" (_start),
"=r" (_end)
:
- [sc] "i" (L4_SYSCALL_CACHE_OP),
+ [sc] "i" (L4_SYSCALL_MEM_OP),
"0" (_op),
"1" (_start),
"2" (_end)
);
}
-enum
+enum L4_mem_cache_ops
{
- L4_CACHE_OP_CLEAN_DATA = 0,
- L4_CACHE_OP_FLUSH_DATA = 1,
- L4_CACHE_OP_INV_DATA = 2,
- L4_CACHE_OP_COHERENT = 3,
- L4_CACHE_OP_DMA_COHERENT = 4,
- L4_CACHE_OP_DMA_COHERENT_FULL = 5,
+ L4_MEM_CACHE_OP_CLEAN_DATA = 0,
+ L4_MEM_CACHE_OP_FLUSH_DATA = 1,
+ L4_MEM_CACHE_OP_INV_DATA = 2,
+ L4_MEM_CACHE_OP_COHERENT = 3,
+ L4_MEM_CACHE_OP_DMA_COHERENT = 4,
+ L4_MEM_CACHE_OP_DMA_COHERENT_FULL = 5,
};
L4_INLINE void
l4_cache_clean_data(unsigned long start,
unsigned long end) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_CLEAN_DATA, start, end);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_CLEAN_DATA, start, end);
}
L4_INLINE void
l4_cache_flush_data(unsigned long start,
unsigned long end) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_FLUSH_DATA, start, end);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_FLUSH_DATA, start, end);
}
L4_INLINE void
l4_cache_inv_data(unsigned long start,
unsigned long end) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_INV_DATA, start, end);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_INV_DATA, start, end);
}
L4_INLINE void
l4_cache_coherent(unsigned long start,
unsigned long end) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_COHERENT, start, end);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_COHERENT, start, end);
}
L4_INLINE void
l4_cache_dma_coherent(unsigned long start,
unsigned long end) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_DMA_COHERENT, start, end);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_DMA_COHERENT, start, end);
}
L4_INLINE void
l4_cache_dma_coherent_full(void) L4_NOTHROW
{
- l4_cache_op_arm_call(L4_CACHE_OP_DMA_COHERENT_FULL, 0, 0);
+ l4_cache_op_arm_call(L4_MEM_CACHE_OP_DMA_COHERENT_FULL, 0, 0);
}
#endif /* ! __L4SYS__INCLUDE__ARCH_ARM__CACHE_H__ */
--- /dev/null
+/**
+ * \file
+ * \brief Memory access functions (ARM specific)
+ *
+ * \date 2010-10
+ * \author Adam Lackorzynski <adam@os.inf.tu-dresden.de>
+ *
+ */
+/*
+ * (c) 2010 Author(s)
+ * economic rights: Technische Universität Dresden (Germany)
+ *
+ * This file is part of TUD:OS and distributed under the terms of the
+ * GNU General Public License 2.
+ * Please see the COPYING-GPL-2 file for details.
+ *
+ * As a special exception, you may use this file as part of a free software
+ * library without restriction. Specifically, if other files instantiate
+ * templates or use macros or inline functions from this file, or you compile
+ * this file and link it with other files to produce an executable, this
+ * file does not by itself cause the resulting executable to be covered by
+ * the GNU General Public License. This exception does not however
+ * invalidate any other reasons why the executable file might be covered by
+ * the GNU General Public License.
+ */
+#ifndef __L4SYS__INCLUDE__ARCH_ARM__MEM_OP_H__
+#define __L4SYS__INCLUDE__ARCH_ARM__MEM_OP_H__
+
+#include <l4/sys/compiler.h>
+#include <l4/sys/syscall_defs.h>
+
+/**
+ * \brief Read memory from kernel privilege level.
+ * \param virtaddress Virtual address in the calling task.
+ * \param width Width of access in bytes in log2
+ * (i.e. allowed values: 0, 1, 2)
+ * \return Read value.
+ *
+ * Upon an given invalid address or invalid width value the function does
+ * nothing.
+ */
+L4_INLINE unsigned long
+l4_mem_read(unsigned long virtaddress, unsigned width);
+
+/**
+ * \brief Write memory from kernel privilege level.
+ * \param virtaddress Virtual address in the calling task.
+ * \param width Width of access in bytes in log2
+ * (i.e. allowed values: 0, 1, 2)
+ * \param value Value to write.
+ *
+ * Upon an given invalid address or invalid width value the function does
+ * nothing.
+ */
+L4_INLINE void
+l4_mem_write(unsigned long virtaddress, unsigned width,
+ unsigned long value);
+
+enum L4_mem_ops
+{
+ L4_MEM_OP_MEM_READ = 0x10,
+ L4_MEM_OP_MEM_WRITE = 0x11,
+};
+
+/**
+ * \internal
+ */
+L4_INLINE unsigned long
+l4_mem_arm_op_call(unsigned long op,
+ unsigned long va,
+ unsigned long width,
+ unsigned long value);
+
+/** Implementations */
+
+L4_INLINE unsigned long
+l4_mem_arm_op_call(unsigned long op,
+ unsigned long va,
+ unsigned long width,
+ unsigned long value)
+{
+ register unsigned long _op asm ("r0") = op;
+ register unsigned long _va asm ("r1") = va;
+ register unsigned long _width asm ("r2") = width;
+ register unsigned long _value asm ("r3") = value;
+
+ __asm__ __volatile__
+ ("@ l4_cache_op_arm_call(start) \n\t"
+ "mov lr, pc \n\t"
+ "mov pc, %[sc] \n\t"
+ "@ l4_cache_op_arm_call(end) \n\t"
+ :
+ "=r" (_op),
+ "=r" (_va),
+ "=r" (_width),
+ "=r" (_value)
+ :
+ [sc] "i" (L4_SYSCALL_MEM_OP),
+ "0" (_op),
+ "1" (_va),
+ "2" (_width),
+ "3" (_value)
+ :
+ "cc", "memory", "lr"
+ );
+
+ return _value;
+}
+
+L4_INLINE unsigned long
+l4_mem_read(unsigned long virtaddress, unsigned width)
+{
+ return l4_mem_arm_op_call(L4_MEM_OP_MEM_READ, virtaddress, width, 0);
+}
+
+L4_INLINE void
+l4_mem_write(unsigned long virtaddress, unsigned width,
+ unsigned long value)
+{
+ l4_mem_arm_op_call(L4_MEM_OP_MEM_WRITE, virtaddress, width, value);
+}
+
+#endif /* ! __L4SYS__INCLUDE__ARCH_ARM__MEM_OP_H__ */
l4_usem_down_to(l4_cap_idx_t ksem, l4_u_semaphore_t *sem, l4_timeout_s timeout) L4_NOTHROW
{
l4_msgtag_t res;
- unsigned long dummy;
l4_utcb_mr()->mr[0] = (l4_addr_t)sem;
- __asm__ __volatile__(
- "1: xorl %%eax, %%eax \n\t"
- " decl 0(%%edi) \n\t"
- " jge 2f \n\t"
- " mov $1, %%eax \n\t"
- L4_ENTER_KERNEL
- " cmp $0x10000, %%eax \n\t"
- " je 1b \n\t"
- "2: \n\t"
+ do
+ {
+ unsigned long dummy1, dummy2, dummy3;
+ __asm__ __volatile__(
+ " xorl %%eax, %%eax \n\t"
+ " decl 0(%%edi) \n\t"
+ " jge 1f \n\t"
+ " mov $1, %%eax \n\t"
+ L4_ENTER_KERNEL
+ "1: \n\t"
:
- "=D" (dummy),
- "=c" (timeout),
- "=a" (res.raw)
+ "=D" (dummy1),
+ "=c" (dummy2),
+ "=d" (dummy3),
+ "=a" (res.raw)
:
- "D" (sem),
- "d" (ksem),
- "c" (timeout)
+ "D" (sem),
+ "d" (ksem),
+ "c" (timeout)
:
- "esi", "memory" L4S_PIC_CLOBBER
- );
+ "esi", "memory" L4S_PIC_CLOBBER
+ );
+ }
+ while (l4_msgtag_label(res) == L4_USEM_RETRY);
return res;
}
l4_msgtag_t tag;
l4_utcb_mr()->mr[0] = (l4_addr_t)sem;
__asm__ __volatile__(
- "xorl %%eax, %%eax \n\t"
+ "xorl %%eax, %%eax \n\t"
"incl 0(%%edi) \n\t"
"testb $1, 4(%%edi) \n\t"
"jz 2f \n\t"
void ux_host_syscall(int on) throw()
{ l4_thread_control_ux_host_syscall_u(_u, on); }
+ /**
+ * \brief Control vCPU mode of the thread.
+ * \param on vCPU mode on or off.
+ */
void vcpu_enable(int on) throw()
{ l4_thread_control_vcpu_enable_u(_u, on); }
};
* \ingroup l4_thread_api
*
* Add modification rules with l4_thread_modify_sender_add() and commit with
- * l4_thread_modify_sender_commit(). To not touch the UTCB between
+ * l4_thread_modify_sender_commit(). Do not touch the UTCB between
* l4_thread_modify_sender_start() and l4_thread_modify_sender_commit().
*
* \see l4_thread_modify_sender_add
l4_thread_modify_sender_start_u(l4_utcb_t *u) L4_NOTHROW;
/**
- * \brief Add a modifition pattern to a sender modifiction sequence.
+ * \brief Add a modification pattern to a sender modification sequence.
* \ingroup l4_thread_api
*
* \param tag Tag received from l4_thread_modify_sender_start() or
l4_msgtag_t *tag, l4_utcb_t *u) L4_NOTHROW;
/**
- * \brief Apply (commit) a sender modifiction sequence.
+ * \brief Apply (commit) a sender modification sequence.
* \ingroup l4_thread_api
*
* \see l4_thread_modify_sender_start
#undef min
#undef max
-// End of prewritten config; the discovered settings follow.
#define _GLIBCXX_HOSTED 1
#ifdef __USING_SJLJ_EXCEPTIONS__
# define _GLIBCXX_SJLJ_EXCEPTIONS 1
#endif
+
+// End of prewritten config; the discovered settings follow.
+/* Define to 1 if you have the `acosf' function. */
+#define _GLIBCXX_HAVE_ACOSF 1
+
+/* Define to 1 if you have the `acosl' function. */
+#define _GLIBCXX_HAVE_ACOSL 1
+
+/* Define to 1 if you have the `asinf' function. */
+#define _GLIBCXX_HAVE_ASINF 1
+
+/* Define to 1 if you have the `asinl' function. */
+#define _GLIBCXX_HAVE_ASINL 1
+
+/* Define to 1 if you have the `atan2f' function. */
+#define _GLIBCXX_HAVE_ATAN2F 1
+
+/* Define to 1 if you have the `atan2l' function. */
+#define _GLIBCXX_HAVE_ATAN2L 1
+
+/* Define to 1 if you have the `atanf' function. */
+#define _GLIBCXX_HAVE_ATANF 1
+
+/* Define to 1 if you have the `atanl' function. */
+#define _GLIBCXX_HAVE_ATANL 1
+
+/* Define to 1 if the target assembler supports thread-local storage. */
+/* #undef _GLIBCXX_HAVE_CC_TLS */
+
+/* Define to 1 if you have the `ceilf' function. */
+#define _GLIBCXX_HAVE_CEILF 1
+
+/* Define to 1 if you have the `ceill' function. */
+#define _GLIBCXX_HAVE_CEILL 1
+
+/* Define to 1 if you have the <complex.h> header file. */
+#define _GLIBCXX_HAVE_COMPLEX_H 1
+
+/* Define to 1 if you have the `copysign' function. */
+#define _GLIBCXX_HAVE_COPYSIGN 1
+
+/* Define to 1 if you have the `copysignf' function. */
+#define _GLIBCXX_HAVE_COPYSIGNF 1
+
+/* Define to 1 if you have the `copysignl' function. */
+#define _GLIBCXX_HAVE_COPYSIGNL 1
+
+/* Define to 1 if you have the `cosf' function. */
+#define _GLIBCXX_HAVE_COSF 1
+
+/* Define to 1 if you have the `coshf' function. */
+#define _GLIBCXX_HAVE_COSHF 1
+
+/* Define to 1 if you have the `coshl' function. */
+#define _GLIBCXX_HAVE_COSHL 1
+
+/* Define to 1 if you have the `cosl' function. */
+#define _GLIBCXX_HAVE_COSL 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define _GLIBCXX_HAVE_DLFCN_H 1
+
+/* Define to 1 if you have the <endian.h> header file. */
+#define _GLIBCXX_HAVE_ENDIAN_H 1
+
+/* Define to 1 if you have the `expf' function. */
+#define _GLIBCXX_HAVE_EXPF 1
+
+/* Define to 1 if you have the `expl' function. */
+#define _GLIBCXX_HAVE_EXPL 1
+
+/* Define to 1 if you have the `fabsf' function. */
+#define _GLIBCXX_HAVE_FABSF 1
+
+/* Define to 1 if you have the `fabsl' function. */
+#define _GLIBCXX_HAVE_FABSL 1
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#define _GLIBCXX_HAVE_FENV_H 1
+
+/* Define to 1 if you have the `finite' function. */
+#define _GLIBCXX_HAVE_FINITE 1
+
+/* Define to 1 if you have the `finitef' function. */
+#define _GLIBCXX_HAVE_FINITEF 1
+
+/* Define to 1 if you have the `finitel' function. */
+#define _GLIBCXX_HAVE_FINITEL 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define _GLIBCXX_HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `floorf' function. */
+#define _GLIBCXX_HAVE_FLOORF 1
+
+/* Define to 1 if you have the `floorl' function. */
+#define _GLIBCXX_HAVE_FLOORL 1
+
+/* Define to 1 if you have the `fmodf' function. */
+#define _GLIBCXX_HAVE_FMODF 1
+
+/* Define to 1 if you have the `fmodl' function. */
+#define _GLIBCXX_HAVE_FMODL 1
+
+/* Define to 1 if you have the `fpclass' function. */
+/* #undef _GLIBCXX_HAVE_FPCLASS */
+
+/* Define to 1 if you have the <fp.h> header file. */
+/* #undef _GLIBCXX_HAVE_FP_H */
+
+/* Define to 1 if you have the `frexpf' function. */
+#define _GLIBCXX_HAVE_FREXPF 1
+
+/* Define to 1 if you have the `frexpl' function. */
+#define _GLIBCXX_HAVE_FREXPL 1
+
+/* Define to 1 if you have the <gconf.h> header file. */
+/* #undef _GLIBCXX_HAVE_GCONF_H */
+
+/* Define to 1 if you have the <gconv.h> header file. */
+//#define _GLIBCXX_HAVE_GCONV_H 1
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define _GLIBCXX_HAVE_GETIPINFO 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define _GLIBCXX_HAVE_GETPAGESIZE 1
+
+/* Define if gthr-default.h exists (meaning that threading support is
+ enabled). */
+//#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
+
+/* Define to 1 if you have the `hypot' function. */
+#define _GLIBCXX_HAVE_HYPOT 1
+
+/* Define to 1 if you have the `hypotf' function. */
+#define _GLIBCXX_HAVE_HYPOTF 1
+
+/* Define to 1 if you have the `hypotl' function. */
+#define _GLIBCXX_HAVE_HYPOTL 1
+
+/* Define if you have the iconv() function. */
+//#define _GLIBCXX_HAVE_ICONV 1
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+/* #undef _GLIBCXX_HAVE_IEEEFP_H */
+
+/* Define if int64_t is available in <stdint.h>. */
+#define _GLIBCXX_HAVE_INT64_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define _GLIBCXX_HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isinf' function. */
+#define _GLIBCXX_HAVE_ISINF 1
+
+/* Define to 1 if you have the `isinff' function. */
+#define _GLIBCXX_HAVE_ISINFF 1
+
+/* Define to 1 if you have the `isinfl' function. */
+#define _GLIBCXX_HAVE_ISINFL 1
+
+/* Define to 1 if you have the `isnan' function. */
+#define _GLIBCXX_HAVE_ISNAN 1
+
+/* Define to 1 if you have the `isnanf' function. */
+#define _GLIBCXX_HAVE_ISNANF 1
+
+/* Define to 1 if you have the `isnanl' function. */
+#define _GLIBCXX_HAVE_ISNANL 1
+
+/* Defined if iswblank exists. */
+#define _GLIBCXX_HAVE_ISWBLANK 1
+
+/* Define if LC_MESSAGES is available in <locale.h>. */
+#define _GLIBCXX_HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the `ldexpf' function. */
+#define _GLIBCXX_HAVE_LDEXPF 1
+
+/* Define to 1 if you have the `ldexpl' function. */
+#define _GLIBCXX_HAVE_LDEXPL 1
+
+/* Define to 1 if you have the <libintl.h> header file. */
+//#define _GLIBCXX_HAVE_LIBINTL_H 1
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define _GLIBCXX_HAVE_LIBM 1
+
+/* Only used in build directory testsuite_hooks.h. */
+//#define _GLIBCXX_HAVE_LIMIT_AS 1
+
+/* Only used in build directory testsuite_hooks.h. */
+//#define _GLIBCXX_HAVE_LIMIT_DATA 1
+
+/* Only used in build directory testsuite_hooks.h. */
+//#define _GLIBCXX_HAVE_LIMIT_FSIZE 1
+
+/* Only used in build directory testsuite_hooks.h. */
+//#define _GLIBCXX_HAVE_LIMIT_RSS 1
+
+/* Only used in build directory testsuite_hooks.h. */
+//#define _GLIBCXX_HAVE_LIMIT_VMEM 0
+
+/* Define if futex syscall is available. */
+//#define _GLIBCXX_HAVE_LINUX_FUTEX 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define _GLIBCXX_HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `log10f' function. */
+#define _GLIBCXX_HAVE_LOG10F 1
+
+/* Define to 1 if you have the `log10l' function. */
+#define _GLIBCXX_HAVE_LOG10L 1
+
+/* Define to 1 if you have the `logf' function. */
+#define _GLIBCXX_HAVE_LOGF 1
+
+/* Define to 1 if you have the `logl' function. */
+#define _GLIBCXX_HAVE_LOGL 1
+
+/* Define to 1 if you have the <machine/endian.h> header file. */
+/* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */
+
+/* Define to 1 if you have the <machine/param.h> header file. */
+/* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */
+
+/* Define if mbstate_t exists in wchar.h. */
+#define _GLIBCXX_HAVE_MBSTATE_T 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define _GLIBCXX_HAVE_MEMORY_H 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define _GLIBCXX_HAVE_MMAP 1
+
+/* Define to 1 if you have the `modf' function. */
+#define _GLIBCXX_HAVE_MODF 1
+
+/* Define to 1 if you have the `modff' function. */
+#define _GLIBCXX_HAVE_MODFF 1
+
+/* Define to 1 if you have the `modfl' function. */
+#define _GLIBCXX_HAVE_MODFL 1
+
+/* Define to 1 if you have the <nan.h> header file. */
+/* #undef _GLIBCXX_HAVE_NAN_H */
+
+/* Define if poll is available in <poll.h>. */
+//#define _GLIBCXX_HAVE_POLL 1
+
+/* Define to 1 if you have the `powf' function. */
+#define _GLIBCXX_HAVE_POWF 1
+
+/* Define to 1 if you have the `powl' function. */
+#define _GLIBCXX_HAVE_POWL 1
+
+/* Define to 1 if you have the `qfpclass' function. */
+/* #undef _GLIBCXX_HAVE_QFPCLASS */
+
+/* Define to 1 if you have the `setenv' function. */
+#define _GLIBCXX_HAVE_SETENV 1
+
+/* Define if sigsetjmp is available. */
+#define _GLIBCXX_HAVE_SIGSETJMP 1
+
+/* Define to 1 if you have the `sincos' function. */
+#define _GLIBCXX_HAVE_SINCOS 1
+
+/* Define to 1 if you have the `sincosf' function. */
+#define _GLIBCXX_HAVE_SINCOSF 1
+
+/* Define to 1 if you have the `sincosl' function. */
+#define _GLIBCXX_HAVE_SINCOSL 1
+
+/* Define to 1 if you have the `sinf' function. */
+#define _GLIBCXX_HAVE_SINF 1
+
+/* Define to 1 if you have the `sinhf' function. */
+#define _GLIBCXX_HAVE_SINHF 1
+
+/* Define to 1 if you have the `sinhl' function. */
+#define _GLIBCXX_HAVE_SINHL 1
+
+/* Define to 1 if you have the `sinl' function. */
+#define _GLIBCXX_HAVE_SINL 1
+
+/* Define to 1 if you have the `sqrtf' function. */
+#define _GLIBCXX_HAVE_SQRTF 1
+
+/* Define to 1 if you have the `sqrtl' function. */
+#define _GLIBCXX_HAVE_SQRTL 1
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define _GLIBCXX_HAVE_STDBOOL_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define _GLIBCXX_HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define _GLIBCXX_HAVE_STDLIB_H 1
+
+/* Define if strerror_l is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRERROR_L 1
+
+/* Define if strerror_r is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRERROR_R 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define _GLIBCXX_HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define _GLIBCXX_HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strtof' function. */
+#define _GLIBCXX_HAVE_STRTOF 1
+
+/* Define to 1 if you have the `strtold' function. */
+#define _GLIBCXX_HAVE_STRTOLD 1
+
+/* Define if strxfrm_l is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRXFRM_L 1
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+//#define _GLIBCXX_HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+//#define _GLIBCXX_HAVE_SYS_IPC_H 1
+
+/* Define to 1 if you have the <sys/isa_defs.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
+
+/* Define to 1 if you have the <sys/machine.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_PARAM_H */
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+//#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+//#define _GLIBCXX_HAVE_SYS_SEM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define _GLIBCXX_HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define _GLIBCXX_HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define _GLIBCXX_HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+//#define _GLIBCXX_HAVE_SYS_UIO_H 1
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+/* #undef _GLIBCXX_HAVE_S_IFREG */
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+#define _GLIBCXX_HAVE_S_ISREG 1
+
+/* Define to 1 if you have the `tanf' function. */
+#define _GLIBCXX_HAVE_TANF 1
+
+/* Define to 1 if you have the `tanhf' function. */
+#define _GLIBCXX_HAVE_TANHF 1
+
+/* Define to 1 if you have the `tanhl' function. */
+#define _GLIBCXX_HAVE_TANHL 1
+
+/* Define to 1 if you have the `tanl' function. */
+#define _GLIBCXX_HAVE_TANL 1
+
+/* Define to 1 if you have the <tgmath.h> header file. */
+#define _GLIBCXX_HAVE_TGMATH_H 1
+
+/* Define to 1 if the target supports thread-local storage. */
+//#define _GLIBCXX_HAVE_TLS 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define _GLIBCXX_HAVE_UNISTD_H 1
+
+/* Defined if vfwscanf exists. */
+#define _GLIBCXX_HAVE_VFWSCANF 1
+
+/* Defined if vswscanf exists. */
+#define _GLIBCXX_HAVE_VSWSCANF 1
+
+/* Defined if vwscanf exists. */
+#define _GLIBCXX_HAVE_VWSCANF 1
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define _GLIBCXX_HAVE_WCHAR_H 1
+
+/* Defined if wcstof exists. */
+//#define _GLIBCXX_HAVE_WCSTOF 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+//#define _GLIBCXX_HAVE_WCTYPE_H 1
+
+/* Define if writev is available in <sys/uio.h>. */
+//#define _GLIBCXX_HAVE_WRITEV 1
+
+/* Define to 1 if you have the `_acosf' function. */
+/* #undef _GLIBCXX_HAVE__ACOSF */
+
+/* Define to 1 if you have the `_acosl' function. */
+/* #undef _GLIBCXX_HAVE__ACOSL */
+
+/* Define to 1 if you have the `_asinf' function. */
+/* #undef _GLIBCXX_HAVE__ASINF */
+
+/* Define to 1 if you have the `_asinl' function. */
+/* #undef _GLIBCXX_HAVE__ASINL */
+
+/* Define to 1 if you have the `_atan2f' function. */
+/* #undef _GLIBCXX_HAVE__ATAN2F */
+
+/* Define to 1 if you have the `_atan2l' function. */
+/* #undef _GLIBCXX_HAVE__ATAN2L */
+
+/* Define to 1 if you have the `_atanf' function. */
+/* #undef _GLIBCXX_HAVE__ATANF */
+
+/* Define to 1 if you have the `_atanl' function. */
+/* #undef _GLIBCXX_HAVE__ATANL */
+
+/* Define to 1 if you have the `_ceilf' function. */
+/* #undef _GLIBCXX_HAVE__CEILF */
+
+/* Define to 1 if you have the `_ceill' function. */
+/* #undef _GLIBCXX_HAVE__CEILL */
+
+/* Define to 1 if you have the `_copysign' function. */
+/* #undef _GLIBCXX_HAVE__COPYSIGN */
+
+/* Define to 1 if you have the `_copysignl' function. */
+/* #undef _GLIBCXX_HAVE__COPYSIGNL */
+
+/* Define to 1 if you have the `_cosf' function. */
+/* #undef _GLIBCXX_HAVE__COSF */
+
+/* Define to 1 if you have the `_coshf' function. */
+/* #undef _GLIBCXX_HAVE__COSHF */
+
+/* Define to 1 if you have the `_coshl' function. */
+/* #undef _GLIBCXX_HAVE__COSHL */
+
+/* Define to 1 if you have the `_cosl' function. */
+/* #undef _GLIBCXX_HAVE__COSL */
+
+/* Define to 1 if you have the `_expf' function. */
+/* #undef _GLIBCXX_HAVE__EXPF */
+
+/* Define to 1 if you have the `_expl' function. */
+/* #undef _GLIBCXX_HAVE__EXPL */
+
+/* Define to 1 if you have the `_fabsf' function. */
+/* #undef _GLIBCXX_HAVE__FABSF */
+
+/* Define to 1 if you have the `_fabsl' function. */
+/* #undef _GLIBCXX_HAVE__FABSL */
+
+/* Define to 1 if you have the `_finite' function. */
+/* #undef _GLIBCXX_HAVE__FINITE */
+
+/* Define to 1 if you have the `_finitef' function. */
+/* #undef _GLIBCXX_HAVE__FINITEF */
+
+/* Define to 1 if you have the `_finitel' function. */
+/* #undef _GLIBCXX_HAVE__FINITEL */
+
+/* Define to 1 if you have the `_floorf' function. */
+/* #undef _GLIBCXX_HAVE__FLOORF */
+
+/* Define to 1 if you have the `_floorl' function. */
+/* #undef _GLIBCXX_HAVE__FLOORL */
+
+/* Define to 1 if you have the `_fmodf' function. */
+/* #undef _GLIBCXX_HAVE__FMODF */
+
+/* Define to 1 if you have the `_fmodl' function. */
+/* #undef _GLIBCXX_HAVE__FMODL */
+
+/* Define to 1 if you have the `_fpclass' function. */
+/* #undef _GLIBCXX_HAVE__FPCLASS */
+
+/* Define to 1 if you have the `_frexpf' function. */
+/* #undef _GLIBCXX_HAVE__FREXPF */
+
+/* Define to 1 if you have the `_frexpl' function. */
+/* #undef _GLIBCXX_HAVE__FREXPL */
+
+/* Define to 1 if you have the `_hypot' function. */
+/* #undef _GLIBCXX_HAVE__HYPOT */
+
+/* Define to 1 if you have the `_hypotf' function. */
+/* #undef _GLIBCXX_HAVE__HYPOTF */
+
+/* Define to 1 if you have the `_hypotl' function. */
+/* #undef _GLIBCXX_HAVE__HYPOTL */
+
+/* Define to 1 if you have the `_isinf' function. */
+/* #undef _GLIBCXX_HAVE__ISINF */
+
+/* Define to 1 if you have the `_isinff' function. */
+/* #undef _GLIBCXX_HAVE__ISINFF */
+
+/* Define to 1 if you have the `_isinfl' function. */
+/* #undef _GLIBCXX_HAVE__ISINFL */
+
+/* Define to 1 if you have the `_isnan' function. */
+/* #undef _GLIBCXX_HAVE__ISNAN */
+
+/* Define to 1 if you have the `_isnanf' function. */
+/* #undef _GLIBCXX_HAVE__ISNANF */
+
+/* Define to 1 if you have the `_isnanl' function. */
+/* #undef _GLIBCXX_HAVE__ISNANL */
+
+/* Define to 1 if you have the `_ldexpf' function. */
+/* #undef _GLIBCXX_HAVE__LDEXPF */
+
+/* Define to 1 if you have the `_ldexpl' function. */
+/* #undef _GLIBCXX_HAVE__LDEXPL */
+
+/* Define to 1 if you have the `_log10f' function. */
+/* #undef _GLIBCXX_HAVE__LOG10F */
+
+/* Define to 1 if you have the `_log10l' function. */
+/* #undef _GLIBCXX_HAVE__LOG10L */
+
+/* Define to 1 if you have the `_logf' function. */
+/* #undef _GLIBCXX_HAVE__LOGF */
+
+/* Define to 1 if you have the `_logl' function. */
+/* #undef _GLIBCXX_HAVE__LOGL */
+
+/* Define to 1 if you have the `_modf' function. */
+/* #undef _GLIBCXX_HAVE__MODF */
+
+/* Define to 1 if you have the `_modff' function. */
+/* #undef _GLIBCXX_HAVE__MODFF */
+
+/* Define to 1 if you have the `_modfl' function. */
+/* #undef _GLIBCXX_HAVE__MODFL */
+
+/* Define to 1 if you have the `_powf' function. */
+/* #undef _GLIBCXX_HAVE__POWF */
+
+/* Define to 1 if you have the `_powl' function. */
+/* #undef _GLIBCXX_HAVE__POWL */
+
+/* Define to 1 if you have the `_qfpclass' function. */
+/* #undef _GLIBCXX_HAVE__QFPCLASS */
+
+/* Define to 1 if you have the `_sincos' function. */
+/* #undef _GLIBCXX_HAVE__SINCOS */
+
+/* Define to 1 if you have the `_sincosf' function. */
+/* #undef _GLIBCXX_HAVE__SINCOSF */
+
+/* Define to 1 if you have the `_sincosl' function. */
+/* #undef _GLIBCXX_HAVE__SINCOSL */
+
+/* Define to 1 if you have the `_sinf' function. */
+/* #undef _GLIBCXX_HAVE__SINF */
+
+/* Define to 1 if you have the `_sinhf' function. */
+/* #undef _GLIBCXX_HAVE__SINHF */
+
+/* Define to 1 if you have the `_sinhl' function. */
+/* #undef _GLIBCXX_HAVE__SINHL */
+
+/* Define to 1 if you have the `_sinl' function. */
+/* #undef _GLIBCXX_HAVE__SINL */
+
+/* Define to 1 if you have the `_sqrtf' function. */
+/* #undef _GLIBCXX_HAVE__SQRTF */
+
+/* Define to 1 if you have the `_sqrtl' function. */
+/* #undef _GLIBCXX_HAVE__SQRTL */
+
+/* Define to 1 if you have the `_tanf' function. */
+/* #undef _GLIBCXX_HAVE__TANF */
+
+/* Define to 1 if you have the `_tanhf' function. */
+/* #undef _GLIBCXX_HAVE__TANHF */
+
+/* Define to 1 if you have the `_tanhl' function. */
+/* #undef _GLIBCXX_HAVE__TANHL */
+
+/* Define to 1 if you have the `_tanl' function. */
+/* #undef _GLIBCXX_HAVE__TANL */
+
+/* Define if the compiler/host combination has __builtin_abs. */
+#define _GLIBCXX_HAVE___BUILTIN_ABS 1
+
+/* Define if the compiler/host combination has __builtin_cos. */
+#define _GLIBCXX_HAVE___BUILTIN_COS 1
+
+/* Define if the compiler/host combination has __builtin_cosf. */
+#define _GLIBCXX_HAVE___BUILTIN_COSF 1
+
+/* Define if the compiler/host combination has __builtin_cosl. */
+#define _GLIBCXX_HAVE___BUILTIN_COSL 1
+
+/* Define if the compiler/host combination has __builtin_fabs. */
+#define _GLIBCXX_HAVE___BUILTIN_FABS 1
+
+/* Define if the compiler/host combination has __builtin_fabsf. */
+#define _GLIBCXX_HAVE___BUILTIN_FABSF 1
+
+/* Define if the compiler/host combination has __builtin_fabsl. */
+#define _GLIBCXX_HAVE___BUILTIN_FABSL 1
+
+/* Define if the compiler/host combination has __builtin_labs. */
+#define _GLIBCXX_HAVE___BUILTIN_LABS 1
+
+/* Define if the compiler/host combination has __builtin_sin. */
+#define _GLIBCXX_HAVE___BUILTIN_SIN 1
+
+/* Define if the compiler/host combination has __builtin_sinf. */
+#define _GLIBCXX_HAVE___BUILTIN_SINF 1
+
+/* Define if the compiler/host combination has __builtin_sinl. */
+#define _GLIBCXX_HAVE___BUILTIN_SINL 1
+
+/* Define if the compiler/host combination has __builtin_sqrt. */
+#define _GLIBCXX_HAVE___BUILTIN_SQRT 1
+
+/* Define if the compiler/host combination has __builtin_sqrtf. */
+#define _GLIBCXX_HAVE___BUILTIN_SQRTF 1
+
+/* Define if the compiler/host combination has __builtin_sqrtl. */
+#define _GLIBCXX_HAVE___BUILTIN_SQRTL 1
+
+/* Define to 1 if you have the `__signbit' function. */
+#define _GLIBCXX_HAVE___SIGNBIT 1
+
+/* Define to 1 if you have the `__signbitf' function. */
+#define _GLIBCXX_HAVE___SIGNBITF 1
+
+/* Define to 1 if you have the `__signbitl' function. */
+#define _GLIBCXX_HAVE___SIGNBITL 1
+
+/* Define as const if the declaration of iconv() needs const. */
+#define _GLIBCXX_ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+/* #undef _GLIBCXX_PACKAGE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define _GLIBCXX_PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define _GLIBCXX_PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
+
+/* Define to the version of this package. */
+#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+/* #undef _GLIBCXX_VERSION */
+
+/* Define if builtin atomic operations are supported on this host. */
+//#define _GLIBCXX_ATOMIC_BUILTINS 1
+
+/* Define to use concept checking code from the boost libraries. */
+/* #undef _GLIBCXX_CONCEPT_CHECKS */
+
+/* Define if a fully dynamic basic_string is wanted. */
+/* #undef _GLIBCXX_FULLY_DYNAMIC_STRING */
+
+/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
+#define _GLIBCXX_HOSTED 1
+
+/* Define if compatibility should be provided for -mlong-double-64. */
+
+/* Define if ptrdiff_t is int. */
+#define _GLIBCXX_PTRDIFF_T_IS_INT 1
+
+/* Define if using setrlimit to set resource limits during "make check" */
+//#define _GLIBCXX_RES_LIMITS 1
+
+/* Define if size_t is unsigned int. */
+#define _GLIBCXX_SIZE_T_IS_UINT 1
+
+/* Define if the compiler is configured for setjmp/longjmp exceptions. */
+/* #undef _GLIBCXX_SJLJ_EXCEPTIONS */
+
+/* Define to use symbol versioning in the shared library. */
+#define _GLIBCXX_SYMVER 1
+
+/* Define to use darwin versioning in the shared library. */
+/* #undef _GLIBCXX_SYMVER_DARWIN */
+
+/* Define to use GNU versioning in the shared library. */
+#define _GLIBCXX_SYMVER_GNU 1
+
+/* Define to use GNU namespace versioning in the shared library. */
+/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
+
+/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
+ <stdio.h>, and <stdlib.h> can be used or exposed. */
+#define _GLIBCXX_USE_C99 1
+
+/* Define if C99 functions in <complex.h> should be used in <complex>. Using
+ compiler builtins for these functions requires corresponding C99 library
+ functions to be present. */
+#define _GLIBCXX_USE_C99_COMPLEX 1
+
+/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
+ Using compiler builtins for these functions requires corresponding C99
+ library functions to be present. */
+#define _GLIBCXX_USE_C99_COMPLEX_TR1 1
+
+/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
+ namespace std::tr1. */
+#define _GLIBCXX_USE_C99_CTYPE_TR1 1
+
+/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
+ namespace std::tr1. */
+#define _GLIBCXX_USE_C99_FENV_TR1 1
+
+/* Define if C99 functions in <inttypes.h> should be imported in
+ <tr1/cinttypes> in namespace std::tr1. */
+#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
+
+/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
+ in namespace std. */
+#define _GLIBCXX_USE_C99_MATH 1
+
+/* Define if C99 functions or macros in <math.h> should be imported in
+ <tr1/cmath> in namespace std::tr1. */
+#define _GLIBCXX_USE_C99_MATH_TR1 1
+
+/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
+ namespace std::tr1. */
+#define _GLIBCXX_USE_C99_STDINT_TR1 1
+
+/* Define if LFS support is available. */
+#define _GLIBCXX_USE_LFS 1
+
+/* Define if code specialized for long long should be used. */
+#define _GLIBCXX_USE_LONG_LONG 1
+
+/* Define if NLS translations are to be used. */
+//#define _GLIBCXX_USE_NLS 1
+
+/* Define if dev/random and dev/urandom are available for the random_device of
+ TR1 (Chapter 5.1). */
+#define _GLIBCXX_USE_RANDOM_TR1 1
+
+/* Define if code specialized for wchar_t should be used. */
+//#define _GLIBCXX_USE_WCHAR_T 1
+
+#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
+# define _GLIBCXX_HAVE_ACOSF 1
+# define acosf _acosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
+# define _GLIBCXX_HAVE_ACOSL 1
+# define acosl _acosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
+# define _GLIBCXX_HAVE_ASINF 1
+# define asinf _asinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
+# define _GLIBCXX_HAVE_ASINL 1
+# define asinl _asinl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
+# define _GLIBCXX_HAVE_ATAN2F 1
+# define atan2f _atan2f
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
+# define _GLIBCXX_HAVE_ATAN2L 1
+# define atan2l _atan2l
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
+# define _GLIBCXX_HAVE_ATANF 1
+# define atanf _atanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
+# define _GLIBCXX_HAVE_ATANL 1
+# define atanl _atanl
+#endif
+
+#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
+# define _GLIBCXX_HAVE_CEILF 1
+# define ceilf _ceilf
+#endif
+
+#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
+# define _GLIBCXX_HAVE_CEILL 1
+# define ceill _ceill
+#endif
+
+#if defined (_GLIBCXX_HAVE__COPYSIGN) && ! defined (_GLIBCXX_HAVE_COPYSIGN)
+# define _GLIBCXX_HAVE_COPYSIGN 1
+# define copysign _copysign
+#endif
+
+#if defined (_GLIBCXX_HAVE__COPYSIGNL) && ! defined (_GLIBCXX_HAVE_COPYSIGNL)
+# define _GLIBCXX_HAVE_COPYSIGNL 1
+# define copysignl _copysignl
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
+# define _GLIBCXX_HAVE_COSF 1
+# define cosf _cosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
+# define _GLIBCXX_HAVE_COSHF 1
+# define coshf _coshf
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
+# define _GLIBCXX_HAVE_COSHL 1
+# define coshl _coshl
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
+# define _GLIBCXX_HAVE_COSL 1
+# define cosl _cosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
+# define _GLIBCXX_HAVE_EXPF 1
+# define expf _expf
+#endif
+
+#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
+# define _GLIBCXX_HAVE_EXPL 1
+# define expl _expl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
+# define _GLIBCXX_HAVE_FABSF 1
+# define fabsf _fabsf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
+# define _GLIBCXX_HAVE_FABSL 1
+# define fabsl _fabsl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
+# define _GLIBCXX_HAVE_FINITE 1
+# define finite _finite
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
+# define _GLIBCXX_HAVE_FINITEF 1
+# define finitef _finitef
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
+# define _GLIBCXX_HAVE_FINITEL 1
+# define finitel _finitel
+#endif
+
+#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
+# define _GLIBCXX_HAVE_FLOORF 1
+# define floorf _floorf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
+# define _GLIBCXX_HAVE_FLOORL 1
+# define floorl _floorl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
+# define _GLIBCXX_HAVE_FMODF 1
+# define fmodf _fmodf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
+# define _GLIBCXX_HAVE_FMODL 1
+# define fmodl _fmodl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
+# define _GLIBCXX_HAVE_FPCLASS 1
+# define fpclass _fpclass
+#endif
+
+#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
+# define _GLIBCXX_HAVE_FREXPF 1
+# define frexpf _frexpf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
+# define _GLIBCXX_HAVE_FREXPL 1
+# define frexpl _frexpl
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
+# define _GLIBCXX_HAVE_HYPOT 1
+# define hypot _hypot
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
+# define _GLIBCXX_HAVE_HYPOTF 1
+# define hypotf _hypotf
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
+# define _GLIBCXX_HAVE_HYPOTL 1
+# define hypotl _hypotl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
+# define _GLIBCXX_HAVE_ISINF 1
+# define isinf _isinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
+# define _GLIBCXX_HAVE_ISINFF 1
+# define isinff _isinff
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
+# define _GLIBCXX_HAVE_ISINFL 1
+# define isinfl _isinfl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
+# define _GLIBCXX_HAVE_ISNAN 1
+# define isnan _isnan
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
+# define _GLIBCXX_HAVE_ISNANF 1
+# define isnanf _isnanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
+# define _GLIBCXX_HAVE_ISNANL 1
+# define isnanl _isnanl
+#endif
+
+#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
+# define _GLIBCXX_HAVE_LDEXPF 1
+# define ldexpf _ldexpf
+#endif
+
+#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
+# define _GLIBCXX_HAVE_LDEXPL 1
+# define ldexpl _ldexpl
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
+# define _GLIBCXX_HAVE_LOG10F 1
+# define log10f _log10f
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
+# define _GLIBCXX_HAVE_LOG10L 1
+# define log10l _log10l
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
+# define _GLIBCXX_HAVE_LOGF 1
+# define logf _logf
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
+# define _GLIBCXX_HAVE_LOGL 1
+# define logl _logl
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
+# define _GLIBCXX_HAVE_MODF 1
+# define modf _modf
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
+# define _GLIBCXX_HAVE_MODFF 1
+# define modff _modff
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
+# define _GLIBCXX_HAVE_MODFL 1
+# define modfl _modfl
+#endif
+
+#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
+# define _GLIBCXX_HAVE_POWF 1
+# define powf _powf
+#endif
+
+#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
+# define _GLIBCXX_HAVE_POWL 1
+# define powl _powl
+#endif
+
+#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
+# define _GLIBCXX_HAVE_QFPCLASS 1
+# define qfpclass _qfpclass
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
+# define _GLIBCXX_HAVE_SINCOS 1
+# define sincos _sincos
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
+# define _GLIBCXX_HAVE_SINCOSF 1
+# define sincosf _sincosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
+# define _GLIBCXX_HAVE_SINCOSL 1
+# define sincosl _sincosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
+# define _GLIBCXX_HAVE_SINF 1
+# define sinf _sinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
+# define _GLIBCXX_HAVE_SINHF 1
+# define sinhf _sinhf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
+# define _GLIBCXX_HAVE_SINHL 1
+# define sinhl _sinhl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
+# define _GLIBCXX_HAVE_SINL 1
+# define sinl _sinl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
+# define _GLIBCXX_HAVE_SQRTF 1
+# define sqrtf _sqrtf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
+# define _GLIBCXX_HAVE_SQRTL 1
+# define sqrtl _sqrtl
+#endif
+
+#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
+# define _GLIBCXX_HAVE_STRTOF 1
+# define strtof _strtof
+#endif
+
+#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
+# define _GLIBCXX_HAVE_STRTOLD 1
+# define strtold _strtold
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
+# define _GLIBCXX_HAVE_TANF 1
+# define tanf _tanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
+# define _GLIBCXX_HAVE_TANHF 1
+# define tanhf _tanhf
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
+# define _GLIBCXX_HAVE_TANHL 1
+# define tanhl _tanhl
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
+# define _GLIBCXX_HAVE_TANL 1
+# define tanl _tanl
+#endif
// Macros for visibility.
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
// _GLIBCXX_VISIBILITY_ATTR
-#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default
+# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY default
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
# define _GLIBCXX_VISIBILITY_ATTR(V) __attribute__ ((__visibility__ (#V)))
# define _GLIBCXX_NAMESPACE_ASSOCIATION_PROFILE 1
#endif
-#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
+# define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION 0
// Defined if any namespace association modes are active.
#if _GLIBCXX_NAMESPACE_ASSOCIATION_DEBUG \
# endif
#endif
+#ifdef __PIC__
+#define __GXX_WEAK__ 1
+#define _GLIBCXX_GTHREAD_USE_WEAK 1
+#endif
+
+#ifdef L4_THREAD_SAFE
+# define _GLIBCXX__PTHREADS 1
+#else
+# define _GLIBCXX__PTHREADS 0
+#endif
+#define _GLIBCXX__PTHREADS95 0
+#define _GLIBCXX__DCE_THREADS 0
+#define _GLIBCXX__SOLARIS_THREADS 0
+
+
+
// End of prewritten config; the discovered settings follow.
/* config.h.in. Generated from configure.ac by autoheader. */
+/* Define to 1 if you have the `acosf' function. */
+#define _GLIBCXX_HAVE_ACOSF 1
+
+/* Define to 1 if you have the `acosl' function. */
+#define _GLIBCXX_HAVE_ACOSL 1
+
+/* Define to 1 if you have the `asinf' function. */
+#define _GLIBCXX_HAVE_ASINF 1
+
+/* Define to 1 if you have the `asinl' function. */
+#define _GLIBCXX_HAVE_ASINL 1
+
+/* Define to 1 if the target assembler supports .symver directive. */
+#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1
+
+/* Define to 1 if you have the `atan2f' function. */
+#define _GLIBCXX_HAVE_ATAN2F 1
+
+/* Define to 1 if you have the `atan2l' function. */
+#define _GLIBCXX_HAVE_ATAN2L 1
+
+/* Define to 1 if you have the `atanf' function. */
+#define _GLIBCXX_HAVE_ATANF 1
+
+/* Define to 1 if you have the `atanl' function. */
+#define _GLIBCXX_HAVE_ATANL 1
+
+/* Define to 1 if the target assembler supports thread-local storage. */
+/* #undef _GLIBCXX_HAVE_CC_TLS */
+
+/* Define to 1 if you have the `ceilf' function. */
+#define _GLIBCXX_HAVE_CEILF 1
+
+/* Define to 1 if you have the `ceill' function. */
+#define _GLIBCXX_HAVE_CEILL 1
+
+/* Define to 1 if you have the <complex.h> header file. */
+#define _GLIBCXX_HAVE_COMPLEX_H 1
+
+/* Define to 1 if you have the `cosf' function. */
+#define _GLIBCXX_HAVE_COSF 1
+
+/* Define to 1 if you have the `coshf' function. */
+#define _GLIBCXX_HAVE_COSHF 1
+
+/* Define to 1 if you have the `coshl' function. */
+#define _GLIBCXX_HAVE_COSHL 1
+
+/* Define to 1 if you have the `cosl' function. */
+#define _GLIBCXX_HAVE_COSL 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define _GLIBCXX_HAVE_DLFCN_H 1
+
+/* Define if EBADMSG exists. */
+#define _GLIBCXX_HAVE_EBADMSG 1
+
+/* Define if ECANCELED exists. */
+#define _GLIBCXX_HAVE_ECANCELED 1
+
+/* Define if EIDRM exists. */
+#define _GLIBCXX_HAVE_EIDRM 1
+
+/* Define to 1 if you have the <endian.h> header file. */
+#define _GLIBCXX_HAVE_ENDIAN_H 1
+
+/* Define if ENODATA exists. */
+#define _GLIBCXX_HAVE_ENODATA 1
+
+/* Define if ENOLINK exists. */
+#define _GLIBCXX_HAVE_ENOLINK 1
+
+/* Define if ENOSR exists. */
+#define _GLIBCXX_HAVE_ENOSR 1
+
+/* Define if ENOSTR exists. */
+#define _GLIBCXX_HAVE_ENOSTR 1
+
+/* Define if ENOTRECOVERABLE exists. */
+#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1
+
+/* Define if ENOTSUP exists. */
+#define _GLIBCXX_HAVE_ENOTSUP 1
+
+/* Define if EOVERFLOW exists. */
+#define _GLIBCXX_HAVE_EOVERFLOW 1
+
+/* Define if EOWNERDEAD exists. */
+#define _GLIBCXX_HAVE_EOWNERDEAD 1
+
+/* Define if EPROTO exists. */
+#define _GLIBCXX_HAVE_EPROTO 1
+
+/* Define if ETIME exists. */
+#define _GLIBCXX_HAVE_ETIME 1
+
+/* Define if ETXTBSY exists. */
+#define _GLIBCXX_HAVE_ETXTBSY 1
+
+/* Define to 1 if you have the <execinfo.h> header file. */
+#define _GLIBCXX_HAVE_EXECINFO_H 1
+
+/* Define to 1 if you have the `expf' function. */
+#define _GLIBCXX_HAVE_EXPF 1
+
+/* Define to 1 if you have the `expl' function. */
+#define _GLIBCXX_HAVE_EXPL 1
+
+/* Define to 1 if you have the `fabsf' function. */
+#define _GLIBCXX_HAVE_FABSF 1
+
+/* Define to 1 if you have the `fabsl' function. */
+#define _GLIBCXX_HAVE_FABSL 1
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#define _GLIBCXX_HAVE_FENV_H 1
+
+/* Define to 1 if you have the `finite' function. */
+#define _GLIBCXX_HAVE_FINITE 1
+
+/* Define to 1 if you have the `finitef' function. */
+#define _GLIBCXX_HAVE_FINITEF 1
+
+/* Define to 1 if you have the `finitel' function. */
+#define _GLIBCXX_HAVE_FINITEL 1
+
+/* Define to 1 if you have the <float.h> header file. */
+#define _GLIBCXX_HAVE_FLOAT_H 1
+
+/* Define to 1 if you have the `floorf' function. */
+#define _GLIBCXX_HAVE_FLOORF 1
+
+/* Define to 1 if you have the `floorl' function. */
+#define _GLIBCXX_HAVE_FLOORL 1
+
+/* Define to 1 if you have the `fmodf' function. */
+#define _GLIBCXX_HAVE_FMODF 1
+
+/* Define to 1 if you have the `fmodl' function. */
+#define _GLIBCXX_HAVE_FMODL 1
+
+/* Define to 1 if you have the `fpclass' function. */
+/* #undef _GLIBCXX_HAVE_FPCLASS */
+
+/* Define to 1 if you have the <fp.h> header file. */
+/* #undef _GLIBCXX_HAVE_FP_H */
+
+/* Define to 1 if you have the `frexpf' function. */
+#define _GLIBCXX_HAVE_FREXPF 1
+
+/* Define to 1 if you have the `frexpl' function. */
+#define _GLIBCXX_HAVE_FREXPL 1
+
+/* Define if _Unwind_GetIPInfo is available. */
+#define _GLIBCXX_HAVE_GETIPINFO 1
+
+/* Define if gthr-default.h exists (meaning that threading support is
+ enabled). */
+//#define _GLIBCXX_HAVE_GTHR_DEFAULT 1
+
+/* Define to 1 if you have the `hypot' function. */
+#define _GLIBCXX_HAVE_HYPOT 1
+
+/* Define to 1 if you have the `hypotf' function. */
+#define _GLIBCXX_HAVE_HYPOTF 1
+
+/* Define to 1 if you have the `hypotl' function. */
+#define _GLIBCXX_HAVE_HYPOTL 1
+
+/* Define if you have the iconv() function. */
+//#define _GLIBCXX_HAVE_ICONV 1
+
+/* Define to 1 if you have the <ieeefp.h> header file. */
+/* #undef _GLIBCXX_HAVE_IEEEFP_H */
+
+/* Define if int64_t is available in <stdint.h>. */
+#define _GLIBCXX_HAVE_INT64_T 1
+
+/* Define if int64_t is a long. */
+/* #undef _GLIBCXX_HAVE_INT64_T_LONG */
+
+/* Define if int64_t is a long long. */
+#define _GLIBCXX_HAVE_INT64_T_LONG_LONG 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define _GLIBCXX_HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isinf' function. */
+#define _GLIBCXX_HAVE_ISINF 1
+
+/* Define to 1 if you have the `isinff' function. */
+#define _GLIBCXX_HAVE_ISINFF 1
+
+/* Define to 1 if you have the `isinfl' function. */
+#define _GLIBCXX_HAVE_ISINFL 1
+
+/* Define to 1 if you have the `isnan' function. */
+#define _GLIBCXX_HAVE_ISNAN 1
+
+/* Define to 1 if you have the `isnanf' function. */
+#define _GLIBCXX_HAVE_ISNANF 1
+
+/* Define to 1 if you have the `isnanl' function. */
+#define _GLIBCXX_HAVE_ISNANL 1
+
+/* Defined if iswblank exists. */
+#define _GLIBCXX_HAVE_ISWBLANK 1
+
+/* Define if LC_MESSAGES is available in <locale.h>. */
+#define _GLIBCXX_HAVE_LC_MESSAGES 1
+
+/* Define to 1 if you have the `ldexpf' function. */
+#define _GLIBCXX_HAVE_LDEXPF 1
+
+/* Define to 1 if you have the `ldexpl' function. */
+#define _GLIBCXX_HAVE_LDEXPL 1
+
+/* Define to 1 if you have the <libintl.h> header file. */
+#define _GLIBCXX_HAVE_LIBINTL_H 1
+
+/* Only used in build directory testsuite_hooks.h. */
+#define _GLIBCXX_HAVE_LIMIT_AS 1
+
+/* Only used in build directory testsuite_hooks.h. */
+#define _GLIBCXX_HAVE_LIMIT_DATA 1
+
+/* Only used in build directory testsuite_hooks.h. */
+#define _GLIBCXX_HAVE_LIMIT_FSIZE 1
+
+/* Only used in build directory testsuite_hooks.h. */
+#define _GLIBCXX_HAVE_LIMIT_RSS 1
+
+/* Only used in build directory testsuite_hooks.h. */
+#define _GLIBCXX_HAVE_LIMIT_VMEM 0
+
+/* Define if futex syscall is available. */
+//#define _GLIBCXX_HAVE_LINUX_FUTEX 1
+
+/* Define to 1 if you have the <locale.h> header file. */
+#define _GLIBCXX_HAVE_LOCALE_H 1
+
+/* Define to 1 if you have the `log10f' function. */
+#define _GLIBCXX_HAVE_LOG10F 1
+
+/* Define to 1 if you have the `log10l' function. */
+#define _GLIBCXX_HAVE_LOG10L 1
+
+/* Define to 1 if you have the `logf' function. */
+#define _GLIBCXX_HAVE_LOGF 1
+
+/* Define to 1 if you have the `logl' function. */
+#define _GLIBCXX_HAVE_LOGL 1
+
+/* Define to 1 if you have the <machine/endian.h> header file. */
+/* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */
+
+/* Define to 1 if you have the <machine/param.h> header file. */
+/* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */
+
+/* Define if mbstate_t exists in wchar.h. */
+#define _GLIBCXX_HAVE_MBSTATE_T 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+//#define _GLIBCXX_HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `modf' function. */
+#define _GLIBCXX_HAVE_MODF 1
+
+/* Define to 1 if you have the `modff' function. */
+#define _GLIBCXX_HAVE_MODFF 1
+
+/* Define to 1 if you have the `modfl' function. */
+#define _GLIBCXX_HAVE_MODFL 1
+
+/* Define to 1 if you have the <nan.h> header file. */
+/* #undef _GLIBCXX_HAVE_NAN_H */
+
+/* Define if poll is available in <poll.h>. */
+//#define _GLIBCXX_HAVE_POLL 1
+
+/* Define to 1 if you have the `powf' function. */
+#define _GLIBCXX_HAVE_POWF 1
+
+/* Define to 1 if you have the `powl' function. */
+#define _GLIBCXX_HAVE_POWL 1
+
+/* Define to 1 if you have the `qfpclass' function. */
+/* #undef _GLIBCXX_HAVE_QFPCLASS */
+
+/* Define to 1 if you have the `setenv' function. */
+#define _GLIBCXX_HAVE_SETENV 1
+
+/* Define to 1 if you have the `sincos' function. */
+#define _GLIBCXX_HAVE_SINCOS 1
+
+/* Define to 1 if you have the `sincosf' function. */
+#define _GLIBCXX_HAVE_SINCOSF 1
+
+/* Define to 1 if you have the `sincosl' function. */
+#define _GLIBCXX_HAVE_SINCOSL 1
+
+/* Define to 1 if you have the `sinf' function. */
+#define _GLIBCXX_HAVE_SINF 1
+
+/* Define to 1 if you have the `sinhf' function. */
+#define _GLIBCXX_HAVE_SINHF 1
+
+/* Define to 1 if you have the `sinhl' function. */
+#define _GLIBCXX_HAVE_SINHL 1
+
+/* Define to 1 if you have the `sinl' function. */
+#define _GLIBCXX_HAVE_SINL 1
+
+/* Define to 1 if you have the `sqrtf' function. */
+#define _GLIBCXX_HAVE_SQRTF 1
+
+/* Define to 1 if you have the `sqrtl' function. */
+#define _GLIBCXX_HAVE_SQRTL 1
+
+/* Define to 1 if you have the <stdbool.h> header file. */
+#define _GLIBCXX_HAVE_STDBOOL_H 1
+
/* Define to 1 if you have the <stdint.h> header file. */
#define _GLIBCXX_HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define _GLIBCXX_HAVE_STDLIB_H 1
+/* Define if strerror_l is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRERROR_L 1
+
+/* Define if strerror_r is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRERROR_R 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define _GLIBCXX_HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define _GLIBCXX_HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strtof' function. */
+#define _GLIBCXX_HAVE_STRTOF 1
+
+/* Define to 1 if you have the `strtold' function. */
+#define _GLIBCXX_HAVE_STRTOLD 1
+
+/* Define if strxfrm_l is available in <string.h>. */
+#define _GLIBCXX_HAVE_STRXFRM_L 1
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define _GLIBCXX_HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/ipc.h> header file. */
+#define _GLIBCXX_HAVE_SYS_IPC_H 1
+
+/* Define to 1 if you have the <sys/isa_defs.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */
+
+/* Define to 1 if you have the <sys/machine.h> header file. */
+/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define _GLIBCXX_HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/sem.h> header file. */
+#define _GLIBCXX_HAVE_SYS_SEM_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define _GLIBCXX_HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define _GLIBCXX_HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define _GLIBCXX_HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define _GLIBCXX_HAVE_SYS_UIO_H 1
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+/* #undef _GLIBCXX_HAVE_S_IFREG */
+
+/* Define if S_IFREG is available in <sys/stat.h>. */
+#define _GLIBCXX_HAVE_S_ISREG 1
+
+/* Define to 1 if you have the `tanf' function. */
+#define _GLIBCXX_HAVE_TANF 1
+
+/* Define to 1 if you have the `tanhf' function. */
+#define _GLIBCXX_HAVE_TANHF 1
+
+/* Define to 1 if you have the `tanhl' function. */
+#define _GLIBCXX_HAVE_TANHL 1
+
+/* Define to 1 if you have the `tanl' function. */
+#define _GLIBCXX_HAVE_TANL 1
+
+/* Define to 1 if you have the <tgmath.h> header file. */
+#define _GLIBCXX_HAVE_TGMATH_H 1
+
+/* Define to 1 if the target supports thread-local storage. */
+//#define _GLIBCXX_HAVE_TLS 1
+
/* Define to 1 if you have the <unistd.h> header file. */
#define _GLIBCXX_HAVE_UNISTD_H 1
+/* Defined if vfwscanf exists. */
+#define _GLIBCXX_HAVE_VFWSCANF 1
+
+/* Defined if vswscanf exists. */
+#define _GLIBCXX_HAVE_VSWSCANF 1
+
+/* Defined if vwscanf exists. */
+#define _GLIBCXX_HAVE_VWSCANF 1
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#define _GLIBCXX_HAVE_WCHAR_H 1
+
+/* Defined if wcstof exists. */
+#define _GLIBCXX_HAVE_WCSTOF 1
+
+/* Define to 1 if you have the <wctype.h> header file. */
+#define _GLIBCXX_HAVE_WCTYPE_H 1
+
+/* Define if writev is available in <sys/uio.h>. */
+#define _GLIBCXX_HAVE_WRITEV 1
+
+/* Define to 1 if you have the `_acosf' function. */
+/* #undef _GLIBCXX_HAVE__ACOSF */
+
+/* Define to 1 if you have the `_acosl' function. */
+/* #undef _GLIBCXX_HAVE__ACOSL */
+
+/* Define to 1 if you have the `_asinf' function. */
+/* #undef _GLIBCXX_HAVE__ASINF */
+
+/* Define to 1 if you have the `_asinl' function. */
+/* #undef _GLIBCXX_HAVE__ASINL */
+
+/* Define to 1 if you have the `_atan2f' function. */
+/* #undef _GLIBCXX_HAVE__ATAN2F */
+
+/* Define to 1 if you have the `_atan2l' function. */
+/* #undef _GLIBCXX_HAVE__ATAN2L */
+
+/* Define to 1 if you have the `_atanf' function. */
+/* #undef _GLIBCXX_HAVE__ATANF */
+
+/* Define to 1 if you have the `_atanl' function. */
+/* #undef _GLIBCXX_HAVE__ATANL */
+
+/* Define to 1 if you have the `_ceilf' function. */
+/* #undef _GLIBCXX_HAVE__CEILF */
+
+/* Define to 1 if you have the `_ceill' function. */
+/* #undef _GLIBCXX_HAVE__CEILL */
+
+/* Define to 1 if you have the `_cosf' function. */
+/* #undef _GLIBCXX_HAVE__COSF */
+
+/* Define to 1 if you have the `_coshf' function. */
+/* #undef _GLIBCXX_HAVE__COSHF */
+
+/* Define to 1 if you have the `_coshl' function. */
+/* #undef _GLIBCXX_HAVE__COSHL */
+
+/* Define to 1 if you have the `_cosl' function. */
+/* #undef _GLIBCXX_HAVE__COSL */
+
+/* Define to 1 if you have the `_expf' function. */
+/* #undef _GLIBCXX_HAVE__EXPF */
+
+/* Define to 1 if you have the `_expl' function. */
+/* #undef _GLIBCXX_HAVE__EXPL */
+
+/* Define to 1 if you have the `_fabsf' function. */
+/* #undef _GLIBCXX_HAVE__FABSF */
+
+/* Define to 1 if you have the `_fabsl' function. */
+/* #undef _GLIBCXX_HAVE__FABSL */
+
+/* Define to 1 if you have the `_finite' function. */
+/* #undef _GLIBCXX_HAVE__FINITE */
+
+/* Define to 1 if you have the `_finitef' function. */
+/* #undef _GLIBCXX_HAVE__FINITEF */
+
+/* Define to 1 if you have the `_finitel' function. */
+/* #undef _GLIBCXX_HAVE__FINITEL */
+
+/* Define to 1 if you have the `_floorf' function. */
+/* #undef _GLIBCXX_HAVE__FLOORF */
+
+/* Define to 1 if you have the `_floorl' function. */
+/* #undef _GLIBCXX_HAVE__FLOORL */
+
+/* Define to 1 if you have the `_fmodf' function. */
+/* #undef _GLIBCXX_HAVE__FMODF */
+
+/* Define to 1 if you have the `_fmodl' function. */
+/* #undef _GLIBCXX_HAVE__FMODL */
+
+/* Define to 1 if you have the `_fpclass' function. */
+/* #undef _GLIBCXX_HAVE__FPCLASS */
+
+/* Define to 1 if you have the `_frexpf' function. */
+/* #undef _GLIBCXX_HAVE__FREXPF */
+
+/* Define to 1 if you have the `_frexpl' function. */
+/* #undef _GLIBCXX_HAVE__FREXPL */
+
+/* Define to 1 if you have the `_hypot' function. */
+/* #undef _GLIBCXX_HAVE__HYPOT */
+
+/* Define to 1 if you have the `_hypotf' function. */
+/* #undef _GLIBCXX_HAVE__HYPOTF */
+/* Define to 1 if you have the `_hypotl' function. */
+/* #undef _GLIBCXX_HAVE__HYPOTL */
+
+/* Define to 1 if you have the `_isinf' function. */
+/* #undef _GLIBCXX_HAVE__ISINF */
+
+/* Define to 1 if you have the `_isinff' function. */
+/* #undef _GLIBCXX_HAVE__ISINFF */
+
+/* Define to 1 if you have the `_isinfl' function. */
+/* #undef _GLIBCXX_HAVE__ISINFL */
+
+/* Define to 1 if you have the `_isnan' function. */
+/* #undef _GLIBCXX_HAVE__ISNAN */
+
+/* Define to 1 if you have the `_isnanf' function. */
+/* #undef _GLIBCXX_HAVE__ISNANF */
+
+/* Define to 1 if you have the `_isnanl' function. */
+/* #undef _GLIBCXX_HAVE__ISNANL */
+
+/* Define to 1 if you have the `_ldexpf' function. */
+/* #undef _GLIBCXX_HAVE__LDEXPF */
+
+/* Define to 1 if you have the `_ldexpl' function. */
+/* #undef _GLIBCXX_HAVE__LDEXPL */
+
+/* Define to 1 if you have the `_log10f' function. */
+/* #undef _GLIBCXX_HAVE__LOG10F */
+
+/* Define to 1 if you have the `_log10l' function. */
+/* #undef _GLIBCXX_HAVE__LOG10L */
+
+/* Define to 1 if you have the `_logf' function. */
+/* #undef _GLIBCXX_HAVE__LOGF */
+
+/* Define to 1 if you have the `_logl' function. */
+/* #undef _GLIBCXX_HAVE__LOGL */
+
+/* Define to 1 if you have the `_modf' function. */
+/* #undef _GLIBCXX_HAVE__MODF */
+
+/* Define to 1 if you have the `_modff' function. */
+/* #undef _GLIBCXX_HAVE__MODFF */
+
+/* Define to 1 if you have the `_modfl' function. */
+/* #undef _GLIBCXX_HAVE__MODFL */
+
+/* Define to 1 if you have the `_powf' function. */
+/* #undef _GLIBCXX_HAVE__POWF */
+
+/* Define to 1 if you have the `_powl' function. */
+/* #undef _GLIBCXX_HAVE__POWL */
+
+/* Define to 1 if you have the `_qfpclass' function. */
+/* #undef _GLIBCXX_HAVE__QFPCLASS */
+
+/* Define to 1 if you have the `_sincos' function. */
+/* #undef _GLIBCXX_HAVE__SINCOS */
+
+/* Define to 1 if you have the `_sincosf' function. */
+/* #undef _GLIBCXX_HAVE__SINCOSF */
+
+/* Define to 1 if you have the `_sincosl' function. */
+/* #undef _GLIBCXX_HAVE__SINCOSL */
+
+/* Define to 1 if you have the `_sinf' function. */
+/* #undef _GLIBCXX_HAVE__SINF */
+
+/* Define to 1 if you have the `_sinhf' function. */
+/* #undef _GLIBCXX_HAVE__SINHF */
+
+/* Define to 1 if you have the `_sinhl' function. */
+/* #undef _GLIBCXX_HAVE__SINHL */
+
+/* Define to 1 if you have the `_sinl' function. */
+/* #undef _GLIBCXX_HAVE__SINL */
+
+/* Define to 1 if you have the `_sqrtf' function. */
+/* #undef _GLIBCXX_HAVE__SQRTF */
+
+/* Define to 1 if you have the `_sqrtl' function. */
+/* #undef _GLIBCXX_HAVE__SQRTL */
+
+/* Define to 1 if you have the `_tanf' function. */
+/* #undef _GLIBCXX_HAVE__TANF */
+
+/* Define to 1 if you have the `_tanhf' function. */
+/* #undef _GLIBCXX_HAVE__TANHF */
+
+/* Define to 1 if you have the `_tanhl' function. */
+/* #undef _GLIBCXX_HAVE__TANHL */
+
+/* Define to 1 if you have the `_tanl' function. */
+/* #undef _GLIBCXX_HAVE__TANL */
+
+/* Define as const if the declaration of iconv() needs const. */
+#define _GLIBCXX_ICONV_CONST
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+ */
+#define LT_OBJDIR ".libs/"
+
+/* Name of package */
+/* #undef _GLIBCXX_PACKAGE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define _GLIBCXX_PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define _GLIBCXX_PACKAGE_NAME "package-unused"
+
+/* Define to the full name and version of this package. */
+#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused"
+
+/* Define to the one symbol short name of this package. */
+#define _GLIBCXX_PACKAGE_TARNAME "libstdc++"
+
+/* Define to the home page for this package. */
+#define _GLIBCXX_PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused"
+
+/* The size of `char', as computed by sizeof. */
+/* #undef SIZEOF_CHAR */
+
+/* The size of `int', as computed by sizeof. */
+/* #undef SIZEOF_INT */
+
+/* The size of `long', as computed by sizeof. */
+/* #undef SIZEOF_LONG */
+
+/* The size of `short', as computed by sizeof. */
+/* #undef SIZEOF_SHORT */
+
+/* The size of `void *', as computed by sizeof. */
+/* #undef SIZEOF_VOID_P */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+/* #undef _GLIBCXX_VERSION */
#if defined(ARCH_x86) || defined(ARCH_amd64)
/* Define if builtin atomic operations for bool are supported on this host. */
#undef _GLIBCXX_FULLY_DYNAMIC_STRING
/* Define if gthreads library is available. */
-#define _GLIBCXX_HAS_GTHREADS 1
+//#define _GLIBCXX_HAS_GTHREADS 1
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#define _GLIBCXX_HOSTED 1
/* Define if compatibility should be provided for -mlong-double-64. */
-#undef _GLIBCXX_LONG_DOUBLE_COMPAT
/* Define if ptrdiff_t is int. */
-#undef _GLIBCXX_PTRDIFF_T_IS_INT
+#define _GLIBCXX_PTRDIFF_T_IS_INT 1
/* Define if using setrlimit to set resource limits during "make check" */
-#undef _GLIBCXX_RES_LIMITS
+//#define _GLIBCXX_RES_LIMITS 1
/* Define if size_t is unsigned int. */
-#undef _GLIBCXX_SIZE_T_IS_UINT
+#define _GLIBCXX_SIZE_T_IS_UINT 1
#ifdef __USING_SJLJ_EXCEPTIONS__
/* Define if the compiler is configured for setjmp/longjmp exceptions. */
#endif
/* Define if EOF == -1, SEEK_CUR == 1, SEEK_END == 2. */
-#undef _GLIBCXX_STDIO_MACROS
+#define _GLIBCXX_STDIO_MACROS 1
/* Define to use symbol versioning in the shared library. */
-#undef _GLIBCXX_SYMVER
+#define _GLIBCXX_SYMVER 1
/* Define to use darwin versioning in the shared library. */
-#undef _GLIBCXX_SYMVER_DARWIN
+/* #undef _GLIBCXX_SYMVER_DARWIN */
/* Define to use GNU versioning in the shared library. */
-#undef _GLIBCXX_SYMVER_GNU
+#define _GLIBCXX_SYMVER_GNU 1
/* Define to use GNU namespace versioning in the shared library. */
-#undef _GLIBCXX_SYMVER_GNU_NAMESPACE
+/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>,
<stdio.h>, and <stdlib.h> can be used or exposed. */
-#undef _GLIBCXX_USE_C99
+#define _GLIBCXX_USE_C99 1
/* Define if C99 functions in <complex.h> should be used in <complex>. Using
compiler builtins for these functions requires corresponding C99 library
functions to be present. */
-#undef _GLIBCXX_USE_C99_COMPLEX
+#define _GLIBCXX_USE_C99_COMPLEX 1
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>.
Using compiler builtins for these functions requires corresponding C99
library functions to be present. */
-#undef _GLIBCXX_USE_C99_COMPLEX_TR1
+#define _GLIBCXX_USE_C99_COMPLEX_TR1 1
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in
namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_CTYPE_TR1
+#define _GLIBCXX_USE_C99_CTYPE_TR1 1
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in
namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_FENV_TR1
+#define _GLIBCXX_USE_C99_FENV_TR1 1
/* Define if C99 functions in <inttypes.h> should be imported in
<tr1/cinttypes> in namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_INTTYPES_TR1
+#define _GLIBCXX_USE_C99_INTTYPES_TR1 1
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in
<tr1/cinttypes> in namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1
+#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1
/* Define if C99 functions or macros in <math.h> should be imported in <cmath>
in namespace std. */
-#undef _GLIBCXX_USE_C99_MATH
+#define _GLIBCXX_USE_C99_MATH 1
/* Define if C99 functions or macros in <math.h> should be imported in
<tr1/cmath> in namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_MATH_TR1
+#define _GLIBCXX_USE_C99_MATH_TR1 1
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in
namespace std::tr1. */
-#undef _GLIBCXX_USE_C99_STDINT_TR1
+#define _GLIBCXX_USE_C99_STDINT_TR1 1
/* Defined if clock_gettime has monotonic clock support. */
-#undef _GLIBCXX_USE_CLOCK_MONOTONIC
+/* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
/* Defined if clock_gettime has realtime clock support. */
-#undef _GLIBCXX_USE_CLOCK_REALTIME
+/* #undef _GLIBCXX_USE_CLOCK_REALTIME */
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on
this host. */
-#undef _GLIBCXX_USE_DECIMAL_FLOAT
+#define _GLIBCXX_USE_DECIMAL_FLOAT 1
/* Defined if gettimeofday is available. */
-#undef _GLIBCXX_USE_GETTIMEOFDAY
+//#define _GLIBCXX_USE_GETTIMEOFDAY 1
/* Define if LFS support is available. */
-#undef _GLIBCXX_USE_LFS
+#define _GLIBCXX_USE_LFS 1
/* Define if code specialized for long long should be used. */
-#undef _GLIBCXX_USE_LONG_LONG
+#define _GLIBCXX_USE_LONG_LONG 1
/* Defined if nanosleep is available. */
-#undef _GLIBCXX_USE_NANOSLEEP
+//#undef _GLIBCXX_USE_NANOSLEEP
/* Define if NLS translations are to be used. */
-#undef _GLIBCXX_USE_NLS
+//#define _GLIBCXX_USE_NLS 1
/* Define if /dev/random and /dev/urandom are available for the random_device
of TR1 (Chapter 5.1). */
-#undef _GLIBCXX_USE_RANDOM_TR1
+#define _GLIBCXX_USE_RANDOM_TR1 1
/* Defined if sched_yield is available. */
-#undef _GLIBCXX_USE_SCHED_YIELD
+/* #undef _GLIBCXX_USE_SCHED_YIELD */
/* Define if code specialized for wchar_t should be used. */
-#undef _GLIBCXX_USE_WCHAR_T
+//#define _GLIBCXX_USE_WCHAR_T 1
+
+#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
+# define _GLIBCXX_HAVE_ACOSF 1
+# define acosf _acosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
+# define _GLIBCXX_HAVE_ACOSL 1
+# define acosl _acosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
+# define _GLIBCXX_HAVE_ASINF 1
+# define asinf _asinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
+# define _GLIBCXX_HAVE_ASINL 1
+# define asinl _asinl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
+# define _GLIBCXX_HAVE_ATAN2F 1
+# define atan2f _atan2f
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
+# define _GLIBCXX_HAVE_ATAN2L 1
+# define atan2l _atan2l
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
+# define _GLIBCXX_HAVE_ATANF 1
+# define atanf _atanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
+# define _GLIBCXX_HAVE_ATANL 1
+# define atanl _atanl
+#endif
+
+#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
+# define _GLIBCXX_HAVE_CEILF 1
+# define ceilf _ceilf
+#endif
+
+#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
+# define _GLIBCXX_HAVE_CEILL 1
+# define ceill _ceill
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
+# define _GLIBCXX_HAVE_COSF 1
+# define cosf _cosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
+# define _GLIBCXX_HAVE_COSHF 1
+# define coshf _coshf
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
+# define _GLIBCXX_HAVE_COSHL 1
+# define coshl _coshl
+#endif
+
+#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
+# define _GLIBCXX_HAVE_COSL 1
+# define cosl _cosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
+# define _GLIBCXX_HAVE_EXPF 1
+# define expf _expf
+#endif
+
+#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
+# define _GLIBCXX_HAVE_EXPL 1
+# define expl _expl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
+# define _GLIBCXX_HAVE_FABSF 1
+# define fabsf _fabsf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
+# define _GLIBCXX_HAVE_FABSL 1
+# define fabsl _fabsl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
+# define _GLIBCXX_HAVE_FINITE 1
+# define finite _finite
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
+# define _GLIBCXX_HAVE_FINITEF 1
+# define finitef _finitef
+#endif
+
+#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
+# define _GLIBCXX_HAVE_FINITEL 1
+# define finitel _finitel
+#endif
+
+#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
+# define _GLIBCXX_HAVE_FLOORF 1
+# define floorf _floorf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
+# define _GLIBCXX_HAVE_FLOORL 1
+# define floorl _floorl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
+# define _GLIBCXX_HAVE_FMODF 1
+# define fmodf _fmodf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
+# define _GLIBCXX_HAVE_FMODL 1
+# define fmodl _fmodl
+#endif
+
+#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
+# define _GLIBCXX_HAVE_FPCLASS 1
+# define fpclass _fpclass
+#endif
+
+#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
+# define _GLIBCXX_HAVE_FREXPF 1
+# define frexpf _frexpf
+#endif
+
+#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
+# define _GLIBCXX_HAVE_FREXPL 1
+# define frexpl _frexpl
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
+# define _GLIBCXX_HAVE_HYPOT 1
+# define hypot _hypot
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
+# define _GLIBCXX_HAVE_HYPOTF 1
+# define hypotf _hypotf
+#endif
+
+#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
+# define _GLIBCXX_HAVE_HYPOTL 1
+# define hypotl _hypotl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
+# define _GLIBCXX_HAVE_ISINF 1
+# define isinf _isinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
+# define _GLIBCXX_HAVE_ISINFF 1
+# define isinff _isinff
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
+# define _GLIBCXX_HAVE_ISINFL 1
+# define isinfl _isinfl
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
+# define _GLIBCXX_HAVE_ISNAN 1
+# define isnan _isnan
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
+# define _GLIBCXX_HAVE_ISNANF 1
+# define isnanf _isnanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
+# define _GLIBCXX_HAVE_ISNANL 1
+# define isnanl _isnanl
+#endif
+
+#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
+# define _GLIBCXX_HAVE_LDEXPF 1
+# define ldexpf _ldexpf
+#endif
+
+#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
+# define _GLIBCXX_HAVE_LDEXPL 1
+# define ldexpl _ldexpl
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
+# define _GLIBCXX_HAVE_LOG10F 1
+# define log10f _log10f
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
+# define _GLIBCXX_HAVE_LOG10L 1
+# define log10l _log10l
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
+# define _GLIBCXX_HAVE_LOGF 1
+# define logf _logf
+#endif
+
+#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
+# define _GLIBCXX_HAVE_LOGL 1
+# define logl _logl
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
+# define _GLIBCXX_HAVE_MODF 1
+# define modf _modf
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
+# define _GLIBCXX_HAVE_MODFF 1
+# define modff _modff
+#endif
+
+#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
+# define _GLIBCXX_HAVE_MODFL 1
+# define modfl _modfl
+#endif
+
+#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
+# define _GLIBCXX_HAVE_POWF 1
+# define powf _powf
+#endif
+
+#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
+# define _GLIBCXX_HAVE_POWL 1
+# define powl _powl
+#endif
+
+#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
+# define _GLIBCXX_HAVE_QFPCLASS 1
+# define qfpclass _qfpclass
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
+# define _GLIBCXX_HAVE_SINCOS 1
+# define sincos _sincos
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
+# define _GLIBCXX_HAVE_SINCOSF 1
+# define sincosf _sincosf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
+# define _GLIBCXX_HAVE_SINCOSL 1
+# define sincosl _sincosl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
+# define _GLIBCXX_HAVE_SINF 1
+# define sinf _sinf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
+# define _GLIBCXX_HAVE_SINHF 1
+# define sinhf _sinhf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
+# define _GLIBCXX_HAVE_SINHL 1
+# define sinhl _sinhl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
+# define _GLIBCXX_HAVE_SINL 1
+# define sinl _sinl
+#endif
+
+#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
+# define _GLIBCXX_HAVE_SQRTF 1
+# define sqrtf _sqrtf
+#endif
+
+#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
+# define _GLIBCXX_HAVE_SQRTL 1
+# define sqrtl _sqrtl
+#endif
+#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
+# define _GLIBCXX_HAVE_STRTOF 1
+# define strtof _strtof
+#endif
+
+#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
+# define _GLIBCXX_HAVE_STRTOLD 1
+# define strtold _strtold
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
+# define _GLIBCXX_HAVE_TANF 1
+# define tanf _tanf
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
+# define _GLIBCXX_HAVE_TANHF 1
+# define tanhf _tanhf
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
+# define _GLIBCXX_HAVE_TANHL 1
+# define tanhl _tanhl
+#endif
+
+#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
+# define _GLIBCXX_HAVE_TANL 1
+# define tanl _tanl
+#endif
#endif
int
l4vcpu_is_irq_entry(l4_vcpu_state_t *vcpu) L4_NOTHROW
{
+ (void)vcpu;
return 0; // TBD
}
int
l4vcpu_is_page_fault_entry(l4_vcpu_state_t *vcpu) L4_NOTHROW
{
+ (void)vcpu;
return 0; // TBD
}
l4_cap_idx_t pthread_getl4cap(pthread_t t);
void pthread_l4_for_each_thread(void (*fn)(pthread_t));
+// This is a rather temporary solution, it will go away when UTCBs can be
+// freely placed.
+l4_utcb_t *pthread_l4_reserve_consecutive_utcbs(unsigned num);
__END_DECLS
enum pthread_request_rq { /* Request kind */
REQ_CREATE, REQ_FREE, REQ_PROCESS_EXIT, REQ_MAIN_THREAD_EXIT,
- REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD
+ REQ_POST, REQ_DEBUG, REQ_KICK, REQ_FOR_EACH_THREAD,
+ REQ_L4_RESERVE_CONSECUTIVE_UTCBS
};
struct pthread_request {
void (*fn)(void *, pthread_descr);
void *arg;
} for_each;
+#ifndef L4_SPECIFIC
+ struct {
+ unsigned num;
+ l4_utcb_t **retutcbp;
+ } l4_reserve_consecutive_utcbs;
+#endif
} req_args;
};
/* First free thread */
extern l4_utcb_t *__pthread_first_free_handle attribute_hidden;
+l4_utcb_t *pthread_mgr_l4_reserve_consecutive_utcbs(unsigned num);
+
/* Descriptor of the main thread */
extern pthread_descr __pthread_main_thread;
__pthread_send_manager_rq(&request, 1);
}
+// This is a rather temporary solution, it will go away when UTCBs can be
+// freely placed.
+l4_utcb_t *pthread_mgr_l4_reserve_consecutive_utcbs(unsigned num)
+{
+ l4_utcb_t *i = __pthread_first_free_handle;
+ l4_utcb_t *prev = 0;
+
+ while (i)
+ {
+ l4_utcb_t *s = (l4_utcb_t*)l4_utcb_tcr_u(i)->user[0];
+ unsigned cnt = 1;
+
+ while ( s
+ && cnt < num
+ && (unsigned long)i + cnt * L4_UTCB_OFFSET == (unsigned long)s)
+ {
+ s = (l4_utcb_t*)l4_utcb_tcr_u(s)->user[0];
+ cnt++;
+ }
+
+ if (cnt == num)
+ {
+ if (prev)
+ l4_utcb_tcr_u(s)->user[0] = l4_utcb_tcr_u(s)->user[0];
+ else
+ __pthread_first_free_handle = (l4_utcb_t*)l4_utcb_tcr_u(s)->user[0];
+
+ return i;
+ }
+
+ prev = i;
+ i = s;
+ }
+
+ return 0;
+}
+
+l4_utcb_t *pthread_l4_reserve_consecutive_utcbs(unsigned num)
+{
+ if (l4_is_invalid_cap(__pthread_manager_request))
+ return pthread_mgr_l4_reserve_consecutive_utcbs(num);
+
+ struct pthread_request request;
+
+ request.req_thread = thread_self();
+ request.req_kind = REQ_L4_RESERVE_CONSECUTIVE_UTCBS;
+ request.req_args.l4_reserve_consecutive_utcbs.num = num;
+
+ l4_utcb_t *u;
+ request.req_args.l4_reserve_consecutive_utcbs.retutcbp = &u;
+
+ __pthread_send_manager_rq(&request, 1);
+
+ return u;
+}
+
int __pthread_l4_initialize_main_thread(pthread_descr th)
{
L4Re::Env *env = const_cast<L4Re::Env*>(L4Re::Env::env());
restart(request.req_thread);
do_reply = 1;
break;
+ case REQ_L4_RESERVE_CONSECUTIVE_UTCBS:
+ *request.req_args.l4_reserve_consecutive_utcbs.retutcbp
+ = pthread_mgr_l4_reserve_consecutive_utcbs(request.req_args.l4_reserve_consecutive_utcbs.num);
+ do_reply = 1;
+ break;
}
tag = l4_msgtag(0, 0, 0, L4_MSGTAG_SCHEDULE);
}
return 0;
}
-static inline
-l4_utcb_t *__pthread_utcb_for_thread(int nr)
-{
- using namespace L4Re;
- Env const *e = Env::env();
- return (l4_utcb_t*)((char *)e->first_free_utcb() + nr * L4_UTCB_OFFSET);
-}
-
static inline
int __pthread_mgr_create_thread(pthread_descr thread, char **tos,
int (*f)(void*), int prio)
int err;
mgr->p_tid = mgr_alloc_utcb();
-
+
err = __pthread_mgr_create_thread(mgr, &__pthread_manager_thread_tos,
__pthread_manager, -1);
if (err < 0)
}
l4_utcb_t *new_utcb = mgr_alloc_utcb();
+ if (!new_utcb)
+ return EAGAIN;
+
new_thread_id = new_utcb;
if (pthread_allocate_stack(attr, thread_segment(sseg),
libc/misc/locale libc/misc/elf \
libc/misc/time libc/pwd_grp libc/unistd libc/termios \
libc/misc/wctype libc/misc/wchar libc/misc/fnmatch \
- libc/misc/glob libc libcrypt \
+ libc/misc/glob libc/misc/search libc libcrypt \
libc/signal $(SYSDEPS)/$(UCLIBC_ARCH) \
$(SYSDEPS)/common libm libm/$(UCLIBC_ARCH)
PRIVATE_INCDIR_ARCH-all/libc/string/wmemcpy.o = $(SRC_DIR)/../contrib/uclibc/libc/string
PRIVATE_INCDIR_ARCH-all/libc/string/wmemcpy.s.o = $(SRC_DIR)/../contrib/uclibc/libc/string
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hcreate_r.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hcreate_r.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hdestroy_r.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hdestroy_r.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hsearch_r.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/hsearch_r.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/lfind.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/lfind.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tfind.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tfind.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/lsearch.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/lsearch.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tdestroy.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tdestroy.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tdelete.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tdelete.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tsearch.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/tsearch.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/twalk.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+PRIVATE_INCDIR_ARCH-all/libc/misc/search/twalk.s.o = $(SRC_DIR)/../contrib/uclibc/libc/misc/search
+
ifneq ($(L4API),)
DEFINES += -DL4_THREAD_SAFE
LDFLAGS_r/libuc_c.so := $(LDFLAGS_libuc_c.so)
libc/misc/locale/localeconv.c
libc/misc/locale/nl_langinfo.c
libc/misc/locale/setlocale.c
+libc/misc/search/hcreate_r.c
+libc/misc/search/hdestroy_r.c
+libc/misc/search/hsearch.c
+libc/misc/search/hsearch_r.c
+libc/misc/search/insque.c
+libc/misc/search/insremque.c
+libc/misc/search/lfind.c
+libc/misc/search/lsearch.c
+libc/misc/search/remque.c
+libc/misc/search/tdelete.c
+libc/misc/search/tdestroy.c
+libc/misc/search/tfind.c
+libc/misc/search/tsearch.c
+libc/misc/search/twalk.c
libc/misc/time/time.c
libc/misc/time/asctime.c
libc/misc/time/asctime_r.c