This is the mail archive of the
ecos-patches@sources.redhat.com
mailing list for the eCos project.
Re: Object File Loader
- From: Anthony Tonizzo <atonizzo at gmail dot com>
- To: ecos-patches at ecos dot sourceware dot org
- Cc: Nick Garnett <nickg at ecoscentric dot com>
- Date: Wed, 29 Jun 2005 11:07:15 -0700
- Subject: Re: Object File Loader
- Domainkey-signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=EguWvBDpt4P7ysMLNeHW0NNnwgCJDo28umFmfWh8lg7wABBkOuRpiYxrw3z4LhJCexNzvXo37N7lGtq4mtDb02WQHdSDnTHopDAK5uIY5D5WScIsFfG1d8pV2fitNvrgvyPPg/K0iiQruJCPRhaxe/y6NtzMDQFFA21jkKBJCm0=
- References: <b437ec69050629071950b47ed6@mail.gmail.com> <m3wtodusbv.fsf@xl5.calivar.com> <b437ec6905062908526f74c528@mail.gmail.com>
- Reply-to: Anthony Tonizzo <atonizzo at gmail dot com>
Nick:
OK, here are the table entry definitions. I placed them in their own file
but then the CDL file should also be updated to store this file in
cyg/objloader. I did not want to send a formal patch. Since I am not
sure how far along you are in the merge process, I figured it was easier
on you to cut the goods, paste them into a new file and run with them.
Question: Should we do this:
#define CYG_LDR_TABLE_STRING()
#include <string.h>
...
or do we leave the various #include <..> to the user?
Thanks
Tony
------------- snip snip --------------------------------------
/* =================================================================
*
* objldr_tbl_entries.h
*
* Standard table entries for the ELF object loader.
*
* =================================================================
* ####ECOSGPLCOPYRIGHTBEGIN####
* -------------------------------------------
* This file is part of eCos, the Embedded Configurable Operating
* System.
* Copyright (C) 2005 eCosCentric Ltd.
*
* eCos is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 or (at your option)
* any later version.
*
* eCos is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with eCos; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*
* As a special exception, if other files instantiate templates or
* use macros or inline functions from this file, or you compile this
* file and link it with other works to produce a work based on this
* file, this file does not by itself cause the resulting work to be
* covered by the GNU General Public License. However the source code
* for this file must still be made available in accordance with
* section (3) of the GNU General Public License.
*
* This exception does not invalidate any other reasons why a work
* based on this file might be covered by the GNU General Public
* License.
*
* -------------------------------------------
* ####ECOSGPLCOPYRIGHTEND####
* =================================================================
* #####DESCRIPTIONBEGIN####
*
* Author(s): Anthony Tonizzo (atonizzo@lycos.com)
* Date: 2005-06-29
* Purpose:
* Description:
*
* ####DESCRIPTIONEND####
*
* =================================================================
*/
#include <cyg/kernel/kapi.h> \
#define CYG_LDR_TABLE_KAPI_ALARM() \
CYG_LDR_TABLE_ENTRY( cyg_alarm_create_entry, \
"cyg_alarm_create", cyg_alarm_create ); \
CYG_LDR_TABLE_ENTRY( cyg_alarm_delete_entry, \
"cyg_alarm_delete", cyg_alarm_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_alarm_initialize_entry,
\
"cyg_alarm_initialize", cyg_alarm_initialize ); \
CYG_LDR_TABLE_ENTRY( cyg_alarm_get_times_entry, \
"cyg_alarm_get_times", cyg_alarm_get_times ); \
CYG_LDR_TABLE_ENTRY( cyg_alarm_enable_entry, \
"cyg_alarm_enable", cyg_alarm_enable ); \
CYG_LDR_TABLE_ENTRY( cyg_alarm_disable_entry,
\
"cyg_alarm_disable", cyg_alarm_disable );
#define CYG_LDR_TABLE_KAPI_CLOCK() \
CYG_LDR_TABLE_ENTRY( cyg_clock_create_entry,
\
"cyg_clock_create", cyg_clock_create ); \
CYG_LDR_TABLE_ENTRY( cyg_clock_delete_entry,
\
"cyg_clock_delete", cyg_clock_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_clock_to_counter_entry, \
"cyg_clock_to_counter", cyg_clock_to_counter ); \
CYG_LDR_TABLE_ENTRY( cyg_clock_set_resolution_entry, \
"cyg_clock_set_resolution", cyg_clock_set_resolution ); \
CYG_LDR_TABLE_ENTRY( cyg_clock_get_resolution_entry, \
"cyg_clock_get_resolution",
cyg_clock_get_resolution ); \
CYG_LDR_TABLE_ENTRY( cyg_real_time_clock_entry, \
"cyg_real_time_clock", cyg_real_time_clock ); \
CYG_LDR_TABLE_ENTRY( cyg_current_time_entry, \
"cyg_current_time", cyg_current_time );
#define CYG_LDR_TABLE_KAPI_COND() \
CYG_LDR_TABLE_ENTRY( cyg_cond_init_entry, \
"cyg_cond_init", cyg_cond_init ); \
CYG_LDR_TABLE_ENTRY( cyg_cond_destroy_entry,
\
"cyg_cond_destroy", cyg_cond_destroy ); \
CYG_LDR_TABLE_ENTRY( cyg_cond_wait_entry,
\
"cyg_cond_wait", cyg_cond_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_cond_signal_entry, \
"cyg_cond_signal", cyg_cond_signal ); \
CYG_LDR_TABLE_ENTRY( cyg_cond_broadcast_entry, \
"cyg_cond_broadcast", cyg_cond_broadcast ); \
CYG_LDR_TABLE_ENTRY( cyg_cond_timed_wait_entry, \
"cyg_cond_timed_wait", cyg_cond_timed_wait );
#define CYG_LDR_TABLE_KAPI_COUNTER() \
CYG_LDR_TABLE_ENTRY( cyg_counter_create_entry, \
"cyg_counter_create", cyg_counter_create ); \
CYG_LDR_TABLE_ENTRY( cyg_counter_delete_entry, \
"cyg_counter_delete", cyg_counter_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_counter_current_value_entry, \
"cyg_counter_current_value", cyg_counter_current_value ); \
CYG_LDR_TABLE_ENTRY( cyg_counter_set_value_entry, \
"cyg_counter_set_value", cyg_counter_set_value ); \
CYG_LDR_TABLE_ENTRY( cyg_counter_tick_entry, \
"cyg_counter_tick", cyg_counter_tick ); \
CYG_LDR_TABLE_ENTRY( cyg_counter_multi_tick_entry, \
"cyg_counter_multi_tick", cyg_counter_multi_tick );
#define CYG_LDR_TABLE_KAPI_EXCEPTIONS() \
CYG_LDR_TABLE_ENTRY( cyg_exception_set_handler_entry, \
"cyg_exception_set_handler", cyg_exception_set_handler ); \
CYG_LDR_TABLE_ENTRY( cyg_exception_clear_handler_entry, \
"cyg_exception_clear_handler", \
cyg_exception_clear_handler ); \
CYG_LDR_TABLE_ENTRY( cyg_exception_call_handler_entry, \
"cyg_exception_call_handler", \
cyg_exception_call_handler );
#define CYG_LDR_TABLE_KAPI_FLAG() \
CYG_LDR_TABLE_ENTRY( cyg_flag_init_entry, \
"cyg_flag_init", cyg_flag_init ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_destroy_entry, \
"cyg_flag_destroy", cyg_flag_destroy ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_setbits_entry, \
"cyg_flag_setbits", cyg_flag_setbits ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_maskbits_entry, \
"cyg_flag_maskbits", cyg_flag_maskbits ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_wait_entry, \
"cyg_flag_wait", cyg_flag_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_timed_wait_entry, \
"cyg_flag_timed_wait", cyg_flag_timed_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_poll_entry, \
"cyg_flag_poll", cyg_flag_poll ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_peek_entry, \
"cyg_flag_peek", cyg_flag_peek ); \
CYG_LDR_TABLE_ENTRY( cyg_flag_waiting_entry, \
"cyg_flag_waiting", cyg_flag_waiting );
#define CYG_LDR_TABLE_KAPI_INTERRUPTS() \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_create_entry, \
"cyg_interrupt_create", cyg_interrupt_create ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_delete_entry, \
"cyg_interrupt_delete", cyg_interrupt_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_attach_entry, \
"cyg_interrupt_attach", cyg_interrupt_attach ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_detach_entry, \
"cyg_interrupt_detach", cyg_interrupt_detach ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_get_vsr_entry, \
"cyg_interrupt_get_vsr", cyg_interrupt_get_vsr ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_set_vsr_entry, \
"cyg_interrupt_set_vsr", cyg_interrupt_set_vsr ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_disable_entry, \
"cyg_interrupt_disable", cyg_interrupt_disable ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_enable_entry, \
"cyg_interrupt_enable", cyg_interrupt_enable ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_mask_entry, \
"cyg_interrupt_mask", cyg_interrupt_mask ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_mask_intunsafe_entry, \
"cyg_interrupt_mask_intunsafe", \
cyg_interrupt_mask_intunsafe ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_unmask_entry, \
"cyg_interrupt_unmask", cyg_interrupt_unmask ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_unmask_intunsafe_entry, \
"cyg_interrupt_unmask_intunsafe", \
cyg_interrupt_unmask_intunsafe ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_acknowledge_entry, \
"cyg_interrupt_acknowledge", \
cyg_interrupt_acknowledge ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_configure_entry, \
"cyg_interrupt_configure", cyg_interrupt_configure ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_set_cpu_entry, \
"cyg_interrupt_set_cpu", cyg_interrupt_set_cpu ); \
CYG_LDR_TABLE_ENTRY( cyg_interrupt_get_cpu_entry, \
"cyg_interrupt_get_cpu", cyg_interrupt_get_cpu );
#define CYG_LDR_TABLE_KAPI_MBOX() \
CYG_LDR_TABLE_ENTRY( cyg_mbox_create_entry, \
"cyg_mbox_create", cyg_mbox_create ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_delete_entry, \
"cyg_mbox_delete", cyg_mbox_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_get_entry, \
"cyg_mbox_get", cyg_mbox_get ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_timed_get_entry, \
"cyg_mbox_timed_get", cyg_mbox_timed_get ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_tryget_entry, \
"cyg_mbox_tryget", cyg_mbox_tryget ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_peek_item_entry, \
"cyg_mbox_peek_item", cyg_mbox_peek_item ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_put_entry, \
"cyg_mbox_put", cyg_mbox_put ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_timed_put_entry, \
"cyg_mbox_timed_put", cyg_mbox_timed_put ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_tryput_entry, \
"cyg_mbox_tryput", cyg_mbox_tryput ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_peek_entry, \
"cyg_mbox_peek", cyg_mbox_peek ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_waiting_to_get_entry, \
"cyg_mbox_waiting_to_get_item", \
cyg_mbox_waiting_to_get_item ); \
CYG_LDR_TABLE_ENTRY( cyg_mbox_waiting_to_put_entry, \
"cyg_mbox_waiting_to_put_item", \
cyg_mbox_waiting_to_put_item );
#define CYG_LDR_TABLE_KAPI_MEMPOOL_FIX() \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_create_entry, \
"cyg_mempool_fix_create", cyg_mempool_fix_create ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_delete_entry, \
"cyg_mempool_fix_delete", cyg_mempool_fix_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_alloc_entry, \
"cyg_mempool_fix_alloc", cyg_mempool_fix_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_timed_alloc_entry, \
"cyg_mempool_fix_timed_alloc", \
cyg_mempool_fix_timed_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_try_alloc_entry, \
"cyg_mempool_fix_try_alloc", \
cyg_mempool_fix_try_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_free_entry, \
"cyg_mempool_fix_free", cyg_mempool_fix_free ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_waiting_entry, \
"cyg_mempool_fix_waiting", cyg_mempool_fix_waiting ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_fix_get_info_entry, \
"cyg_mempool_fix_get_info", cyg_mempool_fix_get_info );
#define CYG_LDR_TABLE_KAPI_MEMPOOL_FIX() \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_create_entry, \
"cyg_mempool_var_create", cyg_mempool_var_create ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_delete_entry, \
"cyg_mempool_var_delete", cyg_mempool_var_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_alloc_entry, \
"cyg_mempool_var_alloc", cyg_mempool_var_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_timed_alloc_entry, \
"cyg_mempool_var_timed_alloc", \
cyg_mempool_var_timed_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_try_alloc_entry, \
"cyg_mempool_var_try_alloc", \
cyg_mempool_var_try_alloc ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_free_entry, \
"cyg_mempool_var_free", cyg_mempool_var_free ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_waiting_entry, \
"cyg_mempool_var_waiting", cyg_mempool_var_waiting ); \
CYG_LDR_TABLE_ENTRY( cyg_mempool_var_get_info_entry, \
"cyg_mempool_var_get_info", cyg_mempool_var_get_info );
#define CYG_LDR_TABLE_KAPI_MUTEX() \
CYG_LDR_TABLE_ENTRY( cyg_mutex_init_entry, \
"cyg_mutex_init", cyg_mutex_init ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_destroy_entry, \
"cyg_mutex_destroy", cyg_mutex_destroy ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_trylock_entry, \
"cyg_mutex_trylock", cyg_mutex_trylock ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_unlock_entry, \
"cyg_mutex_unlock", cyg_mutex_unlock ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_release_entry, \
"cyg_mutex_release", cyg_mutex_release ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_set_ceiling_entry, \
"cyg_mutex_set_ceiling", cyg_mutex_set_ceiling ); \
CYG_LDR_TABLE_ENTRY( cyg_mutex_set_protocol_entry, \
"cyg_mutex_set_protocol", cyg_mutex_set_protocol );
#define CYG_LDR_TABLE_KAPI_SCHEDULER() \
CYG_LDR_TABLE_ENTRY( cyg_scheduler_start_entry, \
"cyg_scheduler_start", cyg_scheduler_start ); \
CYG_LDR_TABLE_ENTRY( cyg_scheduler_lock_entry, \
"cyg_scheduler_lock", cyg_scheduler_lock ); \
CYG_LDR_TABLE_ENTRY( cyg_scheduler_safe_lock_entry, \
"cyg_scheduler_safe_lock", cyg_scheduler_safe_lock ); \
CYG_LDR_TABLE_ENTRY( cyg_scheduler_unlock_entry, \
"cyg_scheduler_unlock", cyg_scheduler_unlock ); \
CYG_LDR_TABLE_ENTRY( cyg_scheduler_read_lock_entry, \
"cyg_scheduler_read_lock", cyg_scheduler_read_lock ); \
#define CYG_LDR_TABLE_KAPI_SEMAPHORE() \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_init_entry, \
"cyg_semaphore_init", cyg_semaphore_init ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_destroy_entry, \
"cyg_semaphore_destroy", cyg_semaphore_destroy ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_wait_entry, \
"cyg_semaphore_wait", cyg_semaphore_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_timed_wait_entry, \
"cyg_semaphore_timed_wait", cyg_semaphore_timed_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_try_wait_entry, \
"cyg_semaphore_try_wait", cyg_semaphore_try_wait ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_post_entry, \
"cyg_semaphore_post", cyg_semaphore_post ); \
CYG_LDR_TABLE_ENTRY( cyg_semaphore_peek_entry, \
"cyg_semaphore_peek", cyg_semaphore_peek );
#define CYG_LDR_TABLE_KAPI_THREAD() \
CYG_LDR_TABLE_ENTRY( cyg_thread_create_entry, \
"cyg_thread_create", cyg_thread_create ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_exit_entry, \
"cyg_thread_exit", cyg_thread_exit ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_delete_entry, \
"cyg_thread_delete", cyg_thread_delete ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_suspend_entry, \
"cyg_thread_suspend", cyg_thread_suspend ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_resume_entry, \
"cyg_thread_resume", cyg_thread_resume ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_kill_entry, \
"cyg_thread_kill", cyg_thread_kill ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_release_entry, \
"cyg_thread_release", cyg_thread_release ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_yield_entry, \
"cyg_thread_yield", cyg_thread_yield ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_self_entry, \
"cyg_thread_self", cyg_thread_self ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_idle_thread_entry, \
"cyg_thread_idle_thread", cyg_thread_idle_thread ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_set_priority_entry, \
"cyg_thread_set_priority", cyg_thread_set_priority ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_priority_entry, \
"cyg_thread_get_priority", cyg_thread_get_priority ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_current_priority_entry, \
"cyg_thread_get_current_priority", \
cyg_thread_get_current_priority ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_delay_entry, \
"cyg_thread_delay", cyg_thread_delay ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_stack_base_entry, \
"cyg_thread_get_stack_base", cyg_thread_get_stack_base ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_stack_size_entry, \
"cyg_thread_get_stack_size", cyg_thread_get_stack_size ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_stack_usage_entry, \
"cyg_thread_get_stack_usage", \
cyg_thread_get_stack_usage ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_measure_stack_usage_entry, \
"cyg_thread_measure_stack_usage", \
cyg_thread_measure_stack_usage ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_new_data_index_entry, \
"cyg_thread_new_data_index", cyg_thread_new_data_index ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_free_data_index_entry, \
"cyg_thread_free_data_index", \
cyg_thread_free_data_index ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_data_entry, \
"cyg_thread_get_data", cyg_thread_get_data ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_get_data_ptr_entry, \
"cyg_thread_get_data_ptr", cyg_thread_get_data_ptr ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_set_data_entry, \
"cyg_thread_set_data", cyg_thread_set_data ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_add_destructor_entry, \
"cyg_thread_add_destructor", cyg_thread_add_destructor ); \
CYG_LDR_TABLE_ENTRY( cyg_thread_rem_destructor_entry, \
"cyg_thread_rem_destructor", cyg_thread_rem_destructor );
#define CYG_LDR_TABLE_STRING() \
CYG_LDR_TABLE_ENTRY( memchr_entry, "memchr", memchr ); \
CYG_LDR_TABLE_ENTRY( memcmp_entry, "memcmp", memcmp ); \
CYG_LDR_TABLE_ENTRY( memcpy_entry, "memcpy", memcpy ); \
CYG_LDR_TABLE_ENTRY( memmove_entry, "memmove", memmove ); \
CYG_LDR_TABLE_ENTRY( memset_entry, "memset", memset ); \
CYG_LDR_TABLE_ENTRY( strcpy_entry, "strcpy", strcpy ); \
CYG_LDR_TABLE_ENTRY( strncpy_entry, "strncpy", strncpy ); \
CYG_LDR_TABLE_ENTRY( strcat_entry, "strcat", strcat ); \
CYG_LDR_TABLE_ENTRY( strncat_entry, "strncat", strncat ); \
CYG_LDR_TABLE_ENTRY( strchr_entry, "strchr", strchr ); \
CYG_LDR_TABLE_ENTRY( strrchr_entry, "strrchr", strrchr ); \
CYG_LDR_TABLE_ENTRY( strcoll_entry, "strcoll", strcoll ); \
CYG_LDR_TABLE_ENTRY( strlen_entry, "strlen", strlen ); \
CYG_LDR_TABLE_ENTRY( strcmp_entry, "strcmp", strcmp ); \
CYG_LDR_TABLE_ENTRY( strncmp_entry, "strncmp", strncmp ); \
CYG_LDR_TABLE_ENTRY( strcspn_entry, "strcspn", strcspn ); \
CYG_LDR_TABLE_ENTRY( strerror_entry, "strerror", strerror ); \
CYG_LDR_TABLE_ENTRY( strpbrk_entry, "strpbrk", strpbrk ); \
CYG_LDR_TABLE_ENTRY( strspn_entry, "strspn", strspn ); \
CYG_LDR_TABLE_ENTRY( strstr_entry, "strstr", strstr ); \
CYG_LDR_TABLE_ENTRY( strtok_entry, "strtok", strtok ); \
CYG_LDR_TABLE_ENTRY( strxfrm_entry, "strxfrm", strxfrm );
#define CYG_LDR_TABLE_STDIO() \
CYG_LDR_TABLE_ENTRY( clearerr_entry, "clearerr", clearerr ); \
CYG_LDR_TABLE_ENTRY( fclose_entry, "fclose", fclose ); \
CYG_LDR_TABLE_ENTRY( feof_entry, "feof", feof ); \
CYG_LDR_TABLE_ENTRY( ferror_entry, "ferror", ferror ); \
CYG_LDR_TABLE_ENTRY( fflush_entry, "fflush", fflush ); \
CYG_LDR_TABLE_ENTRY( fgetc_entry, "fgetc", fgetc ); \
CYG_LDR_TABLE_ENTRY( fgetpos_entry, "fgetpos", fgetpos ); \
CYG_LDR_TABLE_ENTRY( fgets_entry, "fgets", fgets ); \
CYG_LDR_TABLE_ENTRY( fopen_entry, "fopen", fopen ); \
CYG_LDR_TABLE_ENTRY( fprintf_entry, "fprintf", fprintf ); \
CYG_LDR_TABLE_ENTRY( fputc_entry, "fputc", fputc ); \
CYG_LDR_TABLE_ENTRY( fputchar_entry, "fputchar", fputchar ); \
CYG_LDR_TABLE_ENTRY( fputs_entry, "fputs", fputs ); \
CYG_LDR_TABLE_ENTRY( fread_entry, "fread", fread ); \
CYG_LDR_TABLE_ENTRY( freopen_entry, "freopen", freopen ); \
CYG_LDR_TABLE_ENTRY( fscanf_entry, "fscanf", fscanf ); \
CYG_LDR_TABLE_ENTRY( fseek_entry, "fseek", fseek ); \
CYG_LDR_TABLE_ENTRY( fsetpos_entry, "fsetpos", fsetpos ); \
CYG_LDR_TABLE_ENTRY( ftell_entry, "ftell", ftell ); \
CYG_LDR_TABLE_ENTRY( fwrite_entry, "fwrite", fwrite ); \
CYG_LDR_TABLE_ENTRY( fgetc_entry, "fgetc", fgetc ); \
CYG_LDR_TABLE_ENTRY( fgetchar_entry, "fgetchar", fgetchar ); \
CYG_LDR_TABLE_ENTRY( fgets_entry, "fgets", fgets ); \
CYG_LDR_TABLE_ENTRY( fgetw_entry, "fgetw", fgetw ); \
CYG_LDR_TABLE_ENTRY( perror_entry, "perror", perror ); \
CYG_LDR_TABLE_ENTRY( printf_entry, "printf", printf ); \
CYG_LDR_TABLE_ENTRY( putc_entry, "putc", putc ); \
CYG_LDR_TABLE_ENTRY( putchar_entry, "putchar", putchar ); \
CYG_LDR_TABLE_ENTRY( puts_entry, "puts", puts ); \
CYG_LDR_TABLE_ENTRY( putw_entry, "putw", putw );
\
CYG_LDR_TABLE_ENTRY( remove_entry, "remove", remove ); \
CYG_LDR_TABLE_ENTRY( rename_entry, "rename", rename ); \
CYG_LDR_TABLE_ENTRY( rewind_entry, "rewind", rewind ); \
CYG_LDR_TABLE_ENTRY( scanf_entry, "scanf", scanf ); \
CYG_LDR_TABLE_ENTRY( setbuf_entry, "setbuf", setbuf ); \
CYG_LDR_TABLE_ENTRY( setvbuf_entry, "setvbuf", setvbuf ); \
CYG_LDR_TABLE_ENTRY( sprintf_entry, "sprintf", sprintf ); \
CYG_LDR_TABLE_ENTRY( sscanf_entry, "sscanf", sscanf ); \
CYG_LDR_TABLE_ENTRY( tmpfile_entry, "tmpfile", tmpfile ); \
CYG_LDR_TABLE_ENTRY( tmpnam_entry, "tmpnam", tmpnam ); \
CYG_LDR_TABLE_ENTRY( ungetc_entry, "ungetc", ungetc );
CYG_LDR_TABLE_INFRA_DIAG() \
CYG_LDR_TABLE_ENTRY( diag_init_entry, "diag_init", diag_init ); \
CYG_LDR_TABLE_ENTRY( diag_write_char_entry, \
"diag_write_char", diag_write_char ); \
CYG_LDR_TABLE_ENTRY( diag_write_string_entry, \
"diag_write_string", diag_write_string ); \
CYG_LDR_TABLE_ENTRY( diag_write_dec_entry, \
"diag_write_dec", diag_write_dec ); \
CYG_LDR_TABLE_ENTRY( diag_write_hex_entry, \
"diag_write_hex", diag_write_hex ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_entry, \
"diag_dump_buf", diag_dump_buf ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_32bit_entry, \
"diag_dump_buf_32bit", diag_dump_buf_32bit ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_16bit_entry, \
"diag_dump_buf_16bit", diag_dump_buf_16bit ); \
CYG_LDR_TABLE_ENTRY( __printf_fun_entry, \
"__printf_fun", __printf_fun ); \
CYG_LDR_TABLE_ENTRY( diag_vdump_buf_with_offset_entry, \
"diag_vdump_buf_with_offset", \
diag_vdump_buf_with_offset ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_with_offset_entry, \
"diag_dump_buf_with_offset", \
diag_dump_buf_with_offset ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_with_offset_32bit_entry, \
"diag_dump_buf_with_offset_32bit", \
diag_dump_buf_with_offset_32bit ); \
CYG_LDR_TABLE_ENTRY( diag_dump_buf_with_offset_16bit_entry, \
"diag_dump_buf_with_offset_16bit", \
diag_dump_buf_with_offset_16bit ); \
CYG_LDR_TABLE_ENTRY( diag_printf_entry, "diag_printf", diag_printf ); \
CYG_LDR_TABLE_ENTRY( diag_init_putc_entry, "diag_init_putc", diag_init_putc ); \
CYG_LDR_TABLE_ENTRY( diag_sprintf_entry, "diag_sprintf", diag_sprintf ); \
CYG_LDR_TABLE_ENTRY( diag_snprintf_entry, "diag_snprintf", diag_snprintf ); \
CYG_LDR_TABLE_ENTRY( diag_vsprintf_entry, "diag_vsprintf", diag_vsprintf ); \
CYG_LDR_TABLE_ENTRY( diag_vprintf_entry, "diag_vprintf", diag_vprintf );